mariadb/storage/innobase/dict
Vlad Lesin d7fc975cfe MDEV-33802 Weird read view after ROLLBACK of other transactions.
In the case if some unique key fields are nullable, there can be
several records with the same key fields in unique index with at least
one key field equal to NULL, as NULL != NULL.

When transaction is resumed after waiting on the record with at least one
key field equal to NULL, and stored in persistent cursor record is
deleted, persistent cursor can be restored to the record with all key
fields equal to the stored ones, but with at least one field equal to
NULL. And such record is wrongly treated as a record with the same unique
key as stored in persistent cursor record one, what is wrong as
NULL != NULL.

The fix is to check if at least one unique field is NULL in restored
persistent cursor position, and, if so, then don't treat the record as
one with the same unique key as in the stored 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ä.
2024-04-12 18:13:51 +03:00
..
dict0boot.cc Merge 10.3 into 10.4 2020-09-09 15:00:21 +03:00
dict0crea.cc MDEV-18867 fixup: Remove DBUG injection 2023-11-02 15:27:52 +02:00
dict0defrag_bg.cc Merge 10.3 into 10.4 2022-11-09 09:28:39 +02:00
dict0dict.cc MDEV-33802 Weird read view after ROLLBACK of other transactions. 2024-04-12 18:13:51 +03:00
dict0load.cc Merge branch '10.3' into 10.4 2022-07-27 11:02:57 +02:00
dict0mem.cc Merge 10.3 into 10.4 2023-01-03 16:10:02 +02:00
dict0stats.cc MDEV-32725 innodb.import_update_stats accesses uninitialized ib_table->stat_n_rows 2023-12-15 15:43:19 +05:30
dict0stats_bg.cc Reduce compilation dependencies on wsrep_mysqld.h 2022-08-31 11:05:23 +03:00