mirror of
https://github.com/MariaDB/server.git
synced 2025-11-27 05:41:41 +03:00
The test rpl.rpl_failed_drop_tbl_binlog exercises a scenario where the adaptive hash index is enabled. Try to explicitly enable the adaptive hash index for this test, and skip the test if it does not succeed (that is, if the server was not built WITH_INNODB_AHI=ON).
70 lines
2.1 KiB
Plaintext
70 lines
2.1 KiB
Plaintext
# ==== Purpose ====
|
|
#
|
|
# Check that when the execution of a DROP TABLE command with single table
|
|
# fails it should not be written to the binary log. Also test that when the
|
|
# execution of DROP TABLE command with multiple tables fails the command
|
|
# should be written into the binary log.
|
|
#
|
|
# ==== Implementation ====
|
|
#
|
|
# Steps:
|
|
# 0 - Create tables named t1, t2, t3
|
|
# 1 - Execute DROP TABLE t1,t2,t3 command.
|
|
# 2 - Kill the DROP TABLE command while it is trying to drop table 't2'.
|
|
# 3 - Verify that tables t2,t3 are present after the DROP command execution
|
|
# was interrupted.
|
|
# 4 - Check that table 't1' is present in binary log as part of DROP
|
|
# command.
|
|
#
|
|
# ==== References ====
|
|
#
|
|
# MDEV-20348: DROP TABLE IF EXISTS killed on master but was replicated.
|
|
#
|
|
|
|
--source include/have_innodb.inc
|
|
--source include/have_debug_sync.inc
|
|
--source include/have_binlog_format_statement.inc
|
|
--source include/master-slave.inc
|
|
|
|
if (!`select @@GLOBAL.innodb_adaptive_hash_index`)
|
|
{
|
|
--skip Need innodb_adaptive_hash_index
|
|
}
|
|
|
|
create table t1 (a int) engine=innodb;
|
|
create table t2 (b longblob) engine=innodb;
|
|
create table t3 (c int) engine=innodb;
|
|
insert into t2 values (repeat('b',1024*1024));
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
|
|
|
|
let $id=`select connection_id()`;
|
|
set debug_sync='rm_table_no_locks_before_delete_table SIGNAL nogo WAIT_FOR go EXECUTE 2';
|
|
send drop table t1, t2, t3;
|
|
|
|
connect foo,localhost,root;
|
|
set debug_sync='now SIGNAL go';
|
|
let $wait_condition=select 1 from information_schema.processlist where state like 'debug sync point:%';
|
|
source include/wait_condition.inc;
|
|
--replace_result $id CONNECTION_ID
|
|
eval kill query $id;
|
|
|
|
connection master;
|
|
error ER_QUERY_INTERRUPTED;
|
|
reap;
|
|
|
|
--echo "Tables t2 and t3 should be listed"
|
|
SHOW TABLES;
|
|
--source include/show_binlog_events.inc
|
|
--sync_slave_with_master
|
|
drop table t2, t3;
|
|
|
|
connection master;
|
|
set debug_sync='RESET';
|
|
drop table t2, t3;
|
|
|
|
source include/rpl_end.inc;
|