diff options
author | Sergei Petrunia <psergey@askmonty.org> | 2020-07-08 23:25:08 +0300 |
---|---|---|
committer | Sergei Petrunia <psergey@askmonty.org> | 2020-07-08 23:27:19 +0300 |
commit | 41221091f6541ea83eeec70732b92b94746a44e7 (patch) | |
tree | cb8bf8eae2c3906633c60f55530ff391c7721505 /storage/myisam | |
parent | 0d6d801e5886208b2632247d88da106a543e1032 (diff) | |
download | mariadb-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.c | 10 |
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; } |