summaryrefslogtreecommitdiff
path: root/mysql-test/suite/innodb/t/alter_foreign_crash.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/innodb/t/alter_foreign_crash.test')
-rw-r--r--mysql-test/suite/innodb/t/alter_foreign_crash.test37
1 files changed, 37 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/t/alter_foreign_crash.test b/mysql-test/suite/innodb/t/alter_foreign_crash.test
new file mode 100644
index 00000000000..1952a1b30d4
--- /dev/null
+++ b/mysql-test/suite/innodb/t/alter_foreign_crash.test
@@ -0,0 +1,37 @@
+--source include/have_innodb.inc
+--source include/have_debug_sync.inc
+# The embedded server does not support restarting.
+--source include/not_embedded.inc
+
+--echo #
+--echo # Bug #20476395 DICT_LOAD_FOREIGNS() FAILED IN
+--echo # COMMIT_INPLACE_ALTER_TABLE
+--echo #
+
+call mtr.add_suppression("InnoDB: Failed to load table");
+
+create database bug;
+use bug;
+
+create table parent(a serial) engine=innodb;
+create table child(a serial, foreign key fk (a) references parent(a))engine=innodb;
+
+insert into parent values(1);
+insert into child values(1);
+
+connect (con1,localhost,root,,bug);
+SET DEBUG_SYNC='innodb_rename_table_ready SIGNAL s1 WAIT_FOR s2 EXECUTE 2';
+--send ALTER TABLE child ROW_FORMAT=DYNAMIC, ALGORITHM=COPY
+connection default;
+SET DEBUG_SYNC='now WAIT_FOR s1';
+SET DEBUG_SYNC='now SIGNAL s2 WAIT_FOR s1';
+
+--let $shutdown_timeout= 0
+--source include/restart_mysqld.inc
+disconnect con1;
+
+show tables;
+alter table parent row_format=dynamic;
+
+drop table parent;
+drop database bug;