Don't use indices to support not [!] filters.

Use pres indices to support LE/GE [<=,>=] filters.
This commit is contained in:
Kurt Zeilenga 2001-11-05 17:25:44 +00:00
parent b6ff5c4d50
commit f8611a1296
2 changed files with 11 additions and 12 deletions

View File

@ -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 );

View File

@ -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 )
{