sq ldb_mdb: Implement the lmdb backend for ldb
authorGary Lockyer <gary@catalyst.net.nz>
Mon, 19 Mar 2018 22:25:28 +0000 (11:25 +1300)
committerStefan Metzmacher <metze@samba.org>
Thu, 12 Apr 2018 14:27:16 +0000 (16:27 +0200)
SQ ldb_mdb: make backends expose if there is an active transaction

Signed-off-by: Gary Lockyer <gary@catalyst.net.nz>
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
lib/ldb/ldb_mdb/ldb_mdb.c

index 314c78ff626b9578594b9f850770ae8b401c8476..381a0c3ac80a6480c7e3479237442c1eb0945c4c 100644 (file)
@@ -89,6 +89,12 @@ static int lmdb_error_at(struct ldb_context *ldb,
        return ldb_err;
 }
 
+
+static bool lmdb_transaction_active(struct ltdb_private *ltdb)
+{
+       return ltdb->lmdb_private->txlist != NULL;
+}
+
 static MDB_txn *lmdb_trans_get_tx(struct lmdb_trans *ltx)
 {
        if (ltx == NULL) {
@@ -547,23 +553,23 @@ static bool lmdb_changed(struct ltdb_private *ltdb)
        return true;
 }
 
-
 static struct kv_db_ops lmdb_key_value_ops = {
-       .store             = lmdb_store,
-       .delete            = lmdb_delete,
-       .iterate           = lmdb_traverse_fn,
-       .update_in_iterate = lmdb_update_in_iterate,
-       .fetch_and_parse   = lmdb_parse_record,
-       .lock_read         = lmdb_lock_read,
-       .unlock_read       = lmdb_unlock_read,
-       .begin_write       = lmdb_transaction_start,
-       .prepare_write     = lmdb_transaction_prepare_commit,
-       .finish_write      = lmdb_transaction_commit,
-       .abort_write       = lmdb_transaction_cancel,
-       .error             = lmdb_error,
-       .errorstr          = lmdb_errorstr,
-       .name              = lmdb_name,
-       .has_changed       = lmdb_changed,
+       .store              = lmdb_store,
+       .delete             = lmdb_delete,
+       .iterate            = lmdb_traverse_fn,
+       .update_in_iterate  = lmdb_update_in_iterate,
+       .fetch_and_parse    = lmdb_parse_record,
+       .lock_read          = lmdb_lock_read,
+       .unlock_read        = lmdb_unlock_read,
+       .begin_write        = lmdb_transaction_start,
+       .prepare_write      = lmdb_transaction_prepare_commit,
+       .finish_write       = lmdb_transaction_commit,
+       .abort_write        = lmdb_transaction_cancel,
+       .error              = lmdb_error,
+       .errorstr           = lmdb_errorstr,
+       .name               = lmdb_name,
+       .has_changed        = lmdb_changed,
+       .transaction_active = lmdb_transaction_active,
 };
 
 static const char *lmdb_get_path(const char *url)