summaryrefslogtreecommitdiff
path: root/sql/sql_class.cc
diff options
context:
space:
mode:
authorAlfranio Correia <alfranio.correia@sun.com>2010-04-26 10:02:29 +0100
committerAlfranio Correia <alfranio.correia@sun.com>2010-04-26 10:02:29 +0100
commit68598c479bec557e22621678596fde95e0e5ee13 (patch)
tree7be6c5ebc708fc83a35cbbb9dd7f99f19c59149b /sql/sql_class.cc
parent17aa4173a4a4dd71a64ab1f1eb9d9dd1b2405fc4 (diff)
downloadmariadb-git-68598c479bec557e22621678596fde95e0e5ee13.tar.gz
BUG#53075 SBR: Strange warning around CONNECTION_ID
Statements with CONNECTION_ID were forced to be kept in the transactional cache and by consequence non-transactional changes that were supposed to be flushed ahead of the transaction were kept in the transactional cache. This happened because after BUG#51894 any statement whose thd's thread_specific_used was set was kept in the transactional cache. The idea was to keep changes on temporary tables in the transactional cache. However, the thread_specific_used was set not only for statements that accessed temporary tables but also when the CONNECTION_ID was used. To fix the problem, we created a new variable to keep track of updates to temporary tables. mysql-test/suite/rpl/r/rpl_temp_temporary.result: Added a test case. mysql-test/suite/rpl/t/rpl_temp_temporary.test: Added a test case. sql/log_event.cc: Uses the thread_temporary_used to decide if a statement should be kept in the transactional cache or not. sql/sql_class.cc: Sets the thread_temporary_used while calling the decide_logging_format. sql/sql_class.h: Defines the thread_temporary_used. sql/sql_parse.cc: Resets the thread_temporary_used.
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r--sql/sql_class.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 88f67175d02..ef6dc6cf209 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -3736,6 +3736,7 @@ int THD::decide_logging_format(TABLE_LIST *tables)
trans_non_trans_access_engines= (prev_trans != act_trans);
multi_access_engine= TRUE;
}
+ thread_temporary_used |= table->table->s->tmp_table;
prev_access_table= table->table;
}