<svoj> I'm asking about it because this comparison won't work with
prefix keys, as falcon doesn't get full key value.
I'm surprised that works at all, given this code from
StorageInterface::index_read
case HA_READ_BEFORE_KEY: // ???
case HA_READ_PREFIX_LAST_OR_PREV: // ???
case HA_READ_PREFIX_LAST: // ???
case HA_READ_PREFIX:
case HA_READ_KEY_OR_PREV:
default:
DBUG_RETURN(HA_ERR_UNSUPPORTED);
But yes, an index can return a record number that doesn't have a value
that matches the search criteria for a particular transaction. There's
no transaction information in the index. After a key value is updated,
there are entries in the index for both values - only one of which can
be seen by any particular transaction.
The server may throw out values that don't match the criteria, but
(if I remember correctly) it stops the scan after an error, so we have
to validate records ourselves.
Best,
Ann
| Thread |
|---|
| • Handling prefix keys | Ann W. Harrison | 26 Nov |