summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Bostic <keith@wiredtiger.com>2013-12-10 14:53:20 -0800
committerKeith Bostic <keith@wiredtiger.com>2013-12-10 14:53:20 -0800
commiteb65b8638c01f304cd506eb35b7f20260eeaea59 (patch)
treeb577c65e7e973ffffd6c9a7824fc5d2ca3238d7f
parent1d9f9b163fc74e0cda5621540f7498829f0c047a (diff)
parent316982d8c60fc491d4863d75cbb02c8b858568b9 (diff)
downloadmongo-eb65b8638c01f304cd506eb35b7f20260eeaea59.tar.gz
Merge pull request #799 from wiredtiger/overflow-instantiate
Remove call to instantiate a deleted overflow key during reconciliation.
-rw-r--r--src/btree/rec_write.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/btree/rec_write.c b/src/btree/rec_write.c
index 6fd89ca9429..93f50ced337 100644
--- a/src/btree/rec_write.c
+++ b/src/btree/rec_write.c
@@ -3454,18 +3454,21 @@ __rec_row_leaf(WT_SESSION_IMPL *session,
if (WT_UPDATE_DELETED_ISSET(upd)) {
/*
* Overflow keys referencing discarded values
- * are no longer useful, schedule the discard
- * of the backing blocks. Don't worry about
- * reuse, reusing the key in this reconciliation
- * is unlikely.
- *
- * Keys are part of the name-space though, we
- * can't remove them from the in-memory tree;
- * if an overflow key was never instantiated,
- * do it now.
+ * are no longer useful, discard the backing
+ * blocks. Don't worry about reuse, reusing
+ * keys from a row-store page reconciliation
+ * seems unlikely enough to ignore.
*/
__wt_cell_unpack(cell, unpack);
if (unpack->ovfl) {
+ /*
+ * Keys are part of the name-space, we
+ * can't remove them from the in-memory
+ * tree; if an overflow key was deleted
+ * without being instantiated (for
+ * example, cursor-based trunction, do
+ * it now.
+ */
if (ikey == NULL)
WT_ERR(__wt_row_leaf_key_work(
session,