summaryrefslogtreecommitdiff
path: root/sql/log.h
diff options
context:
space:
mode:
authorAlfranio Correia <alfranio.correia@sun.com>2010-05-19 18:01:12 +0100
committerAlfranio Correia <alfranio.correia@sun.com>2010-05-19 18:01:12 +0100
commit89850be0f51a2f761aa88236e5ced7d5a7eddd03 (patch)
tree9ed3c78ca4cde71b084f4fea32d25ea20c93c844 /sql/log.h
parentf59684b86e2f7005119fd51de16777ae67c9956c (diff)
downloadmariadb-git-89850be0f51a2f761aa88236e5ced7d5a7eddd03.tar.gz
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.
Diffstat (limited to 'sql/log.h')
-rw-r--r--sql/log.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/sql/log.h b/sql/log.h
index 5af51e14d80..8d3880d9171 100644
--- a/sql/log.h
+++ b/sql/log.h
@@ -20,6 +20,11 @@ class Relay_log_info;
class Format_description_log_event;
+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);
+
/*
Transaction Coordinator log - a base abstract class
for two different implementations