diff options
author | Keith Bostic <keith@wiredtiger.com> | 2013-10-18 12:01:11 -0400 |
---|---|---|
committer | Keith Bostic <keith@wiredtiger.com> | 2013-10-18 12:01:11 -0400 |
commit | 5fe7cd979fc015b644bc4f8f046ea4fca4a69915 (patch) | |
tree | 5fb2f70d13834e55b8beca27b2748d2c5fb4fc07 /src/include/cursor.i | |
parent | 72d8cffd91d3c877eaf17cd8846fe64394f4b84d (diff) | |
download | mongo-5fe7cd979fc015b644bc4f8f046ea4fca4a69915.tar.gz |
There's magic code to handle overflow records that have been deleted but
still need to be visible to othread threads (see bt_ovfl.c for lots more
information). We were using WT_RESTART returns from the overflow read
function to handle this, but that led to a bug where, if the read of an
overflow item returns restart, the cursor may have already moved past
the entry, and so restart potentially skips a row.
Row-store used to store cached "deleted overflow" items each row's
WT_UPDATE list, while column-store stored cached "deleted overflow"
items in the page's modify structure. Change row-store to do the same
thing as column-store, and then change the system to pass enough
information into the overflow read function that it never needs to
return restart, it can simply look-aside into the cached entries as soon
as we realize we're reading a "deleted overflow" item.
This means restart is now only returned as a result of modification
failure, remove a bunch of restart handling code.
Diffstat (limited to 'src/include/cursor.i')
-rw-r--r-- | src/include/cursor.i | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/include/cursor.i b/src/include/cursor.i index 3b07bd162f6..477b879cfd8 100644 --- a/src/include/cursor.i +++ b/src/include/cursor.i @@ -253,8 +253,7 @@ slow: WT_RET(__wt_row_leaf_key_work( vb->size = 0; } else { __wt_cell_unpack(cell, unpack); - WT_RET(__wt_cell_unpack_ref( - session, WT_PAGE_ROW_LEAF, unpack, vb)); + WT_RET(__wt_page_cell_data_ref(session, cbt->page, unpack, vb)); } return (0); |