More cursor tests, fail...

vmware
Howard Chu 14 years ago
parent bddc86c0ee
commit 2d4f522a73
  1. 44
      libraries/libmdb/mtest.c

@ -11,7 +11,7 @@ int main(int argc,char * argv[])
MDB_val key, data; MDB_val key, data;
MDB_txn *txn; MDB_txn *txn;
MDB_stat *mst; MDB_stat *mst;
MDB_cursor *cursor; MDB_cursor *cursor, *cur2;
int count; int count;
int *values; int *values;
char sval[32]; char sval[32];
@ -48,8 +48,8 @@ int main(int argc,char * argv[])
rc = mdb_cursor_open(db, NULL, &cursor); rc = mdb_cursor_open(db, NULL, &cursor);
while (rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT) == 0) { while (rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT) == 0) {
printf("key: %.*s, data: %.*s\n", printf("key: %p %.*s, data: %p %.*s\n",
key.mv_size, key.mv_data, data.mv_size, data.mv_data); key.mv_data, key.mv_size, key.mv_data, data.mv_data, data.mv_size, data.mv_data);
} }
mdb_cursor_close(cursor); mdb_cursor_close(cursor);
@ -57,6 +57,7 @@ int main(int argc,char * argv[])
key.mv_data = sval; key.mv_data = sval;
for (i= count - 1; i > -1; i-= (random()%5)) { for (i= count - 1; i > -1; i-= (random()%5)) {
j++; j++;
txn=NULL;
rc = mdb_txn_begin(env, 0, &txn); rc = mdb_txn_begin(env, 0, &txn);
sprintf(sval, "%03x ", values[i]); sprintf(sval, "%03x ", values[i]);
rc = mdb_del(db, txn, &key, NULL); rc = mdb_del(db, txn, &key, NULL);
@ -76,6 +77,43 @@ int main(int argc,char * argv[])
printf("key: %.*s, data: %.*s\n", printf("key: %.*s, data: %.*s\n",
key.mv_size, key.mv_data, data.mv_size, data.mv_data); key.mv_size, key.mv_data, data.mv_size, data.mv_data);
} }
#if 0
/* write ops aren't coordinated with cursors,
* this stuff all breaks
*/
printf("Deleting with cursor\n");
rc = mdb_txn_begin(env, 0, &txn);
rc = mdb_cursor_open(db, txn, &cur2);
for (i=0; i<50; i++) {
rc = mdb_cursor_get(cur2, &key, &data, MDB_NEXT);
printf("key: %p %.*s, data: %p %.*s\n",
key.mv_data, key.mv_size, key.mv_data, data.mv_data, data.mv_size, data.mv_data);
rc = mdb_del(db, txn, &key, NULL);
}
printf("Restarting cursor in txn\n");
rc = mdb_cursor_get(cur2, &key, &data, MDB_FIRST);
printf("key: %p %.*s, data: %p %.*s\n",
key.mv_data, key.mv_size, key.mv_data, data.mv_data, data.mv_size, data.mv_data);
for (i=0; i<32; i++) {
rc = mdb_cursor_get(cur2, &key, &data, MDB_NEXT);
printf("key: %p %.*s, data: %p %.*s\n",
key.mv_data, key.mv_size, key.mv_data, data.mv_data, data.mv_size, data.mv_data);
}
mdb_cursor_close(cur2);
rc = mdb_txn_commit(txn);
mdb_cursor_close(cursor);
printf("Restarting cursor outside txn\n");
rc = mdb_cursor_open(db, NULL, &cursor);
rc = mdb_cursor_get(cursor, &key, &data, MDB_FIRST);
printf("key: %p %.*s, data: %p %.*s\n",
key.mv_data, key.mv_size, key.mv_data, data.mv_data, data.mv_size, data.mv_data);
for (i=0; i<32; i++) {
rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT);
printf("key: %p %.*s, data: %p %.*s\n",
key.mv_data, key.mv_size, key.mv_data, data.mv_data, data.mv_size, data.mv_data);
}
#endif
mdb_cursor_close(cursor); mdb_cursor_close(cursor);
mdb_close(db); mdb_close(db);

Loading…
Cancel
Save