static void test_read(LSMDB_env *const env) { LSMDB_txn *txn; chk( lsmdb_txn_begin(env, NULL, MDB_RDONLY, &txn) ); LSMDB_cursor *cursor; chk( lsmdb_cursor_open(txn, &cursor) ); for(int i = 0; i < WRITES; ++i) { MDB_val key, data; chk( lsmdb_cursor_next(cursor, &key, &data, +1) ); assert(KEY_SIZE == key.mv_size); chkkey(key.mv_data); assert(DATA_SIZE == data.mv_size); } lsmdb_txn_abort(txn); }
static void test_write(LSMDB_env *const env) { uint8_t k[KEY_SIZE]; uint8_t d[DATA_SIZE] = {}; for(int i = 0; i < WRITES / TXN_SIZE; ++i) { LSMDB_txn *txn; chk( lsmdb_txn_begin(env, NULL, MDB_RDWR, &txn) ); for(int j = 0; j < TXN_SIZE; ++j) { GENKEY(k); MDB_val key = { sizeof(k), &k }; MDB_val data = { sizeof(d), &d }; chk( lsmdb_put(txn, &key, &data, PUT_FLAGS) ); } chk( lsmdb_autocompact(txn) ); lsmdb_txn_commit(txn); } }
int db_txn_begin(DB_env *const env, DB_txn *const parent, unsigned const flags, DB_txn **const out) { return mdberr(lsmdb_txn_begin((LSMDB_env *)env, (LSMDB_txn *)parent, flags, (LSMDB_txn **)out)); }