From aa9e173e9e7e69b059287ba25f0429113de5125f Mon Sep 17 00:00:00 2001 From: Nikita Malyavin Date: Mon, 4 Jul 2022 20:29:36 +0300 Subject: [PATCH] MDEV-29021 add test case from MDEV-29013 This test case was also fixed by adding update_virtual_columns. --- .../main/alter_table_online_debug.result | 20 ++++++++++++- mysql-test/main/alter_table_online_debug.test | 28 ++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/mysql-test/main/alter_table_online_debug.result b/mysql-test/main/alter_table_online_debug.result index ddc231ae7aa..ee4772dc289 100644 --- a/mysql-test/main/alter_table_online_debug.result +++ b/mysql-test/main/alter_table_online_debug.result @@ -650,7 +650,7 @@ set debug_sync= reset; # # MDEV-29021 ALTER TABLE fails when a stored virtual column is dropped and added # -create table t1 (a char(9), b char(9) as (a) stored) engine=InnoDB; +create table t1 (a char(9), b char(9) as (a) stored); insert into t1(a) values ('foobar'); set debug_sync= 'now wait_for downgraded'; connection con2; @@ -708,6 +708,24 @@ connection default; drop table t1; set debug_sync= reset; # +# DELETE with added virtual column +# +CREATE TABLE t1 (a CHAR(3), b CHAR(3) AS (a)); +INSERT INTO t1 (a) VALUES ('foo'),('bar'); +set debug_sync= 'now wait_for downgraded'; +connection con2; +set debug_sync= 'alter_table_online_downgraded signal downgraded wait_for goforit'; +ALTER TABLE t1 ADD c INT, ALGORITHM=COPY, LOCK=NONE; +connection default; +DELETE FROM t1; +set debug_sync= 'now signal goforit'; +connection con2; +select * from t1; +a b c +connection default; +DROP TABLE t1; +set debug_sync= reset; +# # Do not ignore sql_mode when replicating # create table t1 (a int); diff --git a/mysql-test/main/alter_table_online_debug.test b/mysql-test/main/alter_table_online_debug.test index 955f4500c89..26fe2d12e8f 100644 --- a/mysql-test/main/alter_table_online_debug.test +++ b/mysql-test/main/alter_table_online_debug.test @@ -804,7 +804,7 @@ set debug_sync= reset; --echo # --echo # MDEV-29021 ALTER TABLE fails when a stored virtual column is dropped and added --echo # -create table t1 (a char(9), b char(9) as (a) stored) engine=InnoDB; +create table t1 (a char(9), b char(9) as (a) stored); insert into t1(a) values ('foobar'); --send set debug_sync= 'now wait_for downgraded' @@ -875,6 +875,32 @@ show create table t1; drop table t1; set debug_sync= reset; +--echo # +--echo # DELETE with added virtual column +--echo # +CREATE TABLE t1 (a CHAR(3), b CHAR(3) AS (a)); +INSERT INTO t1 (a) VALUES ('foo'),('bar'); +--send +set debug_sync= 'now wait_for downgraded'; + +--connection con2 +set debug_sync= 'alter_table_online_downgraded signal downgraded wait_for goforit'; +--send +ALTER TABLE t1 ADD c INT, ALGORITHM=COPY, LOCK=NONE; + +--connection default +--reap +DELETE FROM t1; +set debug_sync= 'now signal goforit'; + +--connection con2 +--reap +select * from t1; + +--connection default +DROP TABLE t1; +set debug_sync= reset; + --echo # --echo # Do not ignore sql_mode when replicating --echo #