MDEV-33802 Weird read view after ROLLBACK of other transactions.
In the case when all unique key fields are nullable, there can be several records with all NULL key fields in unique index. When transaction is resumed after waiting on the record with all key fields equal to NULL, and stored in persistent cursor record is deleted, persistent cursor can be restored on the record with all key fields equal to NULL, and such record is wrongly treated as the record with the same unique key as the stored in persistent cursor record, what is wrong. The fix is to check if all unique fields are null when persistent cursor position is restored and not all comparing fields are equal, and if so, don't treat the record as a record with the same unique key as in the stored in persistent cursor record key. dict_index_t::nulls_equal was removed, as it was initially developed for never existed in MariaDB "intrinsic tables", and there is no code, which would set it to "true". Reviewed by Marko Mäkelä.
Showing
Please register or sign in to comment