+ // cache copy of key to update
+
+ ptr = keyptr(right->page, right->page->cnt);
+ memcpy (higherfence, ptr, ptr->len + 1);
+
+ // mark right page deleted and point it to left page
+ // until we can post parent updates
+
+ bt_putid (right->page->right, set->page_no);
+ right->page->kill = 1;
+
+ bt_unlockpage (BtLockWrite, right->latch);
+ bt_unlockpage (BtLockWrite, set->latch);
+
+ // redirect higher key directly to our new node contents
+
+ if( bt_insertkey (bt, higherfence+1, *higherfence, lvl+1, set->page_no, time(NULL)) )
+ return bt->err;
+
+ // delete old lower key to our node
+
+ if( bt_deletekey (bt, lowerfence+1, *lowerfence, lvl+1) )
+ return bt->err;
+
+ // obtain delete and write locks to right node
+
+ bt_unlockpage (BtLockParent, right->latch);
+ bt_lockpage (BtLockDelete, right->latch);
+ bt_lockpage (BtLockWrite, right->latch);
+ bt_freepage (bt, right);
+
+ bt_unlockpage (BtLockParent, set->latch);
+ bt_unpinlatch (set->latch);
+ bt_unpinpool (set->pool);
+ bt->found = found;