lmdb 0.1.1 → 0.2.0
raw patch · 2 files changed
+22/−14 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Database.LMDB.Raw: mdb_dbi_open :: MDB_txn -> String -> [MDB_DbFlag] -> IO MDB_dbi
+ Database.LMDB.Raw: mdb_dbi_open :: MDB_txn -> Maybe String -> [MDB_DbFlag] -> IO MDB_dbi
- Database.LMDB.Raw: mdb_dbi_open' :: MDB_txn -> String -> [MDB_DbFlag] -> IO MDB_dbi'
+ Database.LMDB.Raw: mdb_dbi_open' :: MDB_txn -> Maybe String -> [MDB_DbFlag] -> IO MDB_dbi'
- Database.LMDB.Raw: mdb_reader_list :: MDB_env -> IO [String]
+ Database.LMDB.Raw: mdb_reader_list :: MDB_env -> IO String
Files
- hsrc_lib/Database/LMDB/Raw.hsc +19/−11
- lmdb.cabal +3/−3
hsrc_lib/Database/LMDB/Raw.hsc view
@@ -785,8 +785,8 @@ if (0 == rc) then fromIntegral <$> _peekCInt pCount else _throwLMDBErrNum "mdb_reader_check" rc --- | Dump entries from reader lock table.-mdb_reader_list :: MDB_env -> IO [String]+-- | Dump entries from reader lock table (for human consumption)+mdb_reader_list :: MDB_env -> IO String mdb_reader_list env = newIORef [] >>= \ rf -> let onMsg cs _ = @@ -796,7 +796,8 @@ in withMsgFunc onMsg $ \ pMsgFunc -> _mdb_reader_list (_env_ptr env) pMsgFunc nullPtr >>= \ rc ->- if (0 == rc) then L.reverse <$> readIORef rf else+ let toMsg = L.foldl (flip (++)) [] in+ if (0 == rc) then toMsg <$> readIORef rf else _throwLMDBErrNum "mdb_reader_list" rc withMsgFunc :: MDB_msg_func -> (FunPtr MDB_msg_func -> IO a) -> IO a@@ -913,7 +914,10 @@ -- | Open a database that supports user-defined comparisons, but -- has slightly more FFI overhead for reads and writes.-mdb_dbi_open :: MDB_txn -> String -> [MDB_DbFlag] -> IO MDB_dbi+--+-- LMDB supports a small set of named databases, plus one 'main'+-- database using the null argument for the database name.+mdb_dbi_open :: MDB_txn -> Maybe String -> [MDB_DbFlag] -> IO MDB_dbi mdb_dbi_open txn dbName flags = MDB_dbi <$> mdb_dbi_open_t txn dbName flags -- | database statistics@@ -942,7 +946,7 @@ mdb_clear :: MDB_txn -> MDB_dbi -> IO () mdb_clear txn = mdb_clear_t txn . _dbi -mdb_dbi_open' :: MDB_txn -> String -> [MDB_DbFlag] -> IO MDB_dbi'+mdb_dbi_open' :: MDB_txn -> Maybe String -> [MDB_DbFlag] -> IO MDB_dbi' mdb_dbi_open' txn dbName flags = MDB_dbi' <$> mdb_dbi_open_t txn dbName flags mdb_stat' :: MDB_txn -> MDB_dbi' -> IO MDB_stat@@ -961,9 +965,15 @@ mdb_clear' txn = mdb_clear_t txn . _dbi' -mdb_dbi_open_t :: MDB_txn -> String -> [MDB_DbFlag] -> IO MDB_dbi_t-mdb_dbi_open_t txn dbName flags =+mdb_dbi_open_t :: MDB_txn -> Maybe String -> [MDB_DbFlag] -> IO MDB_dbi_t+mdb_dbi_open_t txn Nothing flags = -- use nullPtr for name let cdbFlags = compileDBFlags flags in+ alloca $ \ pDBI ->+ _mdb_dbi_open (_txn_ptr txn) nullPtr cdbFlags pDBI >>= \ rc ->+ if (0 == rc) then peek pDBI else+ _throwLMDBErrNum "mdb_dbi_open" rc+mdb_dbi_open_t txn (Just dbName) flags = -- use string name+ let cdbFlags = compileDBFlags flags in withCString dbName $ \ cdbName -> alloca $ \ pDBI -> _mdb_dbi_open (_txn_ptr txn) cdbName cdbFlags pDBI >>= \ rc ->@@ -1126,14 +1136,12 @@ mdb_del' :: MDB_txn -> MDB_dbi' -> MDB_val -> Maybe MDB_val -> IO Bool mdb_del' txn dbi key Nothing =- allocaBytes (sizeOf key) $ \ pKey ->+ alloca $ \ pKey -> poke pKey key >> _mdb_del' (_txn_ptr txn) dbi pKey nullPtr >>= \ rc -> r_del rc mdb_del' txn dbi key (Just val) =- allocaBytes (2 * sizeOf key) $ \ pKey ->- let pVal = pKey `plusPtr` sizeOf key in- poke pKey key >> poke pVal val >>+ withKVPtrs key val $ \ pKey pVal -> _mdb_del' (_txn_ptr txn) dbi pKey pVal >>= \rc -> r_del rc
lmdb.cabal view
@@ -1,15 +1,15 @@ Name: lmdb-Version: 0.1.1+Version: 0.2.0 Synopsis: Lightning MDB bindings Category: Database Description: LMDB is a read-optimized Berkeley DB replacement developed by Sysmas for the OpenLDAP project. LMDB has impressive performance characteristics and a friendly BSD-style license.- + . You will need to install the lmdb development files to install this library, e.g. `sudo apt-get install liblmdb-dev` works for Ubuntu 14.04- + . At the moment, only a raw, low-level interface to LMDB is supported. Author: David Barbour