summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorNirbhay Choubey <nirbhay@mariadb.com>2016-09-02 12:21:40 -0400
committerNirbhay Choubey <nirbhay@mariadb.com>2016-09-02 12:21:40 -0400
commit31697d0b80353a1e086c0063c39db03454e137de (patch)
tree43599cdfcc4f0e2d6a2c74099cc92282d51d7405 /sql
parenta322651b8aa702e58d473edfae26606f10a089fb (diff)
downloadmariadb-git-31697d0b80353a1e086c0063c39db03454e137de.tar.gz
MDEV-10545: Server crashed in my_copy_fix_mb on querying I_S and P_S tables
Once THDs have been added to the global "threads" list, they must modify query_string only after acquiring per- thread LOCK_thd_data mutex.
Diffstat (limited to 'sql')
-rw-r--r--sql/log_event.cc1
-rw-r--r--sql/sql_acl.cc8
-rw-r--r--sql/sql_parse.cc7
3 files changed, 7 insertions, 9 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc
index afa58afc21d..de6528638f0 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -6022,7 +6022,6 @@ int Load_log_event::do_apply_event(NET* net, rpl_group_info *rgi,
new_db.str= (char *) rpl_filter->get_rewrite_db(db, &new_db.length);
thd->set_db(new_db.str, new_db.length);
DBUG_ASSERT(thd->query() == 0);
- thd->reset_query_inner(); // Should not be needed
thd->is_slave_error= 0;
clear_all_errors(thd, const_cast<Relay_log_info*>(rli));
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 23302e1847e..48c57303805 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -2797,7 +2797,7 @@ bool change_password(THD *thd, LEX_USER *user)
if (WSREP(thd) && !IF_WSREP(thd->wsrep_applier, 0))
{
- thd->set_query_inner(buff, query_length, system_charset_info);
+ thd->set_query(buff, query_length, system_charset_info);
WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, (char*)"user", NULL);
}
@@ -2858,7 +2858,7 @@ error: // this label is used in WSREP_TO_ISOLATION_BEGIN
{
WSREP_TO_ISOLATION_END;
- thd->set_query_inner(query_save);
+ thd->set_query(query_save);
thd->wsrep_exec_mode = LOCAL_STATE;
}
#endif /* WITH_WSREP */
@@ -2913,7 +2913,7 @@ int acl_set_default_role(THD *thd, const char *host, const char *user,
if (WSREP(thd) && !IF_WSREP(thd->wsrep_applier, 0))
{
- thd->set_query_inner(buff, query_length, system_charset_info);
+ thd->set_query(buff, query_length, system_charset_info);
WSREP_TO_ISOLATION_BEGIN(WSREP_MYSQL_DB, (char*)"user", NULL);
}
@@ -3009,7 +3009,7 @@ error: // this label is used in WSREP_TO_ISOLATION_END
{
WSREP_TO_ISOLATION_END;
- thd->set_query_inner(query_save);
+ thd->set_query(query_save);
thd->wsrep_exec_mode = LOCAL_STATE;
}
#endif /* WITH_WSREP */
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index c6d80e1ba97..a15f3da8e12 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -7298,10 +7298,9 @@ void mysql_parse(THD *thd, char *rawbuf, uint length,
Note that we don't need LOCK_thread_count to modify query_length.
*/
if (found_semicolon && (ulong) (found_semicolon - thd->query()))
- thd->set_query_inner(thd->query(),
- (uint32) (found_semicolon -
- thd->query() - 1),
- thd->charset());
+ thd->set_query(thd->query(),
+ (uint32) (found_semicolon - thd->query() - 1),
+ thd->charset());
/* Actually execute the query */
if (found_semicolon)
{