mariadb/mysql-test/suite/innodb/t/ddl_purge.test
Thirunarayanan Balathandayuthapani d270525dfd MDEV-23805 Make Online DDL to Instant DDL when table is empty
- In ha_innobase::prepare_inplace_alter_table(), InnoDB should
check whether the table is empty. If the table is empty then
server should avoid downgrading the MDL after prepare phase.
It is more like instant alter, does change only in dicationary
and metadata.

- Changed few debug test case to make non-empty DDL table
2021-11-12 17:46:35 +05:30

37 lines
833 B
Text

--source innodb_default_row_format.inc
--source include/have_debug.inc
--source include/have_debug_sync.inc
CREATE TABLE t0 (pk INT PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE t1 (pk INT PRIMARY KEY, b INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES(100, 100);
--connect (con1,localhost,root,,test)
BEGIN;
INSERT INTO t0 SET pk=1;
--connect (con2,localhost,root,,test)
BEGIN;
INSERT INTO t0 SET pk=2;
--connection default
SET DEBUG_SYNC='alter_table_inplace_after_lock_downgrade SIGNAL prepared WAIT_FOR logged';
send ALTER TABLE t1 FORCE;
--connection con1
SET DEBUG_SYNC='now WAIT_FOR prepared';
INSERT INTO t1 SET pk=1;
COMMIT;
--disconnect con1
--connection con2
UPDATE t1 SET b=1;
DELETE FROM t1;
ROLLBACK;
SET DEBUG_SYNC='now SIGNAL logged';
--disconnect con2
--connection default
reap;
SET DEBUG_SYNC='RESET';
DROP TABLE t0,t1;