summaryrefslogtreecommitdiff
path: root/sql/sql_class.h
diff options
context:
space:
mode:
authorjimw@mysql.com <>2004-12-03 00:05:11 +0100
committerjimw@mysql.com <>2004-12-03 00:05:11 +0100
commit13649d90ae90257620461cdd97bbf217bd1b1755 (patch)
treec6630df438ab32a1664bb54903e60729d5755629 /sql/sql_class.h
parent7ed2753300a9fe874149ba9f3d8255726c60414e (diff)
downloadmariadb-git-13649d90ae90257620461cdd97bbf217bd1b1755.tar.gz
Prevent adding 'CREATE TABLE .. SELECT' query to the binary log when the
insertion of new records partially failed. It would get logged because of the logic to log a partially-failed 'INSERT ... SELECT' (which can't be rolled back in non-transactional tables), but 'CREATE TABLE ... SELECT' is always rolled back on failure, even for non-transactional tables. (Bug #6682) (Original fix reimplemented after review by Serg and Guilhem.)
Diffstat (limited to 'sql/sql_class.h')
-rw-r--r--sql/sql_class.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/sql/sql_class.h b/sql/sql_class.h
index 4250ebdd568..17d371d3dc0 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -637,6 +637,15 @@ public:
#endif
};
+# define tmp_disable_binlog(A) \
+ ulong save_options= (A)->options, save_master_access= (A)->master_access; \
+ (A)->options&= ~OPTION_BIN_LOG; \
+ (A)->master_access|= SUPER_ACL; /* unneeded in 4.1 */
+
+#define reenable_binlog(A) \
+ (A)->options= save_options; \
+ (A)->master_access= save_master_access;
+
/* Flags for the THD::system_thread (bitmap) variable */
#define SYSTEM_THREAD_DELAYED_INSERT 1
#define SYSTEM_THREAD_SLAVE_IO 2
@@ -781,6 +790,7 @@ public:
{}
int prepare(List<Item> &list);
bool send_data(List<Item> &values);
+ void send_error(uint errcode,const char *err);
bool send_eof();
void abort();
};