From 7d678832a798d1facba6b53a4f83b4628a44a80e Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 28 Jun 2011 02:43:49 -0700 Subject: [PATCH] Cursor testing --- libraries/libmdb/mtest.c | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/libraries/libmdb/mtest.c b/libraries/libmdb/mtest.c index f99beb82a0..726c8ed954 100644 --- a/libraries/libmdb/mtest.c +++ b/libraries/libmdb/mtest.c @@ -5,19 +5,20 @@ int main(int argc,char * argv[]) { - int i = 0, rc; + int i = 0, j = 0, rc; MDB_env *env; MDB_db *db; MDB_val key, data; MDB_txn *txn; MDB_stat *mst; + MDB_cursor *cursor; int count; int *values; char sval[32]; srandom(time(NULL)); - count = random()%512; + count = (random()%384) + 64; values = (int *)malloc(count*sizeof(int)); for(i = 0;i -1; i-= (random()%5)) { + j++; rc = mdb_txn_begin(env, 0, &txn); + key.mv_data = sval; sprintf(sval, "%03x ", values[i]); rc = mdb_del(db, txn, &key, NULL); - rc = mdb_txn_commit(txn); + if (rc) { + j--; + mdb_txn_abort(txn); + } else { + rc = mdb_txn_commit(txn); + } } free(values); + printf("Deleted %d values\n", j); + rc = mdbenv_stat(env, &mst); + rc = mdb_cursor_open(db, NULL, &cursor); + while (rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT) == 0) { + printf("key: %.*s, data: %.*s\n", + key.mv_size, key.mv_data, data.mv_size, data.mv_data); + } + mdb_cursor_close(cursor); + mdb_close(db); mdbenv_close(env);