[fix](Nereids) can not parse left and right function (#15655)

This commit is contained in:
mch_ucchi
2023-01-11 21:29:32 +08:00
committed by GitHub
parent 330ed9a84c
commit ea1493d946
3 changed files with 12 additions and 2 deletions

View File

@ -304,7 +304,7 @@ primaryExpression
| constant #constantDefault
| ASTERISK #star
| qualifiedName DOT ASTERISK #star
| identifier LEFT_PAREN ((DISTINCT|ALL)? arguments+=expression
| functionIdentifier LEFT_PAREN ((DISTINCT|ALL)? arguments+=expression
(COMMA arguments+=expression)* (ORDER BY sortItem (COMMA sortItem)*)?)? RIGHT_PAREN #functionCall
| LEFT_PAREN query RIGHT_PAREN #subqueryExpression
| ATSIGN identifier #userVariable
@ -316,6 +316,11 @@ primaryExpression
source=valueExpression RIGHT_PAREN #extract
;
functionIdentifier
: identifier
| LEFT | RIGHT
;
qualifiedName
: identifier (DOT identifier)*
;

View File

@ -871,7 +871,7 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
@Override
public Expression visitFunctionCall(DorisParser.FunctionCallContext ctx) {
return ParserUtils.withOrigin(ctx, () -> {
String functionName = ctx.identifier().getText();
String functionName = ctx.functionIdentifier().getText();
boolean isDistinct = ctx.DISTINCT() != null;
List<Expression> params = visit(ctx.expression(), Expression.class);