From df3b1a54f4cc62411b73ea8e146b9527147918db Mon Sep 17 00:00:00 2001
From: "guilhem@gbichot2" <>
Date: Fri, 19 Dec 2003 22:40:23 +0100
Subject: [PATCH] This is the final commit for Worklog tasks:    * A more
 dynamic binlog format which allows small changes (1064)    * Log session
 variables in Query_log_event (1063) It contains a few bugfixes (which I made
 when running the testsuite). I carefully updated the results of the testsuite
 (i.e. I checked for every one, if the difference between .reject and .result
 could be explained). Apparently mysql-test-run --manager is broken in 4.1 and
 5.0 currently, so I could neither run the few tests which require --manager,
 nor check that they pass nor modify their .result. But for builds, we don't
 run with --manager. Apart from --manager, the full testsuite passes, with
 Valgrind too (no errors). I'm going to push in the next minutes. Remains:
 update the manual. Note: by chance I saw that (in 4.1, in 5.0) rpl_get_lock
 fails when run alone; this is normal at it makes assumptions on thread ids. I
 will fix this one day in 4.1.

---
 mysql-test/r/rpl000015.result               |   8 +-
 mysql-test/r/rpl_change_master.result       |   4 +-
 mysql-test/r/rpl_error_ignored_table.result |   2 +-
 mysql-test/r/rpl_flush_log_loop.result      |   2 +-
 mysql-test/r/rpl_flush_tables.result        |  38 +++----
 mysql-test/r/rpl_loaddata.result            |  10 +-
 mysql-test/r/rpl_loaddata_rule_m.result     |   4 +-
 mysql-test/r/rpl_loaddata_rule_s.result     |   4 +-
 mysql-test/r/rpl_log.result                 | 112 ++++++++++----------
 mysql-test/r/rpl_log_pos.result             |  14 +--
 mysql-test/r/rpl_max_relay_size.result      |  14 +--
 mysql-test/r/rpl_relayrotate.result         |   7 +-
 mysql-test/r/rpl_replicate_do.result        |   2 +-
 mysql-test/r/rpl_reset_slave.result         |   8 +-
 mysql-test/r/rpl_rotate_logs.result         |   9 +-
 mysql-test/r/rpl_session_var.result         |   2 +-
 mysql-test/r/rpl_temporary.result           |  26 ++---
 mysql-test/r/rpl_trunc_binlog.result        |   2 +-
 mysql-test/r/rpl_until.result               |  34 +++---
 mysql-test/r/rpl_user_variables.result      |  58 +++++-----
 mysql-test/t/rpl000010-slave.opt            |   2 +-
 mysql-test/t/rpl000015.test                 |   8 +-
 mysql-test/t/rpl_change_master.test         |   4 +-
 mysql-test/t/rpl_empty_master_crash.test    |   2 +-
 mysql-test/t/rpl_error_ignored_table.test   |   2 +-
 mysql-test/t/rpl_flush_log_loop.test        |   2 +-
 mysql-test/t/rpl_loaddata.test              |   8 +-
 mysql-test/t/rpl_loaddata_rule_m.test       |   2 +-
 mysql-test/t/rpl_loaddata_rule_s.test       |   2 +-
 mysql-test/t/rpl_log.test                   |   9 +-
 mysql-test/t/rpl_log_pos.test               |  10 +-
 mysql-test/t/rpl_max_relay_size.test        |  12 +--
 mysql-test/t/rpl_openssl.test               |   4 +-
 mysql-test/t/rpl_redirect.test              |   2 +-
 mysql-test/t/rpl_relayrotate-slave.opt      |   3 +-
 mysql-test/t/rpl_relayrotate.test           |   4 +-
 mysql-test/t/rpl_replicate_do.test          |   2 +-
 mysql-test/t/rpl_reset_slave.test           |   8 +-
 mysql-test/t/rpl_rotate_logs.test           |   6 +-
 mysql-test/t/rpl_session_var.test           |   2 +-
 mysql-test/t/rpl_trunc_binlog.test          |   2 +-
 mysql-test/t/rpl_until.test                 |  10 +-
 mysql-test/t/rpl_user_variables.test        |   2 +-
 sql/log.cc                                  |   9 ++
 sql/log_event.cc                            |  64 +++++++++--
 sql/slave.cc                                |  69 ++++++++----
 sql/sql_class.h                             |   7 ++
 sql/sql_repl.cc                             |  21 ++--
 48 files changed, 370 insertions(+), 268 deletions(-)

diff --git a/mysql-test/r/rpl000015.result b/mysql-test/r/rpl000015.result
index 8cbbe3ab0e8..38544c0aed7 100644
--- a/mysql-test/r/rpl000015.result
+++ b/mysql-test/r/rpl000015.result
@@ -1,23 +1,23 @@
 reset master;
 show master status;
 File	Position	Binlog_Do_DB	Binlog_Ignore_DB
-master-bin.000001	79		
+master-bin.000001	95		
 reset slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
 change master to master_host='127.0.0.1';
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	test	MASTER_PORT	7		4	slave-relay-bin.000001	4		No	No							0		0	0	4	None		0	No						#
+#	127.0.0.1	test	MASTER_PORT	7		4	#	#		No	No							0		0	0	#	None		0	No						#
 change master to master_host='127.0.0.1',master_user='root',
 master_password='',master_port=MASTER_PORT;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	7		4	slave-relay-bin.000001	4		No	No							0		0	0	4	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	7		4	#	#		No	No							0		0	0	#	None		0	No						#
 start slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	7	master-bin.000001	79	slave-relay-bin.000001	123	master-bin.000001	Yes	Yes							0		0	79	123	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	7	master-bin.000001	95	#	#	master-bin.000001	Yes	Yes							0		0	95	#	None		0	No						#
 drop table if exists t1;
 create table t1 (n int);
 insert into t1 values (10),(45),(90);
diff --git a/mysql-test/r/rpl_change_master.result b/mysql-test/r/rpl_change_master.result
index a6342d47b49..40bcc4100a8 100644
--- a/mysql-test/r/rpl_change_master.result
+++ b/mysql-test/r/rpl_change_master.result
@@ -16,11 +16,11 @@ n
 1
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	273	slave-relay-bin.000002	258	master-bin.000001	No	No							0		0	214	317	None		0	No						#
+#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	355	#	#	master-bin.000001	No	No							0		0	274	#	None		0	No						#
 change master to master_user='root';
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	214	slave-relay-bin.000001	4	master-bin.000001	No	No							0		0	214	4	None		0	No						#
+#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	274	#	#	master-bin.000001	No	No							0		0	274	#	None		0	No						#
 select release_lock("a");
 release_lock("a")
 1
diff --git a/mysql-test/r/rpl_error_ignored_table.result b/mysql-test/r/rpl_error_ignored_table.result
index 8d5bbf91561..f5a535ea2ac 100644
--- a/mysql-test/r/rpl_error_ignored_table.result
+++ b/mysql-test/r/rpl_error_ignored_table.result
@@ -9,7 +9,7 @@ insert into t1 values (1),(1);
 ERROR 23000: Duplicate entry '1' for key 1
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	213	slave-relay-bin.000002	257	master-bin.000001	Yes	Yes				test.t1			0		0	213	257	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	273	#	#	master-bin.000001	Yes	Yes				test.t1			0		0	273	#	None		0	No						#
 show tables like 't1';
 Tables_in_test (t1)
 drop table t1;
diff --git a/mysql-test/r/rpl_flush_log_loop.result b/mysql-test/r/rpl_flush_log_loop.result
index 6992b635672..cf588634132 100644
--- a/mysql-test/r/rpl_flush_log_loop.result
+++ b/mysql-test/r/rpl_flush_log_loop.result
@@ -14,4 +14,4 @@ start slave;
 flush logs;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	SLAVE_PORT	60	slave-bin.000001	79	relay-log.000002	4	slave-bin.000001	Yes	Yes							0		0	79	4	None		0	No						#
+#	127.0.0.1	root	SLAVE_PORT	60	slave-bin.000001	95	#	#	slave-bin.000001	Yes	Yes							0		0	95	#	None		0	No						#
diff --git a/mysql-test/r/rpl_flush_tables.result b/mysql-test/r/rpl_flush_tables.result
index 70e4774a920..ef785bc9850 100644
--- a/mysql-test/r/rpl_flush_tables.result
+++ b/mysql-test/r/rpl_flush_tables.result
@@ -13,28 +13,28 @@ insert into t4 select * from t3;
 rename table t1 to t5, t2 to t1;
 flush no_write_to_binlog tables;
 show binlog events;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000001	4	Start	1	4	Server ver: SERVER_VERSION, Binlog ver: 3
-master-bin.000001	79	Query	1	79	use `test`; create table t1 (a int)
-master-bin.000001	137	Query	1	137	use `test`; insert into t1 values (10)
-master-bin.000001	198	Query	1	198	use `test`; create table t2 (a int)
-master-bin.000001	256	Query	1	256	use `test`; create table t3 (a int) engine=merge union(t1)
-master-bin.000001	337	Query	1	337	use `test`; create table t4 (a int)
-master-bin.000001	395	Query	1	395	use `test`; insert into t4 select * from t3
-master-bin.000001	461	Query	1	461	use `test`; rename table t1 to t5, t2 to t1
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000001	4	Format_desc	1	95	Server ver: SERVER_VERSION, Binlog ver: 4
+master-bin.000001	95	Query	1	175	use `test`; create table t1 (a int)
+master-bin.000001	175	Query	1	258	use `test`; insert into t1 values (10)
+master-bin.000001	258	Query	1	338	use `test`; create table t2 (a int)
+master-bin.000001	338	Query	1	441	use `test`; create table t3 (a int) engine=merge union(t1)
+master-bin.000001	441	Query	1	521	use `test`; create table t4 (a int)
+master-bin.000001	521	Query	1	609	use `test`; insert into t4 select * from t3
+master-bin.000001	609	Query	1	697	use `test`; rename table t1 to t5, t2 to t1
 select * from t3;
 a
 flush tables;
 show binlog events;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000001	4	Start	1	4	Server ver: SERVER_VERSION, Binlog ver: 3
