]> git.sur5r.net Git - openldap/commitdiff
Use a 4-byte constant for the presence index key. Set the index db hash
authorHoward Chu <hyc@openldap.org>
Sun, 16 Dec 2001 14:21:47 +0000 (14:21 +0000)
committerHoward Chu <hyc@openldap.org>
Sun, 16 Dec 2001 14:21:47 +0000 (14:21 +0000)
function to simply pass thru the key value, which is already a hash value.

servers/slapd/back-bdb/dbcache.c
servers/slapd/back-bdb/index.c

index 5e2d6dd41b0c1ddabbef3322871b92388b58fbcd..10a937c101b479d54b16d1a9aadd2b6051d0f963 100644 (file)
 
 #include "slap.h"
 #include "back-bdb.h"
+#include "lutil_hash.h"
+
+/* Pass-thru hash function. Since the indexer is already giving us hash
+ * values as keys, we don't need BDB to re-hash them.
+ */
+#if LUTIL_HASH_BYTES == 4
+static u_int32_t
+bdb_db_hash(
+       DB *db,
+       const void *bytes,
+       u_int32_t length
+)
+{
+       u_int32_t *ret = (u_int32_t *)bytes;
+       return *ret;
+}
+#endif
 
 int
 bdb_db_cache(
@@ -69,6 +86,9 @@ bdb_db_cache(
        }
 
        rc = db->bdi_db->set_pagesize( db->bdi_db, BDB_PAGESIZE );
+#if LUTIL_HASH_BYTES == 4
+       rc = db->bdi_db->set_h_hash( db->bdi_db, bdb_db_hash );
+#endif
 #ifdef BDB_IDL_MULTI
        rc = db->bdi_db->set_flags( db->bdi_db, DB_DUP | DB_DUPSORT );
 #endif
index b91dabec99ad08f5ce089b356cba3c40d98fbe4e..816f0abf426b56f12a401c099f8df8afcb0b695b 100644 (file)
 
 #include "slap.h"
 #include "back-bdb.h"
+#include "lutil_hash.h"
+
+static char presence_keyval[LUTIL_HASH_BYTES] = {0,0,0,1};
+struct berval presence_key = {LUTIL_HASH_BYTES, presence_keyval};
 
 static slap_mask_t index_mask(
        Backend *be,
@@ -169,7 +173,7 @@ static int indexer(
        if( rc != LDAP_SUCCESS ) return rc;
 
        if( IS_SLAP_INDEX( mask, SLAP_INDEX_PRESENT ) ) {
-               rc = bdb_key_change( be, db, txn, atname, id, op );
+               rc = bdb_key_change( be, db, txn, &presence_key, id, op );
                if( rc ) {
                        goto done;
                }