MXS-1829 Recognise PREVIOUS in addition to NEXT

Earlier only "SELECT NEXT VALUE FOR SEQ" was parsed
properly, while "SELECT PREVIOUS VALUE FOR SEQ" was not.
Now the latter statement is also parsed properly.
This commit is contained in:
Johan Wikman
2018-04-26 13:03:54 +03:00
parent b2cc9e5107
commit 9cf44b3092
2 changed files with 6 additions and 1 deletions

View File

@ -626,6 +626,7 @@ columnid(A) ::= nm(X). {
NAMES NEXT NAMES NEXT
NO NO
OF OFFSET OPEN OF OFFSET OPEN
PREVIOUS
QUICK QUICK
RAISE RECURSIVE /*REINDEX*/ RELEASE /*RENAME*/ /*REPLACE*/ RESTRICT ROLLBACK ROLLUP ROW RAISE RECURSIVE /*REINDEX*/ RELEASE /*RENAME*/ /*REPLACE*/ RESTRICT ROLLBACK ROLLUP ROW
SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SLAVE /*START*/ STATUS SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SLAVE /*START*/ STATUS
@ -1207,7 +1208,10 @@ selcollist(A) ::= sclp(P) nm(X) DOT STAR(Y). {
A = sqlite3ExprListAppend(pParse,P, pDot); A = sqlite3ExprListAppend(pParse,P, pDot);
} }
%ifdef MAXSCALE %ifdef MAXSCALE
selcollist(A) ::= sclp(P) NEXT VALUE FOR nm(X) as(Y). { next_or_previous(A) ::= NEXT(X). {A = X;}
next_or_previous(A) ::= PREVIOUS(X). {A = X;}
selcollist(A) ::= sclp(P) next_or_previous VALUE FOR nm(X) as(Y). {
Expr* pSeq = sqlite3PExpr(pParse, TK_ID, 0, 0, &X); Expr* pSeq = sqlite3PExpr(pParse, TK_ID, 0, 0, &X);
ExprList* pArgs = sqlite3ExprListAppend(pParse, NULL, pSeq); ExprList* pArgs = sqlite3ExprListAppend(pParse, NULL, pSeq);
Token nextval = { "nextval", 7 }; Token nextval = { "nextval", 7 };

View File

@ -383,6 +383,7 @@ static Keyword aKeywordTable[] = {
#ifdef MAXSCALE #ifdef MAXSCALE
{ "PRECEDING", "TK_PRECEDING", ALWAYS }, { "PRECEDING", "TK_PRECEDING", ALWAYS },
{ "PREPARE", "TK_PREPARE", ALWAYS }, { "PREPARE", "TK_PREPARE", ALWAYS },
{ "PREVIOUS", "TK_PREVIOUS", ALWAYS },
#endif #endif
{ "PRIMARY", "TK_PRIMARY", ALWAYS }, { "PRIMARY", "TK_PRIMARY", ALWAYS },
#ifdef MAXSCALE #ifdef MAXSCALE