summaryrefslogtreecommitdiff
path: root/storage/myisam
diff options
context:
space:
mode:
authorSergei Petrunia <psergey@askmonty.org>2020-07-08 23:25:08 +0300
committerSergei Petrunia <psergey@askmonty.org>2020-07-08 23:27:19 +0300
commit41221091f6541ea83eeec70732b92b94746a44e7 (patch)
treecb8bf8eae2c3906633c60f55530ff391c7721505 /storage/myisam
parent0d6d801e5886208b2632247d88da106a543e1032 (diff)
downloadmariadb-git-41221091f6541ea83eeec70732b92b94746a44e7.tar.gz
MDEV-22553: Assertion `info->lastpos == (~ (my_off_t) 0)' failed in mi_rkey
In mi_check_index_tuple(), when rowid filter check returns CHECK_OUT_OF_RANGE, set info->lastpos= HA_OFFSET_ERROR, like it is done above for the ICP check.
Diffstat (limited to 'storage/myisam')
-rw-r--r--storage/myisam/mi_key.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/storage/myisam/mi_key.c b/storage/myisam/mi_key.c
index d17eef06969..2909f5998e1 100644
--- a/storage/myisam/mi_key.c
+++ b/storage/myisam/mi_key.c
@@ -561,7 +561,15 @@ check_result_t mi_check_index_tuple(MI_INFO *info, uint keynr, uchar *record)
if (need_unpack && mi_unpack_index_tuple(info, keynr, record))
res= CHECK_ERROR;
else
- res= info->rowid_filter_func(info->rowid_filter_func_arg);
+ {
+ if ((res= info->rowid_filter_func(info->rowid_filter_func_arg)) ==
+ CHECK_OUT_OF_RANGE)
+ {
+ /* We got beyond the end of scanned range */
+ info->lastpos= HA_OFFSET_ERROR; /* No active record */
+ my_errno= HA_ERR_END_OF_FILE;
+ }
+ }
}
return res;
}