Skip to content

Commit

Permalink
doris parse unit test fix (#33797)
Browse files Browse the repository at this point in the history
  • Loading branch information
yaofly committed Dec 10, 2024
1 parent fdcdf04 commit cf7acbe
Showing 1 changed file with 16 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementBaseVisitor;
Expand Down Expand Up @@ -1046,12 +1047,25 @@ public final ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) {
public final ASTNode visitGroupConcatFunction(final GroupConcatFunctionContext ctx) {
calculateParameterCount(ctx.expr());
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.GROUP_CONCAT().getText(), getOriginalText(ctx));
for (ExprContext each : ctx.expr()) {
for (ExprContext each : getTargetRuleContextFromParseTree(ctx, ExprContext.class)) {
result.getParameters().add((ExpressionSegment) visit(each));
}
return result;
}


private <T extends ParseTree> Collection<T> getTargetRuleContextFromParseTree(final ParseTree parseTree, final Class<? extends T> clazz) {
Collection<T> result = new LinkedList<>();
for (int index = 0; index < parseTree.getChildCount(); index++) {
ParseTree child = parseTree.getChild(index);
if (clazz.isInstance(child)) {
result.add(clazz.cast(child));
} else {
result.addAll(getTargetRuleContextFromParseTree(child, clazz));
}
}
return result;
}

// DORIS ADDED BEGIN
@Override
public final ASTNode visitBitwiseFunction(final BitwiseFunctionContext ctx) {
Expand Down

0 comments on commit cf7acbe

Please sign in to comment.