-master-bin.000001	79	Query	1	79	use `test`; create table t1 (a int)
-master-bin.000001	137	Query	1	137	use `test`; insert into t1 values (10)
-master-bin.000001	198	Query	1	198	use `test`; create table t2 (a int)
-master-bin.000001	256	Query	1	256	use `test`; create table t3 (a int) engine=merge union(t1)
-master-bin.000001	337	Query	1	337	use `test`; create table t4 (a int)
-master-bin.000001	395	Query	1	395	use `test`; insert into t4 select * from t3
-master-bin.000001	461	Query	1	461	use `test`; rename table t1 to t5, t2 to t1
-master-bin.000001	527	Query	1	527	use `test`; flush tables
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000001	4	Format_desc	1	95	Server ver: SERVER_VERSION, Binlog ver: 4
+master-bin.000001	95	Query	1	175	use `test`; create table t1 (a int)
+master-bin.000001	175	Query	1	258	use `test`; insert into t1 values (10)
+master-bin.000001	258	Query	1	338	use `test`; create table t2 (a int)
+master-bin.000001	338	Query	1	441	use `test`; create table t3 (a int) engine=merge union(t1)
+master-bin.000001	441	Query	1	521	use `test`; create table t4 (a int)
+master-bin.000001	521	Query	1	609	use `test`; insert into t4 select * from t3
+master-bin.000001	609	Query	1	697	use `test`; rename table t1 to t5, t2 to t1
+master-bin.000001	697	Query	1	766	use `test`; flush tables
 select * from t3;
 a
diff --git a/mysql-test/r/rpl_loaddata.result b/mysql-test/r/rpl_loaddata.result
index 65fc9d1b415..72f7fb8bdbe 100644
--- a/mysql-test/r/rpl_loaddata.result
+++ b/mysql-test/r/rpl_loaddata.result
@@ -22,7 +22,7 @@ day	id	category	name
 2003-03-22	2416	a	bbbbb
 show master status;
 File	Position	Binlog_Do_DB	Binlog_Ignore_DB
-slave-bin.000001	964		
+slave-bin.000001	1068		
 drop table t1;
 drop table t2;
 drop table t3;
@@ -33,7 +33,7 @@ set global sql_slave_skip_counter=1;
 start slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	1311	slave-relay-bin.000002	1355	master-bin.000001	Yes	Yes							0		0	1311	1355	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	1503	#	#	master-bin.000001	Yes	Yes							0		0	1503	#	None		0	No						#
 set sql_log_bin=0;
 delete from t1;
 set sql_log_bin=1;
@@ -43,7 +43,7 @@ change master to master_user='test';
 change master to master_user='root';
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	1419	slave-relay-bin.000001	4	master-bin.000001	No	No							0		0	1419	4	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	1611	#	#	master-bin.000001	No	No							0		0	1611	#	None		0	No						#
 set global sql_slave_skip_counter=1;
 start slave;
 set sql_log_bin=0;
@@ -54,7 +54,7 @@ stop slave;
 reset slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1		4	slave-relay-bin.000001	4		No	No							0		0	0	4	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1		4	#	#		No	No							0		0	0	#	None		0	No						#
 reset master;
 create table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60),
 unique(day));
@@ -64,5 +64,5 @@ terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
 ERROR 23000: Duplicate entry '2003-03-22' for key 1
 show master status;
 File	Position	Binlog_Do_DB	Binlog_Ignore_DB
-master-bin.000001	491		
+master-bin.000001	529		
 drop table t2;
diff --git a/mysql-test/r/rpl_loaddata_rule_m.result b/mysql-test/r/rpl_loaddata_rule_m.result
index a34453b0a2b..1b7ea5661fb 100644
--- a/mysql-test/r/rpl_loaddata_rule_m.result
+++ b/mysql-test/r/rpl_loaddata_rule_m.result
@@ -10,6 +10,6 @@ create database mysqltest;
 create table t1(a int, b int, unique(b));
 use mysqltest;
 load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
-show binlog events from 79;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
+show binlog events from 95;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 drop database mysqltest;
diff --git a/mysql-test/r/rpl_loaddata_rule_s.result b/mysql-test/r/rpl_loaddata_rule_s.result
index 26893cb1e9e..d7a24410f9c 100644
--- a/mysql-test/r/rpl_loaddata_rule_s.result
+++ b/mysql-test/r/rpl_loaddata_rule_s.result
@@ -10,5 +10,5 @@ load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
 select count(*) from t1;
 count(*)
 2
-show binlog events from 79;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
+show binlog events from 95;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
diff --git a/mysql-test/r/rpl_log.result b/mysql-test/r/rpl_log.result
index 2f8a54369c9..784742fdacb 100644
--- a/mysql-test/r/rpl_log.result
+++ b/mysql-test/r/rpl_log.result
@@ -18,26 +18,26 @@ count(*)
 69
 drop table t1;
 show binlog events;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000001	4	Start	1	4	Server ver: VERSION, Binlog ver: 3
-master-bin.000001	79	Query	1	79	use `test`; create table t1(n int not null auto_increment primary key)
-master-bin.000001	172	Intvar	1	172	INSERT_ID=1
-master-bin.000001	200	Query	1	200	use `test`; insert into t1 values (NULL)
-master-bin.000001	263	Query	1	263	use `test`; drop table t1
-master-bin.000001	311	Query	1	311	use `test`; create table t1 (word char(20) not null)
-master-bin.000001	386	Create_file	1	386	db=test;table=t1;file_id=1;block_len=581
-master-bin.000001	1056	Exec_load	1	1056	;file_id=1
-master-bin.000001	1079	Query	1	1079	use `test`; drop table t1
-show binlog events from 79 limit 1;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000001	79	Query	1	79	use `test`; create table t1(n int not null auto_increment primary key)
-show binlog events from 79 limit 2;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000001	79	Query	1	79	use `test`; create table t1(n int not null auto_increment primary key)
-master-bin.000001	172	Intvar	1	172	INSERT_ID=1
-show binlog events from 79 limit 2,1;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000001	200	Query	1	200	use `test`; insert into t1 values (NULL)
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000001	4	Format_desc	1	95	Server ver: VERSION, Binlog ver: 4
+master-bin.000001	95	Query	1	210	use `test`; create table t1(n int not null auto_increment primary key)
+master-bin.000001	210	Intvar	1	238	INSERT_ID=1
+master-bin.000001	238	Query	1	323	use `test`; insert into t1 values (NULL)
+master-bin.000001	323	Query	1	393	use `test`; drop table t1
+master-bin.000001	393	Query	1	490	use `test`; create table t1 (word char(20) not null)
+master-bin.000001	490	Create_file	1	1160	db=test;table=t1;file_id=1;block_len=581
+master-bin.000001	1160	Exec_load	1	1183	;file_id=1
+master-bin.000001	1183	Query	1	1253	use `test`; drop table t1
+show binlog events from 95 limit 1;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000001	95	Query	1	210	use `test`; create table t1(n int not null auto_increment primary key)
+show binlog events from 95 limit 2;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000001	95	Query	1	210	use `test`; create table t1(n int not null auto_increment primary key)
+master-bin.000001	210	Intvar	1	238	INSERT_ID=1
+show binlog events from 95 limit 2,1;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000001	238	Query	1	323	use `test`; insert into t1 values (NULL)
 flush logs;
 create table t5 (a int);
 drop table t5;
@@ -48,24 +48,25 @@ create table t1 (n int);
 insert into t1 values (1);
 drop table t1;
 show binlog events;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000001	4	Start	1	4	Server ver: VERSION, Binlog ver: 3
-master-bin.000001	79	Query	1	79	use `test`; create table t1(n int not null auto_increment primary key)
-master-bin.000001	172	Intvar	1	172	INSERT_ID=1
-master-bin.000001	200	Query	1	200	use `test`; insert into t1 values (NULL)
-master-bin.000001	263	Query	1	263	use `test`; drop table t1
-master-bin.000001	311	Query	1	311	use `test`; create table t1 (word char(20) not null)
-master-bin.000001	386	Create_file	1	386	db=test;table=t1;file_id=1;block_len=581
-master-bin.000001	1056	Exec_load	1	1056	;file_id=1
-master-bin.000001	1079	Query	1	1079	use `test`; drop table t1
-master-bin.000001	1127	Rotate	1	1127	master-bin.000002;pos=4
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000001	4	Format_desc	1	95	Server ver: VERSION, Binlog ver: 4
+master-bin.000001	95	Query	1	210	use `test`; create table t1(n int not null auto_increment primary key)
+master-bin.000001	210	Intvar	1	238	INSERT_ID=1
+master-bin.000001	238	Query	1	323	use `test`; insert into t1 values (NULL)
+master-bin.000001	323	Query	1	393	use `test`; drop table t1
+master-bin.000001	393	Query	1	490	use `test`; create table t1 (word char(20) not null)
+master-bin.000001	490	Create_file	1	1160	db=test;table=t1;file_id=1;block_len=581
+master-bin.000001	1160	Exec_load	1	1183	;file_id=1
+master-bin.000001	1183	Query	1	1253	use `test`; drop table t1
+master-bin.000001	1253	Rotate	1	1297	master-bin.000002;pos=4
 show binlog events in 'master-bin.000002';
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000002	4	Query	1	4	use `test`; create table t5 (a int)
-master-bin.000002	62	Query	1	62	use `test`; drop table t5
-master-bin.000002	110	Query	1	110	use `test`; create table t1 (n int)
-master-bin.000002	168	Query	1	168	use `test`; insert into t1 values (1)
-master-bin.000002	228	Query	1	228	use `test`; drop table t1
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000002	4	Format_desc	1	95	Server ver: VERSION, Binlog ver: 4
+master-bin.000002	95	Query	1	175	use `test`; create table t5 (a int)
+master-bin.000002	175	Query	1	245	use `test`; drop table t5
+master-bin.000002	245	Query	1	325	use `test`; create table t1 (n int)
+master-bin.000002	325	Query	1	407	use `test`; insert into t1 values (1)
+master-bin.000002	407	Query	1	477	use `test`; drop table t1
 show binary logs;
 Log_name
 master-bin.000001
