From c41df6ed075e501a2d436a13ad279c2876baa7ac Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Tue, 4 Nov 2008 12:16:23 +0000 Subject: [PATCH] lookup entry id when equality on entryDN (ITS#5791; fixes previous commit) --- servers/slapd/back-bdb/filterindex.c | 30 +++++++--------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/servers/slapd/back-bdb/filterindex.c b/servers/slapd/back-bdb/filterindex.c index 9c823ad9a6..31fd91b342 100644 --- a/servers/slapd/back-bdb/filterindex.c +++ b/servers/slapd/back-bdb/filterindex.c @@ -697,28 +697,6 @@ done: return rc; } -static int -dn_equality_candidate( - Operation *op, - DB_TXN *rtxn, - struct berval *ndn, - ID *ids ) -{ - struct bdb_info *bdb = (struct bdb_info *) op->o_bd->be_private; - EntryInfo ei = { 0 }; - DB_LOCK lock; - int rc; - - lock.mode = DB_LOCK_NG; - rc = bdb_dn2id( op, ndn, &ei, rtxn, &lock ); - if ( rc == 0 ) { - BDB_IDL_RANGE( ids, ei.bei_id, ei.bei_id ); - bdb_cache_entry_db_unlock( bdb, &lock ); - } - - return rc; -} - static int equality_candidates( Operation *op, @@ -740,7 +718,13 @@ equality_candidates( ava->aa_desc->ad_cname.bv_val, 0, 0 ); if ( ava->aa_desc == slap_schema.si_ad_entryDN ) { - return dn_equality_candidate( op, rtxn, &ava->aa_value, ids ); + EntryInfo *ei = NULL; + rc = bdb_cache_find_ndn( op, rtxn, &ava->aa_value, &ei ); + if ( rc == LDAP_SUCCESS ) + bdb_idl_insert( ids, ei->bei_id ); + if ( ei ) + bdb_cache_entryinfo_unlock( ei ); + return rc; } BDB_IDL_ALL( bdb, ids ); -- 2.39.5