diff options
author | Vlad Lesin <vlad_lesin@mail.ru> | 2022-02-15 11:32:15 +0300 |
---|---|---|
committer | Vlad Lesin <vlad_lesin@mail.ru> | 2022-02-15 11:32:15 +0300 |
commit | 497809d26df4ebef079a2dfa6357b1fdd5aba9bd (patch) | |
tree | fe7843749f25e9d2eeacfad728b0909b116ca69f | |
parent | f2f22c382bb510bb069526f1a06155fa4515ea8f (diff) | |
parent | 5948d7602ec7f61937c368dcb134e6ec226a2990 (diff) | |
download | mariadb-git-497809d26df4ebef079a2dfa6357b1fdd5aba9bd.tar.gz |
Merge 10.5 into 10.6
-rw-r--r-- | mysql-test/suite/innodb/r/cursor-restore-non-locking-read.result | 26 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/cursor-restore-non-locking-read.test | 44 | ||||
-rw-r--r-- | storage/innobase/row/row0sel.cc | 2 |
3 files changed, 1 insertions, 71 deletions
diff --git a/mysql-test/suite/innodb/r/cursor-restore-non-locking-read.result b/mysql-test/suite/innodb/r/cursor-restore-non-locking-read.result deleted file mode 100644 index d8644847166..00000000000 --- a/mysql-test/suite/innodb/r/cursor-restore-non-locking-read.result +++ /dev/null @@ -1,26 +0,0 @@ -SET @saved_frequency = @@GLOBAL.innodb_purge_rseg_truncate_frequency; -SET GLOBAL innodb_purge_rseg_truncate_frequency=1; -CREATE TABLE t1 (pk int PRIMARY KEY, c int UNIQUE) ENGINE=InnoDB; -INSERT INTO t1 VALUES (10,10),(20,20),(30,30); -connect prevent_purge,localhost,root,,; -start transaction with consistent snapshot; -UPDATE t1 SET c=300 WHERE pk = 30; -connection default; -DELETE FROM t1 WHERE pk = 10; -INSERT INTO t1 VALUES(5,10); -SET DEBUG_SYNC = "row_search_clust_unlatched SIGNAL unlatched WAIT_FOR cont"; -SELECT pk FROM t1 FORCE INDEX (c); -connect con1,localhost,root,,; -SET DEBUG_SYNC = "now WAIT_FOR unlatched"; -disconnect prevent_purge; -InnoDB 1 transactions not purged -SET DEBUG_SYNC = 'now SIGNAL cont'; -disconnect con1; -connection default; -pk -5 -20 -30 -SET DEBUG_SYNC = 'RESET'; -DROP TABLE t1; -SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; diff --git a/mysql-test/suite/innodb/t/cursor-restore-non-locking-read.test b/mysql-test/suite/innodb/t/cursor-restore-non-locking-read.test deleted file mode 100644 index c9ae258791c..00000000000 --- a/mysql-test/suite/innodb/t/cursor-restore-non-locking-read.test +++ /dev/null @@ -1,44 +0,0 @@ ---source include/have_innodb.inc ---source include/have_debug.inc ---source include/have_debug_sync.inc ---source include/count_sessions.inc - -SET @saved_frequency = @@GLOBAL.innodb_purge_rseg_truncate_frequency; -SET GLOBAL innodb_purge_rseg_truncate_frequency=1; - -CREATE TABLE t1 (pk int PRIMARY KEY, c int UNIQUE) ENGINE=InnoDB; - -INSERT INTO t1 VALUES (10,10),(20,20),(30,30); - ---connect(prevent_purge,localhost,root,,) -start transaction with consistent snapshot; -# We need this to update page's transaction id for secondary index. -UPDATE t1 SET c=300 WHERE pk = 30; - ---connection default -DELETE FROM t1 WHERE pk = 10; -INSERT INTO t1 VALUES(5,10); -SET DEBUG_SYNC = "row_search_clust_unlatched SIGNAL unlatched WAIT_FOR cont"; -# With the above sync point row_search_mvcc() will be blocked on delete-marked -# record (10,10) in secondary index just after all page latches are released. -# After this record is purged, row_searc_mvcc() will be unblocked, and cursor -# will be restored to the secondary index record (10,5). As the unique field is -# the same as in the cursor's stored record, and the bug is not fixed, there -# value 5 will be doubled in the result set. ---send SELECT pk FROM t1 FORCE INDEX (c) - ---connect(con1,localhost,root,,) -SET DEBUG_SYNC = "now WAIT_FOR unlatched"; ---disconnect prevent_purge -let $wait_all_purged= 1; ---source include/wait_all_purged.inc -SET DEBUG_SYNC = 'now SIGNAL cont'; ---disconnect con1 - ---connection default ---reap - -SET DEBUG_SYNC = 'RESET'; -DROP TABLE t1; -SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; ---source include/wait_until_count_sessions.inc diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc index 218d42a315f..f208ca51d69 100644 --- a/storage/innobase/row/row0sel.cc +++ b/storage/innobase/row/row0sel.cc @@ -5755,7 +5755,7 @@ next_rec: btr_pcur_store_position(pcur, &mtr); mtr.commit(); mtr_has_extra_clust_latch = FALSE; - DEBUG_SYNC_C("row_search_clust_unlatched"); + mtr.start(); if (sel_restore_position_for_mysql(&same_user_rec, |