mariadb/mysql-test/suite
Alfranio Correia 3f8bde448c BUG#53560 CREATE TEMP./DROP TEMP. are not binglogged correctly after a failed statement
This patch fixes two problems described as follows:

1 - If there is an on-going transaction and a temporary table is created or
dropped, any failed statement that follows the "create" or "drop commands"
triggers a rollback and by consequence the slave will go out sync because
the binary log will have a wrong sequence of events.

To fix the problem, we changed the expression that evaluates when the
cache should be flushed after either the rollback of a statment or
transaction.

2 - When a "CREATE TEMPORARY TABLE SELECT * FROM" was executed the
OPTION_KEEP_LOG was not set into the thd->options. For that reason, if
the transaction had updated only transactional engines and was rolled
back at the end (.e.g due to a deadlock) the changes were not written
to the binary log, including the creation of the temporary table.
      
To fix the problem, we have set the OPTION_KEEP_LOG into the thd->options
when a "CREATE TEMPORARY TABLE SELECT * FROM" is executed.

sql/log.cc:
  Reorganized the code based on the following functions:
  
  - bool ending_trans(const THD* thd, const bool all);
  - bool trans_has_updated_non_trans_table(const THD* thd);
  - bool trans_has_no_stmt_committed(const THD* thd, const bool all);
  - bool stmt_has_updated_non_trans_table(const THD* thd);
sql/log.h:
  Added functions to organize the code in log.cc.
sql/log_event.cc:
  Removed the OPTION_KEEP_LOG since it must be used only when
  creating and dropping temporary tables.
sql/log_event_old.cc:
  Removed the OPTION_KEEP_LOG since it must be used only when
  creating and dropping temporary tables.
sql/sql_parse.cc:
  When a "CREATE TEMPORARY TABLE SELECT * FROM" was executed the
  OPTION_KEEP_LOG was not set into the thd->options.
        
  To fix the problem, we have set the OPTION_KEEP_LOG into the
  thd->options when a "CREATE TEMPORARY TABLE SELECT * FROM"
  is executed.
2010-05-19 18:01:12 +01:00
..
binlog BUG#53560 CREATE TEMP./DROP TEMP. are not binglogged correctly after a failed statement 2010-05-19 18:01:12 +01:00
bugs Bug #38205 Row-based Replication (RBR) causes inconsistencies: HA_ERR_FOUND_DUPP_KEY 2009-04-09 16:05:41 +03:00
engines Updates to README file of the 'engines' test suites 2010-05-04 14:24:36 -07:00
federated Fix for bug#32426: "FEDERATED query returns corrupt results 2010-03-05 14:51:37 +04:00
funcs_1 5.0-bugteam->5.1-bugteam merge 2009-10-28 13:23:02 +04:00
funcs_2 merge 5.0-> 5.1 2009-04-24 13:00:17 -04:00
ibmdb2i Bug#49329 example (and other) engines use wrong collation for open tables hash 2009-12-11 12:31:16 +05:30
im
innodb Disable innodb.innodb, main.ps_3innodb and main.partition_innodb_plugin 2010-04-30 13:02:36 +03:00
innodb_plugin Add a test case for Bug #52745. 2010-04-26 14:08:56 +03:00
jp Bug #45159 : some tests in suite "jp" fail in embedded server (use LOAD DATA) 2009-09-11 15:52:08 +03:00
large_tests
manual
ndb Bug #49132 Replication failure on temporary table + DDL 2010-01-22 17:38:21 +08:00
ndb_team Merge BUG#43263 from 5.0-bugteam to 5.1-bugteam 2009-05-31 13:44:41 +08:00
parts Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with 2010-03-17 15:10:41 +01:00
rpl BUG#53560 CREATE TEMP./DROP TEMP. are not binglogged correctly after a failed statement 2010-05-19 18:01:12 +01:00
rpl_ndb BUG#50410: rpl_ndb tests should run with binlog_format=row 2010-05-16 12:45:21 +01:00
stress
sys_vars Automerge 2010-04-16 16:56:16 +02:00