From 0408bd9531e1844a8edff6b4ccf77ce75cc18738 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Mon, 1 Mar 2021 08:54:25 +0200 Subject: [PATCH] MXS-3404 Fix parsing of TRIM() Now should accept all possible argument variations. --- .../qc_sqlite/sqlite-src-3110100/src/parse.y | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y b/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y index 4abd5bb78..bba08dc2e 100644 --- a/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y +++ b/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y @@ -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); A.pExpr = sqlite3ExprFunction(pParse, pArgs, &X); spanSet(&A, &X, &Z);