mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-5854 Interrupted CREATE OR REPLACE is written into binlog, and in a wrong format
mysql-test/r/create_or_replace2.result: Added test case mysql-test/t/create_or_replace.test: Fixed comment mysql-test/t/create_or_replace2.test: Added test case sql/sql_base.cc: Safety fix: Don't let threads with query_id=0 free temporary tables as this may free temporary tables not in use. This is mostly the case for the slave io threads, as most other threads has thd->query_id != 0. sql/sql_table.cc: Added comment. Ignore kill when opening temporary table for CREATE ... LIKE. This fixed the original isue
This commit is contained in:
25
mysql-test/r/create_or_replace2.result
Normal file
25
mysql-test/r/create_or_replace2.result
Normal file
@ -0,0 +1,25 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
drop table if exists t1;
|
||||
SET @old_debug= @@session.debug;
|
||||
CREATE TABLE t1 (i INT, KEY(i)) ENGINE=InnoDB;
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp (a int, b int, key(a)) engine=myisam;
|
||||
set debug_dbug='+d,send_kill_after_delete';
|
||||
CREATE OR REPLACE TABLE t1 LIKE tmp;
|
||||
set debug_dbug=@old_debug;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
t1
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT NULL,
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
t1
|
||||
drop temporary table if exists tmp;
|
||||
drop table t1;
|
||||
include/rpl_end.inc
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Check CREATE OR REPLACE ALTER TABLE
|
||||
# Check CREATE OR REPLACE TABLE
|
||||
#
|
||||
|
||||
--source include/have_innodb.inc
|
||||
|
35
mysql-test/t/create_or_replace2.test
Normal file
35
mysql-test/t/create_or_replace2.test
Normal file
@ -0,0 +1,35 @@
|
||||
#
|
||||
# Check CREATE OR REPLACE TABLE for test that requires DEBUG
|
||||
#
|
||||
|
||||
--source include/have_debug.inc
|
||||
--source include/master-slave.inc
|
||||
--source include/have_binlog_format_row.inc
|
||||
--source include/have_xtradb.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
SET @old_debug= @@session.debug;
|
||||
|
||||
#
|
||||
# MDEV-5854
|
||||
# Interrupted CREATE OR REPLACE is written into binlog, and in a wrong format
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (i INT, KEY(i)) ENGINE=InnoDB;
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp (a int, b int, key(a)) engine=myisam;
|
||||
set debug_dbug='+d,send_kill_after_delete';
|
||||
CREATE OR REPLACE TABLE t1 LIKE tmp;
|
||||
set debug_dbug=@old_debug;
|
||||
SHOW TABLES;
|
||||
show create table t1;
|
||||
--sync_slave_with_master
|
||||
SHOW TABLES;
|
||||
--connection master
|
||||
|
||||
--disable_warnings
|
||||
drop temporary table if exists tmp;
|
||||
--enable_warnings
|
||||
drop table t1;
|
||||
--source include/rpl_end.inc
|
Reference in New Issue
Block a user