#define _BACK_BDB_H_
#include <portable.h>
-#include <db.h>
-
#include "slap.h"
+#include <db.h>
LDAP_BEGIN_DECL
-#define BDB_IDL_MULTI 1
/* #define BDB_HIER 1 */
#define DN_BASE_PREFIX SLAP_INDEX_EQUALITY_PREFIX
/* The bdb on-disk entry format is pretty space-inefficient. Average
* sized user entries are 3-4K each. You need at least two entries to
* fit into a single database page, more is better. 64K is BDB's
- * upper bound. The same issues arise with IDLs in the index databases,
- * but it's nearly impossible to avoid overflows there.
- *
- * When using BDB_IDL_MULTI, the IDL size is no longer an issue. Smaller
- * pages are better for concurrency.
+ * upper bound. Smaller pages are better for concurrency.
*/
#ifndef BDB_ID2ENTRY_PAGESIZE
#define BDB_ID2ENTRY_PAGESIZE 16384
#endif
#ifndef BDB_PAGESIZE
-#ifdef BDB_IDL_MULTI
#define BDB_PAGESIZE 4096 /* BDB's original default */
-#else
-#define BDB_PAGESIZE 16384
-#endif
#endif
#define DEFAULT_CACHE_SIZE 1000
Avlnode *bi_tree;
ldap_pvt_thread_rdwr_t bi_tree_rdwr;
void *bi_troot;
- int bi_nrdns;
#endif
int bi_txn_cp;
u_int32_t bi_txn_cp_min;
u_int32_t bi_txn_cp_kbyte;
-#ifndef NO_THREADS
int bi_lock_detect;
- int bi_lock_detect_seconds;
- ldap_pvt_thread_t bi_lock_detect_tid;
-#endif
ID bi_lastid;
ldap_pvt_thread_mutex_t bi_lastid_mutex;
+#ifdef LDAP_CLIENT_UPDATE
+ LDAP_LIST_HEAD(pl, slap_op) psearch_list;
+#endif
};
#define bi_id2entry bi_databases[BDB_ID2ENTRY]
#define XLOCK_ID(env, locker) (env)->lock_id(env, locker)
#define XLOCK_ID_FREE(env, locker) (env)->lock_id_free(env, locker)
+/* BDB 4.1.17 adds txn arg to db->open */
+#if DB_VERSION_MINOR > 1 || DB_VERSION_PATCH >= 17
+#undef DB_OPEN
+#define DB_OPEN(db, file, name, type, flags, mode) \
+ (db)->open(db, NULL, file, name, type, (flags)|DB_AUTO_COMMIT, mode)
+#endif
+
#define BDB_REUSE_LOCKERS
#ifdef BDB_REUSE_LOCKERS
#define LOCK_ID(env, locker) XLOCK_ID(env, locker)
#endif
-#if DB_VERSION_MINOR > 1 || DB_VERSION_PATCH >= 17
-#undef DB_OPEN
-#define DB_OPEN(db, file, name, type, flags, mode) \
- (db)->open(db, NULL, file, name, type, (flags)|DB_AUTO_COMMIT, mode)
-#endif
-
#endif
LDAP_END_DECL