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

Chetan Mehrotra updated OAK-5449:
---------------------------------
    Fix Version/s: 1.8

> Cost calculation for one matching property restriction/sorting results in 
> selection of wrong index
> --------------------------------------------------------------------------------------------------
>
>                 Key: OAK-5449
>                 URL: https://issues.apache.org/jira/browse/OAK-5449
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: lucene
>    Affects Versions: 1.4.10
>            Reporter: Volker Schmidt
>            Assignee: Chetan Mehrotra
>             Fix For: 1.8
>
>
> The method IndexPlanner.getPlanBuilder() for Lucene indexes contains at the 
> end an algorithm that calculates a costPerEntryFactor. If there is no 
> restriction property or sort property the factor will be the same like for 
> one restriction property or sort property. 
> If there are two indexes for which the cost is calculated, the cost must not 
> be the same. E.g. if there is a large result set that can be sorted with one 
> index but not with the other index, the index that supports sorting should be 
> used.
> The following code snippet:
> if (costPerEntryFactor == 0) {
>   costPerEntryFactor = 1;
> }
> should be changed to something like this (assuming costPerEntryFactor will be 
> changed to double value and will be rounded after division at the end of the 
> method):
> if (costPerEntryFactor == 1.0) {
>   // one matching restriction or sort property
>   costPerEntryFactor = 1.5;
> }
> else if (costPerEntryFactor == 0.0) {
>   // no matching restriction or sort property
>   costPerEntryFactor = 1.0;
> }
> Furthermore, since the found indexes are stored in a hashed collection, the 
> order of the index evaluation and the resulting index (when cost is the same 
> for more than one lucene based index) is non deterministic. This increases 
> the issue with the code above.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to