summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVlad Lesin <vlad_lesin@mail.ru>2022-02-15 11:32:15 +0300
committerVlad Lesin <vlad_lesin@mail.ru>2022-02-15 11:32:15 +0300
commit497809d26df4ebef079a2dfa6357b1fdd5aba9bd (patch)
treefe7843749f25e9d2eeacfad728b0909b116ca69f
parentf2f22c382bb510bb069526f1a06155fa4515ea8f (diff)
parent5948d7602ec7f61937c368dcb134e6ec226a2990 (diff)
downloadmariadb-git-497809d26df4ebef079a2dfa6357b1fdd5aba9bd.tar.gz
Merge 10.5 into 10.6
-rw-r--r--mysql-test/suite/innodb/r/cursor-restore-non-locking-read.result26
-rw-r--r--mysql-test/suite/innodb/t/cursor-restore-non-locking-read.test44
-rw-r--r--storage/innobase/row/row0sel.cc2
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,