@@ -76,26 +77,27 @@ Log_name
 slave-bin.000001
 slave-bin.000002
 show binlog events in 'slave-bin.000001' from 4;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-slave-bin.000001	4	Start	2	4	Server ver: VERSION, Binlog ver: 3
-slave-bin.000001	79	Query	1	79	use `test`; create table t1(n int not null auto_increment primary key)
-slave-bin.000001	172	Intvar	1	172	INSERT_ID=1
-slave-bin.000001	200	Query	1	200	use `test`; insert into t1 values (NULL)
-slave-bin.000001	263	Query	1	263	use `test`; drop table t1
-slave-bin.000001	311	Query	1	311	use `test`; create table t1 (word char(20) not null)
-slave-bin.000001	386	Create_file	1	386	db=test;table=t1;file_id=1;block_len=581
-slave-bin.000001	1065	Exec_load	1	1065	;file_id=1
-slave-bin.000001	1088	Query	1	1088	use `test`; drop table t1
-slave-bin.000001	1136	Query	1	1136	use `test`; create table t5 (a int)
-slave-bin.000001	1194	Query	1	1194	use `test`; drop table t5
-slave-bin.000001	1242	Rotate	2	1242	slave-bin.000002;pos=4
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+slave-bin.000001	4	Format_desc	2	95	Server ver: VERSION, Binlog ver: 4
+slave-bin.000001	95	Query	1	210	use `test`; create table t1(n int not null auto_increment primary key)
+slave-bin.000001	210	Intvar	1	238	INSERT_ID=1
+slave-bin.000001	238	Query	1	323	use `test`; insert into t1 values (NULL)
+slave-bin.000001	323	Query	1	393	use `test`; drop table t1
+slave-bin.000001	393	Query	1	490	use `test`; create table t1 (word char(20) not null)
+slave-bin.000001	490	Create_file	1	1169	db=test;table=t1;file_id=1;block_len=581
+slave-bin.000001	1169	Exec_load	1	1192	;file_id=1
+slave-bin.000001	1192	Query	1	1262	use `test`; drop table t1
+slave-bin.000001	1262	Query	1	1342	use `test`; create table t5 (a int)
+slave-bin.000001	1342	Query	1	1412	use `test`; drop table t5
+slave-bin.000001	1412	Rotate	2	1455	slave-bin.000002;pos=4
 show binlog events in 'slave-bin.000002' from 4;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-slave-bin.000002	4	Query	1	4	use `test`; create table t1 (n int)
-slave-bin.000002	62	Query	1	62	use `test`; insert into t1 values (1)
-slave-bin.000002	122	Query	1	122	use `test`; drop table t1
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+slave-bin.000002	4	Format_desc	2	95	Server ver: VERSION, Binlog ver: 4
+slave-bin.000002	95	Query	1	175	use `test`; create table t1 (n int)
+slave-bin.000002	175	Query	1	257	use `test`; insert into t1 values (1)
+slave-bin.000002	257	Query	1	327	use `test`; drop table t1
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000002	276	slave-relay-bin.000003	214	master-bin.000002	Yes	Yes							0		0	276	214	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000002	477	#	#	master-bin.000002	Yes	Yes							0		0	477	#	None		0	No						#
 show binlog events in 'slave-bin.000005' from 4;
 ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
diff --git a/mysql-test/r/rpl_log_pos.result b/mysql-test/r/rpl_log_pos.result
index 10c78272de6..6ea07cf7173 100644
--- a/mysql-test/r/rpl_log_pos.result
+++ b/mysql-test/r/rpl_log_pos.result
@@ -6,10 +6,10 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
 start slave;
 show master status;
 File	Position	Binlog_Do_DB	Binlog_Ignore_DB
-master-bin.000001	79		
+master-bin.000001	95		
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	79	slave-relay-bin.000002	123	master-bin.000001	Yes	Yes							0		0	79	123	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	95	#	#	master-bin.000001	Yes	Yes							0		0	95	#	None		0	No						#
 stop slave;
 change master to master_log_pos=73;
 start slave;
@@ -17,26 +17,26 @@ stop slave;
 change master to master_log_pos=73;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	73	slave-relay-bin.000001	4	master-bin.000001	No	No							0		0	73	4	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	73	#	#	master-bin.000001	No	No							0		0	73	#	None		0	No						#
 start slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	73	slave-relay-bin.000001	48	master-bin.000001	No	Yes							0		0	73	48	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	73	#	#	master-bin.000001	No	Yes							0		0	73	#	None		0	No						#
 stop slave;
 change master to master_log_pos=173;
 start slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	173	slave-relay-bin.000001	4	master-bin.000001	No	Yes							0		0	173	4	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	173	#	#	master-bin.000001	No	Yes							0		0	173	#	None		0	No						#
 show master status;
 File	Position	Binlog_Do_DB	Binlog_Ignore_DB
-master-bin.000001	79		
+master-bin.000001	95		
 create table if not exists t1 (n int);
 drop table if exists t1;
 create table t1 (n int);
 insert into t1 values (1),(2),(3);
 stop slave;
-change master to master_log_pos=79;
+change master to master_log_pos=95;
 start slave;
 select * from t1;
 n
diff --git a/mysql-test/r/rpl_max_relay_size.result b/mysql-test/r/rpl_max_relay_size.result
index 5c3360b0f66..c1589687eee 100644
--- a/mysql-test/r/rpl_max_relay_size.result
+++ b/mysql-test/r/rpl_max_relay_size.result
@@ -16,7 +16,7 @@ select @@global.max_relay_log_size;
 start slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	50477	slave-relay-bin.000014	1221	master-bin.000001	Yes	Yes							0		0	50477	1221	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	68137	#	#	master-bin.000001	Yes	Yes							0		0	68137	#	None		0	No						#
 stop slave;
 reset slave;
 set global max_relay_log_size=(5*4096);
@@ -26,7 +26,7 @@ select @@global.max_relay_log_size;
 start slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	50477	slave-relay-bin.000004	9457	master-bin.000001	Yes	Yes							0		0	50477	9457	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	68137	#	#	master-bin.000001	Yes	Yes							0		0	68137	#	None		0	No						#
 stop slave;
 reset slave;
 set global max_relay_log_size=0;
@@ -36,26 +36,26 @@ select @@global.max_relay_log_size;
 start slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	50477	slave-relay-bin.000008	1283	master-bin.000001	Yes	Yes							0		0	50477	1283	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	68137	#	#	master-bin.000001	Yes	Yes							0		0	68137	#	None		0	No						#
 stop slave;
 reset slave;
 flush logs;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1		4	slave-relay-bin.000001	4		No	No							0		0	0	4	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1		4	#	#		No	No							0		0	0	#	None		0	No						#
 reset slave;
 start slave;
 flush logs;
 create table t1 (a int);
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	50535	slave-relay-bin.000009	62	master-bin.000001	Yes	Yes							0		0	50535	62	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	68217	#	#	master-bin.000001	Yes	Yes							0		0	68217	#	None		0	No						#
 flush logs;
 drop table t1;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	50583	slave-relay-bin.000010	52	master-bin.000001	Yes	Yes							0		0	50583	52	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	68287	#	#	master-bin.000001	Yes	Yes							0		0	68287	#	None		0	No						#
 flush logs;
 show master status;
 File	Position	Binlog_Do_DB	Binlog_Ignore_DB
-master-bin.000002	4		
+master-bin.000002	95		
diff --git a/mysql-test/r/rpl_relayrotate.result b/mysql-test/r/rpl_relayrotate.result
index bf9bbbb9b93..23091a09bb3 100644
--- a/mysql-test/r/rpl_relayrotate.result
+++ b/mysql-test/r/rpl_relayrotate.result
@@ -13,7 +13,10 @@ start slave;
 select master_pos_wait('master-bin.001',3000)>=0;
 master_pos_wait('master-bin.001',3000)>=0
 1
-select * from t1 where a=8000;
-a
+select max(a) from t1;
+max(a)
 8000
+show slave status;
+Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
+#	127.0.0.1	root	9306	1	master-bin.000001	687207	#	#	master-bin.000001	Yes	Yes							0		0	687207	#	None		0	No						#
 drop table t1;
diff --git a/mysql-test/r/rpl_replicate_do.result b/mysql-test/r/rpl_replicate_do.result
index 43de4a67ce9..a06125362c2 100644
--- a/mysql-test/r/rpl_replicate_do.result
+++ b/mysql-test/r/rpl_replicate_do.result
@@ -28,4 +28,4 @@ ERROR 42S02: Table 'test.t11' doesn't exist
 drop table if exists t1,t2,t11;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	1281	slave-relay-bin.000002	1325	master-bin.000001	Yes	Yes			test.t1				0		0	1281	1325	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	1473	#	#	master-bin.000001	Yes	Yes			test.t1				0		0	1473	#	None		0	No						#
