MXS-2996 Fix classification of "SELECT ... LOCK IN SHARE MODE"

And also of "SELECT ... FOR SHARE"
This commit is contained in:
Johan Wikman
2020-06-18 10:17:08 +03:00
parent 1dd06c3ebc
commit 9fb5336615
2 changed files with 9 additions and 3 deletions

View File

@ -630,14 +630,14 @@ columnid(A) ::= nm(X). {
IF IMMEDIATE INITIALLY INSTEAD IF IMMEDIATE INITIALLY INSTEAD
/*KEY*/ /*KEY*/
/*LIKE_KW*/ /*LIKE_KW*/
MASTER /*MATCH*/ MERGE MASTER /*MATCH*/ MERGE MODE
NAMES NEXT NAMES NEXT
NO NO
OF OFFSET OPEN OF OFFSET OPEN
PARTITIONS PASSWORD PREVIOUS PARTITIONS PASSWORD 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*/ STATEMENT STATUS SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SHARE SLAVE /*START*/ STATEMENT STATUS
TABLES TEMP TEMPTABLE /*TRIGGER*/ TABLES TEMP TEMPTABLE /*TRIGGER*/
/*TRUNCATE*/ /*TRUNCATE*/
// TODO: UNSIGNED is a reserved word and should not automatically convert into an identifer. // 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 %ifdef MAXSCALE
selectnowithsuffix(A) ::= selectnowith(X). {A = X;} 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; A = X;
maxscale_set_type_mask(QUERY_TYPE_WRITE); maxscale_set_type_mask(QUERY_TYPE_WRITE);
} }

View File

@ -348,6 +348,7 @@ static Keyword aKeywordTable[] = {
#ifdef MAXSCALE #ifdef MAXSCALE
{ "MASTER", "TK_MASTER", ALWAYS }, { "MASTER", "TK_MASTER", ALWAYS },
{ "MERGE", "TK_MERGE", ALWAYS }, { "MERGE", "TK_MERGE", ALWAYS },
{ "MODE", "TK_MODE", ALWAYS },
{ "NAMES", "TK_NAMES", ALWAYS }, { "NAMES", "TK_NAMES", ALWAYS },
#endif #endif
{ "NATURAL", "TK_JOIN_KW", ALWAYS }, { "NATURAL", "TK_JOIN_KW", ALWAYS },
@ -436,6 +437,7 @@ static Keyword aKeywordTable[] = {
#ifdef MAXSCALE #ifdef MAXSCALE
{ "SESSION", "TK_SESSION", ALWAYS }, { "SESSION", "TK_SESSION", ALWAYS },
{ "SEPARATOR", "TK_SEPARATOR", ALWAYS }, { "SEPARATOR", "TK_SEPARATOR", ALWAYS },
{ "SHARE", "TK_SHARE", ALWAYS },
{ "SHOW", "TK_SHOW", ALWAYS }, { "SHOW", "TK_SHOW", ALWAYS },
{ "SLAVE", "TK_SLAVE", ALWAYS }, { "SLAVE", "TK_SLAVE", ALWAYS },
{ "SPATIAL", "TK_SPATIAL", ALWAYS }, { "SPATIAL", "TK_SPATIAL", ALWAYS },