@Override public Node process(Node node, @Nullable Void context) { Node result = super.process(node, context); nodes.add(node); return result; } }.process(tree, null);
@Override protected Void visitAliasedRelation(AliasedRelation node, Integer indentLevel) { print(indentLevel, "Alias[" + node.getAlias() + "]"); super.visitAliasedRelation(node, indentLevel + 1); return null; }
@Override protected Void visitFunctionCall(FunctionCall node, Integer indentLevel) { String name = Joiner.on('.').join(node.getName().getParts()); print(indentLevel, "FunctionCall[" + name + "]"); super.visitFunctionCall(node, indentLevel + 1); return null; }
@Override protected Void visitLogicalBinaryExpression(LogicalBinaryExpression node, Integer indentLevel) { print(indentLevel, node.getOperator().toString()); super.visitLogicalBinaryExpression(node, indentLevel + 1); return null; }
@Override protected Void visitComparisonExpression(ComparisonExpression node, Integer indentLevel) { print(indentLevel, node.getOperator().toString()); super.visitComparisonExpression(node, indentLevel + 1); return null; }
@Override protected Void visitLikePredicate(LikePredicate node, Integer indentLevel) { print(indentLevel, "LIKE"); super.visitLikePredicate(node, indentLevel + 1); return null; }
@Override protected Void visitInPredicate(InPredicate node, Integer indentLevel) { print(indentLevel, "IN"); super.visitInPredicate(node, indentLevel + 1); return null; }
@Override protected Void visitArithmeticBinary(ArithmeticBinaryExpression node, Integer indentLevel) { print(indentLevel, node.getOperator().toString()); super.visitArithmeticBinary(node, indentLevel + 1); return null; }
@Override protected Void visitRow(Row node, Integer indentLevel) { print(indentLevel, "Row"); super.visitRow(node, indentLevel + 1); return null; }
@Override protected Void visitSampledRelation(SampledRelation node, Integer indentLevel) { print(indentLevel, "TABLESAMPLE[" + node.getType() + " (" + node.getSamplePercentage() + ")]"); super.visitSampledRelation(node, indentLevel + 1); return null; }
@Override protected Void visitLogicalBinaryExpression(LogicalBinaryExpression node, Integer indentLevel) { print(indentLevel, node.getOperator().toString()); super.visitLogicalBinaryExpression(node, indentLevel + 1); return null; }
@Override protected Void visitComparisonExpression(ComparisonExpression node, Integer indentLevel) { print(indentLevel, node.getOperator().toString()); super.visitComparisonExpression(node, indentLevel + 1); return null; }
@Override protected Void visitLikePredicate(LikePredicate node, Integer indentLevel) { print(indentLevel, "LIKE"); super.visitLikePredicate(node, indentLevel + 1); return null; }
@Override protected Void visitInPredicate(InPredicate node, Integer indentLevel) { print(indentLevel, "IN"); super.visitInPredicate(node, indentLevel + 1); return null; }
@Override protected Void visitArithmeticBinary(ArithmeticBinaryExpression node, Integer indentLevel) { print(indentLevel, node.getOperator().toString()); super.visitArithmeticBinary(node, indentLevel + 1); return null; }
@Override protected Void visitRow(Row node, Integer indentLevel) { print(indentLevel, "Row"); super.visitRow(node, indentLevel + 1); return null; }
@Override protected Void visitSampledRelation(SampledRelation node, Integer indentLevel) { print(indentLevel, "TABLESAMPLE[" + node.getType() + " (" + node.getSamplePercentage() + ")]"); super.visitSampledRelation(node, indentLevel + 1); return null; }
@Override protected R visitExtract(Extract node, C context) { return process(node.getExpression(), context); }
@Override protected Void visitLogicalBinaryExpression(LogicalBinaryExpression node, Integer indentLevel) { print(indentLevel, node.getType().toString()); super.visitLogicalBinaryExpression(node, indentLevel + 1); return null; }
@Override protected Void visitComparisonExpression(ComparisonExpression node, Integer indentLevel) { print(indentLevel, node.getType().toString()); super.visitComparisonExpression(node, indentLevel + 1); return null; }