summaryrefslogtreecommitdiff
path: root/src/include/cursor.i
diff options
context:
space:
mode:
authorKeith Bostic <keith@wiredtiger.com>2013-10-18 12:01:11 -0400
committerKeith Bostic <keith@wiredtiger.com>2013-10-18 12:01:11 -0400
commit5fe7cd979fc015b644bc4f8f046ea4fca4a69915 (patch)
tree5fb2f70d13834e55b8beca27b2748d2c5fb4fc07 /src/include/cursor.i
parent72d8cffd91d3c877eaf17cd8846fe64394f4b84d (diff)
downloadmongo-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.i3
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);