Commit e9b5cafa authored by unknown's avatar unknown
Browse files

Bug#19995 (Extreneous table maps generated for statements that do not generate rows):

Switched to writing out table maps for tables that are locked when
the first row in a statement is seen.


mysql-test/include/master-slave.inc:
  Moved code to reset master and slave into separate file.
mysql-test/r/binlog_row_blackhole.result:
  Result change
mysql-test/r/binlog_row_mix_innodb_myisam.result:
  Result change
mysql-test/r/ndb_binlog_ignore_db.result:
  Result change
mysql-test/r/rpl_ndb_charset.result:
  Result change
mysql-test/r/rpl_row_basic_11bugs.result:
  Result change
mysql-test/r/rpl_row_charset.result:
  Result change
mysql-test/r/rpl_row_create_table.result:
  Result change
mysql-test/t/rpl_row_basic_11bugs.test:
  Added test to check that no events are generated when no rows are changed.
mysql-test/t/rpl_row_create_table.test:
  Master log position changed
sql/handler.cc:
  Adding function write_locked_table_maps() that will write table maps for all
  tables locked for write.
  Using "table->in_use" instead of "current_thd" since tables are now locked
  when the function is called.
  Removing old code to write table map.
sql/log_event.cc:
  Added assertion
sql/sql_class.cc:
  Removing code to write "dummy termination event".
sql/sql_class.h:
  Adding getter for binlog_table_maps.
sql/sql_insert.cc:
  Setting thd->lock before calling write_record for the execution of
  CREATE-SELECT and INSERT-SELECT since they keep multiple locks in the
  air at the same time.
mysql-test/include/master-slave-reset.inc:
  New BitKeeper file ``mysql-test/include/master-slave-reset.inc''
