]> git.sur5r.net Git - openldap/commitdiff
ITS#7672 fix mdb_dbi_flags
authorHoward Chu <hyc@symas.com>
Tue, 27 Aug 2013 13:28:30 +0000 (06:28 -0700)
committerHoward Chu <hyc@symas.com>
Tue, 27 Aug 2013 13:28:30 +0000 (06:28 -0700)
Use a txn instead of env argument. Only return persistent flags.

libraries/liblmdb/lmdb.h
libraries/liblmdb/mdb.c

index ef284d9c7ebd6405a8bc83393eeefd5125e67207..b2c3861ac99bf4f1632e3c27c5e1ab52a2f89500 100644 (file)
@@ -920,12 +920,12 @@ int  mdb_stat(MDB_txn *txn, MDB_dbi dbi, MDB_stat *stat);
 
        /** @brief Retrieve the DB flags for a database handle.
         *
-        * @param[in] env An environment handle returned by #mdb_env_create()
+        * @param[in] txn A transaction handle returned by #mdb_txn_begin()
         * @param[in] dbi A database handle returned by #mdb_dbi_open()
         * @param[out] flags Address where the flags will be returned.
         * @return A non-zero error value on failure and 0 on success.
         */
-int mdb_dbi_flags(MDB_env *env, MDB_dbi dbi, unsigned int *flags);
+int mdb_dbi_flags(MDB_txn *txn, MDB_dbi dbi, unsigned int *flags);
 
        /** @brief Close a database handle.
         *
index e34f7951b30c76da5a5f348a0e05eabe4a0a57fc..835a8a8603d7f99b87769040d6024f39703a3164 100644 (file)
@@ -7968,7 +7968,6 @@ int mdb_dbi_open(MDB_txn *txn, const char *name, unsigned int flags, MDB_dbi *db
                txn->mt_dbflags[slot] = dbflag;
                memcpy(&txn->mt_dbs[slot], data.mv_data, sizeof(MDB_db));
                *dbi = slot;
-               txn->mt_env->me_dbflags[slot] = txn->mt_dbs[slot].md_flags;
                mdb_default_cmp(txn, slot);
                if (!unused) {
                        txn->mt_numdbs++;
@@ -8004,12 +8003,12 @@ void mdb_dbi_close(MDB_env *env, MDB_dbi dbi)
        free(ptr);
 }
 
-int mdb_dbi_flags(MDB_env *env, MDB_dbi dbi, unsigned int *flags)
+int mdb_dbi_flags(MDB_txn *txn, MDB_dbi dbi, unsigned int *flags)
 {
        /* We could return the flags for the FREE_DBI too but what's the point? */
-       if (dbi < MAIN_DBI || dbi >= env->me_numdbs)
+       if (txn == NULL || dbi < MAIN_DBI || dbi >= txn->mt_numdbs)
                return EINVAL;
-       *flags = env->me_dbflags[dbi];
+       *flags = txn->mt_dbs[dbi].md_flags & PERSISTENT_FLAGS;
        return MDB_SUCCESS;
 }