diff options
Diffstat (limited to 'storage/innobase/row/row0purge.cc')
-rw-r--r-- | storage/innobase/row/row0purge.cc | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/storage/innobase/row/row0purge.cc b/storage/innobase/row/row0purge.cc index 560315af499..7abcf1c5021 100644 --- a/storage/innobase/row/row0purge.cc +++ b/storage/innobase/row/row0purge.cc @@ -260,10 +260,10 @@ not delete marked version of a clustered index record where DB_TRX_ID is newer than the purge view. NOTE: This function should only be called by the purge thread, only -while holding a latch on the leaf page of the secondary index entry -(or keeping the buffer pool watch on the page). It is possible that -this function first returns true and then false, if a user transaction -inserts a record that the secondary index entry would refer to. +while holding a latch on the leaf page of the secondary index entry. +It is possible that this function first returns true and then false, +if a user transaction inserts a record that the secondary index entry +would refer to. However, in that case, the user transaction would also re-insert the secondary index entry after purge has removed it and released the leaf page latch. @@ -431,10 +431,9 @@ row_purge_remove_sec_if_poss_tree( case ROW_FOUND: break; case ROW_BUFFERED: - case ROW_NOT_DELETED_REF: - /* These are invalid outcomes, because the mode passed + /* This is invalid, because the mode passed to row_search_index_entry() did not include any of the - flags BTR_INSERT, BTR_DELETE, or BTR_DELETE_MARK. */ + flags BTR_INSERT or BTR_DELETE_MARK. */ ut_error; } @@ -553,16 +552,8 @@ row_purge_remove_sec_if_poss_leaf( : BTR_PURGE_LEAF; } - /* Set the purge node for the call to row_purge_poss_sec(). */ - pcur.btr_cur.purge_node = node; if (dict_index_is_spatial(index)) { rw_lock_sx_lock(dict_index_get_lock(index)); - pcur.btr_cur.thr = NULL; - } else { - /* Set the query thread, so that ibuf_insert_low() will be - able to invoke thd_get_trx(). */ - pcur.btr_cur.thr = static_cast<que_thr_t*>( - que_node_get_parent(node)); } search_result = row_search_index_entry( @@ -651,8 +642,6 @@ row_purge_remove_sec_if_poss_leaf( /* (The index entry is still needed, or the deletion succeeded) */ /* fall through */ - case ROW_NOT_DELETED_REF: - /* The index entry is still needed. */ case ROW_BUFFERED: /* The deletion was buffered. */ case ROW_NOT_FOUND: |