MXS-3404 Fix parsing of TRIM()
Now should accept all possible argument variations.
This commit is contained in:
@ -2135,12 +2135,15 @@ expr(A) ::= keyword_as_function(X) LP distinct(D) exprlist(Y) RP(E). {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
trim_arg1_opt ::= TRIM_ARG.
|
|
||||||
trim_arg1_opt ::= .
|
|
||||||
|
|
||||||
trim_arg2 ::= INTEGER|STRING.
|
%type trim_args {ExprSpan}
|
||||||
|
%destructor trim_args {sqlite3ExprDelete(pParse->db, $$.pExpr);}
|
||||||
|
trim_args(A) ::= TRIM_ARG term FROM expr(X). { A = X; }
|
||||||
|
trim_args(A) ::= TRIM_ARG FROM expr(X). { A = X; }
|
||||||
|
trim_args(A) ::= term FROM expr(X). { A = X; }
|
||||||
|
trim_args(A) ::= expr(X). { A = X; }
|
||||||
|
|
||||||
expr(A) ::= TRIM(X) LP trim_arg1_opt trim_arg2 FROM expr(Y) RP(Z). {
|
expr(A) ::= TRIM(X) LP trim_args(Y) RP(Z). {
|
||||||
ExprList* pArgs = sqlite3ExprListAppend(pParse, NULL, Y.pExpr);
|
ExprList* pArgs = sqlite3ExprListAppend(pParse, NULL, Y.pExpr);
|
||||||
A.pExpr = sqlite3ExprFunction(pParse, pArgs, &X);
|
A.pExpr = sqlite3ExprFunction(pParse, pArgs, &X);
|
||||||
spanSet(&A, &X, &Z);
|
spanSet(&A, &X, &Z);
|
||||||
|
Reference in New Issue
Block a user