diff --git a/mysql-test/r/rpl_reset_slave.result b/mysql-test/r/rpl_reset_slave.result
index 42d41533cb0..6161f2112db 100644
--- a/mysql-test/r/rpl_reset_slave.result
+++ b/mysql-test/r/rpl_reset_slave.result
@@ -6,20 +6,20 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
 start slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	79	slave-relay-bin.000002	123	master-bin.000001	Yes	Yes							0		0	79	123	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	95	#	#	master-bin.000001	Yes	Yes							0		0	95	#	None		0	No						#
 stop slave;
 change master to master_user='test';
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	test	MASTER_PORT	1	master-bin.000001	79	slave-relay-bin.000001	4	master-bin.000001	No	No							0		0	79	4	None		0	No						#
+#	127.0.0.1	test	MASTER_PORT	1	master-bin.000001	95	#	#	master-bin.000001	No	No							0		0	95	#	None		0	No						#
 reset slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1		4	slave-relay-bin.000001	4		No	No							0		0	0	4	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1		4	#	#		No	No							0		0	0	#	None		0	No						#
 start slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	79	slave-relay-bin.000002	123	master-bin.000001	Yes	Yes							0		0	79	123	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000001	95	#	#	master-bin.000001	Yes	Yes							0		0	95	#	None		0	No						#
 stop slave;
 reset slave;
 start slave;
diff --git a/mysql-test/r/rpl_rotate_logs.result b/mysql-test/r/rpl_rotate_logs.result
index 87ebf870f38..1835f10c1c9 100644
--- a/mysql-test/r/rpl_rotate_logs.result
+++ b/mysql-test/r/rpl_rotate_logs.result
@@ -16,7 +16,7 @@ create table t1 (s text);
 insert into t1 values('Could not break slave'),('Tried hard');
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	60	master-bin.000001	417	slave-relay-bin.000001	461	master-bin.000001	Yes	Yes							0		0	417	461	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	60	master-bin.000001	521	#	#	master-bin.000001	Yes	Yes							0		0	521	#	None		0	No						#
 select * from t1;
 s
 Could not break slave
@@ -57,7 +57,7 @@ master-bin.000003
 insert into t2 values (65);
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	60	master-bin.000003	290	slave-relay-bin.000001	1088	master-bin.000003	Yes	Yes							0		0	290	1088	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	60	master-bin.000003	469	#	#	master-bin.000003	Yes	Yes							0		0	469	#	None		0	No						#
 select * from t2;
 m
 34
@@ -73,15 +73,16 @@ show binary logs;
 Log_name
 master-bin.000003
 master-bin.000004
+master-bin.000005
 show master status;
 File	Position	Binlog_Do_DB	Binlog_Ignore_DB
-master-bin.000004	2886		
+master-bin.000005	1387		
 select * from t4;
 a
 testing temporary tables part 2
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	60	master-bin.000004	2886	slave-relay-bin.000001	7891	master-bin.000004	Yes	Yes							0		0	2886	7891	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	60	master-bin.000005	1387	#	#	master-bin.000005	Yes	Yes							0		0	1387	#	None		0	No						#
 lock tables t3 read;
 select count(*) from t3 where n >= 4;
 count(*)
diff --git a/mysql-test/r/rpl_session_var.result b/mysql-test/r/rpl_session_var.result
index d1ba04f36ec..f1f79ffa597 100644
--- a/mysql-test/r/rpl_session_var.result
+++ b/mysql-test/r/rpl_session_var.result
@@ -7,7 +7,7 @@ start slave;
 drop table if exists t1;
 Warnings:
 Note	1051	Unknown table 't1'
-create table t1(a varchar(10),b int);
+create table t1(a varchar(100),b int);
 set @@session.sql_mode=pipes_as_concat;
 insert into t1 values('My'||'SQL', 1);
 set @@session.sql_mode=default;
diff --git a/mysql-test/r/rpl_temporary.result b/mysql-test/r/rpl_temporary.result
index e7b64066c37..0c270958d8f 100644
--- a/mysql-test/r/rpl_temporary.result
+++ b/mysql-test/r/rpl_temporary.result
@@ -24,19 +24,19 @@ f
 5
 7
 show binlog events;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000001	4	Start	1	4	Server ver: VERSION, Binlog ver: 3
-master-bin.000001	79	Query	1	79	use `test`; create table t1(f int)
-master-bin.000001	136	Query	1	136	use `test`; create table t2(f int)
-master-bin.000001	193	Query	1	193	use `test`; insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)
-master-bin.000001	290	Query	1	290	use `test`; create temporary table t3(f int)
-master-bin.000001	357	Query	1	357	use `test`; insert into t3 select * from t1 where f<6
-master-bin.000001	433	Query	1	433	use `test`; create temporary table t3(f int)
-master-bin.000001	500	Query	1	500	use `test`; insert into t2 select count(*) from t3
-master-bin.000001	573	Query	1	573	use `test`; insert into t3 select * from t1 where f>=4
-master-bin.000001	650	Query	1	650	use `test`; drop temporary table t3
-master-bin.000001	708	Query	1	708	use `test`; insert into t2 select count(*) from t3
-master-bin.000001	781	Query	1	781	use `test`; drop temporary table t3
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000001	4	Format_desc	1	95	Server ver: VERSION, Binlog ver: 4
+master-bin.000001	95	Query	1	174	use `test`; create table t1(f int)
+master-bin.000001	174	Query	1	253	use `test`; create table t2(f int)
+master-bin.000001	253	Query	1	372	use `test`; insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)
+master-bin.000001	372	Query	1	461	use `test`; create temporary table t3(f int)
+master-bin.000001	461	Query	1	559	use `test`; insert into t3 select * from t1 where f<6
+master-bin.000001	559	Query	1	648	use `test`; create temporary table t3(f int)
+master-bin.000001	648	Query	1	743	use `test`; insert into t2 select count(*) from t3
+master-bin.000001	743	Query	1	842	use `test`; insert into t3 select * from t1 where f>=4
+master-bin.000001	842	Query	1	922	use `test`; drop temporary table t3
+master-bin.000001	922	Query	1	1017	use `test`; insert into t2 select count(*) from t3
+master-bin.000001	1017	Query	1	1097	use `test`; drop temporary table t3
 drop table t1, t2;
 use test;
 SET TIMESTAMP=1040323920;
diff --git a/mysql-test/r/rpl_trunc_binlog.result b/mysql-test/r/rpl_trunc_binlog.result
index 39b754dec47..2ae91e5f0e6 100644
--- a/mysql-test/r/rpl_trunc_binlog.result
+++ b/mysql-test/r/rpl_trunc_binlog.result
@@ -10,4 +10,4 @@ reset slave;
 start slave;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_PORT	1	master-bin.000002	4	slave-relay-bin.000002	123	master-bin.000001	Yes	No							0	Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. Probably cause is that the master died while writing the transaction to it's binary log.	0	79	326	None		0	No						#
+#	127.0.0.1	root	MASTER_PORT	1	master-bin.000002	4	#	#	master-bin.000001	Yes	No							0	Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. Probably cause is that the master died while writing the transaction to it's binary log.	0	79	#	None		0	No						#
diff --git a/mysql-test/r/rpl_until.result b/mysql-test/r/rpl_until.result
index c179351551d..17b505487e9 100644
--- a/mysql-test/r/rpl_until.result
+++ b/mysql-test/r/rpl_until.result
@@ -13,16 +13,16 @@ insert into t2 values (1),(2);
 insert into t2 values (3),(4);
 drop table t2;
 show binlog events;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000001	4	Start	1	4	Server ver: VERSION, Binlog ver: 3
-master-bin.000001	79	Query	1	79	use `test`; create table t1(n int not null auto_increment primary key)
-master-bin.000001	172	Query	1	172	use `test`; insert into t1 values (1),(2),(3),(4)
-master-bin.000001	244	Query	1	244	use `test`; drop table t1
-master-bin.000001	292	Query	1	292	use `test`; create table t2(n int not null auto_increment primary key)
-master-bin.000001	385	Query	1	385	use `test`; insert into t2 values (1),(2)
-master-bin.000001	449	Query	1	449	use `test`; insert into t2 values (3),(4)
-master-bin.000001	513	Query	1	513	use `test`; drop table t2
-start slave until master_log_file='master-bin.000001', master_log_pos=244;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000001	4	Format_desc	1	95	Server ver: VERSION, Binlog ver: 4
+master-bin.000001	95	Query	1	210	use `test`; create table t1(n int not null auto_increment primary key)
+master-bin.000001	210	Query	1	304	use `test`; insert into t1 values (1),(2),(3),(4)
+master-bin.000001	304	Query	1	374	use `test`; drop table t1
+master-bin.000001	374	Query	1	489	use `test`; create table t2(n int not null auto_increment primary key)
+master-bin.000001	489	Query	1	575	use `test`; insert into t2 values (1),(2)
+master-bin.000001	575	Query	1	661	use `test`; insert into t2 values (3),(4)
+master-bin.000001	661	Query	1	731	use `test`; drop table t2
+start slave until master_log_file='master-bin.000001', master_log_pos=304;
 select * from t1;
 n
 1
@@ -31,7 +31,7 @@ n
 4
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	561	slave-relay-bin.000002	332	master-bin.000001	Yes	No							0		0	244	649	Master	master-bin.000001	244	No						#
+#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	731	slave-relay-bin.000004	439	master-bin.000001	Yes	No							0		0	304	866	Master	master-bin.000001	304	No						#
 start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
 select * from t1;
 n
