Commit 4ddb7c57 authored by Howard Chu's avatar Howard Chu
Browse files

Use a 4-byte constant for the presence index key. Set the index db hash

function to simply pass thru the key value, which is already a hash value.
parent bf61a1ca
......@@ -17,6 +17,23 @@
#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
......
......@@ -14,6 +14,10 @@
#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;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment