MXS-3404 Fix problem by extending parser

This commit is contained in:
Johan Wikman
2021-02-16 08:35:22 +02:00
parent 797d7812cc
commit 0dd5ed23d3
3 changed files with 20 additions and 2 deletions

View File

@ -646,7 +646,7 @@ columnid(A) ::= nm(X). {
QUERY QUICK
RAISE RECURSIVE /*REINDEX*/ RELEASE /*RENAME*/ /*REPLACE*/ RESET RESTRICT ROLLBACK ROLLUP ROW
SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SHARE SLAVE /*START*/ STATEMENT STATUS
TABLES TEMP TEMPTABLE /*TRIGGER*/
TABLES TEMP TEMPTABLE /*TRIGGER*/ TRIM TRIM_ARG
/*TRUNCATE*/
// TODO: UNSIGNED is a reserved word and should not automatically convert into an identifer.
// TODO: However, if not here then rules such as CAST need to be modified.
@ -2130,6 +2130,17 @@ expr(A) ::= keyword_as_function(X) LP distinct(D) exprlist(Y) RP(E). {
A.pExpr->flags |= EP_Distinct;
}
}
trim_arg1_opt ::= TRIM_ARG.
trim_arg1_opt ::= .
trim_arg2 ::= INTEGER|STRING.
expr(A) ::= TRIM(X) LP trim_arg1_opt trim_arg2 FROM expr(Y) RP(Z). {
ExprList* pArgs = sqlite3ExprListAppend(pParse, NULL, Y.pExpr);
A.pExpr = sqlite3ExprFunction(pParse, pArgs, &X);
spanSet(&A, &X, &Z);
}
%endif
expr(A) ::= id(X) LP STAR RP(E) wf_opt. {
A.pExpr = sqlite3ExprFunction(pParse, 0, &X);

View File

@ -176,6 +176,7 @@ static Keyword aKeywordTable[] = {
{ "BETWEEN", "TK_BETWEEN", ALWAYS },
#ifdef MAXSCALE
{ "BINARY", "TK_BINARY", ALWAYS },
{ "BOTH", "TK_TRIM_ARG", ALWAYS },
#endif
{ "BY", "TK_BY", ALWAYS },
#ifdef MAXSCALE
@ -336,6 +337,7 @@ static Keyword aKeywordTable[] = {
{ "KEY", "TK_KEY", ALWAYS },
#ifdef MAXSCALE
{ "KEYS", "TK_KEYS", ALWAYS },
{ "LEADING", "TK_TRIM_ARG" , ALWAYS },
#endif
{ "LEFT", "TK_JOIN_KW", ALWAYS },
{ "LIKE", "TK_LIKE_KW", ALWAYS },
@ -479,9 +481,13 @@ static Keyword aKeywordTable[] = {
{ "TIES", "TK_TIES", ANALYZE },
#endif
{ "TO", "TK_TO", ALWAYS },
#ifdef MAXSCALE
{ "TRAILING", "TK_TRIM_ARG", ALWAYS },
#endif
{ "TRANSACTION", "TK_TRANSACTION", ALWAYS },
{ "TRIGGER", "TK_TRIGGER", TRIGGER },
#ifdef MAXSCALE
{ "TRIM", "TK_TRIM", ALWAYS },
{ "TRUNCATE", "TK_TRUNCATE", ALWAYS },
{ "UNBOUNDED", "TK_UNBOUNDED", ALWAYS },
#endif