@@ -41,21 +41,21 @@ n
 4
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	561	slave-relay-bin.000002	#	master-bin.000001	Yes	No							0		0	244	#	Master	master-no-such-bin.000001	291	No						#
-start slave until relay_log_file='slave-relay-bin.000002', relay_log_pos=537;
+#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	731	slave-relay-bin.000004	#	master-bin.000001	Yes	No							0		0	304	#	Master	master-no-such-bin.000001	291	No						#
+start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=710;
 select * from t2;
 n
 1
 2
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	561	slave-relay-bin.000002	#	master-bin.000001	Yes	No							0		0	449	#	Relay	slave-relay-bin.000002	537	No						#
+#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	731	slave-relay-bin.000004	#	master-bin.000001	Yes	No							0		0	575	#	Relay	slave-relay-bin.000004	710	No						#
 start slave;
 stop slave;
-start slave until master_log_file='master-bin.000001', master_log_pos=561;
+start slave until master_log_file='master-bin.000001', master_log_pos=710;
 show slave status;
 Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	561	slave-relay-bin.000002	#	master-bin.000001	Yes	No							0		0	561	#	Master	master-bin.000001	561	No						#
+#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	731	slave-relay-bin.000004	#	master-bin.000001	Yes	No							0		0	731	#	Master	master-bin.000001	710	No						#
 start slave until master_log_file='master-bin', master_log_pos=561;
 ERROR HY000: Wrong parameter or combination of parameters for START SLAVE UNTIL
 start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
@@ -67,6 +67,6 @@ ERROR HY000: Wrong parameter or combination of parameters for START SLAVE UNTIL
 start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561;
 ERROR HY000: Wrong parameter or combination of parameters for START SLAVE UNTIL
 start slave sql_thread;
-start slave until master_log_file='master-bin.000001', master_log_pos=561;
+start slave until master_log_file='master-bin.000001', master_log_pos=710;
 Warnings:
 Note	1253	Slave is already running
diff --git a/mysql-test/r/rpl_user_variables.result b/mysql-test/r/rpl_user_variables.result
index 71147772ac4..e1abfbd0bf7 100644
--- a/mysql-test/r/rpl_user_variables.result
+++ b/mysql-test/r/rpl_user_variables.result
@@ -76,34 +76,34 @@ abcn1n2
 NULL
 NULL
 NULL
-show binlog events from 141;
-Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-slave-bin.000001	141	User var	2	141	@i1=12345678901234
-slave-bin.000001	184	User var	2	184	@i2=-12345678901234
-slave-bin.000001	227	User var	2	227	@i3=0
-slave-bin.000001	270	User var	2	270	@i4=-1
-slave-bin.000001	313	Query	1	313	use `test`; insert into t1 values (@i1), (@i2), (@i3), (@i4)
-slave-bin.000001	396	User var	2	396	@r1=12.5
-slave-bin.000001	439	User var	2	439	@r2=-12.5
-slave-bin.000001	482	Query	1	482	use `test`; insert into t1 values (@r1), (@r2)
-slave-bin.000001	551	User var	2	551	@s1='This is a test'
-slave-bin.000001	600	User var	2	600	@s2=''
-slave-bin.000001	635	User var	2	635	@s3='abc'def'
-slave-bin.000001	677	User var	2	677	@s4='abc\def'
-slave-bin.000001	719	User var	2	719	@s5='abc'def'
-slave-bin.000001	761	Query	1	761	use `test`; insert into t1 values (@s1), (@s2), (@s3), (@s4), (@s5)
-slave-bin.000001	851	User var	2	851	@n1=NULL
-slave-bin.000001	877	Query	1	877	use `test`; insert into t1 values (@n1)
-slave-bin.000001	939	User var	2	939	@n2=NULL
-slave-bin.000001	965	Query	1	965	use `test`; insert into t1 values (@n2)
-slave-bin.000001	1027	Query	1	1027	use `test`; insert into t1 values (@a:=0), (@a:=@a+1), (@a:=@a+1)
-slave-bin.000001	1115	User var	2	1115	@a=2
-slave-bin.000001	1157	Query	1	1157	use `test`; insert into t1 values (@a+(@b:=@a+1))
-slave-bin.000001	1229	User var	2	1229	@q='abc'
-slave-bin.000001	1266	Query	1	1266	use `test`; insert t1 values (@q), (@q:=concat(@q, 'n1')), (@q:=concat(@q, 'n2'))
-slave-bin.000001	1370	User var	2	1370	@a=5
-slave-bin.000001	1412	Query	1	1412	use `test`; insert into t1 values (@a),(@a)
-slave-bin.000001	1478	User var	2	1478	@a=NULL
-slave-bin.000001	1503	Query	1	1503	use `test`; insert into t1 values (@a),(@a),(@a*5)
+show binlog events from 179;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+slave-bin.000001	179	User var	2	222	@i1=12345678901234
+slave-bin.000001	222	User var	2	265	@i2=-12345678901234
+slave-bin.000001	265	User var	2	308	@i3=0
+slave-bin.000001	308	User var	2	351	@i4=-1
+slave-bin.000001	351	Query	1	456	use `test`; insert into t1 values (@i1), (@i2), (@i3), (@i4)
+slave-bin.000001	456	User var	2	499	@r1=12.5
+slave-bin.000001	499	User var	2	542	@r2=-12.5
+slave-bin.000001	542	Query	1	633	use `test`; insert into t1 values (@r1), (@r2)
+slave-bin.000001	633	User var	2	682	@s1='This is a test'
+slave-bin.000001	682	User var	2	717	@s2=''
+slave-bin.000001	717	User var	2	759	@s3='abc'def'
+slave-bin.000001	759	User var	2	801	@s4='abc\def'
+slave-bin.000001	801	User var	2	843	@s5='abc'def'
+slave-bin.000001	843	Query	1	955	use `test`; insert into t1 values (@s1), (@s2), (@s3), (@s4), (@s5)
+slave-bin.000001	955	User var	2	981	@n1=NULL
+slave-bin.000001	981	Query	1	1065	use `test`; insert into t1 values (@n1)
+slave-bin.000001	1065	User var	2	1091	@n2=NULL
+slave-bin.000001	1091	Query	1	1175	use `test`; insert into t1 values (@n2)
+slave-bin.000001	1175	Query	1	1285	use `test`; insert into t1 values (@a:=0), (@a:=@a+1), (@a:=@a+1)
+slave-bin.000001	1285	User var	2	1327	@a=2
+slave-bin.000001	1327	Query	1	1421	use `test`; insert into t1 values (@a+(@b:=@a+1))
+slave-bin.000001	1421	User var	2	1458	@q='abc'
+slave-bin.000001	1458	Query	1	1584	use `test`; insert t1 values (@q), (@q:=concat(@q, 'n1')), (@q:=concat(@q, 'n2'))
+slave-bin.000001	1584	User var	2	1626	@a=5
+slave-bin.000001	1626	Query	1	1714	use `test`; insert into t1 values (@a),(@a)
+slave-bin.000001	1714	User var	2	1739	@a=NULL
+slave-bin.000001	1739	Query	1	1834	use `test`; insert into t1 values (@a),(@a),(@a*5)
 drop table t1;
 stop slave;
diff --git a/mysql-test/t/rpl000010-slave.opt b/mysql-test/t/rpl000010-slave.opt
index 429a7f63f7b..0dbfb311e33 100644
--- a/mysql-test/t/rpl000010-slave.opt
+++ b/mysql-test/t/rpl000010-slave.opt
@@ -1 +1 @@
---disconnect-slave-event-count=1 
+--disconnect-slave-event-count=2 
diff --git a/mysql-test/t/rpl000015.test b/mysql-test/t/rpl000015.test
index 38e0d1bff6c..cd4c9834fe9 100644
--- a/mysql-test/t/rpl000015.test
+++ b/mysql-test/t/rpl000015.test
@@ -7,24 +7,24 @@ save_master_pos;
 connection slave;
 reset slave;
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 change master to master_host='127.0.0.1';
 # The following needs to be cleaned up when change master is fixed
 --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 --replace_result $MASTER_MYPORT MASTER_PORT
 eval change master to master_host='127.0.0.1',master_user='root',
  master_password='',master_port=$MASTER_MYPORT;
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 start slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 connection master;
 --disable_warnings
diff --git a/mysql-test/t/rpl_change_master.test b/mysql-test/t/rpl_change_master.test
index e6452b5b619..ddac966b073 100644
--- a/mysql-test/t/rpl_change_master.test
+++ b/mysql-test/t/rpl_change_master.test
@@ -12,11 +12,11 @@ connection slave;
 stop slave;
 select * from t1;
 --replace_result $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 change master to master_user='root';
 --replace_result $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 # Will restart from after the values(2), which is bug
 select release_lock("a");
diff --git a/mysql-test/t/rpl_empty_master_crash.test b/mysql-test/t/rpl_empty_master_crash.test
index bee9ef72dc4..98a630c69ca 100644
--- a/mysql-test/t/rpl_empty_master_crash.test
+++ b/mysql-test/t/rpl_empty_master_crash.test
@@ -1,6 +1,6 @@
 source include/master-slave.inc;
 
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 #
diff --git a/mysql-test/t/rpl_error_ignored_table.test b/mysql-test/t/rpl_error_ignored_table.test
index aacdb506107..522d464c707 100644
--- a/mysql-test/t/rpl_error_ignored_table.test
+++ b/mysql-test/t/rpl_error_ignored_table.test
@@ -15,7 +15,7 @@ sync_with_master;
 # The port number is different when doing the release build with
 # Do-compile, hence we have to replace the port number here accordingly
 --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 # check that the table has been ignored, because otherwise the test is nonsense
 show tables like 't1';
