summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <guilhem@mysql.com>2005-02-14 23:47:17 +0100
committerunknown <guilhem@mysql.com>2005-02-14 23:47:17 +0100
commit4cead8c8a500f45952e6f9956293320d36ed505c (patch)
treec9d594111c2eec0cddde20026bcfd437d4324e76 /mysql-test
parente2b6480162743d7eaa62bf7b64e92778191b25d9 (diff)
downloadmariadb-git-4cead8c8a500f45952e6f9956293320d36ed505c.tar.gz
1) undoing my fix for BUG#8055 "Trouble with replication from temporary tables and ignores"
and fixing it another way (per Monty; a simpler solution which does not increase the number of binlog events is to always execute DROP TEMPORARY TABLE IF EXISTS on slave). A new test rpl_drop_temp. 2) fixing BUG#8436 "Multiple "stacked" SQL statements cause replication to stop" by setting thd->query_length to the length of the query being executed, not counting the next queries if this is a multi-query. Should also improve display of SHOW PROCESSLIST. A new test rpl_multi_query. mysql-test/r/drop_temp_table.result: back to one single DROP sql/sql_base.cc: undoing the fix I had made some days ago: we are back to one single DROP TEMPORARY TABLE for all temp tables. sql/sql_parse.cc: 1) set thd->query_length to the length of the query being executed, excluding the other next queries if this is a multi-query. The setting happens ASAP, ie. just after we know it's a multi-query, ie. just after yyparse(). Don't include the ';' in thd->query_length, because this is not good for storage in binlog. 2) always execute a DROP TEMPORARY TABLE IF EXISTS on slave, don't skip it even if --replicate-ignore-table
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/drop_temp_table.result4
-rw-r--r--mysql-test/r/rpl_drop_temp.result12
-rw-r--r--mysql-test/r/rpl_multi_query.result32
-rw-r--r--mysql-test/t/rpl_drop_temp-slave.opt2
-rw-r--r--mysql-test/t/rpl_drop_temp.test13
-rw-r--r--mysql-test/t/rpl_multi_query.test26
6 files changed, 86 insertions, 3 deletions
diff --git a/mysql-test/r/drop_temp_table.result b/mysql-test/r/drop_temp_table.result
index a486964feb2..5f1f142cde5 100644
--- a/mysql-test/r/drop_temp_table.result
+++ b/mysql-test/r/drop_temp_table.result
@@ -17,8 +17,6 @@ master-bin.000001 # Query 1 # create database `drop-temp+table-test`
master-bin.000001 # Query 1 # use `drop-temp+table-test`; create temporary table shortn1 (a int)
master-bin.000001 # Query 1 # use `drop-temp+table-test`; create temporary table `table:name` (a int)
master-bin.000001 # Query 1 # use `drop-temp+table-test`; create temporary table shortn2 (a int)
-master-bin.000001 # Query 1 # use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`shortn2`
-master-bin.000001 # Query 1 # use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`table:name`
-master-bin.000001 # Query 1 # use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`shortn1`
+master-bin.000001 # Query 1 # use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`shortn2`,`drop-temp+table-test`.`table:name`,`drop-temp+table-test`.`shortn1`
master-bin.000001 # Query 1 # use `drop-temp+table-test`; DO RELEASE_LOCK("a")
drop database `drop-temp+table-test`;
diff --git a/mysql-test/r/rpl_drop_temp.result b/mysql-test/r/rpl_drop_temp.result
new file mode 100644
index 00000000000..e00309cac8f
--- /dev/null
+++ b/mysql-test/r/rpl_drop_temp.result
@@ -0,0 +1,12 @@
+stop slave;
+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 database if not exists mysqltest;
+create temporary table mysqltest.t1 (n int);
+create temporary table mysqltest.t2 (n int);
+show status like 'Slave_open_temp_tables';
+Variable_name Value
+Slave_open_temp_tables 0
diff --git a/mysql-test/r/rpl_multi_query.result b/mysql-test/r/rpl_multi_query.result
new file mode 100644
index 00000000000..2521dbe1ed9
--- /dev/null
+++ b/mysql-test/r/rpl_multi_query.result
@@ -0,0 +1,32 @@
+stop slave;
+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;
+drop database if exists mysqltest;
+create database mysqltest;
+create table mysqltest.t1 ( n int);
+insert into mysqltest.t1 values(1)/
+insert into mysqltest.t1 values(2);
+insert into mysqltest.t1 values(3);
+insert into mysqltest.t1 values(4);
+insert into mysqltest.t1 values(5)/
+select * from mysqltest.t1;
+n
+1
+2
+3
+4
+5
+show binlog events from 79;
+Log_name Pos Event_type Server_id Orig_log_pos Info
+master-bin.000001 # Query 1 # drop database if exists mysqltest
+master-bin.000001 # Query 1 # create database mysqltest
+master-bin.000001 # Query 1 # use `test`; create table mysqltest.t1 ( n int)
+master-bin.000001 # Query 1 # use `test`; insert into mysqltest.t1 values(1)
+master-bin.000001 # Query 1 # use `test`; insert into mysqltest.t1 values(2)
+master-bin.000001 # Query 1 # use `test`; insert into mysqltest.t1 values(3)
+master-bin.000001 # Query 1 # use `test`; insert into mysqltest.t1 values(4)
+master-bin.000001 # Query 1 # use `test`; insert into mysqltest.t1 values(5)
+drop database mysqltest;
diff --git a/mysql-test/t/rpl_drop_temp-slave.opt b/mysql-test/t/rpl_drop_temp-slave.opt
new file mode 100644
index 00000000000..2f9244c65ff
--- /dev/null
+++ b/mysql-test/t/rpl_drop_temp-slave.opt
@@ -0,0 +1,2 @@
+--replicate-ignore-table=mysqltest.t2
+
diff --git a/mysql-test/t/rpl_drop_temp.test b/mysql-test/t/rpl_drop_temp.test
new file mode 100644
index 00000000000..73d691d9d90
--- /dev/null
+++ b/mysql-test/t/rpl_drop_temp.test
@@ -0,0 +1,13 @@
+source include/master-slave.inc;
+--disable_warnings
+create database if not exists mysqltest;
+--enable_warnings
+
+create temporary table mysqltest.t1 (n int);
+create temporary table mysqltest.t2 (n int);
+sync_slave_with_master;
+connection master;
+disconnect master;
+connection slave;
+--real_sleep 3; # time for DROP to be written
+show status like 'Slave_open_temp_tables';
diff --git a/mysql-test/t/rpl_multi_query.test b/mysql-test/t/rpl_multi_query.test
new file mode 100644
index 00000000000..15f5d288759
--- /dev/null
+++ b/mysql-test/t/rpl_multi_query.test
@@ -0,0 +1,26 @@
+# Test for BUG#8436: verify that a multi-query (i.e. one query
+# containing several queries (assuming client has
+# CLIENT_MULTI_STATEMENTS) will be binlogged ONE-query-per-event (not
+# one binlog event containing all queries)
+
+source include/master-slave.inc;
+--disable_warnings
+drop database if exists mysqltest;
+--enable_warnings
+create database mysqltest;
+
+delimiter /;
+create table mysqltest.t1 ( n int);
+insert into mysqltest.t1 values(1)/
+insert into mysqltest.t1 values(2);
+insert into mysqltest.t1 values(3);
+insert into mysqltest.t1 values(4);
+insert into mysqltest.t1 values(5)/
+delimiter ;/
+sync_slave_with_master;
+select * from mysqltest.t1;
+connection master;
+--replace_column 2 # 5 #
+show binlog events from 79;
+drop database mysqltest;
+sync_slave_with_master;