From 449b679d9eb92f38bc82514916c26594d7bfc165 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Dec 2005 11:09:50 +0100 Subject: [PATCH] Bug#15920 (Temporary tables are not logged in binlog): Fixing faulty tests preventing some CREATE TEMPORARY TABLE statements from being binlogged under statement-based replication. mysql-test/t/disabled.def: Enabling rpl000002 test. sql/sql_table.cc: Changed faulty tests so that creation of temporary tables are always done when statement-based logging is used. --- mysql-test/t/disabled.def | 2 +- sql/sql_table.cc | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index f32ed667864..ef5bdefa1ed 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -22,6 +22,6 @@ group_min_max : Bug #15448 innodb_concurrent : Results are not deterministic, Elliot will fix (BUG#3300) subselect : Bug#15706 type_time : Bug#15805 -rpl000002 : Bug#15920 Temporary tables are not binlogged in SBR +#rpl000002 : Bug#15920 Temporary tables are not binlogged in SBR ps_7ndb : Bug#15923 Core dump in RBR mode when executing test suite sp_trans : Bug#15924 Code dump in RBR mode when executing test suite diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 3ac0d3ae466..df8f7bdc320 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1915,10 +1915,12 @@ bool mysql_create_table(THD *thd,const char *db, const char *table_name, - It is an internal temporary table, - Row-based logging is used and it we are creating a temporary table, or - The binary log is not open. + Otherwise, the statement shall be binlogged. */ if (!internal_tmp_table && - !(binlog_row_based && - (create_info->options & HA_LEX_CREATE_TMP_TABLE))) + (!binlog_row_based || + (binlog_row_based && + !(create_info->options & HA_LEX_CREATE_TMP_TABLE)))) write_bin_log(thd, TRUE, thd->query, thd->query_length); error= FALSE; unlock_and_end: @@ -3112,7 +3114,7 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, Case 3 and 4 does nothing under RBR */ } - else if (!(create_info->options & HA_LEX_CREATE_TMP_TABLE)) + else write_bin_log(thd, TRUE, thd->query, thd->query_length); res= FALSE;