summaryrefslogtreecommitdiff
path: root/storage/innobase/row/row0sel.cc
diff options
context:
space:
mode:
authorDaniel Black <daniel@mariadb.org>2020-10-10 08:28:53 +1100
committerSergei Petrunia <psergey@askmonty.org>2020-10-14 15:14:46 +0300
commita6f956488c712bef3b13660584d1b905e0c676cc (patch)
tree5767c68f5672d809c0268b588f11a011e7a8687a /storage/innobase/row/row0sel.cc
parentc03885cd9ceb1ede7f49a9e218022b401b3a1e28 (diff)
downloadmariadb-git-a6f956488c712bef3b13660584d1b905e0c676cc.tar.gz
MDEV-22761: innodb row_search_idx_cond_check handle CHECK_ABORTED_BY_USERbb-10.4-danielblack-MDEV-22761
Part #3: Two more cases within row_search_mvcc need to handle the CHECK_ABORTED_BY_USER and process this as a DB_INTERRUPTED.
Diffstat (limited to 'storage/innobase/row/row0sel.cc')
-rw-r--r--storage/innobase/row/row0sel.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc
index 941a4904047..fad388f3dbd 100644
--- a/storage/innobase/row/row0sel.cc
+++ b/storage/innobase/row/row0sel.cc
@@ -4453,9 +4453,12 @@ row_search_mvcc(
switch (row_search_idx_cond_check(
buf, prebuilt,
rec, offsets)) {
+ case CHECK_ABORTED_BY_USER:
+ err = DB_INTERRUPTED;
+ mtr.commit();
+ goto func_exit;
case CHECK_NEG:
case CHECK_OUT_OF_RANGE:
- case CHECK_ABORTED_BY_USER:
case CHECK_ERROR:
goto shortcut_mismatch;
case CHECK_POS:
@@ -5239,9 +5242,11 @@ no_gap_lock:
buf, prebuilt, rec, offsets)) {
case CHECK_NEG:
goto next_rec;
- case CHECK_OUT_OF_RANGE:
case CHECK_ABORTED_BY_USER:
- case CHECK_ERROR:
+ err = DB_INTERRUPTED;
+ goto idx_cond_failed;
+ case CHECK_OUT_OF_RANGE:
+ case CHECK_ERROR:
err = DB_RECORD_NOT_FOUND;
goto idx_cond_failed;
case CHECK_POS: