MDB_SET_KEY(leaf, &nodekey);
}
rc = cursor->mc_txn->mt_dbxs[cursor->mc_dbi].md_cmp(key, &nodekey);
+ if (rc == 0) {
+ /* last node was the one we wanted */
+ top->mp_ki = NUMKEYS(top->mp_page)-1;
+ goto set1;
+ }
+ if (rc < 0) {
+ /* This is definitely the right page, skip search_page */
+ mpp.mp_page = top->mp_page;
+ rc = 0;
+ goto set2;
+ }
++ rc = cursor->mc_txn->mt_dbxs[cursor->mc_dbi].md_cmp(key, &nodekey);
+ if (rc <= 0) goto set1;
+ }
+ /* If any parents have right-sibs, search.
+ * Otherwise, there's nothing further.
+ */
+ for (i=0; i<cursor->mc_snum-1; i++)
+ if (cursor->mc_stack[i].mp_ki <
+ NUMKEYS(cursor->mc_stack[i].mp_page)-1)
+ break;
+ if (i == cursor->mc_snum - 1) {
+ /* There are no other pages */
+ goto set1;
}
+ /* If any parents have right-sibs, search.
+ * Otherwise, there's nothing further.
+ */
+ for (i=0; i<cursor->mc_snum-1; i++)
+ if (cursor->mc_stack[i].mp_ki <
+ NUMKEYS(cursor->mc_stack[i].mp_page)-1)
+ break;
+ if (i == cursor->mc_snum - 1) {
+ /* There are no other pages */
+ top->mp_ki = NUMKEYS(top->mp_page);
+ return MDB_NOTFOUND;
+ }
}
}