summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <mats@mysql.com>2006-05-31 19:21:52 +0200
committerunknown <mats@mysql.com>2006-05-31 19:21:52 +0200
commite9b5cafa8b2a95a0bf414922ac61335ea199c765 (patch)
tree470ce568d2974256afbf5d669352479e3b31fac1 /mysql-test
parent39b6d186e8933a1e6e5544194e66138f78e14b11 (diff)
downloadmariadb-git-e9b5cafa8b2a95a0bf414922ac61335ea199c765.tar.gz
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''
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/include/master-slave-reset.inc22
-rw-r--r--mysql-test/include/master-slave.inc24
-rw-r--r--mysql-test/r/binlog_row_blackhole.result12
-rw-r--r--mysql-test/r/binlog_row_mix_innodb_myisam.result38
-rw-r--r--mysql-test/r/ndb_binlog_ignore_db.result2
-rw-r--r--mysql-test/r/rpl_ndb_charset.result10
-rw-r--r--mysql-test/r/rpl_row_basic_11bugs.result17
-rw-r--r--mysql-test/r/rpl_row_charset.result10
-rw-r--r--mysql-test/r/rpl_row_create_table.result22
-rw-r--r--mysql-test/t/rpl_row_basic_11bugs.test15
-rw-r--r--mysql-test/t/rpl_row_create_table.test8
11 files changed, 88 insertions, 92 deletions
diff --git a/mysql-test/include/master-slave-reset.inc b/mysql-test/include/master-slave-reset.inc
new file mode 100644
index 00000000000..204c6c5f5f6
--- /dev/null
+++ b/mysql-test/include/master-slave-reset.inc
@@ -0,0 +1,22 @@
+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;
diff --git a/mysql-test/include/master-slave.inc b/mysql-test/include/master-slave.inc
index ea09f4e842b..fe1dacb433e 100644
--- a/mysql-test/include/master-slave.inc
+++ b/mysql-test/include/master-slave.inc
@@ -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;
diff --git a/mysql-test/r/binlog_row_blackhole.result b/mysql-test/r/binlog_row_blackhole.result
index 42bf7a10888..140d7d4da46 100644
--- a/mysql-test/r/binlog_row_blackhole.result
+++ b/mysql-test/r/binlog_row_blackhole.result
@@ -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;
diff --git a/mysql-test/r/binlog_row_mix_innodb_myisam.result b/mysql-test/r/binlog_row_mix_innodb_myisam.result
index 078a95d5abd..25ef16284fa 100644
--- a/mysql-test/r/binlog_row_mix_innodb_myisam.result
+++ b/mysql-test/r/binlog_row_mix_innodb_myisam.result
@@ -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;
diff --git a/mysql-test/r/ndb_binlog_ignore_db.result b/mysql-test/r/ndb_binlog_ignore_db.result
index 2f411fcd03d..8dc2c1ff1f8 100644
--- a/mysql-test/r/ndb_binlog_ignore_db.result
+++ b/mysql-test/r/ndb_binlog_ignore_db.result
@@ -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;
diff --git a/mysql-test/r/rpl_ndb_charset.result b/mysql-test/r/rpl_ndb_charset.result
index 31a7e1368f3..0ce4446c8a5 100644
--- a/mysql-test/r/rpl_ndb_charset.result
+++ b/mysql-test/r/rpl_ndb_charset.result
@@ -112,16 +112,10 @@ drop database mysqltest3;
show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query 1 # drop database if exists mysqltest2
-master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # drop database if exists mysqltest3
-master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # create database mysqltest2 character set latin2
master-bin.000001 # Query 1 # create database mysqltest3
master-bin.000001 # Query 1 # drop database mysqltest3
-master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # create database mysqltest3
master-bin.000001 # Query 1 # use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100))
master-bin.000001 # Table_map 1 # table_id: # (mysqltest2.t1)
@@ -147,11 +141,7 @@ master-bin.000001 # Query 1 # use `mysqltest2`; truncate table t1
master-bin.000001 # Table_map 1 # table_id: # (mysqltest2.t1)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # drop database mysqltest2
-master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # drop database mysqltest3
-master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
select "--- --global--" as "";
--- --global--
diff --git a/mysql-test/r/rpl_row_basic_11bugs.result b/mysql-test/r/rpl_row_basic_11bugs.result
index 4ed7d54647b..7cd895f2041 100644
--- a/mysql-test/r/rpl_row_basic_11bugs.result
+++ b/mysql-test/r/rpl_row_basic_11bugs.result
@@ -44,3 +44,20 @@ t1
USE test_ignore;
ERROR 42000: Unknown database 'test_ignore'
DROP DATABASE test_ignore;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE t1 (a INT);
+DELETE FROM t1;
+INSERT INTO t1 VALUES (1),(2);
+DELETE FROM t1 WHERE a = 0;
+UPDATE t1 SET a=99 WHERE a = 0;
+SHOW BINLOG EVENTS;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.11-beta-debug-log, Binlog ver: 4
+master-bin.000001 102 Query 1 188 use `test`; CREATE TABLE t1 (a INT)
+master-bin.000001 188 Query 1 265 use `test`; DELETE FROM t1
+master-bin.000001 265 Table_map 1 304 table_id: # (test.t1)
+master-bin.000001 304 Write_rows 1 343 table_id: # flags: STMT_END_F
diff --git a/mysql-test/r/rpl_row_charset.result b/mysql-test/r/rpl_row_charset.result
index d80b5fa60de..79cf75c8cc1 100644
--- a/mysql-test/r/rpl_row_charset.result
+++ b/mysql-test/r/rpl_row_charset.result
@@ -112,16 +112,10 @@ drop database mysqltest3;
show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query 1 # drop database if exists mysqltest2
-master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # drop database if exists mysqltest3
-master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # create database mysqltest2 character set latin2
master-bin.000001 # Query 1 # create database mysqltest3
master-bin.000001 # Query 1 # drop database mysqltest3
-master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # create database mysqltest3
master-bin.000001 # Query 1 # use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100))
master-bin.000001 # Table_map 1 # table_id: # (mysqltest2.t1)
@@ -147,11 +141,7 @@ master-bin.000001 # Query 1 # use `mysqltest2`; truncate table t1
master-bin.000001 # Table_map 1 # table_id: # (mysqltest2.t1)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # drop database mysqltest2
-master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # drop database mysqltest3
-master-bin.000001 # Table_map 1 # table_id: # (mysql.proc)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
select "--- --global--" as "";
--- --global--
diff --git a/mysql-test/r/rpl_row_create_table.result b/mysql-test/r/rpl_row_create_table.result
index b3a8f5e1a0f..f314aa39b81 100644
--- a/mysql-test/r/rpl_row_create_table.result
+++ b/mysql-test/r/rpl_row_create_table.result
@@ -127,7 +127,7 @@ NULL 5 10
NULL 6 12
CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3;
ERROR 23000: Duplicate entry '2' for key 'b'
-SHOW BINLOG EVENTS FROM 1326;
+SHOW BINLOG EVENTS FROM 1256;
Log_name Pos Event_type Server_id End_log_pos Info
CREATE TABLE t7 (a INT, b INT UNIQUE);
INSERT INTO t7 SELECT a,b FROM tt3;
@@ -137,11 +137,11 @@ a b
1 2
2 4
3 6
-SHOW BINLOG EVENTS FROM 1326;
+SHOW BINLOG EVENTS FROM 1256;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 1326 Query 1 1426 use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE)
-master-bin.000001 1426 Table_map 1 1466 table_id: # (test.t7)
-master-bin.000001 1466 Write_rows 1 1522 table_id: # flags: STMT_END_F
+master-bin.000001 1256 Query 1 1356 use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE)
+master-bin.000001 1356 Table_map 1 1396 table_id: # (test.t7)
+master-bin.000001 1396 Write_rows 1 1452 table_id: # flags: STMT_END_F
SELECT * FROM t7 ORDER BY a,b;
a b
1 2
@@ -154,10 +154,10 @@ INSERT INTO t7 SELECT a,b FROM tt4;
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
-SHOW BINLOG EVENTS FROM 1522;
+SHOW BINLOG EVENTS FROM 1452;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 1522 Table_map 1 1562 table_id: # (test.t7)
-master-bin.000001 1562 Write_rows 1 1618 table_id: # flags: STMT_END_F
+master-bin.000001 1452 Table_map 1 1492 table_id: # (test.t7)
+master-bin.000001 1492 Write_rows 1 1548 table_id: # flags: STMT_END_F
SELECT * FROM t7 ORDER BY a,b;
a b
1 2
@@ -191,10 +191,10 @@ Create Table CREATE TABLE `t9` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
-SHOW BINLOG EVENTS FROM 1618;
+SHOW BINLOG EVENTS FROM 1548;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 1618 Query 1 1704 use `test`; CREATE TABLE t8 LIKE t4
-master-bin.000001 1704 Query 1 1843 use `test`; CREATE TABLE `t9` (
+master-bin.000001 1548 Query 1 1634 use `test`; CREATE TABLE t8 LIKE t4
+master-bin.000001 1634 Query 1 1773 use `test`; CREATE TABLE `t9` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
)
diff --git a/mysql-test/t/rpl_row_basic_11bugs.test b/mysql-test/t/rpl_row_basic_11bugs.test
index 3a686ea6b3d..bd582ce349a 100644
--- a/mysql-test/t/rpl_row_basic_11bugs.test
+++ b/mysql-test/t/rpl_row_basic_11bugs.test
@@ -36,3 +36,18 @@ USE test_ignore;
connection master;
DROP DATABASE test_ignore;
sync_slave_with_master;
+
+# Bug#19995: Extreneous table maps generated for statements that does
+# not generate rows
+--disable_query_log
+--source include/master-slave-reset.inc
+--enable_query_log
+
+connection master;
+CREATE TABLE t1 (a INT);
+DELETE FROM t1;
+INSERT INTO t1 VALUES (1),(2);
+DELETE FROM t1 WHERE a = 0;
+UPDATE t1 SET a=99 WHERE a = 0;
+--replace_regex /table_id: [0-9]+/table_id: #/
+SHOW BINLOG EVENTS;
diff --git a/mysql-test/t/rpl_row_create_table.test b/mysql-test/t/rpl_row_create_table.test
index 0cb0fd766a3..8a8ea01d688 100644
--- a/mysql-test/t/rpl_row_create_table.test
+++ b/mysql-test/t/rpl_row_create_table.test
@@ -67,7 +67,7 @@ connection master;
CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3;
# Shouldn't be written to the binary log
--replace_regex /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 1326;
+SHOW BINLOG EVENTS FROM 1256;
# Test that INSERT-SELECT works the same way as for SBR.
CREATE TABLE t7 (a INT, b INT UNIQUE);
@@ -76,7 +76,7 @@ INSERT INTO t7 SELECT a,b FROM tt3;
SELECT * FROM t7 ORDER BY a,b;
# Should be written to the binary log
--replace_regex /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 1326;
+SHOW BINLOG EVENTS FROM 1256;
sync_slave_with_master;
SELECT * FROM t7 ORDER BY a,b;
@@ -87,7 +87,7 @@ BEGIN;
INSERT INTO t7 SELECT a,b FROM tt4;
ROLLBACK;
--replace_regex /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 1522;
+SHOW BINLOG EVENTS FROM 1452;
SELECT * FROM t7 ORDER BY a,b;
sync_slave_with_master;
SELECT * FROM t7 ORDER BY a,b;
@@ -101,7 +101,7 @@ CREATE TEMPORARY TABLE tt6 LIKE tt4;
--query_vertical SHOW CREATE TABLE t8
--query_vertical SHOW CREATE TABLE t9
--replace_regex /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 1618;
+SHOW BINLOG EVENTS FROM 1548;
sync_slave_with_master;
--echo **** On Slave ****
--query_vertical SHOW CREATE TABLE t8