--source include/have_debug.inc --source include/have_innodb.inc --source include/have_debug_sync.inc --source include/not_embedded.inc # Save the initial number of concurrent sessions. --source include/count_sessions.inc # Make sure there are no unexpected open tables from previous tests --disable_query_log FLUSH TABLES; --enable_query_log CREATE TABLE t ( a INTEGER, b BLOB GENERATED ALWAYS AS (a) VIRTUAL, INDEX (b(57)) )ENGINE=INNODB; INSERT INTO t (a) VALUES (9); BEGIN; SAVEPOINT a; UPDATE t set a = 12; DELETE FROM t where a = 12; ROLLBACK TO SAVEPOINT a; COMMIT; CHECK TABLE t; SELECT * FROM t; BEGIN; INSERT INTO t (a) VALUES (10); --let $shutdown_timeout= 0 --source include/restart_mysqld.inc SELECT * FROM t; DROP TABLE t; CREATE TABLE t ( a INTEGER, b BLOB GENERATED ALWAYS AS (a) VIRTUAL, c INTEGER )ENGINE=INNODB; INSERT INTO t (a,c) VALUES (9, 10); SELECT * FROM t; connect (con1,localhost,root,,); connection con1; # This DEBUG_SYNC should not kick in yet, because the duplicate key will be # detected before we get a chance to apply the online log. SET DEBUG_SYNC = 'row_log_apply_after SIGNAL created WAIT_FOR dml_done'; --send ALTER TABLE t ADD KEY(b(57)), ALGORITHM=INPLACE; connection default; SET DEBUG_SYNC = 'now WAIT_FOR created'; BEGIN; INSERT INTO t (a,c) VALUES (10, 12); SELECT * FROM t; ROLLBACK; SET DEBUG_SYNC = 'now SIGNAL dml_done'; connection con1; reap; disconnect con1; connection default; SELECT * FROM t; DROP TABLE t; # drop virtual column and alter index CREATE TABLE t ( a INT, b INT, c INT GENERATED ALWAYS AS(a+b), d INT GENERATED ALWAYS AS(a+b+b), KEY(c, d) )ENGINE=INNODB; INSERT INTO t (a,b) VALUES (9, 10); SELECT * FROM t; connect (con1,localhost,root,,); connection con1; # This DEBUG_SYNC should not kick in yet, because the duplicate key will be # detected before we get a chance to apply the online log. SET DEBUG_SYNC = 'row_log_apply_after SIGNAL created WAIT_FOR dml_done'; --send ALTER TABLE t DROP COLUMN c, ALGORITHM=INPLACE; connection default; SET DEBUG_SYNC = 'now WAIT_FOR created'; BEGIN; INSERT INTO t (a,b) VALUES (10, 12); SELECT * FROM t; ROLLBACK; SET DEBUG_SYNC = 'now SIGNAL dml_done'; connection con1; reap; connection default; SELECT * FROM t; DROP TABLE t; SET DEBUG_SYNC = 'RESET'; --echo # --echo # MDEV-30597 Assertion `flag == 1' failed in --echo # row_build_index_entry_low --echo # CREATE TABLE t1 ( col1 INT PRIMARY KEY, col_text TEXT, col_text_g TEXT GENERATED ALWAYS AS (SUBSTR(col_text,1,499)) ) ENGINE = InnoDB ROW_FORMAT = Compact; connection con1; START TRANSACTION WITH CONSISTENT SNAPSHOT; connection default; INSERT INTO t1 (col1) VALUES (1) ; DELETE FROM t1 WHERE col1 = 1; ALTER TABLE t1 ADD UNIQUE INDEX (col_text_g(9)); BEGIN; INSERT INTO t1 (col1) VALUES (1); ROLLBACK; disconnect con1; DROP TABLE t1; # Wait till all disconnects are completed --source include/wait_until_count_sessions.inc --echo # End of 10.4 tests