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

Thomas Mueller updated OAK-1689:
--------------------------------

    Priority: Critical  (was: Major)

> XPath and union queries with "or" can return the same node multiple times
> -------------------------------------------------------------------------
>
>                 Key: OAK-1689
>                 URL: https://issues.apache.org/jira/browse/OAK-1689
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: query
>            Reporter: Thomas Mueller
>            Assignee: Thomas Mueller
>            Priority: Critical
>             Fix For: 1.0
>
>
> XPath queries that contain "or" with can in some cases return the same node 
> twice. Those queries are converted to "union", as follows, where the same 
> problem exists:
> {noformat}
> select [jcr:path], [jcr:score], * from ... 
> where contains(*, 'square') 
> union 
> select [jcr:path], [jcr:score], * from ... 
> where [x] = '1'
> {noformat}
> Currently, the results of both subqueries are combined with 
> "Iterators.concat(left.getRows(), right.getRows())" (Iterators is from Google 
> Guava). That means results of the first part of the union is executed, then 
> the result of the second query. This result is wrapped / filtered using 
> "FilterIterators.newCombinedFilter(it, distinct, limit, offset, orderBy, 
> settings)", which is Oak code. "distinct" is true for "union" and false for 
> "union all".
> Now, "distinct" operates on the result row object, which contains the path, 
> the score, and all property values. In previous versions, the "jcr:score" was 
> always a fixed value, but in the latest Oak version "jcr:score" is the value 
> returned from the index, which means the two rows are not equal:
> {noformat}
> path: /test/a, score: 0.5 (from the first subquery; Lucene index)
> path: /test/a, score: 0.0 (from the second subquery; property index)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to