From 510ce38680326bdb147e256459689af3ed558357 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Wed, 25 Apr 2018 11:07:55 +0300 Subject: [PATCH 1/3] Update 2.2 version number in minor branch --- VERSION22.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION22.cmake b/VERSION22.cmake index 654dcad86..2e0f592ef 100644 --- a/VERSION22.cmake +++ b/VERSION22.cmake @@ -5,7 +5,7 @@ set(MAXSCALE_VERSION_MAJOR "2" CACHE STRING "Major version") set(MAXSCALE_VERSION_MINOR "2" CACHE STRING "Minor version") -set(MAXSCALE_VERSION_PATCH "5" CACHE STRING "Patch version") +set(MAXSCALE_VERSION_PATCH "6" CACHE STRING "Patch version") # This should only be incremented if a package is rebuilt set(MAXSCALE_BUILD_NUMBER 1 CACHE STRING "Release number") From b2cc9e5107cc99ba503d94311eaecdff16524cc5 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Thu, 26 Apr 2018 12:44:30 +0300 Subject: [PATCH 2/3] MXS-1829 Add test that reveals problem --- query_classifier/test/maxscale.test | 3 +++ 1 file changed, 3 insertions(+) diff --git a/query_classifier/test/maxscale.test b/query_classifier/test/maxscale.test index 63fed3f4c..1bfc4a1db 100644 --- a/query_classifier/test/maxscale.test +++ b/query_classifier/test/maxscale.test @@ -103,3 +103,6 @@ SELECT id as engine FROM users WHERE id = 1; # MXS-1787 CALL p1((SELECT f1()), ?); + +# MXS-1829 +SELECT PREVIOUS VALUE FOR SEQ; From 9cf44b3092890553a50b7038a4d7f480293bcace Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Thu, 26 Apr 2018 13:03:54 +0300 Subject: [PATCH 3/3] 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. --- query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y | 6 +++++- .../qc_sqlite/sqlite-src-3110100/tool/mkkeywordhash.c | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) 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 a765bec97..d4498cf37 100644 --- a/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y +++ b/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y @@ -626,6 +626,7 @@ columnid(A) ::= nm(X). { NAMES NEXT NO OF OFFSET OPEN + PREVIOUS QUICK RAISE RECURSIVE /*REINDEX*/ RELEASE /*RENAME*/ /*REPLACE*/ RESTRICT ROLLBACK ROLLUP ROW 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); } %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); ExprList* pArgs = sqlite3ExprListAppend(pParse, NULL, pSeq); Token nextval = { "nextval", 7 }; diff --git a/query_classifier/qc_sqlite/sqlite-src-3110100/tool/mkkeywordhash.c b/query_classifier/qc_sqlite/sqlite-src-3110100/tool/mkkeywordhash.c index d8723ea16..5d51ea86a 100644 --- a/query_classifier/qc_sqlite/sqlite-src-3110100/tool/mkkeywordhash.c +++ b/query_classifier/qc_sqlite/sqlite-src-3110100/tool/mkkeywordhash.c @@ -383,6 +383,7 @@ static Keyword aKeywordTable[] = { #ifdef MAXSCALE { "PRECEDING", "TK_PRECEDING", ALWAYS }, { "PREPARE", "TK_PREPARE", ALWAYS }, + { "PREVIOUS", "TK_PREVIOUS", ALWAYS }, #endif { "PRIMARY", "TK_PRIMARY", ALWAYS }, #ifdef MAXSCALE