Merge branch '2.3' into 2.4
This commit is contained in:
@ -985,10 +985,15 @@ static uint32_t resolve_query_type(parsing_info_t* pi, THD* thd)
|
|||||||
*/
|
*/
|
||||||
else if (lex->sql_command == SQLCOM_SET_OPTION)
|
else if (lex->sql_command == SQLCOM_SET_OPTION)
|
||||||
{
|
{
|
||||||
type |= QUERY_TYPE_SESSION_WRITE;
|
switch (get_set_type(pi->pi_query_plain_str))
|
||||||
|
|
||||||
if (get_set_type(pi->pi_query_plain_str) == SET_TYPE_UNKNOWN)
|
|
||||||
{
|
{
|
||||||
|
case SET_TYPE_PASSWORD:
|
||||||
|
type |= QUERY_TYPE_WRITE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SET_TYPE_UNKNOWN:
|
||||||
|
{
|
||||||
|
type |= QUERY_TYPE_SESSION_WRITE;
|
||||||
/** Either user- or system variable write */
|
/** Either user- or system variable write */
|
||||||
List_iterator<set_var_base> ilist(lex->var_list);
|
List_iterator<set_var_base> ilist(lex->var_list);
|
||||||
size_t n = 0;
|
size_t n = 0;
|
||||||
@ -1011,6 +1016,11 @@ static uint32_t resolve_query_type(parsing_info_t* pi, THD* thd)
|
|||||||
type |= QUERY_TYPE_GSYSVAR_WRITE;
|
type |= QUERY_TYPE_GSYSVAR_WRITE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
type |= QUERY_TYPE_SESSION_WRITE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -2743,6 +2743,13 @@ public:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case TK_SET:
|
||||||
|
if (m_keyword_2 == TK_PASSWORD)
|
||||||
|
{
|
||||||
|
m_type_mask = QUERY_TYPE_WRITE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case TK_START:
|
case TK_START:
|
||||||
switch (m_keyword_2)
|
switch (m_keyword_2)
|
||||||
{
|
{
|
||||||
@ -2962,6 +2969,9 @@ public:
|
|||||||
&& pVariable->op == TK_ID
|
&& pVariable->op == TK_ID
|
||||||
&& strcasecmp(pVariable->u.zToken, "password") == 0)
|
&& strcasecmp(pVariable->u.zToken, "password") == 0)
|
||||||
{
|
{
|
||||||
|
// Even though SET PASSWORD looks like a session command it
|
||||||
|
// is not, the password change will be replicated to slaves.
|
||||||
|
m_type_mask = QUERY_TYPE_WRITE;
|
||||||
// Ok, it was, so we break out.
|
// Ok, it was, so we break out.
|
||||||
i = pList->nExpr;
|
i = pList->nExpr;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -634,7 +634,7 @@ columnid(A) ::= nm(X). {
|
|||||||
NAMES NEXT
|
NAMES NEXT
|
||||||
NO
|
NO
|
||||||
OF OFFSET OPEN
|
OF OFFSET OPEN
|
||||||
PARTITIONS PREVIOUS
|
PARTITIONS PASSWORD PREVIOUS
|
||||||
QUERY QUICK
|
QUERY QUICK
|
||||||
RAISE RECURSIVE /*REINDEX*/ RELEASE /*RENAME*/ /*REPLACE*/ RESET RESTRICT ROLLBACK ROLLUP ROW
|
RAISE RECURSIVE /*REINDEX*/ RELEASE /*RENAME*/ /*REPLACE*/ RESET RESTRICT ROLLBACK ROLLUP ROW
|
||||||
SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SLAVE /*START*/ STATEMENT STATUS
|
SAVEPOINT SELECT_OPTIONS_KW /*SEQUENCE*/ SLAVE /*START*/ STATEMENT STATUS
|
||||||
|
|||||||
@ -381,6 +381,7 @@ static Keyword aKeywordTable[] = {
|
|||||||
#ifdef MAXSCALE
|
#ifdef MAXSCALE
|
||||||
{ "PARTITION", "TK_PARTITION", ALWAYS },
|
{ "PARTITION", "TK_PARTITION", ALWAYS },
|
||||||
{ "PARTITIONS", "TK_PARTITIONS", ALWAYS },
|
{ "PARTITIONS", "TK_PARTITIONS", ALWAYS },
|
||||||
|
{ "PASSWORD", "TK_PASSWORD", ALWAYS },
|
||||||
{ "PERSISTENT", "TK_PERSISTENT", ALWAYS },
|
{ "PERSISTENT", "TK_PERSISTENT", ALWAYS },
|
||||||
#endif
|
#endif
|
||||||
#ifndef MAXSCALE
|
#ifndef MAXSCALE
|
||||||
|
|||||||
@ -32,3 +32,4 @@ QUERY_TYPE_READ
|
|||||||
QUERY_TYPE_READ
|
QUERY_TYPE_READ
|
||||||
QUERY_TYPE_SESSION_WRITE|QUERY_TYPE_USERVAR_WRITE
|
QUERY_TYPE_SESSION_WRITE|QUERY_TYPE_USERVAR_WRITE
|
||||||
QUERY_TYPE_READ|QUERY_TYPE_MASTER_READ
|
QUERY_TYPE_READ|QUERY_TYPE_MASTER_READ
|
||||||
|
QUERY_TYPE_WRITE
|
||||||
|
|||||||
@ -32,3 +32,4 @@ select timediff(cast('2004-12-30 12:00:00' as time), '12:00:00');
|
|||||||
(select 1 as a from t1) union all (select 1 from dual) limit 1;
|
(select 1 as a from t1) union all (select 1 from dual) limit 1;
|
||||||
SET @saved_cs_client= @@character_set_client;
|
SET @saved_cs_client= @@character_set_client;
|
||||||
SELECT 1 AS c1 FROM t1 ORDER BY ( SELECT 1 AS c2 FROM t1 GROUP BY GREATEST(LAST_INSERT_ID(), t1.a) ORDER BY GREATEST(LAST_INSERT_ID(), t1.a) LIMIT 1);
|
SELECT 1 AS c1 FROM t1 ORDER BY ( SELECT 1 AS c2 FROM t1 GROUP BY GREATEST(LAST_INSERT_ID(), t1.a) ORDER BY GREATEST(LAST_INSERT_ID(), t1.a) LIMIT 1);
|
||||||
|
SET PASSWORD FOR 'user'@'10.0.0.1'='*C50EB75D7CB4C76B5264218B92BC69E6815B057A';
|
||||||
|
|||||||
@ -137,6 +137,9 @@ SET @saved_cs_client= @@character_set_client;
|
|||||||
SELECT NEXTVAL(id_generator), context FROM t1 WHERE (a,b,c) >= (1,2,3);
|
SELECT NEXTVAL(id_generator), context FROM t1 WHERE (a,b,c) >= (1,2,3);
|
||||||
select soundex(_utf8mb4 0xD091D092D093) as vx, gray_user_tag from user_extends where user_id > last_insert_id();
|
select soundex(_utf8mb4 0xD091D092D093) as vx, gray_user_tag from user_extends where user_id > last_insert_id();
|
||||||
|
|
||||||
|
# MXS-2713
|
||||||
|
SET PASSWORD FOR 'user'@'10.0.0.1'='*C50EB75D7CB4C76B5264218B92BC69E6815B057A';
|
||||||
|
|
||||||
# MXS-2432
|
# MXS-2432
|
||||||
RESET QUERY CACHE;
|
RESET QUERY CACHE;
|
||||||
RESET MASTER;
|
RESET MASTER;
|
||||||
|
|||||||
Reference in New Issue
Block a user