mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
4cead8c8a5
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
22 lines
1.1 KiB
Text
22 lines
1.1 KiB
Text
reset master;
|
|
create database `drop-temp+table-test`;
|
|
use `drop-temp+table-test`;
|
|
create temporary table shortn1 (a int);
|
|
create temporary table `table:name` (a int);
|
|
create temporary table shortn2 (a int);
|
|
select get_lock("a",10);
|
|
get_lock("a",10)
|
|
1
|
|
select get_lock("a",10);
|
|
get_lock("a",10)
|
|
1
|
|
show binlog events;
|
|
Log_name Pos Event_type Server_id Orig_log_pos Info
|
|
master-bin.000001 # Start 1 # Server ver: VERSION, Binlog ver: 3
|
|
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`,`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`;
|