Commit 01748ce1 authored by Inaam Rana's avatar Inaam Rana

Bug #14100254 65389: MVCC IS BROKEN WITH IMPLICIT LOCK

rb://1088
approved by: Marko Makela

This bug was introduced in early stages of plugin. We were not
checking for an implicit lock on sec index rec for trx_id that is
stamped on current version of the clust_index in case where the
clust_index has a previous delete marked version.
parent e979417c
...@@ -208,18 +208,6 @@ row_vers_impl_x_locked_off_kernel( ...@@ -208,18 +208,6 @@ row_vers_impl_x_locked_off_kernel(
vers_del = rec_get_deleted_flag(prev_version, comp); vers_del = rec_get_deleted_flag(prev_version, comp);
prev_trx_id = row_get_rec_trx_id(prev_version, clust_index, prev_trx_id = row_get_rec_trx_id(prev_version, clust_index,
clust_offsets); clust_offsets);
/* If the trx_id and prev_trx_id are different and if
the prev_version is marked deleted then the
prev_trx_id must have already committed for the trx_id
to be able to modify the row. Therefore, prev_trx_id
cannot hold any implicit lock. */
if (vers_del && 0 != ut_dulint_cmp(trx_id, prev_trx_id)) {
mutex_enter(&kernel_mutex);
break;
}
/* The stack of versions is locked by mtr. Thus, it /* The stack of versions is locked by mtr. Thus, it
is safe to fetch the prefixes for externally stored is safe to fetch the prefixes for externally stored
columns. */ columns. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment