MXS-2432 Recognize RESET
RESET QUERY CACHE is reported to be a session command, which will cause it to be sent to all servers. RESET [MASTER|SLAVE] are classified as write, which will cause them to be sent to the master. It could be argued that RESET [MASTER|SLAVE] should cause an error to be sent to the client.
This commit is contained in:
@ -125,6 +125,7 @@ extern void maxscaleLock(Parse*, mxs_lock_t, SrcList*);
|
||||
extern void maxscalePrepare(Parse*, Token* pName, Expr* pStmt);
|
||||
extern void maxscalePrivileges(Parse*, int kind);
|
||||
extern void maxscaleRenameTable(Parse*, SrcList* pTables);
|
||||
extern void maxscaleReset(Parse*, int what);
|
||||
extern void maxscaleSet(Parse*, int scope, mxs_set_t kind, ExprList*);
|
||||
extern void maxscaleShow(Parse*, MxsShow* pShow);
|
||||
extern void maxscaleTruncate(Parse*, Token* pDatabase, Token* pName);
|
||||
@ -614,7 +615,7 @@ columnid(A) ::= nm(X). {
|
||||
// TODO: BINARY is a reserved word and should not automatically convert into an identifer.
|
||||
// TODO: However, if not here then rules such as CAST need to be modified.
|
||||
BINARY
|
||||
/*CASCADE*/ CAST CLOSE COLUMNKW COLUMNS COMMENT CONCURRENT /*CONFLICT*/
|
||||
CACHE /*CASCADE*/ CAST CLOSE COLUMNKW COLUMNS COMMENT CONCURRENT /*CONFLICT*/
|
||||
DATA DATABASE DEALLOCATE DEFERRED /*DESC*/ /*DETACH*/ DUMPFILE
|
||||
/*EACH*/ END ENGINE ENUM EXCLUSIVE /*EXPLAIN*/
|
||||
FIRST FLUSH /*FOR*/ FORMAT
|
||||
@ -628,8 +629,8 @@ columnid(A) ::= nm(X). {
|
||||
NO
|
||||
OF OFFSET OPEN
|
||||
PREVIOUS
|
||||
QUICK
|
||||
RAISE RECURSIVE /*REINDEX*/ RELEASE /*RENAME*/ /*REPLACE*/ RESTRICT ROLLBACK ROLLUP ROW
|
||||
QUERY QUICK
|
||||
RAISE RECURSIVE /*REINDEX*/ RELEASE /*RENAME*/ /*REPLACE*/ RESET RESTRICT ROLLBACK ROLLUP ROW
|
||||
SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SLAVE /*START*/ STATEMENT STATUS
|
||||
TABLES TEMP TEMPTABLE /*TRIGGER*/
|
||||
/*TRUNCATE*/
|
||||
@ -3079,6 +3080,12 @@ rename ::= RENAME TABLE tables_to_rename(X). {
|
||||
maxscaleRenameTable(pParse, X);
|
||||
}
|
||||
|
||||
//////////////////////// The RESET statement ////////////////////////////////////
|
||||
//
|
||||
cmd ::= RESET QUERY CACHE. {
|
||||
maxscaleReset(pParse, MXS_RESET_QUERY_CACHE);
|
||||
}
|
||||
|
||||
//////////////////////// The SET statement ////////////////////////////////////
|
||||
//
|
||||
%type set_scope {int}
|
||||
|
@ -4099,6 +4099,11 @@ typedef enum mxs_drop
|
||||
MXS_DROP_SEQUENCE,
|
||||
} mxs_drop_t;
|
||||
|
||||
typedef enum mxs_reset
|
||||
{
|
||||
MXS_RESET_QUERY_CACHE
|
||||
} mxs_reset_t;
|
||||
|
||||
typedef enum mxs_set
|
||||
{
|
||||
MXS_SET_VARIABLES,
|
||||
|
@ -180,6 +180,7 @@ static Keyword aKeywordTable[] = {
|
||||
{ "BY", "TK_BY", ALWAYS },
|
||||
#ifdef MAXSCALE
|
||||
{ "CALL", "TK_CALL", ALWAYS },
|
||||
{ "CACHE", "TK_CACHE", ALWAYS },
|
||||
#endif
|
||||
{ "CASCADE", "TK_CASCADE", FKEY },
|
||||
{ "CASE", "TK_CASE", ALWAYS },
|
||||
@ -391,7 +392,9 @@ static Keyword aKeywordTable[] = {
|
||||
#ifdef MAXSCALE
|
||||
{ "PROCEDURE", "TK_FUNCTION_KW", ALWAYS },
|
||||
#endif
|
||||
#ifndef MAXSCALE
|
||||
#ifdef MAXSCALE
|
||||
{ "QUERY", "TK_QUERY", ALWAYS },
|
||||
#else
|
||||
{ "QUERY", "TK_QUERY", EXPLAIN },
|
||||
#endif
|
||||
#ifdef MAXSCALE
|
||||
@ -409,6 +412,9 @@ static Keyword aKeywordTable[] = {
|
||||
{ "RELEASE", "TK_RELEASE", ALWAYS },
|
||||
{ "RENAME", "TK_RENAME", ALTER },
|
||||
{ "REPLACE", "TK_REPLACE", CONFLICT },
|
||||
#ifdef MAXSCALE
|
||||
{ "RESET", "TK_RESET", ALWAYS },
|
||||
#endif
|
||||
{ "RESTRICT", "TK_RESTRICT", FKEY },
|
||||
#ifdef MAXSCALE
|
||||
{ "REVOKE", "TK_REVOKE", ALWAYS },
|
||||
|
Reference in New Issue
Block a user