diff --git a/mysql-test/t/rpl_flush_log_loop.test b/mysql-test/t/rpl_flush_log_loop.test
index 74920722868..ccaae8ad765 100644
--- a/mysql-test/t/rpl_flush_log_loop.test
+++ b/mysql-test/t/rpl_flush_log_loop.test
@@ -18,5 +18,5 @@ sleep 5;
 flush logs;
 sleep 5;
 --replace_result $SLAVE_MYPORT SLAVE_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
diff --git a/mysql-test/t/rpl_loaddata.test b/mysql-test/t/rpl_loaddata.test
index 10213644836..487ad4a7aa6 100644
--- a/mysql-test/t/rpl_loaddata.test
+++ b/mysql-test/t/rpl_loaddata.test
@@ -37,7 +37,7 @@ select * from t3;
 # restarted for this test, the file_id is uncertain (would cause test
 # failures). So instead, we test if the binlog looks long enough to
 # contain LOAD DATA. That is, I (Guilhem) have done SHOW BINLOG EVENTS on my
-# machine, saw that the binlog is of size 964 when things go fine.
+# machine, saw that the binlog is of size 1068 (in 5.0.0) when things go fine.
 # If LOAD DATA was not logged, the binlog would be shorter.
 show master status;
 
@@ -72,7 +72,7 @@ set global sql_slave_skip_counter=1;
 start slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 # Trigger error again to test CHANGE MASTER
@@ -92,7 +92,7 @@ stop slave;
 change master to master_user='test';
 change master to master_user='root';
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 # Trigger error again to test RESET SLAVE
@@ -114,7 +114,7 @@ wait_for_slave_to_stop;
 stop slave;
 reset slave;
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 # Finally, see if logging is done ok on master for a failing LOAD DATA INFILE
diff --git a/mysql-test/t/rpl_loaddata_rule_m.test b/mysql-test/t/rpl_loaddata_rule_m.test
index 678dae13889..3f19a09c6f7 100644
--- a/mysql-test/t/rpl_loaddata_rule_m.test
+++ b/mysql-test/t/rpl_loaddata_rule_m.test
@@ -19,5 +19,5 @@ create database mysqltest;
 create table t1(a int, b int, unique(b));
 use mysqltest;
 load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
-show binlog events from 79; # should be nothing
+show binlog events from 95; # should be nothing
 drop database mysqltest;
diff --git a/mysql-test/t/rpl_loaddata_rule_s.test b/mysql-test/t/rpl_loaddata_rule_s.test
index 1ea4f6825f5..8163cd20f00 100644
--- a/mysql-test/t/rpl_loaddata_rule_s.test
+++ b/mysql-test/t/rpl_loaddata_rule_s.test
@@ -17,4 +17,4 @@ save_master_pos;
 connection slave;
 sync_with_master;
 select count(*) from t1; # check that LOAD was replicated
-show binlog events from 79; # should be nothing
+show binlog events from 95; # should be nothing
diff --git a/mysql-test/t/rpl_log.test b/mysql-test/t/rpl_log.test
index 7ae0a4dc3c2..52f0a0f0d95 100644
--- a/mysql-test/t/rpl_log.test
+++ b/mysql-test/t/rpl_log.test
@@ -38,9 +38,9 @@ select count(*) from t1;
 drop table t1;
 --replace_result $VERSION VERSION
 show binlog events;
-show binlog events from 79 limit 1;
-show binlog events from 79 limit 2;
-show binlog events from 79 limit 2,1;
+show binlog events from 95 limit 1;
+show binlog events from 95 limit 2;
+show binlog events from 95 limit 2,1;
 flush logs;
 
 # We need an extra update before doing save_master_pos.
@@ -82,6 +82,7 @@ insert into t1 values (1);
 drop table t1;
 --replace_result $VERSION VERSION
 show binlog events;
+--replace_result $VERSION VERSION
 show binlog events in 'master-bin.000002';
 show binary logs;
 save_master_pos;
@@ -94,7 +95,7 @@ show binlog events in 'slave-bin.000001' from 4;
 --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT $VERSION VERSION
 show binlog events in 'slave-bin.000002' from 4;
 --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 # Need to recode the following
diff --git a/mysql-test/t/rpl_log_pos.test b/mysql-test/t/rpl_log_pos.test
index 2e54c98c014..f1acbf50165 100644
--- a/mysql-test/t/rpl_log_pos.test
+++ b/mysql-test/t/rpl_log_pos.test
@@ -5,7 +5,7 @@ source include/master-slave.inc;
 show master status;
 sync_slave_with_master;
 --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 stop slave;
 change master to master_log_pos=73;
@@ -15,19 +15,19 @@ stop slave;
 
 change master to master_log_pos=73;
 --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 start slave;
 sleep 5;
 --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 stop slave;
 change master to master_log_pos=173;
 start slave;
 sleep 2;
 --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 connection master;
 show master status;
@@ -38,7 +38,7 @@ insert into t1 values (1),(2),(3);
 save_master_pos;
 connection slave;
 stop slave;
-change master to master_log_pos=79;
+change master to master_log_pos=95;
 start slave;
 sync_with_master;
 select * from t1;
diff --git a/mysql-test/t/rpl_max_relay_size.test b/mysql-test/t/rpl_max_relay_size.test
index a28aed52ec8..410b3d35923 100644
--- a/mysql-test/t/rpl_max_relay_size.test
+++ b/mysql-test/t/rpl_max_relay_size.test
@@ -29,7 +29,7 @@ select @@global.max_relay_log_size;
 start slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 stop slave;
 reset slave;
@@ -38,7 +38,7 @@ select @@global.max_relay_log_size;
 start slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 stop slave;
 reset slave;
@@ -47,7 +47,7 @@ select @@global.max_relay_log_size;
 start slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 # Tests below are mainly to ensure that we have not coded with wrong assumptions
@@ -58,7 +58,7 @@ reset slave;
 # (to make sure it does not crash).
 flush logs;
 --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 reset slave;
@@ -74,7 +74,7 @@ save_master_pos;
 connection slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 # one more rotation, to be sure Relay_Log_Space is correctly updated
 flush logs;
@@ -84,7 +84,7 @@ save_master_pos;
 connection slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 connection master;
diff --git a/mysql-test/t/rpl_openssl.test b/mysql-test/t/rpl_openssl.test
index 8a36904f4d4..779ec4e84bf 100644
--- a/mysql-test/t/rpl_openssl.test
+++ b/mysql-test/t/rpl_openssl.test
@@ -45,7 +45,7 @@ select * from t1;
 
 #checking show slave status
 --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 #checking if replication works without ssl also performing clean up
@@ -58,5 +58,5 @@ save_master_pos;
 connection slave;
 sync_with_master;
 --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
diff --git a/mysql-test/t/rpl_redirect.test b/mysql-test/t/rpl_redirect.test
index 3b5ad6ba88d..d6f37e7f7f6 100644
--- a/mysql-test/t/rpl_redirect.test
+++ b/mysql-test/t/rpl_redirect.test
@@ -12,7 +12,7 @@ sync_with_master;
 #discover slaves
 connection master;
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 SHOW SLAVE STATUS;
 --replace_result $SLAVE_MYPORT SLAVE_PORT
 SHOW SLAVE HOSTS;
diff --git a/mysql-test/t/rpl_relayrotate-slave.opt b/mysql-test/t/rpl_relayrotate-slave.opt
index 8b671423363..3a4abbf091e 100644
--- a/mysql-test/t/rpl_relayrotate-slave.opt
+++ b/mysql-test/t/rpl_relayrotate-slave.opt
@@ -1,4 +1,3 @@
--O max_binlog_size=16384
+-O max_relay_log_size=16384
 --innodb
 --log-warnings
-
diff --git a/mysql-test/t/rpl_relayrotate.test b/mysql-test/t/rpl_relayrotate.test
index 0e198d23517..64724061bc5 100644
--- a/mysql-test/t/rpl_relayrotate.test
+++ b/mysql-test/t/rpl_relayrotate.test
@@ -56,7 +56,9 @@ start slave;
 # reading, MASTER_POS_WAIT() will do it for sure
 # (the only statement with position>=3000 is COMMIT).
 select master_pos_wait('master-bin.001',3000)>=0;
-select * from t1 where a=8000;
+select max(a) from t1;
+--replace_column 1 # 8 # 9 # 23 # 33 #
+show slave status;
 
 # The following DROP is a very important cleaning task:
 # imagine the next test is run with --skip-innodb: it will do
diff --git a/mysql-test/t/rpl_replicate_do.test b/mysql-test/t/rpl_replicate_do.test
index 7066f6e53d8..108dd54ce0a 100644
--- a/mysql-test/t/rpl_replicate_do.test
+++ b/mysql-test/t/rpl_replicate_do.test
@@ -33,6 +33,6 @@ connection slave;
 sync_with_master;
 # show slave status, just to see of it prints replicate-do-table
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
diff --git a/mysql-test/t/rpl_reset_slave.test b/mysql-test/t/rpl_reset_slave.test
index d58e9c711d1..1b27e059f92 100644
--- a/mysql-test/t/rpl_reset_slave.test
+++ b/mysql-test/t/rpl_reset_slave.test
@@ -11,24 +11,24 @@ save_master_pos;
 connection slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 stop slave;
 change master to master_user='test';
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 reset slave;
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 start slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 
 # test of crash with temp tables & RESET SLAVE
diff --git a/mysql-test/t/rpl_rotate_logs.test b/mysql-test/t/rpl_rotate_logs.test
index 7560d56af1c..64ca9e7ea5e 100644
--- a/mysql-test/t/rpl_rotate_logs.test
+++ b/mysql-test/t/rpl_rotate_logs.test
@@ -55,7 +55,7 @@ create table t1 (s text);
 insert into t1 values('Could not break slave'),('Tried hard');
 sync_slave_with_master;
 --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 select * from t1;
 connection master;
