]> git.sur5r.net Git - openldap/commitdiff
API change: mdb_env_set_maxdbs(, *named* DBs).
authorHallvard Furuseth <hallvard@openldap.org>
Tue, 27 Nov 2012 22:56:47 +0000 (23:56 +0100)
committerHallvard Furuseth <hallvard@openldap.org>
Tue, 27 Nov 2012 23:59:00 +0000 (00:59 +0100)
Let the user specify the number of databases he will actually
use. Adding 2 for FREE_DBI and MAIN_DBI is an internal matter.

libraries/libmdb/mdb.c
libraries/libmdb/mdb.h

index d760387ff4d2a9ba4029d2d624124dceb2c4e5cf..4af54aa688740341373af600aff05e36a364e089 100644 (file)
@@ -2579,7 +2579,7 @@ mdb_env_set_maxdbs(MDB_env *env, MDB_dbi dbs)
 {
        if (env->me_map)
                return EINVAL;
-       env->me_maxdbs = dbs;
+       env->me_maxdbs = dbs + 2; /* Named databases + main and free DB */
        return MDB_SUCCESS;
 }
 
index e31459563343bcdaa447bd1cae74d6f75d88cfe1..bb0ca307bbd2d8ee99efa9976e458836ac196dd2 100644 (file)
@@ -607,11 +607,11 @@ int  mdb_env_set_maxreaders(MDB_env *env, unsigned int readers);
         */
 int  mdb_env_get_maxreaders(MDB_env *env, unsigned int *readers);
 
-       /** @brief Set the maximum number of databases for the environment.
+       /** @brief Set the maximum number of named databases for the environment.
         *
         * This function is only needed if multiple databases will be used in the
-        * environment. Simpler applications that only use a single database can ignore
-        * this option.
+        * environment. Simpler applications that use the environment as a single
+        * unnamed database can ignore this option.
         * This function may only be called after #mdb_env_create() and before #mdb_env_open().
         * @param[in] env An environment handle returned by #mdb_env_create()
         * @param[in] dbs The maximum number of databases
@@ -718,6 +718,8 @@ int  mdb_txn_renew(MDB_txn *txn);
         * database handle resides in the shared environment, it is not owned
         * by the given transaction. Only one thread should call this function;
         * it is not mutex-protected in a read-only transaction.
+        * To use named databases (with name != NULL), #mdb_env_set_maxdbs()
+        * must be called before opening the enviorment.
         * @param[in] txn A transaction handle returned by #mdb_txn_begin()
         * @param[in] name The name of the database to open. If only a single
         *      database is needed in the environment, this value may be NULL.