Hi Alex,

We need both the entries that don't pass the specified filter for the attribute, and those that don't have the attribute at all. We would need a way to get all entries that are not contained in the index for the attribute and a way to join that enumeration to the one we had in the old code (which should be easy enough with a JoinedEnumeration class).

I think the current attribute indices need to be modified to store a list of entries that do not have the attribute. Each index will then take up a bit more space. All existing ApacheDS installations would also need their attribute indices rebuilding too.

What do you think?

Martin


Alex Karasulu wrote:
Is there no way to use indices with searches that use a negation operator in
the filter?  I'm feeling
like perhaps we're nixing out the whole thing to solve the problem.  Then
again what's the performance
impact of a full master scan verses a full index scan.

Alex

On 8/18/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Author: malderson
Date: Sat Aug 18 11:24:21 2007
New Revision: 567310

URL: http://svn.apache.org/viewvc?view=rev&rev=567310
Log:
Fix for DIRSERVER-951, where a search with a negated filter on an indexed
attribute won't find entries without the attribute.

Modified:

    
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/DefaultOptimizer.java

    
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/ExpressionEnumerator.java

    
directory/apacheds/trunk/server-unit/src/test/java/org/apache/directory/server/DIRSERVER951ITest.java


Reply via email to