diff options
Diffstat (limited to 'src/third_party/wiredtiger/src/include/reconcile.h')
-rw-r--r-- | src/third_party/wiredtiger/src/include/reconcile.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/third_party/wiredtiger/src/include/reconcile.h b/src/third_party/wiredtiger/src/include/reconcile.h index 024afebde5e..84cac92f426 100644 --- a/src/third_party/wiredtiger/src/include/reconcile.h +++ b/src/third_party/wiredtiger/src/include/reconcile.h @@ -65,6 +65,17 @@ struct __wt_rec_chunk { }; /* + * WT_DELETE_HS_UPD -- + * Update that needs to be deleted from the history store. + */ +struct __wt_delete_hs_upd { + WT_INSERT *ins; /* Insert list reference */ + WT_ROW *rip; /* Original on-page reference */ + WT_UPDATE *upd; + WT_UPDATE *tombstone; +}; + +/* * Reconciliation is the process of taking an in-memory page, walking each entry * in the page, building a backing disk image in a temporary buffer representing * that information, and writing that buffer to disk. What could be simpler? @@ -227,6 +238,15 @@ struct __wt_reconcile { size_t supd_allocated; size_t supd_memsize; /* Size of saved update structures */ + /* + * List of updates to be deleted from the history store. While reviewing updates for each page, + * we save the updates that needs to be deleted from history store here, and then delete them + * after we have built the disk image. + */ + WT_DELETE_HS_UPD *delete_hs_upd; /* Updates to delete from history store */ + uint32_t delete_hs_upd_next; + size_t delete_hs_upd_allocated; + /* List of pages we've written so far. */ WT_MULTI *multi; uint32_t multi_next; @@ -305,7 +325,8 @@ struct __wt_reconcile { }; typedef struct { - WT_UPDATE *upd; /* Update to write (or NULL) */ + WT_UPDATE *upd; /* Update to write (or NULL) */ + WT_UPDATE *tombstone; /* The tombstone to write (or NULL) */ WT_TIME_WINDOW tw; |