mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	Fix for BUG#4971 "CREATE TABLE ... TYPE=HEAP SELECT ... stops slave (wrong DELETE in binlog)": replacing the no_log argument of mysql_create_table() by some safer method (temporarily setting OPTION_BIN_LOG to 0) which guarantees that even the automatic DELETE FROM heap_table does not get into the binlog when a not-yet-existing HEAP table is opened by mysql_create_table(). mysql-test/r/rpl_heap.result: result update mysql-test/t/rpl_heap.test: changing test to test a bug (but anyway, mysql-test-run --manager looks like not working in 4.1 currently, so this test is never run). sql/log.cc: new class Disable_binlog used to temporarily disable binlogging for one thread. sql/mysql_priv.h: removing argument no_log from mysql_create_table(); no_log was not perfect as some binlogging could still be done by open_unireg_entry() for a HEAP table. sql/sql_class.h: new class Disable_binlog used to temporarily disable binlogging for one thread. sql/sql_parse.cc: removing no_log arg from mysql_create_table() sql/sql_table.cc: removing no_log from mysql_create_table(); instead using new class Disable_binlog. Disabling binlogging in some cases, where the binlogging is done later by some other code (case of CREATE SELECT and ALTER).
		
			
				
	
	
		
			30 lines
		
	
	
		
			753 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			753 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| reset master;
 | |
| drop table if exists t1;
 | |
| create table t1 type=HEAP select 10 as a;
 | |
| insert into t1 values(11);
 | |
| show binlog events from 79;
 | |
| Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
 | |
| master-bin.001	79	Query	1	79	use `test`; create table t1 type=HEAP select 10 as a
 | |
| master-bin.001	154	Query	1	154	use `test`; insert into t1 values(11)
 | |
| reset slave;
 | |
| start slave;
 | |
| show create table t1;
 | |
| Table	Create Table
 | |
| t1	CREATE TABLE `t1` (
 | |
|   `a` bigint(2) NOT NULL default '0'
 | |
| ) TYPE=HEAP
 | |
| select * from t1;
 | |
| a
 | |
| 10
 | |
| 11
 | |
| select * from t1;
 | |
| a
 | |
| select * from t1 limit 10;
 | |
| a
 | |
| show binlog events in 'master-bin.002' from 79;
 | |
| Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
 | |
| master-bin.002	79	Query	1	79	use `test`; DELETE FROM `test`.`t1`
 | |
| select * from t1;
 | |
| a
 | |
| drop table t1;
 |