mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	This saves one byte per Query_log_event on disk compared to 5.0.[0..3]. Compatibility problems with 5.0.x where x<4 are explained in the comments in log_event.cc. Putting back s/my_open(O_TRUNC)/(my_delete+my_create) change which had been wiped away by somebody doing a wrong 4.1->5.0 merge (which happened just before 5.0.3 :( ). Applying it to new events for LOAD DATA INFILE. If slave fails in Execute_load_query_log_event::exec_event(), don't delete the file (so that it's re-usable at next START SLAVE). And (youpi!) fix for BUG#3247 "a partially completed LOAD DATA INFILE is not executed at all on the slave" (storing an Execute_load_query_log_event to binlog, with its error code, instead of Delete_file_log_event).
		
			
				
	
	
		
			208 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
drop table if exists t1, t2;
 | 
						|
create table t1 (a int) engine=innodb;
 | 
						|
create table t2 (a int) engine=myisam;
 | 
						|
reset master;
 | 
						|
begin;
 | 
						|
insert into t1 values(1);
 | 
						|
insert into t2 select * from t1;
 | 
						|
commit;
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; BEGIN
 | 
						|
master-bin.000001	166	Query	1	#	use `test`; insert into t1 values(1)
 | 
						|
master-bin.000001	253	Query	1	#	use `test`; insert into t2 select * from t1
 | 
						|
master-bin.000001	347	Xid	1	#	COMMIT /* xid=7 */
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
reset master;
 | 
						|
begin;
 | 
						|
insert into t1 values(2);
 | 
						|
insert into t2 select * from t1;
 | 
						|
rollback;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; BEGIN
 | 
						|
master-bin.000001	166	Query	1	#	use `test`; insert into t1 values(2)
 | 
						|
master-bin.000001	253	Query	1	#	use `test`; insert into t2 select * from t1
 | 
						|
master-bin.000001	347	Query	1	#	use `test`; ROLLBACK
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
reset master;
 | 
						|
begin;
 | 
						|
insert into t1 values(3);
 | 
						|
savepoint my_savepoint;
 | 
						|
insert into t1 values(4);
 | 
						|
insert into t2 select * from t1;
 | 
						|
rollback to savepoint my_savepoint;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
commit;
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; BEGIN
 | 
						|
master-bin.000001	166	Query	1	#	use `test`; insert into t1 values(3)
 | 
						|
master-bin.000001	253	Query	1	#	use `test`; savepoint my_savepoint
 | 
						|
master-bin.000001	338	Query	1	#	use `test`; insert into t1 values(4)
 | 
						|
master-bin.000001	425	Query	1	#	use `test`; insert into t2 select * from t1
 | 
						|
master-bin.000001	519	Query	1	#	use `test`; rollback to savepoint my_savepoint
 | 
						|
master-bin.000001	616	Xid	1	#	COMMIT /* xid=24 */
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
reset master;
 | 
						|
begin;
 | 
						|
insert into t1 values(5);
 | 
						|
savepoint my_savepoint;
 | 
						|
insert into t1 values(6);
 | 
						|
insert into t2 select * from t1;
 | 
						|
rollback to savepoint my_savepoint;
 | 
						|
Warnings:
 | 
						|
Warning	1196	Some non-transactional changed tables couldn't be rolled back
 | 
						|
insert into t1 values(7);
 | 
						|
commit;
 | 
						|
select a from t1 order by a;
 | 
						|
a
 | 
						|
5
 | 
						|
7
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; BEGIN
 | 
						|
master-bin.000001	166	Query	1	#	use `test`; insert into t1 values(5)
 | 
						|
master-bin.000001	253	Query	1	#	use `test`; savepoint my_savepoint
 | 
						|
master-bin.000001	338	Query	1	#	use `test`; insert into t1 values(6)
 | 
						|
master-bin.000001	425	Query	1	#	use `test`; insert into t2 select * from t1
 | 
						|
master-bin.000001	519	Query	1	#	use `test`; rollback to savepoint my_savepoint
 | 
						|
master-bin.000001	616	Query	1	#	use `test`; insert into t1 values(7)
 | 
						|
master-bin.000001	703	Xid	1	#	COMMIT /* xid=36 */
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
reset master;
 | 
						|
select get_lock("a",10);
 | 
						|
get_lock("a",10)
 | 
						|
1
 | 
						|
begin;
 | 
						|
insert into t1 values(8);
 | 
						|
insert into t2 select * from t1;
 | 
						|
select get_lock("a",10);
 | 
						|
get_lock("a",10)
 | 
						|
1
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; BEGIN
 | 
						|
