diff options
Diffstat (limited to 'src/third_party/wiredtiger/src/btree/bt_delete.c')
-rw-r--r-- | src/third_party/wiredtiger/src/btree/bt_delete.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/third_party/wiredtiger/src/btree/bt_delete.c b/src/third_party/wiredtiger/src/btree/bt_delete.c index 11626a99341..1d7fdc0a5f3 100644 --- a/src/third_party/wiredtiger/src/btree/bt_delete.c +++ b/src/third_party/wiredtiger/src/btree/bt_delete.c @@ -115,8 +115,10 @@ __wt_delete_page(WT_SESSION_IMPL *session, WT_REF *ref, bool *skipp) goto err; if (addr.ta.prepare) goto err; - if (!__wt_txn_visible(session, addr.ta.newest_txn, - WT_MAX(addr.ta.newest_start_durable_ts, addr.ta.newest_stop_durable_ts))) + /* History store data are always visible. No need to check visibility. */ + if (!WT_IS_HS(session->dhandle) && + !__wt_txn_visible(session, addr.ta.newest_txn, + WT_MAX(addr.ta.newest_start_durable_ts, addr.ta.newest_stop_durable_ts))) goto err; /* @@ -129,7 +131,9 @@ __wt_delete_page(WT_SESSION_IMPL *session, WT_REF *ref, bool *skipp) WT_ERR(__wt_calloc_one(session, &ref->ft_info.del)); ref->ft_info.del->previous_ref_state = previous_state; - WT_ERR(__wt_txn_modify_page_delete(session, ref)); + /* History store truncation is non-transactional. */ + if (!WT_IS_HS(session->dhandle)) + WT_ERR(__wt_txn_modify_page_delete(session, ref)); *skipp = true; WT_STAT_CONN_DATA_INCR(session, rec_page_delete_fast); |