--source include/have_innodb.inc --source include/innodb_page_size.inc --source include/have_sequence.inc --source include/maybe_debug.inc --source include/have_partition.inc # Enable MDEV-515 table-level undo logging for insert into empty table SET foreign_key_checks=0, unique_checks=0; --echo # --echo # MDEV-24715 Assertion !node->table->skip_alter_undo --echo # CREATE TABLE t (a INT UNIQUE) ENGINE=InnoDB REPLACE SELECT 1 AS a, 2 AS b UNION SELECT 1 AS a, 3 AS c; SELECT * FROM t; DROP TABLE t; CREATE TEMPORARY TABLE t (a INT UNIQUE) ENGINE=InnoDB REPLACE SELECT 1 AS a, 2 AS b UNION SELECT 1 AS a, 3 AS c; SELECT * FROM t; DROP TEMPORARY TABLE t; --echo # --echo # MDEV-24720 AHI removal during bulk index rollback --echo # SET @save_ahi = @@global.innodb_adaptive_hash_index; SET GLOBAL innodb_adaptive_hash_index = 1; CREATE TABLE t1(f1 INT NOT NULL)ENGINE=InnoDB; SET @old_bulk_op= (SELECT variable_value FROM information_schema.global_status WHERE variable_name = 'innodb_bulk_operations'); BEGIN; INSERT INTO t1 SELECT * FROM seq_1_to_65536; ROLLBACK; SELECT variable_value-@old_bulk_op bulk_operations FROM information_schema.global_status WHERE variable_name = 'innodb_bulk_operations'; CHECK TABLE t1; --echo # --echo # MDEV-24832 Root page AHI Removal fails fails during --echo # bulk index rollback --echo # BEGIN; INSERT INTO t1 SELECT * FROM seq_1_to_500; ROLLBACK; DROP TABLE t1; SET GLOBAL innodb_adaptive_hash_index = @save_ahi; --echo # --echo # MDEV-24951 Assertion m.first->second.valid(trx->undo_no) failed --echo # in trx_undo_report_row_operation --echo # CREATE TEMPORARY TABLE t (c INT) ENGINE=InnoDB; CREATE TEMPORARY TABLE t2 (c INT) ENGINE=InnoDB; SET tx_read_only=1; BEGIN; INSERT INTO t2 VALUES(0); INSERT INTO t VALUES(0); ROLLBACK; BEGIN; INSERT INTO t2 VALUES(0); INSERT INTO t VALUES(0); COMMIT; INSERT INTO t VALUES(0); --error ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION DROP TEMPORARY TABLE t,t2; SET tx_read_only=0; DROP TEMPORARY TABLE t,t2; --echo # --echo # MDEV-24818 Optimize multiple INSERT into empty table --echo # CREATE TABLE t1(f1 INT PRIMARY KEY) ENGINE=InnoDB; BEGIN; INSERT INTO t1 VALUES (5),(6),(7); --error ER_DUP_ENTRY INSERT INTO t1 VALUES (4),(5),(6); COMMIT; SELECT * FROM t1; BEGIN; INSERT INTO t1 VALUES (5),(6),(7); SAVEPOINT a; --error ER_DUP_ENTRY INSERT INTO t1 VALUES (4),(5),(6); ROLLBACK TO SAVEPOINT a; COMMIT; SELECT * FROM t1; DROP TABLE t1; # Repeat the same with the MDEV-515 test disabled SET foreign_key_checks=1; CREATE TABLE t1(f1 INT PRIMARY KEY) ENGINE=InnoDB; BEGIN; INSERT INTO t1 VALUES (5),(6),(7); --error ER_DUP_ENTRY INSERT INTO t1 VALUES (4),(5),(6); COMMIT; SELECT * FROM t1; BEGIN; --error ER_DUP_ENTRY INSERT INTO t1 VALUES (5),(6),(7); SAVEPOINT a; --error ER_DUP_ENTRY INSERT INTO t1 VALUES (4),(5),(6); ROLLBACK TO SAVEPOINT a; COMMIT; SELECT * FROM t1; DROP TABLE t1; SET foreign_key_checks=0; --echo # --echo # MDEV-25315 Crash in SHOW ENGINE INNODB STATUS --echo # CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES(1); BEGIN; --error ER_DUP_ENTRY INSERT INTO t1 VALUES(1); INSERT INTO t2 VALUES(0); --error ER_DUP_ENTRY INSERT INTO t1 VALUES(2), (2); --disable_result_log SHOW ENGINE InnoDB STATUS; --enable_result_log COMMIT; DROP TABLE t1,t2; --echo # --echo # MDEV-25297 Assertion: trx->roll_limit <= trx->undo_no --echo # in ROLLBACK TO SAVEPOINT --echo # CREATE TABLE t1 (c INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE t2 (c INT PRIMARY KEY) ENGINE=InnoDB; BEGIN; INSERT INTO t1 VALUES(0); SAVEPOINT x; INSERT INTO t2 VALUES(0); --error ER_DUP_ENTRY INSERT INTO t1 VALUES(0); --error ER_ERROR_DURING_ROLLBACK ROLLBACK TO SAVEPOINT x; COMMIT; SELECT * FROM t1; SELECT * FROM t2; DROP TABLE t1,t2; --echo # --echo # MDEV-25487 Assertion failed in lock_rec_move --echo # CREATE TABLE t1 (a INT KEY) ENGINE=InnoDB; --error 0,ER_UNKNOWN_SYSTEM_VARIABLE SET @save_limit = @@GLOBAL.innodb_limit_optimistic_insert_debug; --error 0,ER_UNKNOWN_SYSTEM_VARIABLE SET GLOBAL innodb_limit_optimistic_insert_debug = 2; BEGIN; SELECT * FROM t1 LOCK IN SHARE MODE; INSERT INTO t1 VALUES (0),(1),(2); --error ER_WRONG_VALUE_COUNT_ON_ROW INSERT INTO t1 VALUES (0,1); --error ER_DUP_ENTRY INSERT INTO t1 VALUES (2); COMMIT; --error 0,ER_UNKNOWN_SYSTEM_VARIABLE SET GLOBAL innodb_limit_optimistic_insert_debug = @save_limit; SELECT * FROM t1; DROP TABLE t1; --echo # --echo # MDEV-25534 Assertion lock_table_has...LOCK_IX --echo # CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; SET autocommit=0; LOCK TABLE t1 WRITE; INSERT INTO t1 VALUES (1); COMMIT; CREATE TEMPORARY TABLE t0 (a INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t0 VALUES (1); INSERT INTO t1 VALUES (2); COMMIT; SET autocommit=1; DROP TABLE t1; DROP TEMPORARY TABLE t0; --echo # --echo # MDEV-25496 Assertion 'trx->bulk_insert' failed --echo # in trx_undo_report_row_operation on INSERT --echo # CREATE TABLE t (i INT) ENGINE=InnoDB PARTITION BY HASH (i) PARTITIONS 2; INSERT INTO t VALUES (0); INSERT INTO t VALUES (1),(0),(1); DROP TABLE t; --echo # --echo # MDEV-28327 InnoDB persistent statistics fail to update --echo # after bulk insert --echo # CREATE TABLE t1 (a INT PRIMARY KEY)ENGINE=InnoDB STATS_PERSISTENT=1 STATS_AUTO_RECALC=1; INSERT INTO t1 SELECT * FROM seq_1_to_4096; --echo # Wait till statistics update after bulk insert operation let $wait_condition= select n_rows > 100 from mysql.innodb_table_stats where table_name="t1"; source include/wait_condition.inc; SELECT n_rows>=4096 FROM mysql.innodb_table_stats WHERE TABLE_NAME="t1"; DROP TABLE t1; --echo # --echo # MDEV-27214 Import with disabled keys corrupts meta-data like rows, indexes, ... --echo # CREATE TABLE `t1` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 STATS_PERSISTENT=1 STATS_AUTO_RECALC=1; INSERT INTO `t1` VALUES (1,2),(2,3),(3,4); --echo # Wait till statistics update after bulk insert operation let $wait_condition= select n_rows > 0 from mysql.innodb_table_stats where database_name='test' and table_name='t1'; source include/wait_condition.inc; SELECT TABLE_ROWS, AVG_ROW_LENGTH>0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1' AND TABLE_SCHEMA='test'; DROP TABLE t1; --echo # --echo # MDEV-29975 InnoDB fails to release savepoint during bulk insert --echo # CREATE TABLE t (c INT KEY) ENGINE=InnoDB; begin; --error ER_WRONG_VALUE_COUNT_ON_ROW INSERT INTO t VALUES (0,0); SAVEPOINT a; --error ER_DUP_ENTRY INSERT INTO t VALUES (0),(0); SAVEPOINT a; commit; SELECT * FROM t; DROP TABLE t; --echo # --echo # MDEV-29545 InnoDB: Can't find record during replace stmt --echo # CREATE TABLE t1(c1 INT PRIMARY KEY)ENGINE=InnoDB; BEGIN; INSERT INTO t1 VALUES(3331); connect(con1,localhost,root,,,); BEGIN; SELECT c1 FROM t1; connection default; COMMIT; connection con1; REPLACE INTO t1 VALUES(1984), (1984); COMMIT; connection default; disconnect con1; SELECT * FROM t1; DROP TABLE t1; --echo # --echo # MDEV-33979 Disallow bulk insert operation during --echo # partition update statement --echo # CREATE TABLE t1(a INT KEY)ENGINE=InnoDB PARTITION BY KEY(a) PARTITIONS 16; INSERT INTO t1 VALUES(1); UPDATE t1 SET a = 2 WHERE a = 1; DROP TABLE t1; --echo # --echo # MDEV-34265 Possible hang during IO burst with innodb_flush_sync enabled --echo # CREATE TABLE t1(f1 MEDIUMTEXT)ENGINE=InnoDB; --error 0,ER_UNKNOWN_SYSTEM_VARIABLE SET @save_dbug=@@GLOBAL.debug_dbug; --error 0,ER_UNKNOWN_SYSTEM_VARIABLE SET @@GLOBAL.debug_dbug='+d,ib_page_cleaner_sleep'; if ($have_debug) { SET STATEMENT debug_dbug='+d,ib_free_page_sleep' FOR INSERT INTO t1 VALUES(REPEAT(1, 8459264)); } if (!$have_debug) { --echo SET STATEMENT debug_dbug='+d,ib_free_page_sleep' FOR INSERT INTO t1 VALUES(REPEAT(1, 8459264)); } --error 0,ER_UNKNOWN_SYSTEM_VARIABLE SET @@GLOBAL.debug_dbug=@save_dbug; SELECT length(f1) FROM t1; DROP TABLE t1; --echo # End of 10.6 tests