diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2023-02-28 10:36:17 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2023-02-28 10:36:17 +0200 |
commit | 6ac44ac3abec2263bc7ab9745cd52cc0ad214d8a (patch) | |
tree | ba2be2818fa9d2e191ea7307851324113f0a1647 /mysql-test/suite | |
parent | b62123e0d517a63fb7a1192093fd3cafcfe9d480 (diff) | |
parent | 3e2ad0e918d5d38322994ec9e08fc5dda3a80707 (diff) | |
download | mariadb-git-6ac44ac3abec2263bc7ab9745cd52cc0ad214d8a.tar.gz |
Merge 10.6 into 10.8
Diffstat (limited to 'mysql-test/suite')
-rw-r--r-- | mysql-test/suite/gcol/r/gcol_purge.result | 7 | ||||
-rw-r--r-- | mysql-test/suite/gcol/t/gcol_purge.test | 8 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/cursor-restore-locking.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/dml_purge.result | 5 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/gap_lock_split.result | 1 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/innodb_bug84958.result | 9 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/lock_move_wait_lock_race.result | 34 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/cursor-restore-locking.test | 4 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/dml_purge.test | 6 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/gap_lock_split.test | 1 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innodb_bug84958.test | 9 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/lock_move_wait_lock_race.test | 58 | ||||
-rw-r--r-- | mysql-test/suite/innodb_fts/r/concurrent_insert.result | 30 | ||||
-rw-r--r-- | mysql-test/suite/innodb_fts/r/fulltext_misc.result | 3 | ||||
-rw-r--r-- | mysql-test/suite/innodb_fts/t/concurrent_insert.test | 30 | ||||
-rw-r--r-- | mysql-test/suite/innodb_fts/t/fulltext_misc.test | 5 |
16 files changed, 199 insertions, 15 deletions
diff --git a/mysql-test/suite/gcol/r/gcol_purge.result b/mysql-test/suite/gcol/r/gcol_purge.result index ea8369ad8e5..11063c7cd6f 100644 --- a/mysql-test/suite/gcol/r/gcol_purge.result +++ b/mysql-test/suite/gcol/r/gcol_purge.result @@ -1,7 +1,11 @@ +SET @save_frequency=@@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET @save_dbug=@@GLOBAL.debug_dbug; +SET GLOBAL innodb_purge_rseg_truncate_frequency=1; CREATE TABLE t1(f1 INT NOT NULL, f2 int not null, f3 int generated always as (f2 * 2) VIRTUAL, primary key(f1), INDEX (f3))ENGINE=InnoDB; connect con1,localhost,root,,,; +InnoDB 0 transactions not purged START TRANSACTION WITH CONSISTENT SNAPSHOT; connection default; INSERT INTO t1(f1, f2) VALUES(1,2); @@ -18,5 +22,6 @@ commit; disconnect con1; disconnect con2; connection default; -set global debug_dbug=default; +SET GLOBAL innodb_purge_rseg_truncate_frequency=@save_frequency; +SET GLOBAL debug_dbug=@save_dbug; DROP TABLE t1; diff --git a/mysql-test/suite/gcol/t/gcol_purge.test b/mysql-test/suite/gcol/t/gcol_purge.test index 3696b41b3d8..ecfd89f4469 100644 --- a/mysql-test/suite/gcol/t/gcol_purge.test +++ b/mysql-test/suite/gcol/t/gcol_purge.test @@ -1,9 +1,14 @@ --source include/have_innodb.inc --source include/have_debug.inc + +SET @save_frequency=@@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET @save_dbug=@@GLOBAL.debug_dbug; +SET GLOBAL innodb_purge_rseg_truncate_frequency=1; CREATE TABLE t1(f1 INT NOT NULL, f2 int not null, f3 int generated always as (f2 * 2) VIRTUAL, primary key(f1), INDEX (f3))ENGINE=InnoDB; connect(con1,localhost,root,,,); +--source ../innodb/include/wait_all_purged.inc START TRANSACTION WITH CONSISTENT SNAPSHOT; connection default; @@ -26,5 +31,6 @@ commit; disconnect con1; disconnect con2; connection default; -set global debug_dbug=default; +SET GLOBAL innodb_purge_rseg_truncate_frequency=@save_frequency; +SET GLOBAL debug_dbug=@save_dbug; DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/cursor-restore-locking.result b/mysql-test/suite/innodb/r/cursor-restore-locking.result index 9a9e47fd7c2..48263151ceb 100644 --- a/mysql-test/suite/innodb/r/cursor-restore-locking.result +++ b/mysql-test/suite/innodb/r/cursor-restore-locking.result @@ -1,4 +1,7 @@ +SET @save_freq=@@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency=1; CREATE TABLE t (a int PRIMARY KEY, b int NOT NULL UNIQUE) engine = InnoDB; +InnoDB 0 transactions not purged connect prevent_purge,localhost,root,,; start transaction with consistent snapshot; connect con_del_1,localhost,root,,; @@ -34,3 +37,4 @@ disconnect con_del_2; connection default; SET DEBUG_SYNC = 'RESET'; DROP TABLE t; +SET GLOBAL innodb_purge_rseg_truncate_frequency=@save_freq; diff --git a/mysql-test/suite/innodb/r/dml_purge.result b/mysql-test/suite/innodb/r/dml_purge.result index 95330b80d33..38273d571c0 100644 --- a/mysql-test/suite/innodb/r/dml_purge.result +++ b/mysql-test/suite/innodb/r/dml_purge.result @@ -7,6 +7,7 @@ SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; CREATE TABLE t1(a INT PRIMARY KEY, b INT NOT NULL) ROW_FORMAT=REDUNDANT ENGINE=InnoDB; +InnoDB 0 transactions not purged connect prevent_purge,localhost,root; START TRANSACTION WITH CONSISTENT SNAPSHOT; connection default; @@ -19,7 +20,11 @@ UPDATE t1 SET b=4 WHERE a=3; disconnect prevent_purge; connection default; InnoDB 0 transactions not purged +connection con1; +ROLLBACK; disconnect con1; +connection default; +InnoDB 0 transactions not purged FLUSH TABLE t1 FOR EXPORT; Clustered index root page contents: N_RECS=3; LEVEL=0 diff --git a/mysql-test/suite/innodb/r/gap_lock_split.result b/mysql-test/suite/innodb/r/gap_lock_split.result index 25a3cf711f9..a5765cb5694 100644 --- a/mysql-test/suite/innodb/r/gap_lock_split.result +++ b/mysql-test/suite/innodb/r/gap_lock_split.result @@ -3,6 +3,7 @@ SET GLOBAL innodb_purge_rseg_truncate_frequency=1; CREATE TABLE t1(id INT PRIMARY key, val VARCHAR(16000)) ENGINE=InnoDB; INSERT INTO t1 (id,val) SELECT 2*seq,'x' FROM seq_0_to_1023; connect con1,localhost,root,,; +InnoDB 0 transactions not purged START TRANSACTION WITH CONSISTENT SNAPSHOT; connection default; DELETE FROM t1 WHERE id=1788; diff --git a/mysql-test/suite/innodb/r/innodb_bug84958.result b/mysql-test/suite/innodb/r/innodb_bug84958.result index a216dde1648..9a4129647b9 100644 --- a/mysql-test/suite/innodb/r/innodb_bug84958.result +++ b/mysql-test/suite/innodb/r/innodb_bug84958.result @@ -9,12 +9,10 @@ SET GLOBAL innodb_purge_rseg_truncate_frequency= 1; CREATE PROCEDURE insert_n(start int, end int) BEGIN DECLARE i INT DEFAULT start; -START TRANSACTION; WHILE i <= end do INSERT INTO t1 VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = i; SET i = i + 1; END WHILE; -COMMIT; END~~ CREATE FUNCTION num_pages_get() RETURNS INT @@ -30,6 +28,7 @@ END~~ # CREATE TABLE t1 (a INT, b INT, c INT, PRIMARY KEY(a,b), KEY (b,c)) ENGINE=InnoDB STATS_PERSISTENT=0; +InnoDB 0 transactions not purged BEGIN; SELECT * FROM t1; a b c @@ -38,20 +37,24 @@ a b c # connect con2, localhost, root,,; connection con2; +BEGIN; INSERT INTO t1 VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = NULL; CALL insert_n(1, 50);; connect con3, localhost, root,,; connection con3; +BEGIN; CALL insert_n(51, 100);; connection con2; +COMMIT; connection con3; INSERT INTO t1 VALUES (1, 2, 1) ON DUPLICATE KEY UPDATE c = NULL; +COMMIT; connection default; # # Connect to default and record how many pages were accessed # when selecting the record using the secondary key. # -InnoDB 4 transactions not purged +InnoDB 2 transactions not purged SET @num_pages_1 = num_pages_get(); SELECT * FROM t1 force index (b); a b c diff --git a/mysql-test/suite/innodb/r/lock_move_wait_lock_race.result b/mysql-test/suite/innodb/r/lock_move_wait_lock_race.result new file mode 100644 index 00000000000..572fbc9b1d1 --- /dev/null +++ b/mysql-test/suite/innodb/r/lock_move_wait_lock_race.result @@ -0,0 +1,34 @@ +CREATE TABLE t (pk int PRIMARY KEY, c varchar(10)) ENGINE=InnoDB; +INSERT INTO t VALUES (10, "0123456789"); +connection default; +BEGIN; +SELECT * FROM t WHERE c = 10 FOR UPDATE; +pk c +connect trx2, localhost,root,,; +BEGIN; +SET DEBUG_SYNC="lock_wait_start SIGNAL trx2_start_waiting"; +SET DEBUG_SYNC="lock_wait_end SIGNAL trx2_wait_end WAIT_FOR trx2_cont_upd"; +SET DEBUG_SYNC="lock_rec_store_on_page_infimum_end SIGNAL trx2_moved_locks WAIT_FOR trx2_cont"; +UPDATE t SET c = NULL WHERE pk = 10; +connect trx3, localhost,root,,; +SET DEBUG_SYNC="now WAIT_FOR trx2_start_waiting"; +SET innodb_lock_wait_timeout=1; +BEGIN; +SET DEBUG_SYNC="lock_wait_start SIGNAL trx3_start_waiting WAIT_FOR trx3_cont_waiting"; +SET DEBUG_SYNC="lock_sys_t_cancel_enter SIGNAL trx3_cancel_enter WAIT_FOR trx3_cont_cancel_waiting"; +UPDATE t SET c = "abcdefghij" WHERE pk = 10; +connection default; +SET DEBUG_SYNC="now WAIT_FOR trx3_start_waiting"; +COMMIT; +SET DEBUG_SYNC="now WAIT_FOR trx2_wait_end"; +SET DEBUG_SYNC="now SIGNAL trx3_cont_waiting"; +SET DEBUG_SYNC="now WAIT_FOR trx3_cancel_enter"; +SET DEBUG_SYNC="now SIGNAL trx2_cont_upd"; +SET DEBUG_SYNC="now WAIT_FOR trx2_moved_locks"; +SET DEBUG_SYNC="now SIGNAL trx3_cont_cancel_waiting"; +SET DEBUG_SYNC="now SIGNAL trx2_cont"; +disconnect trx2; +disconnect trx3; +connection default; +SET DEBUG_SYNC="RESET"; +DROP TABLE t; diff --git a/mysql-test/suite/innodb/t/cursor-restore-locking.test b/mysql-test/suite/innodb/t/cursor-restore-locking.test index 3514a7ed5cc..f8d00f57a5e 100644 --- a/mysql-test/suite/innodb/t/cursor-restore-locking.test +++ b/mysql-test/suite/innodb/t/cursor-restore-locking.test @@ -3,8 +3,11 @@ source include/have_debug.inc; source include/have_debug_sync.inc; +SET @save_freq=@@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency=1; CREATE TABLE t (a int PRIMARY KEY, b int NOT NULL UNIQUE) engine = InnoDB; +--source include/wait_all_purged.inc --connect(prevent_purge,localhost,root,,) start transaction with consistent snapshot; @@ -80,4 +83,5 @@ INSERT INTO t VALUES(30, 20); SET DEBUG_SYNC = 'RESET'; DROP TABLE t; +SET GLOBAL innodb_purge_rseg_truncate_frequency=@save_freq; --source include/wait_until_count_sessions.inc diff --git a/mysql-test/suite/innodb/t/dml_purge.test b/mysql-test/suite/innodb/t/dml_purge.test index 37178982c8d..7034939aa4e 100644 --- a/mysql-test/suite/innodb/t/dml_purge.test +++ b/mysql-test/suite/innodb/t/dml_purge.test @@ -14,6 +14,7 @@ SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; CREATE TABLE t1(a INT PRIMARY KEY, b INT NOT NULL) ROW_FORMAT=REDUNDANT ENGINE=InnoDB; +--source include/wait_all_purged.inc --connect (prevent_purge,localhost,root) START TRANSACTION WITH CONSISTENT SNAPSHOT; @@ -33,7 +34,12 @@ UPDATE t1 SET b=4 WHERE a=3; # Initiate a full purge, which should reset the DB_TRX_ID except for a=3. --source include/wait_all_purged.inc # Initiate a ROLLBACK of the update, which should reset the DB_TRX_ID for a=3. +--connection con1 +ROLLBACK; --disconnect con1 +--connection default +# Reset the DB_TRX_ID for the hidden ADD COLUMN metadata record. +--source include/wait_all_purged.inc FLUSH TABLE t1 FOR EXPORT; # The following is based on innodb.table_flags: diff --git a/mysql-test/suite/innodb/t/gap_lock_split.test b/mysql-test/suite/innodb/t/gap_lock_split.test index 462f073ddce..8211a612d35 100644 --- a/mysql-test/suite/innodb/t/gap_lock_split.test +++ b/mysql-test/suite/innodb/t/gap_lock_split.test @@ -9,6 +9,7 @@ CREATE TABLE t1(id INT PRIMARY key, val VARCHAR(16000)) ENGINE=InnoDB; INSERT INTO t1 (id,val) SELECT 2*seq,'x' FROM seq_0_to_1023; connect(con1,localhost,root,,); +source include/wait_all_purged.inc; # Prevent purge. START TRANSACTION WITH CONSISTENT SNAPSHOT; connection default; diff --git a/mysql-test/suite/innodb/t/innodb_bug84958.test b/mysql-test/suite/innodb/t/innodb_bug84958.test index f895c8d1245..b42f7bd639e 100644 --- a/mysql-test/suite/innodb/t/innodb_bug84958.test +++ b/mysql-test/suite/innodb/t/innodb_bug84958.test @@ -13,12 +13,10 @@ DELIMITER ~~; CREATE PROCEDURE insert_n(start int, end int) BEGIN DECLARE i INT DEFAULT start; - START TRANSACTION; WHILE i <= end do INSERT INTO t1 VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = i; SET i = i + 1; END WHILE; - COMMIT; END~~ CREATE FUNCTION num_pages_get() @@ -37,6 +35,7 @@ DELIMITER ;~~ --echo # CREATE TABLE t1 (a INT, b INT, c INT, PRIMARY KEY(a,b), KEY (b,c)) ENGINE=InnoDB STATS_PERSISTENT=0; +--source include/wait_all_purged.inc BEGIN; SELECT * FROM t1; @@ -45,18 +44,22 @@ SELECT * FROM t1; --echo # connect (con2, localhost, root,,); connection con2; +BEGIN; INSERT INTO t1 VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = NULL; --send CALL insert_n(1, 50); connect (con3, localhost, root,,); connection con3; +BEGIN; --send CALL insert_n(51, 100); connection con2; reap; +COMMIT; connection con3; reap; INSERT INTO t1 VALUES (1, 2, 1) ON DUPLICATE KEY UPDATE c = NULL; +COMMIT; connection default; @@ -64,7 +67,7 @@ connection default; --echo # Connect to default and record how many pages were accessed --echo # when selecting the record using the secondary key. --echo # ---let $wait_all_purged=4 +--let $wait_all_purged=2 --source include/wait_all_purged.inc SET @num_pages_1 = num_pages_get(); SELECT * FROM t1 force index (b); diff --git a/mysql-test/suite/innodb/t/lock_move_wait_lock_race.test b/mysql-test/suite/innodb/t/lock_move_wait_lock_race.test new file mode 100644 index 00000000000..3a04c7127c8 --- /dev/null +++ b/mysql-test/suite/innodb/t/lock_move_wait_lock_race.test @@ -0,0 +1,58 @@ +--source include/have_innodb.inc +--source include/count_sessions.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc + +CREATE TABLE t (pk int PRIMARY KEY, c varchar(10)) ENGINE=InnoDB; +INSERT INTO t VALUES (10, "0123456789"); + +--connection default +BEGIN; +SELECT * FROM t WHERE c = 10 FOR UPDATE; + +--connect(trx2, localhost,root,,) +BEGIN; +SET DEBUG_SYNC="lock_wait_start SIGNAL trx2_start_waiting"; +SET DEBUG_SYNC="lock_wait_end SIGNAL trx2_wait_end WAIT_FOR trx2_cont_upd"; +SET DEBUG_SYNC="lock_rec_store_on_page_infimum_end SIGNAL trx2_moved_locks WAIT_FOR trx2_cont"; +################# +# We need to update clustered record without changing ordering fields and +# changing the size of non-ordering fields to cause locks moving from deleted +# record to infimum. +### +--send UPDATE t SET c = NULL WHERE pk = 10 + + +--connect(trx3, localhost,root,,) +SET DEBUG_SYNC="now WAIT_FOR trx2_start_waiting"; +################# +# The condition wariable waiting in lock_wait() must be finished by timeout +### +SET innodb_lock_wait_timeout=1; +BEGIN; +SET DEBUG_SYNC="lock_wait_start SIGNAL trx3_start_waiting WAIT_FOR trx3_cont_waiting"; +SET DEBUG_SYNC="lock_sys_t_cancel_enter SIGNAL trx3_cancel_enter WAIT_FOR trx3_cont_cancel_waiting"; +--send UPDATE t SET c = "abcdefghij" WHERE pk = 10 + +--connection default +SET DEBUG_SYNC="now WAIT_FOR trx3_start_waiting"; +COMMIT; +SET DEBUG_SYNC="now WAIT_FOR trx2_wait_end"; +SET DEBUG_SYNC="now SIGNAL trx3_cont_waiting"; +SET DEBUG_SYNC="now WAIT_FOR trx3_cancel_enter"; +SET DEBUG_SYNC="now SIGNAL trx2_cont_upd"; +SET DEBUG_SYNC="now WAIT_FOR trx2_moved_locks"; +################# +# If the bug is not fixed, there will be assertion failure here, because trx2 +# moved trx3 lock from deleted record to infimum when trx3 tried to cancel the +# lock. +### +SET DEBUG_SYNC="now SIGNAL trx3_cont_cancel_waiting"; +SET DEBUG_SYNC="now SIGNAL trx2_cont"; + +--disconnect trx2 +--disconnect trx3 +--connection default +SET DEBUG_SYNC="RESET"; +DROP TABLE t; +--source include/wait_until_count_sessions.inc diff --git a/mysql-test/suite/innodb_fts/r/concurrent_insert.result b/mysql-test/suite/innodb_fts/r/concurrent_insert.result index 3cb48d22df1..2335982816b 100644 --- a/mysql-test/suite/innodb_fts/r/concurrent_insert.result +++ b/mysql-test/suite/innodb_fts/r/concurrent_insert.result @@ -31,5 +31,33 @@ set DEBUG_SYNC= 'now SIGNAL fts_drop_index'; connection con1; drop table t1, t2; connection default; -set DEBUG_SYNC=RESET; SET @@GLOBAL.debug_dbug = @saved_dbug; +disconnect con1; +# +# MDEV-25984 Assertion `max_doc_id > 0' failed in fts_init_doc_id() +# +call mtr.add_suppression("InnoDB: \\(Lock wait timeout\\) while getting next doc id for table `test`.`t1`"); +CREATE TABLE t1(f1 CHAR(100), f2 INT, fulltext(f1))ENGINE=InnoDB; +INSERT INTO t1 VALUES("mariadb", 1), ("innodb", 1); +# restart +SET DEBUG_SYNC='innodb_rollback_after_fts_lock SIGNAL insert_dml WAIT_FOR ddl_continue'; +ALTER TABLE t1 ADD UNIQUE INDEX(f2); +connect con1,localhost,root,,,; +SET DEBUG_SYNC='now WAIT_FOR insert_dml'; +SET DEBUG_SYNC='fts_cmp_set_sync_doc_id_retry SIGNAL ddl_continue WAIT_FOR dml_finish'; +INSERT INTO t1 VALUES("index", 2); +connection default; +ERROR 23000: Duplicate entry '1' for key 'f2' +SET DEBUG_SYNC="now SIGNAL dml_finish"; +connection con1; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` char(100) DEFAULT NULL, + `f2` int(11) DEFAULT NULL, + FULLTEXT KEY `f1` (`f1`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci +connection default; +disconnect con1; +DROP TABLE t1; +set DEBUG_SYNC=RESET; diff --git a/mysql-test/suite/innodb_fts/r/fulltext_misc.result b/mysql-test/suite/innodb_fts/r/fulltext_misc.result index c58cf5ba62c..69812ff8b72 100644 --- a/mysql-test/suite/innodb_fts/r/fulltext_misc.result +++ b/mysql-test/suite/innodb_fts/r/fulltext_misc.result @@ -129,8 +129,9 @@ test select * from t1 where a like "te_t"; a test -select * from t1 where match a against ("te*" in boolean mode)+0; +select * from t1 where match a against ("te*" in boolean mode); a +test drop table t1; # # Bug #49734: Crash on EXPLAIN EXTENDED UNION ... ORDER BY diff --git a/mysql-test/suite/innodb_fts/t/concurrent_insert.test b/mysql-test/suite/innodb_fts/t/concurrent_insert.test index d70fc0f63c4..b6991f6e503 100644 --- a/mysql-test/suite/innodb_fts/t/concurrent_insert.test +++ b/mysql-test/suite/innodb_fts/t/concurrent_insert.test @@ -48,5 +48,33 @@ connection con1; reap; drop table t1, t2; connection default; -set DEBUG_SYNC=RESET; SET @@GLOBAL.debug_dbug = @saved_dbug; +disconnect con1; + +--echo # +--echo # MDEV-25984 Assertion `max_doc_id > 0' failed in fts_init_doc_id() +--echo # +call mtr.add_suppression("InnoDB: \\(Lock wait timeout\\) while getting next doc id for table `test`.`t1`"); + +CREATE TABLE t1(f1 CHAR(100), f2 INT, fulltext(f1))ENGINE=InnoDB; +INSERT INTO t1 VALUES("mariadb", 1), ("innodb", 1); +--source include/restart_mysqld.inc +SET DEBUG_SYNC='innodb_rollback_after_fts_lock SIGNAL insert_dml WAIT_FOR ddl_continue'; +SEND ALTER TABLE t1 ADD UNIQUE INDEX(f2); + +connect(con1,localhost,root,,,); +SET DEBUG_SYNC='now WAIT_FOR insert_dml'; +SET DEBUG_SYNC='fts_cmp_set_sync_doc_id_retry SIGNAL ddl_continue WAIT_FOR dml_finish'; +send INSERT INTO t1 VALUES("index", 2); + +connection default; +--error ER_DUP_ENTRY +reap; +SET DEBUG_SYNC="now SIGNAL dml_finish"; +connection con1; +reap; +SHOW CREATE TABLE t1; +connection default; +disconnect con1; +DROP TABLE t1; +set DEBUG_SYNC=RESET; diff --git a/mysql-test/suite/innodb_fts/t/fulltext_misc.test b/mysql-test/suite/innodb_fts/t/fulltext_misc.test index 7a1ddd98d2b..083953a44ce 100644 --- a/mysql-test/suite/innodb_fts/t/fulltext_misc.test +++ b/mysql-test/suite/innodb_fts/t/fulltext_misc.test @@ -152,10 +152,7 @@ insert into t1 values ("a"),("abc"),("abcd"),("hello"),("test"); select * from t1 where a like "abc%"; select * from t1 where a like "test%"; select * from t1 where a like "te_t"; -# InnoDB_FTS: we don't support the postfix "+0" -# Work around MDEV-29871 (FIXME: remove this) ---echo select * from t1 where match a against ("te*" in boolean mode)+0; ---echo a +select * from t1 where match a against ("te*" in boolean mode); drop table t1; |