[
https://issues.apache.org/jira/browse/OAK-6391?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Thomas Mueller resolved OAK-6391.
---------------------------------
Resolution: Fixed
> With FastQuerySize, getSize() returns -1 if there are exactly 21 rows
> ---------------------------------------------------------------------
>
> Key: OAK-6391
> URL: https://issues.apache.org/jira/browse/OAK-6391
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: query
> Reporter: Thomas Mueller
> Assignee: Thomas Mueller
> Priority: Critical
> Labels: candidate_oak_1_0, candidate_oak_1_2, candidate_oak_1_4,
> candidate_oak_1_6
> Fix For: 1.8, 1.7.3, 1.6.3
>
>
> If FastQuerySize is enabled, and the query result has exactly 21 rows, then
> getSize() returns -1. With 20 or 22 rows, the correct value is returned.
> Comment:
> One can not assume getSize() _always_ returns a value larger than 0.
> Sometimes, getSize() returns too many, it could also return too few; it is
> just an estimate. The loop used to read the rows should _only_ have
> "it.hasNext() && i < maxCount" as a condition. With maxCount for example 30.
> If the number of rows read is smaller than 30, then that's the real row
> count. If it's 30, then you can use getSize() as an estimation. That can
> still be -1 for "unknown", even with FastQuerySize enabled.
> But it's true that -1 is unexpected in this case.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)