/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2000-2007 The OpenLDAP Foundation.
+ * Copyright 2000-2008 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
int
bdb_db_cache(
Backend *be,
- const char *name,
+ struct berval *name,
DB **db );
/*
int bdb_dn2id(
Operation *op,
- DB_TXN *tid,
struct berval *dn,
- EntryInfo *ei );
+ EntryInfo *ei,
+ BDB_LOCKER locker,
+ DB_LOCK *lock );
int bdb_dn2id_add(
Operation *op,
#ifdef BDB_HIER
#define bdb_dn2id_parent BDB_SYMBOL(dn2id_parent)
+#define bdb_dup_compare BDB_SYMBOL(dup_compare)
#define bdb_fix_dn BDB_SYMBOL(fix_dn)
int bdb_dn2id_parent(
Operation *op,
- DB_TXN *txn,
BDB_LOCKER locker,
EntryInfo *ei,
ID *idp );
+int bdb_dup_compare(
+ DB *db,
+ const DBT *usrkey,
+ const DBT *curkey );
+
int bdb_fix_dn( Entry *e, int checkit );
#endif
/*
* index.c
*/
-#define bdb_index_is_indexed BDB_SYMBOL(index_is_indexed)
+#define bdb_index_mask BDB_SYMBOL(index_mask)
#define bdb_index_param BDB_SYMBOL(index_param)
#define bdb_index_values BDB_SYMBOL(index_values)
#define bdb_index_entry BDB_SYMBOL(index_entry)
#define bdb_index_recset BDB_SYMBOL(index_recset)
#define bdb_index_recrun BDB_SYMBOL(index_recrun)
-extern int
-bdb_index_is_indexed LDAP_P((
+extern AttrInfo *
+bdb_index_mask LDAP_P((
Backend *be,
- AttributeDescription *desc ));
+ AttributeDescription *desc,
+ struct berval *name ));
extern int
bdb_index_param LDAP_P((
#define bdb_next_id BDB_SYMBOL(next_id)
#define bdb_last_id BDB_SYMBOL(last_id)
-int bdb_next_id( BackendDB *be, DB_TXN *tid, ID *id );
+int bdb_next_id( BackendDB *be, ID *id );
int bdb_last_id( BackendDB *be, DB_TXN *tid );
/*
* cache.c
*/
#define bdb_cache_entry_db_unlock BDB_SYMBOL(cache_entry_db_unlock)
+#define bdb_cache_return_entry_rw BDB_SYMBOL(cache_return_entry_rw)
#define bdb_cache_entryinfo_lock(e) \
ldap_pvt_thread_mutex_lock( &(e)->bei_kids_mutex )
/* What a mess. Hopefully the current cache scheme will stabilize
* and we can trim out all of this stuff.
*/
-#if 0
void bdb_cache_return_entry_rw( struct bdb_info *bdb, Entry *e,
int rw, DB_LOCK *lock );
-#else
-#define bdb_cache_return_entry_rw( bdb, e, rw, lock ) \
- bdb_cache_entry_db_unlock( bdb, lock )
-#define bdb_cache_return_entry( bdb, lock ) \
- bdb_cache_entry_db_unlock( bdb, lock )
-#endif
#define bdb_cache_return_entry_r(bdb, e, l) \
bdb_cache_return_entry_rw((bdb), (e), 0, (l))
#define bdb_cache_return_entry_w(bdb, e, l) \
);
int bdb_cache_find_ndn(
Operation *op,
- DB_TXN *txn,
+ BDB_LOCKER locker,
struct berval *ndn,
EntryInfo **res
);
struct bdb_info *bdb,
ID id
);
+
+#define ID_LOCKED 1
+#define ID_NOCACHE 2
int bdb_cache_find_id(
Operation *op,
DB_TXN *tid,
ID id,
EntryInfo **eip,
- int islocked,
+ int flag,
BDB_LOCKER locker,
DB_LOCK *lock
);
int
bdb_cache_find_parent(
Operation *op,
- DB_TXN *txn,
BDB_LOCKER locker,
ID id,
EntryInfo **res