parent 39b6d186
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
connection slave;
#we expect STOP SLAVE to produce a warning as the slave is stopped
#(the server was started with skip-slave-start)
--disable_warnings
stop slave;
--wait_for_slave_to_stop
--enable_warnings
connection master;
--disable_warnings
--disable_query_log
use test;
--enable_query_log
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
--enable_warnings
reset master;
connection slave;
reset slave;
# Clean up old test tables
--disable_warnings
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
--enable_warnings
start slave;
+2 −22
Original line number Diff line number Diff line
@@ -2,28 +2,8 @@ connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (master1,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
connect (slave1,127.0.0.1,root,,test,$SLAVE_MYPORT,);
connection slave;
#we expect STOP SLAVE to produce a warning as the slave is stopped
#(the server was started with skip-slave-start)
--disable_warnings
stop slave;
--enable_warnings
--require r/slave-stopped.result 
show status like 'Slave_running';
connection master;
--disable_warnings
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
--enable_warnings
reset master;
connection slave;
reset slave;
# Clean up old test tables
--disable_warnings
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
--enable_warnings
start slave;
--require r/slave-running.result
show status like 'Slave_running';

-- source include/master-slave-reset.inc

# Set the default connection to 'master'
connection master;
+0 −12
Original line number Diff line number Diff line
@@ -118,12 +118,6 @@ master-bin.000001 # Query 1 # use `test`; COMMIT
master-bin.000001	#	Table_map	1	#	table_id: # (test.t1)
master-bin.000001	#	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	#	Query	1	#	use `test`; COMMIT
master-bin.000001	#	Table_map	1	#	table_id: # (test.t1)
master-bin.000001	#	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	#	Query	1	#	use `test`; COMMIT
master-bin.000001	#	Table_map	1	#	table_id: # (test.t1)
master-bin.000001	#	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	#	Query	1	#	use `test`; COMMIT
master-bin.000001	#	Query	1	#	use `test`; create table t2 (a varchar(200)) engine=blackhole
master-bin.000001	#	Table_map	1	#	table_id: # (test.t2)
master-bin.000001	#	Write_rows	1	#	table_id: # flags: STMT_END_F
@@ -131,12 +125,6 @@ master-bin.000001 # Query 1 # use `test`; COMMIT
master-bin.000001	#	Query	1	#	use `test`; alter table t1 add b int
master-bin.000001	#	Query	1	#	use `test`; alter table t1 drop b
master-bin.000001	#	Query	1	#	use `test`; create table t3 like t1
master-bin.000001	#	Table_map	1	#	table_id: # (test.t1)
master-bin.000001	#	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	#	Query	1	#	use `test`; COMMIT
master-bin.000001	#	Table_map	1	#	table_id: # (test.t1)
master-bin.000001	#	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	#	Query	1	#	use `test`; COMMIT
drop table t1,t2,t3;
reset master;
create table t1 (a int) engine=blackhole;
+17 −21
Original line number Diff line number Diff line
@@ -262,27 +262,23 @@ master-bin.000001 209 Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001	243	Table_map	1	#	table_id: # (test.t1)
master-bin.000001	282	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	316	Xid	1	#	COMMIT /* xid= */
master-bin.000001	343	Table_map	1	#	table_id: # (test.t1)
master-bin.000001	382	Query	1	#	use `test`; delete from t1
master-bin.000001	459	Xid	1	#	COMMIT /* xid= */
master-bin.000001	486	Table_map	1	#	table_id: # (test.t2)
master-bin.000001	525	Query	1	#	use `test`; delete from t2
master-bin.000001	602	Xid	1	#	COMMIT /* xid= */
master-bin.000001	629	Query	1	#	use `test`; alter table t2 engine=MyISAM
master-bin.000001	720	Table_map	1	#	table_id: # (test.t1)
master-bin.000001	759	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	793	Xid	1	#	COMMIT /* xid= */
master-bin.000001	820	Query	1	#	use `test`; BEGIN
master-bin.000001	888	Table_map	1	#	table_id: # (test.t1)
master-bin.000001	927	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	956	Xid	1	#	COMMIT /* xid= */
master-bin.000001	983	Query	1	#	use `test`; drop table t1,t2
master-bin.000001	1062	Query	1	#	use `test`; create table t0 (n int)
master-bin.000001	1148	Table_map	1	#	table_id: # (test.t0)
master-bin.000001	1187	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	1221	Table_map	1	#	table_id: # (test.t0)
master-bin.000001	1260	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	1294	Query	1	#	use `test`; create table t2 (n int) engine=innodb
master-bin.000001	343	Query	1	#	use `test`; delete from t1
master-bin.000001	420	Xid	1	#	COMMIT /* xid= */
master-bin.000001	447	Query	1	#	use `test`; delete from t2
master-bin.000001	524	Xid	1	#	COMMIT /* xid= */
master-bin.000001	551	Query	1	#	use `test`; alter table t2 engine=MyISAM
master-bin.000001	642	Table_map	1	#	table_id: # (test.t1)
master-bin.000001	681	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	715	Xid	1	#	COMMIT /* xid= */
master-bin.000001	742	Table_map	1	#	table_id: # (test.t2)
master-bin.000001	781	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	815	Query	1	#	use `test`; drop table t1,t2
master-bin.000001	894	Query	1	#	use `test`; create table t0 (n int)
master-bin.000001	980	Table_map	1	#	table_id: # (test.t0)
master-bin.000001	1019	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	1053	Table_map	1	#	table_id: # (test.t0)
master-bin.000001	1092	Write_rows	1	#	table_id: # flags: STMT_END_F
master-bin.000001	1126	Query	1	#	use `test`; create table t2 (n int) engine=innodb
do release_lock("lock1");
drop table t0,t2;
reset master;
+0 −2
Original line number Diff line number Diff line
@@ -7,6 +7,4 @@ insert into t1 values (1, 1);
show binlog events from <binlog_start>;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	#	Query	#	#	use `test`; drop table if exists t1
master-bin.000001	#	Table_map	#	#	table_id: # (mysql.proc)
master-bin.000001	#	Write_rows	#	#	table_id: # flags: STMT_END_F
drop database mysqltest;
Loading