X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-bdb%2Ffilterindex.c;h=d5a3108d8f59fea2622560960f26aea141c732b4;hb=23116be5aef2880cfbdb998778070c6813f2f130;hp=e88395f784277f0733963635dd86f22f48a0ae82;hpb=0c25783ceea79ab0365456e82a3f1f1f923154ad;p=openldap diff --git a/servers/slapd/back-bdb/filterindex.c b/servers/slapd/back-bdb/filterindex.c index e88395f784..d5a3108d8f 100644 --- a/servers/slapd/back-bdb/filterindex.c +++ b/servers/slapd/back-bdb/filterindex.c @@ -27,39 +27,39 @@ static int presence_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, AttributeDescription *desc, ID *ids ); static int equality_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, AttributeAssertion *ava, ID *ids, ID *tmp ); static int inequality_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, AttributeAssertion *ava, ID *ids, ID *tmp, int gtorlt ); static int approx_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, AttributeAssertion *ava, ID *ids, ID *tmp ); static int substring_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, SubstringsAssertion *sub, ID *ids, ID *tmp ); static int list_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, Filter *flist, int ftype, ID *ids, @@ -69,7 +69,7 @@ static int list_candidates( static int ext_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, MatchingRuleAssertion *mra, ID *ids, ID *tmp, @@ -79,7 +79,7 @@ ext_candidates( static int comp_candidates ( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, MatchingRuleAssertion *mra, ComponentFilter *f, ID *ids, @@ -89,7 +89,7 @@ comp_candidates ( static int ava_comp_candidates ( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, AttributeAssertion *ava, AttributeAliasing *aa, ID *ids, @@ -100,7 +100,7 @@ ava_comp_candidates ( int bdb_filter_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, Filter *f, ID *ids, ID *tmp, @@ -231,7 +231,7 @@ out: static int comp_list_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, MatchingRuleAssertion* mra, ComponentFilter *flist, int ftype, @@ -296,7 +296,7 @@ comp_list_candidates( static int comp_equality_candidates ( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, MatchingRuleAssertion *mra, ComponentAssertion *ca, ID *ids, @@ -344,9 +344,6 @@ comp_equality_candidates ( if( rc != LDAP_SUCCESS ) { return 0; } - if ( db == NULL ) { - return 0; - } if( !mr ) { return 0; @@ -410,7 +407,7 @@ comp_equality_candidates ( static int ava_comp_candidates ( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, AttributeAssertion *ava, AttributeAliasing *aa, ID *ids, @@ -434,7 +431,7 @@ ava_comp_candidates ( static int comp_candidates ( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, MatchingRuleAssertion *mra, ComponentFilter *f, ID *ids, @@ -483,7 +480,7 @@ comp_candidates ( static int ext_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, MatchingRuleAssertion *mra, ID *ids, ID *tmp, @@ -507,7 +504,7 @@ ext_candidates( BDB_IDL_ZERO( ids ); if ( mra->ma_rule == slap_schema.si_mr_distinguishedNameMatch ) { ei = NULL; - rc = bdb_cache_find_ndn( op, NULL, &mra->ma_value, &ei ); + rc = bdb_cache_find_ndn( op, locker, &mra->ma_value, &ei ); if ( rc == LDAP_SUCCESS ) bdb_idl_insert( ids, ei->bei_id ); if ( ei ) @@ -521,7 +518,7 @@ ext_candidates( struct berval pdn; ei = NULL; dnParent( &mra->ma_value, &pdn ); - bdb_cache_find_ndn( op, NULL, &pdn, &ei ); + bdb_cache_find_ndn( op, locker, &pdn, &ei ); if ( ei ) { bdb_cache_entryinfo_unlock( ei ); while ( ei && ei->bei_id ) { @@ -541,7 +538,7 @@ ext_candidates( scope = LDAP_SCOPE_BASE; if ( scope > LDAP_SCOPE_BASE ) { ei = NULL; - rc = bdb_cache_find_ndn( op, NULL, &mra->ma_value, &ei ); + rc = bdb_cache_find_ndn( op, locker, &mra->ma_value, &ei ); if ( ei ) bdb_cache_entryinfo_unlock( ei ); if ( rc == LDAP_SUCCESS ) { @@ -549,6 +546,7 @@ ext_candidates( op->ors_scope = scope; rc = bdb_dn2idl( op, locker, &mra->ma_value, ei, ids, stack ); + op->ors_scope = sc; } return 0; } @@ -562,7 +560,7 @@ ext_candidates( static int list_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, Filter *flist, int ftype, ID *ids, @@ -628,7 +626,7 @@ list_candidates( static int presence_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, AttributeDescription *desc, ID *ids ) { @@ -650,19 +648,19 @@ presence_candidates( rc = bdb_index_param( op->o_bd, desc, LDAP_FILTER_PRESENT, &db, &mask, &prefix ); - if( rc != LDAP_SUCCESS ) { + if( rc == LDAP_INAPPROPRIATE_MATCHING ) { + /* not indexed */ Debug( LDAP_DEBUG_TRACE, - "<= bdb_presence_candidates: (%s) index_param " - "returned=%d\n", - desc->ad_cname.bv_val, rc, 0 ); + "<= bdb_presence_candidates: (%s) not indexed\n", + desc->ad_cname.bv_val, 0, 0 ); return 0; } - if( db == NULL ) { - /* not indexed */ + if( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_TRACE, - "<= bdb_presence_candidates: (%s) not indexed\n", - desc->ad_cname.bv_val, 0, 0 ); + "<= bdb_presence_candidates: (%s) index_param " + "returned=%d\n", + desc->ad_cname.bv_val, rc, 0 ); return 0; } @@ -699,7 +697,7 @@ done: static int equality_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, AttributeAssertion *ava, ID *ids, ID *tmp ) @@ -721,18 +719,18 @@ equality_candidates( rc = bdb_index_param( op->o_bd, ava->aa_desc, LDAP_FILTER_EQUALITY, &db, &mask, &prefix ); - if( rc != LDAP_SUCCESS ) { + if ( rc == LDAP_INAPPROPRIATE_MATCHING ) { Debug( LDAP_DEBUG_ANY, - "<= bdb_equality_candidates: (%s) " - "index_param failed (%d)\n", - ava->aa_desc->ad_cname.bv_val, rc, 0 ); + "<= bdb_equality_candidates: (%s) not indexed\n", + ava->aa_desc->ad_cname.bv_val, 0, 0 ); return 0; } - if ( db == NULL ) { + if( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, - "<= bdb_equality_candidates: (%s) not indexed\n", - ava->aa_desc->ad_cname.bv_val, 0, 0 ); + "<= bdb_equality_candidates: (%s) " + "index_param failed (%d)\n", + ava->aa_desc->ad_cname.bv_val, rc, 0 ); return 0; } @@ -816,7 +814,7 @@ equality_candidates( static int approx_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, AttributeAssertion *ava, ID *ids, ID *tmp ) @@ -838,18 +836,18 @@ approx_candidates( rc = bdb_index_param( op->o_bd, ava->aa_desc, LDAP_FILTER_APPROX, &db, &mask, &prefix ); - if( rc != LDAP_SUCCESS ) { + if ( rc == LDAP_INAPPROPRIATE_MATCHING ) { Debug( LDAP_DEBUG_ANY, - "<= bdb_approx_candidates: (%s) " - "index_param failed (%d)\n", - ava->aa_desc->ad_cname.bv_val, rc, 0 ); + "<= bdb_approx_candidates: (%s) not indexed\n", + ava->aa_desc->ad_cname.bv_val, 0, 0 ); return 0; } - if ( db == NULL ) { + if( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, - "<= bdb_approx_candidates: (%s) not indexed\n", - ava->aa_desc->ad_cname.bv_val, 0, 0 ); + "<= bdb_approx_candidates: (%s) " + "index_param failed (%d)\n", + ava->aa_desc->ad_cname.bv_val, rc, 0 ); return 0; } @@ -936,7 +934,7 @@ approx_candidates( static int substring_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, SubstringsAssertion *sub, ID *ids, ID *tmp ) @@ -958,18 +956,18 @@ substring_candidates( rc = bdb_index_param( op->o_bd, sub->sa_desc, LDAP_FILTER_SUBSTRINGS, &db, &mask, &prefix ); - if( rc != LDAP_SUCCESS ) { + if ( rc == LDAP_INAPPROPRIATE_MATCHING ) { Debug( LDAP_DEBUG_ANY, - "<= bdb_substring_candidates: (%s) " - "index_param failed (%d)\n", - sub->sa_desc->ad_cname.bv_val, rc, 0 ); + "<= bdb_substring_candidates: (%s) not indexed\n", + sub->sa_desc->ad_cname.bv_val, 0, 0 ); return 0; } - if ( db == NULL ) { + if( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, - "<= bdb_substring_candidates: (%s) not indexed\n", - sub->sa_desc->ad_cname.bv_val, 0, 0 ); + "<= bdb_substring_candidates: (%s) " + "index_param failed (%d)\n", + sub->sa_desc->ad_cname.bv_val, rc, 0 ); return 0; } @@ -1052,7 +1050,7 @@ substring_candidates( static int inequality_candidates( Operation *op, - u_int32_t locker, + BDB_LOCKER locker, AttributeAssertion *ava, ID *ids, ID *tmp, @@ -1075,18 +1073,18 @@ inequality_candidates( rc = bdb_index_param( op->o_bd, ava->aa_desc, LDAP_FILTER_EQUALITY, &db, &mask, &prefix ); - if( rc != LDAP_SUCCESS ) { + if ( rc == LDAP_INAPPROPRIATE_MATCHING ) { Debug( LDAP_DEBUG_ANY, - "<= bdb_inequality_candidates: (%s) " - "index_param failed (%d)\n", - ava->aa_desc->ad_cname.bv_val, rc, 0 ); + "<= bdb_inequality_candidates: (%s) not indexed\n", + ava->aa_desc->ad_cname.bv_val, 0, 0 ); return 0; } - if ( db == NULL ) { + if( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, - "<= bdb_inequality_candidates: (%s) not indexed\n", - ava->aa_desc->ad_cname.bv_val, 0, 0 ); + "<= bdb_inequality_candidates: (%s) " + "index_param failed (%d)\n", + ava->aa_desc->ad_cname.bv_val, rc, 0 ); return 0; }