master-bin.000001	166	Query	1	#	use `test`; insert into t1 values(8)
 | 
						|
master-bin.000001	253	Query	1	#	use `test`; insert into t2 select * from t1
 | 
						|
master-bin.000001	347	Query	1	#	use `test`; ROLLBACK
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
reset master;
 | 
						|
insert into t1 values(9);
 | 
						|
insert into t2 select * from t1;
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; insert into t1 values(9)
 | 
						|
master-bin.000001	185	Xid	1	#	COMMIT /* xid=59 */
 | 
						|
master-bin.000001	212	Query	1	#	use `test`; insert into t2 select * from t1
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
reset master;
 | 
						|
insert into t1 values(10);
 | 
						|
begin;
 | 
						|
insert into t2 select * from t1;
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; insert into t1 values(10)
 | 
						|
master-bin.000001	186	Xid	1	#	COMMIT /* xid=65 */
 | 
						|
master-bin.000001	213	Query	1	#	use `test`; insert into t2 select * from t1
 | 
						|
insert into t1 values(11);
 | 
						|
commit;
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; insert into t1 values(10)
 | 
						|
master-bin.000001	186	Xid	1	#	COMMIT /* xid=65 */
 | 
						|
master-bin.000001	213	Query	1	#	use `test`; insert into t2 select * from t1
 | 
						|
master-bin.000001	307	Query	1	#	use `test`; BEGIN
 | 
						|
master-bin.000001	375	Query	1	#	use `test`; insert into t1 values(11)
 | 
						|
master-bin.000001	463	Xid	1	#	COMMIT /* xid=67 */
 | 
						|
alter table t2 engine=INNODB;
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
reset master;
 | 
						|
begin;
 | 
						|
insert into t1 values(12);
 | 
						|
insert into t2 select * from t1;
 | 
						|
commit;
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; BEGIN
 | 
						|
master-bin.000001	166	Query	1	#	use `test`; insert into t1 values(12)
 | 
						|
master-bin.000001	254	Query	1	#	use `test`; insert into t2 select * from t1
 | 
						|
master-bin.000001	348	Xid	1	#	COMMIT /* xid=77 */
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
reset master;
 | 
						|
begin;
 | 
						|
insert into t1 values(13);
 | 
						|
insert into t2 select * from t1;
 | 
						|
rollback;
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
reset master;
 | 
						|
begin;
 | 
						|
insert into t1 values(14);
 | 
						|
savepoint my_savepoint;
 | 
						|
insert into t1 values(15);
 | 
						|
insert into t2 select * from t1;
 | 
						|
rollback to savepoint my_savepoint;
 | 
						|
commit;
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; BEGIN
 | 
						|
master-bin.000001	166	Query	1	#	use `test`; insert into t1 values(14)
 | 
						|
master-bin.000001	254	Xid	1	#	COMMIT /* xid=93 */
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
reset master;
 | 
						|
begin;
 | 
						|
insert into t1 values(16);
 | 
						|
savepoint my_savepoint;
 | 
						|
insert into t1 values(17);
 | 
						|
insert into t2 select * from t1;
 | 
						|
rollback to savepoint my_savepoint;
 | 
						|
insert into t1 values(18);
 | 
						|
commit;
 | 
						|
select a from t1 order by a;
 | 
						|
a
 | 
						|
16
 | 
						|
18
 | 
						|
show binlog events from 98;
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	98	Query	1	#	use `test`; BEGIN
 | 
						|
master-bin.000001	166	Query	1	#	use `test`; insert into t1 values(16)
 | 
						|
master-bin.000001	254	Query	1	#	use `test`; insert into t1 values(18)
 | 
						|
master-bin.000001	342	Xid	1	#	COMMIT /* xid=104 */
 | 
						|
delete from t1;
 | 
						|
delete from t2;
 | 
						|
alter table t2 type=MyISAM;
 | 
						|
insert into t1 values (1);
 | 
						|
begin;
 | 
						|
select * from t1 for update;
 | 
						|
a
 | 
						|
1
 | 
						|
select (@before:=unix_timestamp())*0;
 | 
						|
(@before:=unix_timestamp())*0
 | 
						|
0
 | 
						|
begin;
 | 
						|
 select * from t1 for update;
 | 
						|
insert into t2 values (20);
 | 
						|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
 | 
						|
select (@after:=unix_timestamp())*0;
 | 
						|
(@after:=unix_timestamp())*0
 | 
						|
0
 | 
						|
select (@after-@before) >= 2;
 | 
						|
(@after-@before) >= 2
 | 
						|
1
 | 
						|
drop table t1,t2;
 |