@@ -108,7 +108,7 @@ show binary logs;
 insert into t2 values (65);
 sync_slave_with_master;
 --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 select * from t2;
 
@@ -139,7 +139,7 @@ sync_with_master;
 select * from t4;
 
 --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
 # because of concurrent insert, the table may not be up to date
 # if we do not lock
diff --git a/mysql-test/t/rpl_session_var.test b/mysql-test/t/rpl_session_var.test
index 39d3128d260..2379df721b7 100644
--- a/mysql-test/t/rpl_session_var.test
+++ b/mysql-test/t/rpl_session_var.test
@@ -3,7 +3,7 @@
 
 source include/master-slave.inc;
 drop table if exists t1;
-create table t1(a varchar(10),b int);
+create table t1(a varchar(100),b int);
 set @@session.sql_mode=pipes_as_concat;
 insert into t1 values('My'||'SQL', 1);
 set @@session.sql_mode=default;
diff --git a/mysql-test/t/rpl_trunc_binlog.test b/mysql-test/t/rpl_trunc_binlog.test
index 32052af9184..b2e7e52f5e4 100644
--- a/mysql-test/t/rpl_trunc_binlog.test
+++ b/mysql-test/t/rpl_trunc_binlog.test
@@ -21,5 +21,5 @@ start slave;
 # can't sync_with_master so we must sleep
 sleep 3;
 --replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 33 #
+--replace_column 1 # 8 # 9 # 23 # 33 #
 show slave status;
diff --git a/mysql-test/t/rpl_until.test b/mysql-test/t/rpl_until.test
index 9bc4ea4e7b1..40b810dfd62 100644
--- a/mysql-test/t/rpl_until.test
+++ b/mysql-test/t/rpl_until.test
@@ -24,7 +24,7 @@ show binlog events;
 
 # try to replicate all queries until drop of t1
 connection slave;
-start slave until master_log_file='master-bin.000001', master_log_pos=244;
+start slave until master_log_file='master-bin.000001', master_log_pos=304;
 sleep 2;
 # here table should be still not deleted
 select * from t1;
@@ -42,7 +42,7 @@ sleep 2;
 show slave status;
 
 # try replicate all until second insert to t2;
-start slave until relay_log_file='slave-relay-bin.000002', relay_log_pos=537;
+start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=710;
 sleep 2;
 select * from t2;
 --replace_result $MASTER_MYPORT MASTER_MYPORT
@@ -57,8 +57,8 @@ connection slave;
 sync_with_master;
 stop slave;
 
-# this should stop immideately
-start slave until master_log_file='master-bin.000001', master_log_pos=561;
+# this should stop immediately as we are already there
+start slave until master_log_file='master-bin.000001', master_log_pos=710;
 sleep 2;
 # here the sql slave thread should be stopped
 --replace_result $MASTER_MYPORT MASTER_MYPORT
@@ -78,4 +78,4 @@ start slave until relay_log_file='slave-relay-bin.000002';
 start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561;
 
 start slave sql_thread;
-start slave until master_log_file='master-bin.000001', master_log_pos=561;
+start slave until master_log_file='master-bin.000001', master_log_pos=710;
diff --git a/mysql-test/t/rpl_user_variables.test b/mysql-test/t/rpl_user_variables.test
index 35fbec72ac8..7aab1c23c1a 100644
--- a/mysql-test/t/rpl_user_variables.test
+++ b/mysql-test/t/rpl_user_variables.test
@@ -43,7 +43,7 @@ save_master_pos;
 connection slave;
 sync_with_master;
 select * from t1;
-show binlog events from 141;
+show binlog events from 179;
 connection master;
 drop table t1;
 save_master_pos;
diff --git a/sql/log.cc b/sql/log.cc
index e73e009aaaa..99af550286a 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -339,6 +339,15 @@ bool MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg,
         but not the data written to the relay log (*conversion*), which is in
         format 4 (slave's).
       */
+      /*
+        Set 'created' to 0, so that in next relay logs this event does not trigger
+        cleaning actions on the slave in
+        Format_description_log_event::exec_event().
+        Set 'log_pos' to 0 to show that it's an artificial event.
+      */
+      description_event_for_queue->created= 0;
+      description_event_for_queue->log_pos= 0;
+      
       if (description_event_for_queue->write(&log_file))
         goto err;
       bytes_written+= description_event_for_queue->get_event_len();
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 018366507e6..b5e4e73a9ff 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -991,6 +991,21 @@ int Query_log_event::write_data(IO_CACHE* file)
     *(start++)= catalog_len;
     bmove(start, catalog, catalog_len);
     start+= catalog_len;
+    /*
+      We write a \0 at the end. As we also have written the length, it's
+      apparently useless; but in fact it enables us to just do
+      catalog= a_pointer_to_the_buffer_of_the_read_event
+      later in the slave SQL thread.
+      If we didn't have the \0, we would need to memdup to build the catalog in
+      the slave SQL thread. 
+      And still the interest of having the length too is that in the slave SQL
+      thread we immediately know at which position the catalog ends (no need to
+      search for '\0'. In other words: length saves search, \0 saves mem alloc,
+      at the cost of 1 redundant byte on the disk.
+      Note that this is only a fix until we change 'catalog' to LEX_STRING
+      (then we won't need the \0).
+    */
+    *(start++)= '\0';
   }
   /*
     Here there could be code like
@@ -1029,7 +1044,7 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
   time(&end_time);
   exec_time = (ulong) (end_time  - thd->start_time);
   catalog_len = (catalog) ? (uint32) strlen(catalog) : 0;
-  status_vars_len= 1+4+1+8+1+1+catalog_len;
+  status_vars_len= 1+4+1+8+1+1+catalog_len+1;
   db_len = (db) ? (uint32) strlen(db) : 0;
   /*
     If we don't use flags2 for anything else than options contained in
@@ -1145,7 +1160,7 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
       */
       if (start_dup==end)
         start_dup= ++pos;
-      pos+= catalog_len;
+      pos+= catalog_len+1;
       break;
     default:
       /* That's why you must write status vars in growing order of code */
@@ -1435,8 +1450,17 @@ Default database: '%s'",
   } /* End of if (db_ok(... */
 
   VOID(pthread_mutex_lock(&LOCK_thread_count));
-  thd->db= 0;	                        // prevent db from being freed
-  thd->query= 0;			// just to be sure
+  /*
+    Probably we have set thd->query, thd->db, thd->catalog to point to places
+    in the data_buf of this event. Now the event is going to be deleted
+    probably, so data_buf will be freed, so the thd->... listed above will be
+    pointers to freed memory. 
+    So we must set them to 0, so that those bad pointers values are not later
+    used. Note that "cleanup" queries (automatic DO RELEASE_LOCK() and DROP
+    TEMPORARY TABLE don't suffer from these assignments to 0 as DROP TEMPORARY
+    TABLE uses the db.table syntax).
+  */
+  thd->db= thd->query= thd->catalog =0;	
   VOID(pthread_mutex_unlock(&LOCK_thread_count));
   // assume no convert for next query unless set explictly
 #ifdef TO_BE_REMOVED
@@ -1581,8 +1605,12 @@ int Start_log_event_v3::exec_event(struct st_relay_log_info* rli)
       cache to the binlog. As the write was started, the transaction had been
       committed on the master, so we lack of information to replay this
       transaction on the slave; all we can do is stop with error.
+      Note: this event could be sent by the master to inform us of the format
+      of its binlog; in other words maybe it is not at its original place when
+      it comes to us; we'll know this by checking log_pos ("artificial" events
+      have log_pos == 0).
     */
