Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.2.38, 10.3.29, 10.4.19, 10.5.10, 10.6.1
Description
MDEV-25459 corrected MVCC missing reads from CHAR or VARCHAR indexes, but omits handling InnoDB spatial r-tree indexes in storage/innobase/row/row0sel.cc row_sel_sec_rec_is_for_clust_rec. It seems to work for geometry fields which fit in the key prefix length.
Checking for dict_index_is_spatial(sec_index) in check_for_blob: goto works, although repetitive code. Not familiar enough with the internals to tell if it would be safe to skip the other checks entirely in case of spatial index.
Additionally, row_sel_sec_rec_is_for_blob doesn't seem to work right. When len > REC_VERSION_56_MAX_INDEX_COL_LEN it becomes REC_VERSION_56_MAX_INDEX_COL_LEN + 1, causing assert failure in debug build.
Attachments
Issue Links
- is caused by
-
MDEV-25459 MVCC read from index on CHAR or VARCHAR wrongly omits rows
-
- Closed
-
- is duplicated by
-
MDEV-25621 Spatial Index ignores some geometry
-
- Closed
-
Thank you for the report.
Do you have a test case where len would exceed 3072 bytes? That should be the maximum column prefix length in a secondary index, ever since a larger limit was introduced to replace the original one of 768 bytes.