Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Won't Fix
-
10.2.2
-
None
Description
Current handler::records() is not fully usable as InnoDB could roll back the statement on some cases and you may not continue after that, it should be int records(ha_rows *n_rows) and server should check as these errors will abort the current query:
case HA_ERR_LOCK_DEADLOCK:
case HA_ERR_LOCK_TABLE_FULL:
case HA_ERR_LOCK_WAIT_TIMEOUT:
case HA_ERR_QUERY_INTERRUPTED:
see commit 40ec5373c0 on 5.7
Attachments
Issue Links
- relates to
-
MDEV-11751 Merge new release of InnoDB MySQL 5.7.18 to 10.2
-
- Closed
-
-
MDEV-18188 Maintain persistent COUNT(*) in InnoDB
-
- Stalled
-
Oracle removed this in MySQL 5.7.18, because it is hard-wired to use the clustered index.
Sometimes using a secondary index could be a bad idea, because we do not have a hidden DB_TRX_ID column in the secondary indexes. For delete-marked records or for secondary index pages where PAGE_MAX_TRX_ID is too new, a lookup for a matching clustered index record must be performed (random lookups to the clustered index and optionally to undo log records). This is why it was hard-wired to use the clustered index in the first place.
See also my old blog post that mentions InnoDB secondary indexes.