mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
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.)
This commit is contained in:
@ -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();
|
||||
};
|
||||
|
Reference in New Issue
Block a user