summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <ramil/ram@mysql.com/ramil.myoffice.izhnet.ru>2007-08-02 14:51:03 +0500
committerunknown <ramil/ram@mysql.com/ramil.myoffice.izhnet.ru>2007-08-02 14:51:03 +0500
commit898333f843b5c750b9863ea94d60ab81a9caca4e (patch)
tree3871ef561058494ec8493d4094a9713a3d69317b /sql
parentd07385965a42e086f53b94b8f0f435c1e586d28d (diff)
downloadmariadb-git-898333f843b5c750b9863ea94d60ab81a9caca4e.tar.gz
Fix for bug #30200: mysqlbinlog.test: connection_id() not restored under ps-protocol
Problem: thd->thread_specific_used flag is not set executing a statement containig connection_id() function using PS protocol, that leads to improper binlog event creation. Fix: set the flag in the Item_func_connection_id::fix_fields(). sql/item_create.cc: Fix for bug #30200: mysqlbinlog.test: connection_id() not restored under ps-protocol - set the thd->thread_specific_used flag in the Item_func_connection_id::fix_fields() to have it properly set using PS protocol as well. sql/item_func.cc: Fix for bug #30200: mysqlbinlog.test: connection_id() not restored under ps-protocol - set the thd->thread_specific_used flag in the Item_func_connection_id::fix_fields() to have it properly set using PS protocol as well. sql/sql_parse.cc: Fix for bug #30200: mysqlbinlog.test: connection_id() not restored under ps-protocol - reset the thd->thread_specific_used flag in the mysql_reset_thd_for_next_command().
Diffstat (limited to 'sql')
-rw-r--r--sql/item_create.cc1
-rw-r--r--sql/item_func.cc1
-rw-r--r--sql/sql_parse.cc1
3 files changed, 2 insertions, 1 deletions
diff --git a/sql/item_create.cc b/sql/item_create.cc
index 3713fc9e380..561613032bc 100644
--- a/sql/item_create.cc
+++ b/sql/item_create.cc
@@ -72,7 +72,6 @@ Item *create_func_connection_id(void)
{
THD *thd= current_thd;
thd->lex->safe_to_cache_query= 0;
- thd->thread_specific_used= TRUE;
return new Item_func_connection_id();
}
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 4b32281b457..c70cfa1ce2a 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -649,6 +649,7 @@ bool Item_func_connection_id::fix_fields(THD *thd, Item **ref)
{
if (Item_int_func::fix_fields(thd, ref))
return TRUE;
+ thd->thread_specific_used= TRUE;
value= thd->variables.pseudo_thread_id;
return FALSE;
}
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 7d723d3cd5b..25ead88ac53 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -5847,6 +5847,7 @@ void mysql_reset_thd_for_next_command(THD *thd)
SERVER_QUERY_NO_GOOD_INDEX_USED);
DBUG_ASSERT(thd->security_ctx== &thd->main_security_ctx);
thd->tmp_table_used= 0;
+ thd->thread_specific_used= FALSE;
if (!thd->in_sub_stmt)
{
if (opt_bin_log)