From f8611a129626de801949388b0a0b090907b9192b Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Mon, 5 Nov 2001 17:25:44 +0000 Subject: [PATCH] Don't use indices to support not [!] filters. Use pres indices to support LE/GE [<=,>=] filters. --- servers/slapd/back-bdb/filterindex.c | 21 +++++++++------------ servers/slapd/back-bdb/idl.c | 2 ++ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/servers/slapd/back-bdb/filterindex.c b/servers/slapd/back-bdb/filterindex.c index df28e10753..3ea8a06cb1 100644 --- a/servers/slapd/back-bdb/filterindex.c +++ b/servers/slapd/back-bdb/filterindex.c @@ -85,27 +85,24 @@ bdb_filter_candidates( Debug( LDAP_DEBUG_FILTER, "\tSUBSTRINGS\n", 0, 0, 0 ); rc = substring_candidates( be, range, f->f_sub, ids ); break; -#endif case LDAP_FILTER_GE: + /* no GE index, use pres */ Debug( LDAP_DEBUG_FILTER, "\tGE\n", 0, 0, 0 ); - rc = 0; + rc = presence_candidates( be, range, f->f_desc, ids ); break; case LDAP_FILTER_LE: + /* no LE index, use pres */ Debug( LDAP_DEBUG_FILTER, "\tLE\n", 0, 0, 0 ); - rc = 0; + rc = presence_candidates( be, range, f->f_desc, ids ); break; +#endif - case LDAP_FILTER_NOT: { - ID tmp[BDB_IDL_UM_SIZE]; - - Debug( LDAP_DEBUG_FILTER, "\tNOT\n", 0, 0, 0 ); - rc = bdb_filter_candidates( be, range, f->f_not, tmp ); - if( rc == 0 ) { - rc = bdb_idl_notin( range, tmp, ids ); - } - } break; + case LDAP_FILTER_NOT: + /* no indexing to support NOT filters */ + Debug( LDAP_DEBUG_FILTER, "\tNOT\n", 0, 0, 0 ); + break; case LDAP_FILTER_AND: Debug( LDAP_DEBUG_FILTER, "\tAND\n", 0, 0, 0 ); diff --git a/servers/slapd/back-bdb/idl.c b/servers/slapd/back-bdb/idl.c index 4f096e911e..59d311a3aa 100644 --- a/servers/slapd/back-bdb/idl.c +++ b/servers/slapd/back-bdb/idl.c @@ -555,6 +555,7 @@ bdb_idl_union( } +#if 0 /* * bdb_idl_notin - return a intersection ~b (or a minus b) */ @@ -606,6 +607,7 @@ bdb_idl_notin( return 0; } +#endif ID bdb_idl_first( ID *ids, ID *cursor ) { -- 2.39.5