Below is the list of changes that have just been committed into a local
5.0 repository of svoj. When svoj does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-07-13 22:09:50+05:00, svoj@stripped +1 -0
BUG#29734 - thread_id=0 in binary log which leads to temporary table conflicts
pseudo_thread_id was not reset properly after mysql_change_user() command,
which may cause replication failure when replicating temporary tables.
Fixed by correcting pseudo_thread_id value after mysql_change_user().
sql/sql_class.cc@stripped, 2007-07-13 22:09:48+05:00, svoj@stripped +8 -1
Fixed that pseudo_thread_id was set to 0 after mysql_change_user().
diff -Nrup a/sql/sql_class.cc b/sql/sql_class.cc
--- a/sql/sql_class.cc 2007-07-06 03:43:02 +05:00
+++ b/sql/sql_class.cc 2007-07-13 22:09:48 +05:00
@@ -211,7 +211,7 @@ THD::THD()
time_after_lock=(time_t) 0;
current_linfo = 0;
slave_thread = 0;
- variables.pseudo_thread_id= 0;
+ thread_id= 0;
one_shot_set= 0;
file_id = 0;
query_id= 0;
@@ -328,6 +328,12 @@ void THD::init(void)
variables.date_format);
variables.datetime_format= date_time_format_copy((THD*) 0,
variables.datetime_format);
+ /*
+ variables= global_system_variables above has reset
+ variables.pseudo_thread_id to 0. We need to correct it here to
+ avoid temporary tables replication failure.
+ */
+ variables.pseudo_thread_id= thread_id;
pthread_mutex_unlock(&LOCK_global_system_variables);
server_status= SERVER_STATUS_AUTOCOMMIT;
if (variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES)
@@ -579,6 +585,7 @@ bool THD::store_globals()
By default 'slave_proxy_id' is 'thread_id'. They may later become different
if this is the slave SQL thread.
*/
+ /** @todo we already do it in init(), see if we still need to do it here */
variables.pseudo_thread_id= thread_id;
/*
We have to call thr_lock_info_init() again here as THD may have been