Commit be9f1863 authored by unknown's avatar unknown
Browse files

don't log BEGIN in auto-commit mode

correct end_log_pos for Xid_log_event


mysql-test/r/binlog.result:
  don't depend on the previous tests
mysql-test/r/rpl_rotate_logs.result:
  correct end_log_pos for Xid_log_event
mysql-test/t/binlog.test:
  don't depend on the previous tests
sql/handler.h:
  comment
sql/log_event.cc:
  advance position for Xid
sql/log_event.h:
  comment
sql/sql_class.h:
  correct end_log_pos for Xid_log_event
sql/sql_parse.cc:
  make sure commit handler knows whether it's autocommit or not
parent 0cd185ea
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
drop table if exists t1, t2;
reset master;
create table t1 (a int) engine=bdb;
create table t2 (a int) engine=innodb;
begin;
@@ -9,14 +10,13 @@ insert t2 values (5);
commit;
show binlog events from 96;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	96	Query	1	187	use `test`; drop table if exists t1, t2
master-bin.000001	187	Query	1	285	use `test`; create table t1 (a int) engine=bdb
master-bin.000001	285	Query	1	386	use `test`; create table t2 (a int) engine=innodb
master-bin.000001	386	Query	1	455	use `test`; BEGIN
master-bin.000001	455	Query	1	84	use `test`; insert t1 values (5)
master-bin.000001	539	Query	1	154	use `test`; COMMIT
master-bin.000001	609	Query	1	678	use `test`; BEGIN
master-bin.000001	678	Query	1	84	use `test`; insert t2 values (5)
master-bin.000001	762	Xid	1	111	COMMIT /* xid=10 */
master-bin.000001	96	Query	1	194	use `test`; create table t1 (a int) engine=bdb
master-bin.000001	194	Query	1	295	use `test`; create table t2 (a int) engine=innodb
master-bin.000001	295	Query	1	364	use `test`; BEGIN
master-bin.000001	364	Query	1	84	use `test`; insert t1 values (5)
master-bin.000001	448	Query	1	518	use `test`; COMMIT
master-bin.000001	518	Query	1	587	use `test`; BEGIN
master-bin.000001	587	Query	1	84	use `test`; insert t2 values (5)
master-bin.000001	671	Xid	1	698	COMMIT /* xid=318 */
reset master;
drop table t1,t2;
+12 −15
Original line number Diff line number Diff line
@@ -101,10 +101,9 @@ insert into t1 values(9);
insert into t2 select * from t1;
show binlog events from 96;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	96	Query	1	#	use `test`; BEGIN
master-bin.000001	165	Query	1	#	use `test`; insert into t1 values(9)
master-bin.000001	253	Xid	1	#	COMMIT /* xid=59 */
master-bin.000001	280	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	96	Query	1	#	use `test`; insert into t1 values(9)
master-bin.000001	184	Xid	1	#	COMMIT /* xid=59 */
master-bin.000001	211	Query	1	#	use `test`; insert into t2 select * from t1
delete from t1;
delete from t2;
reset master;
@@ -113,21 +112,19 @@ begin;
insert into t2 select * from t1;
show binlog events from 96;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	96	Query	1	#	use `test`; BEGIN
master-bin.000001	165	Query	1	#	use `test`; insert into t1 values(10)
master-bin.000001	254	Xid	1	#	COMMIT /* xid=65 */
master-bin.000001	281	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	96	Query	1	#	use `test`; insert into t1 values(10)
master-bin.000001	185	Xid	1	#	COMMIT /* xid=65 */
master-bin.000001	212	Query	1	#	use `test`; insert into t2 select * from t1
insert into t1 values(11);
commit;
show binlog events from 96;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	96	Query	1	#	use `test`; BEGIN
master-bin.000001	165	Query	1	#	use `test`; insert into t1 values(10)
master-bin.000001	254	Xid	1	#	COMMIT /* xid=65 */
master-bin.000001	281	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	376	Query	1	#	use `test`; BEGIN
master-bin.000001	445	Query	1	#	use `test`; insert into t1 values(11)
master-bin.000001	534	Xid	1	#	COMMIT /* xid=67 */
master-bin.000001	96	Query	1	#	use `test`; insert into t1 values(10)
master-bin.000001	185	Xid	1	#	COMMIT /* xid=65 */
master-bin.000001	212	Query	1	#	use `test`; insert into t2 select * from t1
master-bin.000001	307	Query	1	#	use `test`; BEGIN
master-bin.000001	376	Query	1	#	use `test`; insert into t1 values(11)
master-bin.000001	465	Xid	1	#	COMMIT /* xid=67 */
alter table t2 engine=INNODB;
delete from t1;
delete from t2;
+1 −1
Original line number Diff line number Diff line
@@ -203,7 +203,7 @@ master-bin.000001 9190 Query 1 9016 use `test`; insert into t1 values(4 + 4)
master-bin.000001	9282	Query	1	9108	use `test`; insert into t1 values(3 + 4)
master-bin.000001	9374	Query	1	9200	use `test`; insert into t1 values(2 + 4)
master-bin.000001	9466	Query	1	9292	use `test`; insert into t1 values(1 + 4)
master-bin.000001	9558	Xid	1	9319	COMMIT /* xid=146 */
master-bin.000001	9558	Xid	1	9585	COMMIT /* xid=146 */
master-bin.000001	9585	Rotate	1	9629	master-bin.000002;pos=4
show binlog events in 'master-bin.000002';
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+2 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
--disable_warnings
drop table if exists t1, t2;
--enable_warnings
reset master;

create table t1 (a int) engine=bdb;
create table t2 (a int) engine=innodb;
@@ -17,6 +18,7 @@ begin;
insert t2 values (5);
commit;
# first COMMIT must be Query_log_event, second - Xid_log_event
--replace_result "xid=891" "xid=318" "xid=11" "xid=318" "xid=18" "xid=318"
show binlog events from 96;
reset master;
drop table t1,t2;
+1 −1
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ enum row_type { ROW_TYPE_NOT_USED=-1, ROW_TYPE_DEFAULT, ROW_TYPE_FIXED,
#define HA_CREATE_USED_COMMENT          (1L << 16)
#define HA_CREATE_USED_PASSWORD         (1L << 17)

typedef ulonglong my_xid;
typedef ulonglong my_xid; // this line is the same as in log_event.h
#define MYSQL_XID_PREFIX "MySQLXid"
#define MYSQL_XID_PREFIX_LEN 8 // must be a multiple of 8
#define MYSQL_XID_OFFSET (MYSQL_XID_PREFIX_LEN+sizeof(server_id))
Loading