-    if (thd->options & OPTION_BEGIN)
+    if (log_pos && (thd->options & OPTION_BEGIN))
     {
       slave_print_error(rli, 0, "\
 Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. \
@@ -1820,9 +1848,15 @@ int Format_description_log_event::exec_event(struct st_relay_log_info* rli)
       the master. That is, just update the *relay log* coordinates; this is done
       by passing log_pos=0 to inc_group_relay_log_pos, like we do in
       Stop_log_event::exec_event().
+      If in a transaction, don't touch group_* coordinates.
     */
-    rli->inc_group_relay_log_pos(0);
-    flush_relay_log_info(rli);
+    if (thd->options & OPTION_BEGIN)
+      rli->inc_event_relay_log_pos();
+    else
+    {
+      rli->inc_group_relay_log_pos(0);
+      flush_relay_log_info(rli);
+    }
     DBUG_RETURN(0);
   }
 
@@ -2336,6 +2370,8 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli,
   thd->query = 0;				// Should not be needed
   thd->query_error = 0;
 
+  /* Saved for InnoDB, see comment in Query_log_event::exec_event() */
+  rli->future_group_master_log_pos= log_pos; 
   /*
     We test replicate_*_db rules. Note that we have already prepared the file
     to load, even if we are going to ignore and delete it now. So it is
@@ -2453,7 +2489,8 @@ Slave: load data infile on table '%s' at log position %s in log \
   }
 	    
   thd->net.vio = 0; 
-  thd->db= 0;					// prevent db from being freed
+  /* Same reason as in Query_log_event::exec_event() */
+  thd->db= thd->catalog= 0; 
   close_thread_tables(thd);
   if (thd->query_error)
   {
@@ -2610,6 +2647,8 @@ int Rotate_log_event::exec_event(struct st_relay_log_info* rli)
     COMMIT or ROLLBACK
     In that case, we don't want to touch the coordinates which correspond to
     the beginning of the transaction.
+    Starting from 5.0.0, there also are some rotates from the slave itself, in
+    the relay log.
   */
   if (!(thd->options & OPTION_BEGIN))
   {
@@ -3242,8 +3281,13 @@ int Stop_log_event::exec_event(struct st_relay_log_info* rli)
     could give false triggers in MASTER_POS_WAIT() that we have reached
     the target position when in fact we have not.
   */
-  rli->inc_group_relay_log_pos(0);
-  flush_relay_log_info(rli);
+  if (thd->options & OPTION_BEGIN)
+    rli->inc_event_relay_log_pos();
+  else
+  {
+    rli->inc_group_relay_log_pos(0);
+    flush_relay_log_info(rli);
+  }
   return 0;
 }
 #endif /* !MYSQL_CLIENT */
diff --git a/sql/slave.cc b/sql/slave.cc
index bc9471a5368..969b57bdb39 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -1213,6 +1213,13 @@ static int init_intvar_from_file(int* var, IO_CACHE* f, int default_val)
 static int get_master_version_and_clock(MYSQL* mysql, MASTER_INFO* mi)
 {
   const char* errmsg= 0;
+
+  /*
+    Free old description_event_for_queue (that is needed if we are in
+    a reconnection).
+  */
+  delete mi->rli.relay_log.description_event_for_queue;
+  mi->rli.relay_log.description_event_for_queue= 0;
   
   if (!my_isdigit(&my_charset_bin,*mysql->server_version))
     errmsg = "Master reported unrecognized MySQL version";
@@ -1263,7 +1270,14 @@ static int get_master_version_and_clock(MYSQL* mysql, MASTER_INFO* mi)
     sql_print_error(errmsg);
     return 1;
   }
-  
+
+  /* as we are here, we tried to allocate the event */
+  if (!mi->rli.relay_log.description_event_for_queue)
+  {
+    sql_print_error("Slave I/O thread failed to create a default Format_description_log_event");
+    return 1;
+  }
+
   MYSQL_RES *master_clock_res;
   MYSQL_ROW master_clock_row;
   time_t slave_clock;
@@ -2897,12 +2911,17 @@ static int exec_relay_log_event(THD* thd, RELAY_LOG_INFO* rli)
          type_code != START_EVENT_V3 && type_code!= FORMAT_DESCRIPTION_EVENT))
     {
       DBUG_PRINT("info", ("event skipped"));
-      rli->inc_group_relay_log_pos((type_code == ROTATE_EVENT || 
-                                    type_code == STOP_EVENT ||
-                                    type_code == FORMAT_DESCRIPTION_EVENT) ?
-                                   LL(0) : ev->log_pos,
-                                   1/* skip lock*/);
-      flush_relay_log_info(rli);
+      if (thd->options & OPTION_BEGIN)
+        rli->inc_event_relay_log_pos();
+      else
+      {
+        rli->inc_group_relay_log_pos((type_code == ROTATE_EVENT || 
+                                      type_code == STOP_EVENT ||
+                                      type_code == FORMAT_DESCRIPTION_EVENT) ?
+                                     LL(0) : ev->log_pos,
+                                     1/* skip lock*/);
+        flush_relay_log_info(rli);
+      }
       
       /*
  	Protect against common user error of setting the counter to 1
@@ -2913,7 +2932,19 @@ static int exec_relay_log_event(THD* thd, RELAY_LOG_INFO* rli)
  	  !((type_code == INTVAR_EVENT ||
              type_code == RAND_EVENT || 
              type_code == USER_VAR_EVENT) &&
- 	    rli->slave_skip_counter == 1))
+ 	    rli->slave_skip_counter == 1) &&
+          /*
+            The events from ourselves which have something to do with the relay
+            log itself must be skipped, true, but they mustn't decrement
+            rli->slave_skip_counter, because the user is supposed to not see
+            these events (they are not in the master's binlog) and if we
+            decremented, START SLAVE would for example decrement when it sees
+            the Rotate, so the event which the user probably wanted to skip
+            would not be skipped.
+          */
+          !(ev->server_id == (uint32) ::server_id &&
+            (type_code == ROTATE_EVENT || type_code == STOP_EVENT ||
+             type_code == START_EVENT_V3 || type_code == FORMAT_DESCRIPTION_EVENT)))
         --rli->slave_skip_counter;
       pthread_mutex_unlock(&rli->data_lock);
       delete ev;     
@@ -3420,7 +3451,12 @@ the slave SQL thread with \"SLAVE START\". We stopped at log \
 
  err:
   VOID(pthread_mutex_lock(&LOCK_thread_count));
-  thd->query = thd->db = 0; // extra safety
+  /*
+    Some extra safety, which should not been needed (normally, event deletion
+    should already have done these assignments (each event which sets these
+    variables is supposed to set them to 0 before terminating)).
+  */
+  thd->query= thd->db= thd->catalog= 0; 
   VOID(pthread_mutex_unlock(&LOCK_thread_count));
   thd->proc_info = "Waiting for slave mutex on exit";
   pthread_mutex_lock(&rli->run_lock);
@@ -3888,22 +3924,17 @@ int queue_event(MASTER_INFO* mi,const char* buf, ulong event_len)
       relay_log struct does not move (though some members of it can change), so
       we needn't any lock (no rli->data_lock, no log lock).
     */
-    Format_description_log_event* tmp= mi->rli.relay_log.description_event_for_queue;
+    Format_description_log_event* tmp;
     const char* errmsg;
-    if (!(mi->rli.relay_log.description_event_for_queue= (Format_description_log_event*)
+    if (!(tmp= (Format_description_log_event*)
           Log_event::read_log_event(buf, event_len, &errmsg,
-                                    mi->rli.relay_log.description_event_for_queue))) 
+                                    mi->rli.relay_log.description_event_for_queue)))
     {
-      delete tmp;
       error= 2;
       goto err;
     }
-    delete tmp;
-    /*
-      Set 'created' to 0, so that in next relay logs this event does not trigger
-      cleaning actions on the slave in Format_description_log_event::exec_event().
-    */
-    mi->rli.relay_log.description_event_for_queue->created= 0;
+    delete mi->rli.relay_log.description_event_for_queue;
+    mi->rli.relay_log.description_event_for_queue= tmp;
     /* 
        Though this does some conversion to the slave's format, this will
        preserve the master's binlog format version, and number of event types. 
diff --git a/sql/sql_class.h b/sql/sql_class.h
index f57272b6c66..4deb8df5550 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -613,6 +613,13 @@ class THD :public ilink,
     db - currently selected database
     catalog - currently selected catalog
     ip - client IP
+    WARNING: some members of THD (currently 'db', 'catalog' and 'query')  are
+    set and alloced by the slave SQL thread (for the THD of that thread); that
+    thread is (and must remain, for now) the only responsible for freeing these
+    3 members. If you add members here, and you add code to set them in
+    replication, don't forget to free_them_and_set_them_to_0 in replication
+    properly. For details see the 'err:' label of the pthread_handler_decl of
+    the slave SQL thread, in sql/slave.cc.
    */
   char	  *host,*user,*priv_user,*db,*catalog,*ip;
   char	  priv_host[MAX_HOSTNAME];
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc
index d6d52389183..fd0096eb7a0 100644
--- a/sql/sql_repl.cc
+++ b/sql/sql_repl.cc
@@ -328,30 +328,30 @@ int purge_master_logs_before_date(THD* thd, time_t purge_time)
   return purge_error_message(thd ,res);
 }
 
-int test_for_non_eof_log_read_errors(int error, const char *errmsg)
+int test_for_non_eof_log_read_errors(int error, const char **errmsg)
 {
   if (error == LOG_READ_EOF) 
     return 0;
   my_errno= ER_MASTER_FATAL_ERROR_READING_BINLOG;
   switch (error) {
   case LOG_READ_BOGUS:
-    errmsg = "bogus data in log event";
+    *errmsg = "bogus data in log event";
     break;
   case LOG_READ_TOO_LARGE:
-    errmsg = "log event entry exceeded max_allowed_packet; \
+    *errmsg = "log event entry exceeded max_allowed_packet; \
 Increase max_allowed_packet on master";
     break;
   case LOG_READ_IO:
-    errmsg = "I/O error reading log event";
+    *errmsg = "I/O error reading log event";
     break;
   case LOG_READ_MEM:
-    errmsg = "memory allocation failed reading log event";
+    *errmsg = "memory allocation failed reading log event";
     break;
   case LOG_READ_TRUNC:
-    errmsg = "binlog truncated in the middle of event";
+    *errmsg = "binlog truncated in the middle of event";
     break;
   default:
-    errmsg = "unknown error reading log event on the master";
+    *errmsg = "unknown error reading log event on the master";
     break;
   }
   return error;
@@ -519,7 +519,7 @@ impossible position";
        }
      }
      else
-       if (test_for_non_eof_log_read_errors(error, errmsg))
+       if (test_for_non_eof_log_read_errors(error, &errmsg))
          goto err;
      /* 
         else: it's EOF, nothing to do, go on reading next events, the
@@ -573,7 +573,7 @@ impossible position";
       in the-master-of-this-master's binlog.
     */
 
-    if (test_for_non_eof_log_read_errors(error, errmsg))
+    if (test_for_non_eof_log_read_errors(error, &errmsg))
       goto err;
 
     if (!(flags & BINLOG_DUMP_NON_BLOCK) &&
@@ -1349,7 +1349,10 @@ int show_binlog_events(THD* thd)
     if (ev)
     {
       if (ev->get_type_code() == FORMAT_DESCRIPTION_EVENT)
+      {
+        delete description_event;
         description_event= (Format_description_log_event*) ev;
+      }
       else
         delete ev;
     }
-- 
2.30.9