diff options
author | Luke Chen <luke.chen@mongodb.com> | 2021-10-18 14:00:17 +1100 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-10-18 03:23:58 +0000 |
commit | fbc4eac4b2ce2a672977ed07fbe20e146ee36148 (patch) | |
tree | 6f360f769035975e0de0942e11c5d95d4a2051b4 /src | |
parent | 32e3190562cb6c8d530eff765405fa269d5f1553 (diff) | |
download | mongo-fbc4eac4b2ce2a672977ed07fbe20e146ee36148.tar.gz |
Import wiredtiger: e271f9d668abe181367adcba829eace0c74d8b07 from branch mongodb-5.1
ref: 35f8c7123e..e271f9d668
for: 5.1.0-rc1
WT-5743 Rewrite cells when the transaction ids are cleared for VLCS
Diffstat (limited to 'src')
-rw-r--r-- | src/third_party/wiredtiger/import.data | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/src/reconcile/rec_col.c | 15 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index 963572d5060..6e23c5dfe7d 100644 --- a/src/third_party/wiredtiger/import.data +++ b/src/third_party/wiredtiger/import.data @@ -2,5 +2,5 @@ "vendor": "wiredtiger", "github": "wiredtiger/wiredtiger.git", "branch": "mongodb-5.1", - "commit": "35f8c7123eb1e1c06360153eff955ec5aeaa9a16" + "commit": "e271f9d668abe181367adcba829eace0c74d8b07" } diff --git a/src/third_party/wiredtiger/src/reconcile/rec_col.c b/src/third_party/wiredtiger/src/reconcile/rec_col.c index 10dd1d9daea..56390a6c50d 100644 --- a/src/third_party/wiredtiger/src/reconcile/rec_col.c +++ b/src/third_party/wiredtiger/src/reconcile/rec_col.c @@ -276,10 +276,15 @@ __wt_rec_col_int(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_REF *pageref) addr = ref->addr; if (addr == NULL) { __wt_cell_unpack_addr(session, page->dsk, ref->addr, vpack); - val->buf.data = ref->addr; - val->buf.size = __wt_cell_total_len(vpack); - val->cell_len = 0; - val->len = val->buf.size; + if (F_ISSET(vpack, WT_CELL_UNPACK_TIME_WINDOW_CLEARED)) { + /* Need to rebuild the cell with the updated time info. */ + __wt_rec_cell_build_addr(session, r, NULL, vpack, false, ref->ref_recno); + } else { + val->buf.data = ref->addr; + val->buf.size = __wt_cell_total_len(vpack); + val->cell_len = 0; + val->len = val->buf.size; + } WT_TIME_AGGREGATE_COPY(&ta, &vpack->ta); } else { __wt_rec_cell_build_addr(session, r, addr, NULL, false, ref->ref_recno); @@ -291,7 +296,7 @@ __wt_rec_col_int(WT_SESSION_IMPL *session, WT_RECONCILE *r, WT_REF *pageref) if (__wt_rec_need_split(r, val->len)) WT_ERR(__wt_rec_split_crossing_bnd(session, r, val->len, false)); - /* Copy the value onto the page. */ + /* Copy the value (which is in val, val == r->v) onto the page. */ __wt_rec_image_copy(session, r, val); WT_TIME_AGGREGATE_MERGE(session, &r->cur_ptr->ta, &ta); } |