From 9fb5336615abd665daa9431a0aafd6fb97cc6df4 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Thu, 18 Jun 2020 10:17:08 +0300 Subject: [PATCH] MXS-2996 Fix classification of "SELECT ... LOCK IN SHARE MODE" And also of "SELECT ... FOR SHARE" --- .../qc_sqlite/sqlite-src-3110100/src/parse.y | 10 +++++++--- .../qc_sqlite/sqlite-src-3110100/tool/mkkeywordhash.c | 2 ++ 2 files changed, 9 insertions(+), 3 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 75b8401b4..2deedf381 100644 --- a/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y +++ b/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y @@ -630,14 +630,14 @@ columnid(A) ::= nm(X). { IF IMMEDIATE INITIALLY INSTEAD /*KEY*/ /*LIKE_KW*/ - MASTER /*MATCH*/ MERGE + MASTER /*MATCH*/ MERGE MODE NAMES NEXT NO OF OFFSET OPEN PARTITIONS PASSWORD PREVIOUS QUICK RAISE RECURSIVE /*REINDEX*/ RELEASE /*RENAME*/ /*REPLACE*/ RESTRICT ROLLBACK ROLLUP ROW - SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SLAVE /*START*/ STATEMENT STATUS + SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SHARE SLAVE /*START*/ STATEMENT STATUS TABLES TEMP TEMPTABLE /*TRIGGER*/ /*TRUNCATE*/ // TODO: UNSIGNED is a reserved word and should not automatically convert into an identifer. @@ -1036,7 +1036,11 @@ select(A) ::= with(W) selectnowith(X). { %ifdef MAXSCALE selectnowithsuffix(A) ::= selectnowith(X). {A = X;} -selectnowithsuffix(A) ::= selectnowith(X) FOR UPDATE. { +for_something ::= FOR UPDATE. +for_something ::= FOR SHARE. +for_something ::= LOCK IN SHARE MODE. + +selectnowithsuffix(A) ::= selectnowith(X) for_something. { A = X; maxscale_set_type_mask(QUERY_TYPE_WRITE); } 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 fb224da7a..94d4e0e60 100644 --- a/query_classifier/qc_sqlite/sqlite-src-3110100/tool/mkkeywordhash.c +++ b/query_classifier/qc_sqlite/sqlite-src-3110100/tool/mkkeywordhash.c @@ -348,6 +348,7 @@ static Keyword aKeywordTable[] = { #ifdef MAXSCALE { "MASTER", "TK_MASTER", ALWAYS }, { "MERGE", "TK_MERGE", ALWAYS }, + { "MODE", "TK_MODE", ALWAYS }, { "NAMES", "TK_NAMES", ALWAYS }, #endif { "NATURAL", "TK_JOIN_KW", ALWAYS }, @@ -436,6 +437,7 @@ static Keyword aKeywordTable[] = { #ifdef MAXSCALE { "SESSION", "TK_SESSION", ALWAYS }, { "SEPARATOR", "TK_SEPARATOR", ALWAYS }, + { "SHARE", "TK_SHARE", ALWAYS }, { "SHOW", "TK_SHOW", ALWAYS }, { "SLAVE", "TK_SLAVE", ALWAYS }, { "SPATIAL", "TK_SPATIAL", ALWAYS },