mariadb/storage/innobase
Marko Mäkelä a6d66fe75e MDEV-24786: row_upd_clust_step() skips mtr_t::commit() on virtual column error
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 97db6c15ea (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.
2021-03-26 14:12:39 +02:00
..
btr MDEV-25101 Assertion !strcmp(field->name, "table_name") failed 2021-03-10 11:08:51 +02:00
buf MDEV-24188 Hang in buf_page_create() after reusing a previously freed page 2020-11-13 20:16:39 +02:00
data MDEV-20377: Fix -Wunused-but-set-variable 2020-07-01 20:34:06 +03:00
dict MDEV-24172: innodb stats table last_update is TIMESTAMP 2020-12-16 08:18:19 +11:00
eval MDEV-21254 Remove unused keywords from the InnoDB SQL parser 2019-12-09 12:32:04 +02:00
fil MDEV-25121: innodb_flush_method=O_DIRECT fails on compressed tables 2021-03-18 12:24:35 +02:00
fsp MDEV-23456 fixup: Simplify a comparison 2020-09-09 13:04:11 +03:00
fts MDEV-24403 Segfault on CREATE TABLE with explicit FTS_DOC_ID_INDEX by multiple fields 2021-01-19 14:25:51 +03:00
fut Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
gis MDEV-23693 Failing assertion: my_atomic_load32_explicit(&lock->lock_word, MY_MEMORY_ORDER_RELAXED) == X_LOCK_DECR 2020-10-27 18:30:00 +05:30
ha Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
handler MDEV-23076 Misleading "InnoDB: using atomic writes" 2021-03-22 18:12:44 +02:00
ibuf MDEV-24182 ibuf_merge_or_delete_for_page() contains dead code 2020-11-11 15:48:43 +02:00
include MDEV-22653: Remove the useless parameter innodb_simulate_comp_failures 2021-03-22 18:12:44 +02:00
lock MDEV-24704 : Galera test failure on galera.galera_nopk_unicode 2021-01-27 19:46:20 +02:00
log MDEV-24913 Assertion !recv_no_log_write in log_write_up_to() 2021-02-23 13:56:40 +05:30
mach Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
mem MDEV-20377: Make WITH_MSAN more usable 2020-07-01 17:23:00 +03:00
mtr MDEV-24188 fixup: Correct the FindBlockX predicate 2020-11-18 13:52:37 +02:00
mysql-test/storage_engine Fix for MDEV-17449, typo in error message (#1146) 2019-03-24 21:24:28 +04:00
os MDEV-21584 - portability fix 2021-03-18 12:24:35 +02:00
page MDEV-22653: Remove the useless parameter innodb_simulate_comp_failures 2021-03-22 18:12:44 +02:00
pars MDEV-21254 Remove unused keywords from the InnoDB SQL parser 2019-12-09 12:32:04 +02:00
que Cleanup: Remove unused symbol QUE_THR_PROCEDURE_WAIT 2021-01-08 16:14:26 +02:00
read MVCC::view_close(): Correct comments 2019-09-04 09:42:38 +03:00
rem MDEV-23851 MDEV-24229 BF-BF conflict issues 2020-12-28 09:06:16 +02:00
row MDEV-24786: row_upd_clust_step() skips mtr_t::commit() on virtual column error 2021-03-26 14:12:39 +02:00
srv MDEV-22653: Remove the useless parameter innodb_simulate_comp_failures 2021-03-22 18:12:44 +02:00
sync MDEV-24188 Hang in buf_page_create() after reusing a previously freed page 2020-11-13 20:16:39 +02:00
trx MDEV-23851 BF-BF Conflict issue because of UK GAP locks 2021-01-18 08:09:06 +02:00
ut MDEV-20377: Fix cmake -DPLUGIN_PERFSCHEMA=NO 2020-07-02 06:03:59 +03:00
.clang-format-old switch off storage/innobase/.clang-format: InnoDB uses a common formatting style for all new code 2021-03-17 11:01:15 +03:00
bzip2.cmake Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
CMakeLists.txt MDEV-23693 Failing assertion: my_atomic_load32_explicit(&lock->lock_word, MY_MEMORY_ORDER_RELAXED) == X_LOCK_DECR 2020-10-27 18:30:00 +05:30
compile-innodb Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
COPYING.Google move to storage/innobase 2015-05-04 19:17:21 +02:00
COPYING.Percona move to storage/innobase 2015-05-04 19:17:21 +02:00
innodb.cmake MDEV-21362 do something with -fno-builtin-memcmp for rem0cmp.cc 2019-12-24 17:03:27 +08:00
lz4.cmake Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
lzma.cmake Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
lzo.cmake Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
plugin_exports
snappy.cmake Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00