summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/btree/bt_delete.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/wiredtiger/src/btree/bt_delete.c')
-rw-r--r--src/third_party/wiredtiger/src/btree/bt_delete.c10
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);