[ 
https://issues.apache.org/jira/browse/DIRSERVER-933?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Emmanuel Lecharny resolved DIRSERVER-933.
-----------------------------------------

    Resolution: Fixed

Thanks Martin !!!

You have pretty sharp eyes :) I have totally missed this potential overflow. It 
has been fixed in http://svn.apache.org/viewvc?view=rev&rev=539036

I'm really impressed by the fact you went so deep into the server and found 
this nasty bug ;)

I mark this bug a resolved, as it seems that the previous fix solved your 
performance pb, just repopen it if it's not teh case.

Thanks !

> Slow searches using a non-indexed attribute in a filter
> -------------------------------------------------------
>
>                 Key: DIRSERVER-933
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-933
>             Project: Directory ApacheDS
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.5.0
>            Reporter: Martin Alderson
>            Priority: Critical
>             Fix For: 1.5.1
>
>
> When searching for entries in a specific container with a filter such as 
> (cn=*) and the cn attribute is not indexed, the server has to test each entry 
> in the partition even when the search has been restricted to a container.
> As an example of how bad this could be - if a partition contains millions of 
> entries and the user does a search in that partition within a container that 
> only contains 1 of those entries, every entry in the partition is checked in 
> turn even though the server knows there is only one entry within the 
> specified container.
> This is due to the search optimizer which annotates each part of the filter 
> with the number of entries that match where it can.  For those it can't (such 
> as with attributes that are not indexed) this 'count' will default to 
> Long.MAX_VALUE - to indicate that it is the worst case.  (See 
> org.apache.directory.server.core.partition.impl.btree.DefaultOptimizer).
> When these count annotations are checked to decide which part of the filter 
> to use first they are dropped down to integers which means the items with the 
> worst case value of Long.MAX_VALUE become -1 -- effectively making them the 
> best case.  (See 
> org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerator.enumConj).
> Disclaimer: I have not done any performance testing on this.  I just noticed 
> the problem while stepping through the code with a debugger.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to