LDAP_BEGIN_DECL
-/* #define BDB_HIER 1 */
+#define BDB_SUBENTRIES 1
#define DN_BASE_PREFIX SLAP_INDEX_EQUALITY_PREFIX
#define DN_ONE_PREFIX '%'
#define BDB_SUFFIX ".bdb"
#define BDB_ID2ENTRY 0
-#ifdef BDB_HIER
-#define BDB_ID2PARENT 1
-#else
#define BDB_DN2ID 1
-#endif
#define BDB_NDB 2
/* The bdb on-disk entry format is pretty space-inefficient. Average
int bei_state;
#define CACHE_ENTRY_DELETED 1
#define CACHE_ENTRY_NO_KIDS 2
+#define CACHE_ENTRY_NOT_LINKED 4
/*
* remaining fields require backend cache lock to access
*/
struct berval bei_nrdn;
+#ifdef BDB_HIER
struct berval bei_rdn;
+ int bei_modrdns; /* track renames */
+ int bei_ckids; /* number of kids cached */
+ int bei_dkids; /* number of kids on-disk, plus 1 */
+#endif
Entry *bei_e;
Avlnode *bei_kids;
ldap_pvt_thread_mutex_t bei_kids_mutex;
Avlnode *bi_attrs;
void *bi_search_stack;
int bi_search_stack_depth;
-#ifdef BDB_HIER
- Avlnode *bi_tree;
- ldap_pvt_thread_rdwr_t bi_tree_rdwr;
- void *bi_troot;
-#endif
int bi_txn_cp;
u_int32_t bi_txn_cp_min;
ID bi_lastid;
ldap_pvt_thread_mutex_t bi_lastid_mutex;
-#if defined(LDAP_CLIENT_UPDATE) || defined(LDAP_SYNC)
LDAP_LIST_HEAD(pl, slap_op) bi_psearch_list;
-#endif
#ifdef SLAP_IDL_CACHE
int bi_idl_cache_max_size;
int bi_idl_cache_size;
(db)->open(db, txn, file, name, type, flags, mode)
#endif
-#define BDB_REUSE_LOCKERS
-
-#ifdef BDB_REUSE_LOCKERS
-#define LOCK_ID_FREE(env, locker)
-#define LOCK_ID(env, locker) bdb_locker_id(op, env, locker)
-#else
-#define LOCK_ID_FREE(env, locker) XLOCK_ID_FREE(env, locker)
-#define LOCK_ID(env, locker) XLOCK_ID(env, locker)
#endif
-#endif
+#define BDB_REUSE_LOCKERS
+
+#define BDB_CSN_COMMIT 0
+#define BDB_CSN_ABORT 1
+#define BDB_CSN_RETRY 2
LDAP_END_DECL