Cédric Damioli created JCR-3401:
-----------------------------------
Summary: Wrong results when querying with a DescendantSelfAxisQuery
Key: JCR-3401
URL: https://issues.apache.org/jira/browse/JCR-3401
Project: Jackrabbit Content Repository
Issue Type: Bug
Components: jackrabbit-core, query
Affects Versions: 2.5, 2.4.2
Reporter: Cédric Damioli
Fix For: 2.4.3, 2.5.1, 2.6
It seems to be caused by the DescendantSelfAxisScorer in the method advance(int
target) :
{code}
public int advance(int target) throws IOException {
if (currentDoc == NO_MORE_DOCS) {
return currentDoc;
}
// optimize in the case of an advance to finish.
// see https://issues.apache.org/jira/browse/JCR-3082
if (target == NO_MORE_DOCS) {
subScorer.advance(target);
currentDoc = NO_MORE_DOCS;
return currentDoc;
}
currentDoc = subScorer.nextDoc();
if (currentDoc == NO_MORE_DOCS) {
return NO_MORE_DOCS;
} else {
collectContextHits();
return isValid(currentDoc) ? currentDoc : nextDoc();
}
}
{code}
It seems to me that we should have:
{code}
currentDoc = subScorer.advance(target)
{code}
instead of:
{code}
currentDoc = subScorer.nextDoc();
{code}
I could provide a patch but I don't know if this is necessary for a single line
of code.
Moreover, I don't know if my fix is ok, as I'm not sure to fully understand the
whole picture.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira