]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/filterindex.c
Merge remote branch 'origin/mdb.master'
[openldap] / servers / slapd / back-bdb / filterindex.c
index 6e9ec9d54032c633ac861b09f023868f1ae65439..a54ccf7cd16fdcc947eadb8026bac4e4af8edf86 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2000-2008 The OpenLDAP Foundation.
+ * Copyright 2000-2011 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -717,6 +717,20 @@ equality_candidates(
        Debug( LDAP_DEBUG_TRACE, "=> bdb_equality_candidates (%s)\n",
                        ava->aa_desc->ad_cname.bv_val, 0, 0 );
 
+       if ( ava->aa_desc == slap_schema.si_ad_entryDN ) {
+               EntryInfo *ei = NULL;
+               rc = bdb_cache_find_ndn( op, rtxn, &ava->aa_value, &ei );
+               if ( rc == LDAP_SUCCESS ) {
+                       /* exactly one ID can match */
+                       ids[0] = 1;
+                       ids[1] = ei->bei_id;
+               }
+               if ( ei ) {
+                       bdb_cache_entryinfo_unlock( ei );
+               }
+               return rc;
+       }
+
        BDB_IDL_ALL( bdb, ids );
 
        rc = bdb_index_param( op->o_bd, ava->aa_desc, LDAP_FILTER_EQUALITY,