#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(
}
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
#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,
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;
}