Created
September 21, 2024 21:29
-
-
Save jnrbsn/88a0fcebb6a14d3f0ff22945a213c603 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include "liblmdb/lmdb.h" | |
void | |
check_err(int err) | |
{ | |
if (err != 0) { | |
fprintf(stderr, "ERROR (%d): %s\n", err, mdb_strerror(err)); | |
exit(EXIT_FAILURE); | |
} | |
} | |
int | |
main(void) | |
{ | |
int err = 0; | |
MDB_env *env; | |
check_err(mdb_env_create(&env)); | |
check_err(mdb_env_open(env, "./db", 0, 0644)); | |
MDB_txn *txn_rw; | |
MDB_dbi dbi; | |
MDB_val key = { .mv_size = 4, .mv_data = "foo" }; | |
MDB_val val1 = { .mv_size = 4, .mv_data = "bar" }; | |
check_err(mdb_txn_begin(env, NULL, 0, &txn_rw)); | |
check_err(mdb_dbi_open(txn_rw, NULL, 0, &dbi)); | |
check_err(mdb_put(txn_rw, dbi, &key, &val1, 0)); | |
check_err(mdb_txn_commit(txn_rw)); | |
MDB_txn *txn_ro; | |
MDB_val val2; | |
check_err(mdb_txn_begin(env, NULL, MDB_RDONLY, &txn_ro)); | |
check_err(mdb_get(txn_ro, dbi, &key, &val2)); | |
mdb_txn_reset(txn_ro); | |
printf("%s -> %s\n", (char *) key.mv_data, (char *) val2.mv_data); | |
MDB_val val3 = { .mv_size = 12, .mv_data = "hello world" }; | |
check_err(mdb_txn_begin(env, NULL, 0, &txn_rw)); | |
check_err(mdb_put(txn_rw, dbi, &key, &val3, 0)); | |
check_err(mdb_txn_commit(txn_rw)); | |
MDB_val val4; | |
check_err(mdb_txn_renew(txn_ro)); | |
check_err(mdb_get(txn_ro, dbi, &key, &val4)); | |
mdb_txn_reset(txn_ro); | |
printf("%s -> %s\n", (char *) key.mv_data, (char *) val4.mv_data); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment