Merge branch '2.3' into 2.4

This commit is contained in:
Johan Wikman
2019-09-27 12:30:58 +03:00
4 changed files with 24 additions and 3 deletions

View File

@ -1874,9 +1874,14 @@ idlist(A) ::= nm(Y).
}
expr(A) ::= term(X). {A = X;}
%ifndef MAXSCALE
expr(A) ::= LP(B) expr(X) RP(E). {A.pExpr = X.pExpr; spanSet(&A,&B,&E);}
%endif
%ifdef MAXSCALE
expr(A) ::= LP expr(X) COMMA(OP) expr(Y) RP. {spanBinaryExpr(&A,pParse,@OP,&X,&Y);}
%type exprs {ExprSpan}
exprs(A) ::= expr(X). { A = X; }
exprs(A) ::= exprs(X) COMMA(OP) expr(Y). {spanBinaryExpr(&A,pParse,@OP,&X,&Y);}
expr(A) ::= LP(B) exprs(X) RP(E). {A.pExpr = X.pExpr; spanSet(&A,&B,&E);}
term(A) ::= DEFAULT(X). {spanExpr(&A, pParse, @X, &X);}
%endif
term(A) ::= NULL(X). {spanExpr(&A, pParse, @X, &X);}
@ -1922,6 +1927,13 @@ expr(A) ::= VARIABLE(X). {
spanSet(&A, &X, &X);
}
%ifdef MAXSCALE
expr(A) ::= id(X) INTEGER(Y). {
// The sole purpose of this is to interpret something like '_utf8mb4 0xD091D092D093'
// as a string. It does not matter that any identifier followed by an integer will
// be interpreted as a string, as invalid usage will be caught by the server.
A.pExpr = sqlite3PExpr(pParse, TK_STRING, 0, 0, &Y);
spanSet(&A, &X, &Y);
}
expr(A) ::= VARIABLE(X) variable_tail(Y). {
// As we won't be executing any queries, we do not need to do
// the things that are done above.