@Override
public Void visitIndexJoin(IndexJoinNode node, Integer indent)
{
List<Expression> joinExpressions = new ArrayList<>();
for (IndexJoinNode.EquiJoinClause clause : node.getCriteria()) {
joinExpressions.add(new ComparisonExpression(ComparisonExpression.Operator.EQUAL,
clause.getProbe().toSymbolReference(),
clause.getIndex().toSymbolReference()));
}
print(indent, "- %sIndexJoin[%s]%s => [%s]",
node.getType().getJoinLabel(),
Joiner.on(" AND ").join(joinExpressions),
formatHash(node.getProbeHashSymbol(), node.getIndexHashSymbol()),
formatOutputs(node.getOutputSymbols()));
printPlanNodesStatsAndCost(indent + 2, node);
printStats(indent + 2, node.getId());
node.getProbeSource().accept(this, indent + 1);
node.getIndexSource().accept(this, indent + 1);
return null;
}