summaryrefslogtreecommitdiff
path: root/support-files/my-innodb-heavy-4G.cnf.sh
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-03-26 14:12:39 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2021-03-26 14:12:39 +0200
commita6d66fe75e9ce3ea2c43c311d0c8298fecbacff3 (patch)
tree5b4737afbc7a9feed71243a6ad193409f93c6aee /support-files/my-innodb-heavy-4G.cnf.sh
parentda26e2e673970761d5000501f6171910f248d829 (diff)
downloadmariadb-git-st-10.2-MDEV-24786.tar.gz
MDEV-24786: row_upd_clust_step() skips mtr_t::commit() on virtual column errorst-10.2-MDEV-24786
The function row_upd_clust_step() is invoking several static functions, some of which used to commit the mini-transaction in some cases. If innobase_get_computed_value() would fail due to some reason, we would fail to invoke mtr_t::commit() and release buffer pool page latches. This would likely lead to a hanging server later. This regression was introduced in commit 97db6c15ea3e83a21df137c222dbd5a40fbe7c82 (MDEV-20618). row_upd_index_is_referenced(), row_upd_sec_index_entry(), row_upd_sec_index_entry(): Cleanup: Replace some ibool with bool. row_upd_clust_rec_by_insert(), row_upd_clust_rec(): Guarantee that the mini-transaction will always remain in active state. row_upd_del_mark_clust_rec(): Guarantee that the mini-transaction will always remain in active state. This fixes one "leak" of mini-transaction on DB_COMPUTE_VALUE_FAILED. row_upd_clust_step(): Use only one return path, which will always invoke mtr.commit(). After a failed row_upd_store_row() call, we will no longer "leak" the mini-transaction. This fix was verified by RQG on 10.6 (depending on MDEV-371 that was introduced in 10.4). Unfortunately, it is challenging to create a regression test for this, and a test case could soon become invalid as more bugs in virtual column evaluation are fixed.
Diffstat (limited to 'support-files/my-innodb-heavy-4G.cnf.sh')
0 files changed, 0 insertions, 0 deletions