+static int
+mdb_cursor_last(MDB_cursor *cursor, MDB_val *key, MDB_val *data)
+{
+ int rc;
+ MDB_pageparent mpp;
+ MDB_node *leaf;
+ MDB_val lkey;
+
+ lkey.mv_size = MAXKEYSIZE+1;
+ lkey.mv_data = NULL;
+
+ rc = mdb_search_page(cursor->mc_txn, cursor->mc_dbi, &lkey, cursor, 0, &mpp);
+ if (rc != MDB_SUCCESS)
+ return rc;
+ assert(IS_LEAF(mpp.mp_page));
+
+ leaf = NODEPTR(mpp.mp_page, NUMKEYS(mpp.mp_page)-1);
+ cursor->mc_initialized = 1;
+ cursor->mc_eof = 1;
+
+ if (data && (rc = mdb_read_data(cursor->mc_txn->mt_env, leaf, data)) != MDB_SUCCESS)
+ return rc;
+
+ return mdb_set_key(leaf, key);
+}
+