From eed6dfdf3ad898d901e791fb3acd078be7c94ecb Mon Sep 17 00:00:00 2001 From: Gregory Burd Date: Sat, 3 Dec 2011 09:44:59 -0500 Subject: [PATCH 1/2] A cursor get() of an undefined Key will position the cursor. --- src/bdberl.erl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bdberl.erl b/src/bdberl.erl index fba2ce3..bd27bc3 100644 --- a/src/bdberl.erl +++ b/src/bdberl.erl @@ -1374,7 +1374,12 @@ cursor_get(Key) -> not_found | {ok, db_key(), db_value()} | db_error(). cursor_get(Key, Opts) -> - {KeyLen, KeyBin} = to_binary(Key), + case Key of + undefined -> + {KeyLen, KeyBin} = {0, <<>>}; + _ -> + {KeyLen, KeyBin} = to_binary(Key) + end, Flags = process_flags(Opts), Cmd = <>, <> = erlang:port_control(get_port(), ?CMD_CURSOR_GET, Cmd), From fed8c726e2b7a027dbdd5a03f861614b0e9a9419 Mon Sep 17 00:00:00 2001 From: Gregory Burd Date: Sat, 3 Dec 2011 09:45:43 -0500 Subject: [PATCH 2/2] Ensure all databases are opened with auto commit enabled. --- c_src/bdberl_drv.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/c_src/bdberl_drv.c b/c_src/bdberl_drv.c index b9aad6c..a46e9a0 100644 --- a/c_src/bdberl_drv.c +++ b/c_src/bdberl_drv.c @@ -1169,6 +1169,8 @@ static int open_database(const char* name, DBTYPE type, unsigned int flags, Port } } + flags |= DB_AUTO_COMMIT; + // Attempt to open our database DBGCMD(data, "db->open(%p, 0, '%s', 0, %x, %08x, 0);", db, name, type, flags); rc = db->open(db, 0, name, 0, type, flags, 0);