mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
Don't use indices to support not [!] filters.
Use pres indices to support LE/GE [<=,>=] filters.
This commit is contained in:
parent
b6ff5c4d50
commit
f8611a1296
@ -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];
|
||||
|
||||
case LDAP_FILTER_NOT:
|
||||
/* no indexing to support NOT filters */
|
||||
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;
|
||||
break;
|
||||
|
||||
case LDAP_FILTER_AND:
|
||||
Debug( LDAP_DEBUG_FILTER, "\tAND\n", 0, 0, 0 );
|
||||
|
@ -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 )
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user