]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/proto-bdb.h
More hdb optimizing - cache subtree IDLs, not just onelevels
[openldap] / servers / slapd / back-bdb / proto-bdb.h
index 48f41659d1cdf44245180bdb56b6434b3fb229a2..a9a3b831560eac0568e5e8d3f563730389fbb27e 100644 (file)
@@ -31,30 +31,33 @@ LDAP_BEGIN_DECL
  */
 
 #define bdb_attr_mask                          BDB_SYMBOL(attr_mask)
+#define bdb_attr_flush                         BDB_SYMBOL(attr_flush)
 #define bdb_attr_index_config          BDB_SYMBOL(attr_index_config)
 #define bdb_attr_index_destroy         BDB_SYMBOL(attr_index_destroy)
+#define bdb_attr_index_free                    BDB_SYMBOL(attr_index_free)
+#define bdb_attr_index_unparse         BDB_SYMBOL(attr_index_unparse)
 
-#ifdef LDAP_COMP_MATCH
-#define bdb_attr_comp_ref                      BDB_SYMBOL(attr_comp_ref)
-#define bdb_attr_mask_cr                       BDB_SYMBOL(attr_mask_cr)
-void bdb_attr_comp_ref( struct bdb_info *bdb,
-       AttributeDescription *desc,
-       ComponentReference **cr );
-void bdb_attr_mask_cr( struct bdb_info *bdb,
-       AttributeDescription *desc,
-       slap_mask_t *indexmask,
-       ComponentReference **cr );
-#endif
+AttrInfo *bdb_attr_mask( struct bdb_info *bdb,
+       AttributeDescription *desc );
 
-void bdb_attr_mask( struct bdb_info *bdb,
-       AttributeDescription *desc,
-       slap_mask_t *indexmask );
+void bdb_attr_flush( struct bdb_info *bdb );
 
 int bdb_attr_index_config LDAP_P(( struct bdb_info *bdb,
        const char *fname, int lineno,
        int argc, char **argv ));
 
+void bdb_attr_index_unparse LDAP_P(( struct bdb_info *bdb, BerVarray *bva ));
 void bdb_attr_index_destroy LDAP_P(( Avlnode *tree ));
+void bdb_attr_index_free LDAP_P(( struct bdb_info *bdb,
+       AttributeDescription *ad ));
+
+/*
+ * config.c
+ */
+
+#define bdb_back_init_cf                               BDB_SYMBOL(back_init_cf)
+
+int bdb_back_init_cf( BackendInfo *bi );
 
 /*
  * dbcache.c
@@ -136,7 +139,9 @@ int bdb_fix_dn( Entry *e, int checkit );
 #if DB_VERSION_FULL < 0x04030000
 void bdb_errcall( const char *pfx, char * msg );
 #else
+#define bdb_msgcall                                    BDB_SYMBOL(msgcall)
 void bdb_errcall( const DB_ENV *env, const char *pfx, const char * msg );
+void bdb_msgcall( const DB_ENV *env, const char * msg );
 #endif
 
 #ifdef HAVE_EBCDIC
@@ -212,6 +217,8 @@ BI_entry_get_rw bdb_entry_get;
 #define bdb_idl_cache_get                      BDB_SYMBOL(idl_cache_get)
 #define bdb_idl_cache_put                      BDB_SYMBOL(idl_cache_put)
 #define bdb_idl_cache_del                      BDB_SYMBOL(idl_cache_del)
+#define bdb_idl_cache_add_id           BDB_SYMBOL(idl_cache_add_id)
+#define bdb_idl_cache_del_id           BDB_SYMBOL(idl_cache_del_id)
 
 int bdb_idl_cache_get(
        struct bdb_info *bdb,
@@ -233,12 +240,29 @@ bdb_idl_cache_del(
        DB              *db,
        DBT             *key );
 
+void
+bdb_idl_cache_add_id(
+       struct bdb_info *bdb,
+       DB              *db,
+       DBT             *key,
+       ID              id );
+
+void
+bdb_idl_cache_del_id(
+       struct bdb_info *bdb,
+       DB              *db,
+       DBT             *key,
+       ID              id );
+
 #define bdb_idl_first                          BDB_SYMBOL(idl_first)
 #define bdb_idl_next                           BDB_SYMBOL(idl_next)
 #define bdb_idl_search                         BDB_SYMBOL(idl_search)
 #define bdb_idl_insert                         BDB_SYMBOL(idl_insert)
 #define bdb_idl_intersection           BDB_SYMBOL(idl_intersection)
 #define bdb_idl_union                          BDB_SYMBOL(idl_union)
+#define bdb_idl_sort                           BDB_SYMBOL(idl_sort)
+#define bdb_idl_append                         BDB_SYMBOL(idl_append)
+#define bdb_idl_append_one                     BDB_SYMBOL(idl_append_one)
 
 #define bdb_idl_fetch_key                      BDB_SYMBOL(idl_fetch_key)
 #define bdb_idl_insert_key                     BDB_SYMBOL(idl_insert_key)
@@ -284,6 +308,9 @@ bdb_idl_union(
 ID bdb_idl_first( ID *ids, ID *cursor );
 ID bdb_idl_next( ID *ids, ID *cursor );
 
+void bdb_idl_sort( ID *ids, ID *tmp );
+int bdb_idl_append( ID *a, ID *b );
+int bdb_idl_append_one( ID *ids, ID id );
 
 
 /*
@@ -324,13 +351,6 @@ int bdb_index_entry LDAP_P(( Operation *op, DB_TXN *t, int r, Entry *e ));
 #define bdb_index_entry_del(op,t,e) \
        bdb_index_entry((op),(t),SLAP_INDEX_DELETE_OP,(e))
 
-/*
- * init.c
- */
-#define bdb_uuid                                       BDB_SYMBOL(uuid)
-
-extern struct berval bdb_uuid;
-
 /*
  * key.c
  */
@@ -409,7 +429,7 @@ void bdb_cache_return_entry_rw( DB_ENV *env, Cache *cache, Entry *e,
 #if 0
 void bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw );
 #else
-#define        bdb_unlocked_cache_return_entry_rw( a, b, c )
+#define        bdb_unlocked_cache_return_entry_rw( a, b, c )   ((void)0)
 #endif
 #define bdb_unlocked_cache_return_entry_r( c, e ) \
        bdb_unlocked_cache_return_entry_rw((c), (e), 0)
@@ -441,11 +461,11 @@ int bdb_cache_add(
        u_int32_t locker
 );
 int bdb_cache_modrdn(
+       struct bdb_info *bdb,
        Entry   *e,
        struct berval *nrdn,
        Entry   *new,
        EntryInfo *ein,
-       DB_ENV *env,
        u_int32_t locker,
        DB_LOCK *lock
 );
@@ -518,9 +538,9 @@ int bdb_cache_entry_db_unlock(
 #ifdef BDB_REUSE_LOCKERS
 
 #define bdb_locker_id                          BDB_SYMBOL(locker_id)
-int bdb_locker_id( Operation *op, DB_ENV *env, int *locker );
+int bdb_locker_id( Operation *op, DB_ENV *env, u_int32_t *locker );
 
-#define        LOCK_ID_FREE(env, locker)
+#define        LOCK_ID_FREE(env, locker)       ((void)0)
 #define        LOCK_ID(env, locker)    bdb_locker_id(op, env, locker)
 
 #else