MXS-1275: Accept @@[SESSION|GLOBAL].sql_mode = ...
This commit is contained in:
parent
21c1845798
commit
4bf2b27b3e
@ -39,8 +39,10 @@ public:
|
||||
UNUSED_FIRST = 0xFF,
|
||||
TK_DEFAULT,
|
||||
TK_GLOBAL,
|
||||
TK_GLOBAL_VAR,
|
||||
TK_ORACLE,
|
||||
TK_SESSION,
|
||||
TK_SESSION_VAR,
|
||||
TK_SET,
|
||||
TK_SQL_MODE,
|
||||
};
|
||||
@ -353,6 +355,18 @@ private:
|
||||
rv = parse_set(pSql_mode);
|
||||
break;
|
||||
|
||||
case TK_GLOBAL_VAR:
|
||||
case TK_SESSION_VAR:
|
||||
if (next_token() == '.')
|
||||
{
|
||||
rv = parse_set(pSql_mode);
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = ERROR;
|
||||
}
|
||||
break;
|
||||
|
||||
case TK_SQL_MODE:
|
||||
if (next_token() == '=')
|
||||
{
|
||||
@ -561,14 +575,19 @@ private:
|
||||
case '@':
|
||||
if (is_next_alpha('S', 2))
|
||||
{
|
||||
token = expect_token(MXS_CP_EXPECT_TOKEN("@@SESSION"), TK_SESSION);
|
||||
token = expect_token(MXS_CP_EXPECT_TOKEN("@@SESSION"), TK_SESSION_VAR);
|
||||
}
|
||||
else if (is_next_alpha('G', 2))
|
||||
{
|
||||
token = expect_token(MXS_CP_EXPECT_TOKEN("@@GLOBAL"), TK_GLOBAL);
|
||||
token = expect_token(MXS_CP_EXPECT_TOKEN("@@GLOBAL"), TK_GLOBAL_VAR);
|
||||
}
|
||||
else if (is_next_alpha('L', 2))
|
||||
{
|
||||
token = expect_token(MXS_CP_EXPECT_TOKEN("@@LOCAL"), TK_SESSION_VAR);
|
||||
}
|
||||
break;
|
||||
|
||||
case '.':
|
||||
case '\'':
|
||||
case '"':
|
||||
case '`':
|
||||
|
@ -60,6 +60,16 @@ struct TEST_CASE
|
||||
P::IS_SET_SQL_MODE,
|
||||
P::DEFAULT
|
||||
},
|
||||
{
|
||||
"SET SQL_MODE=DEFAULT;",
|
||||
P::IS_SET_SQL_MODE,
|
||||
P::DEFAULT
|
||||
},
|
||||
{
|
||||
"SET SQL_MODE=DEFAULT; ",
|
||||
P::IS_SET_SQL_MODE,
|
||||
P::DEFAULT
|
||||
},
|
||||
{
|
||||
"-- This is a comment\nSET SQL_MODE=DEFAULT",
|
||||
P::IS_SET_SQL_MODE,
|
||||
@ -135,6 +145,31 @@ struct TEST_CASE
|
||||
P::IS_SET_SQL_MODE,
|
||||
P::ORACLE
|
||||
},
|
||||
{
|
||||
"SET @@GLOBAL.SQL_MODE=ORACLE",
|
||||
P::IS_SET_SQL_MODE,
|
||||
P::ORACLE
|
||||
},
|
||||
{
|
||||
"SET @@SESSION.SQL_MODE=ORACLE",
|
||||
P::IS_SET_SQL_MODE,
|
||||
P::ORACLE
|
||||
},
|
||||
{
|
||||
"SET @@LOCAL.SQL_MODE=ORACLE",
|
||||
P::IS_SET_SQL_MODE,
|
||||
P::ORACLE
|
||||
},
|
||||
{
|
||||
"SET @@LOCAL . SQL_MODE = ORACLE",
|
||||
P::IS_SET_SQL_MODE,
|
||||
P::ORACLE
|
||||
},
|
||||
{
|
||||
"SET @@SESSION.blah = 1234, @@GLOBAL.blahblah = something, sql_mode=ORACLE",
|
||||
P::IS_SET_SQL_MODE,
|
||||
P::ORACLE
|
||||
},
|
||||
};
|
||||
|
||||
const int N_TEST_CASES = sizeof(test_cases)/sizeof(test_cases[0]);
|
||||
@ -286,6 +321,15 @@ int test()
|
||||
rv = EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (rv == EXIT_SUCCESS)
|
||||
{
|
||||
cout << "OK" << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "ERROR" << endl;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
@ -294,7 +338,7 @@ int test()
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
int rc = EXIT_SUCCESS;
|
||||
int rv = EXIT_SUCCESS;
|
||||
|
||||
srand(time(NULL));
|
||||
|
||||
@ -304,7 +348,7 @@ int main(int argc, char* argv[])
|
||||
|
||||
if (mxs_log_init(NULL, ".", MXS_LOG_TARGET_DEFAULT))
|
||||
{
|
||||
rc = test();
|
||||
rv = test();
|
||||
|
||||
mxs_log_finish();
|
||||
}
|
||||
@ -313,5 +357,5 @@ int main(int argc, char* argv[])
|
||||
cerr << "error: Could not initialize log." << endl;
|
||||
}
|
||||
|
||||
return rc;
|
||||
return rv;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user