[
https://issues.apache.org/jira/browse/PHOENIX-2714?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15167851#comment-15167851
]
James Taylor commented on PHOENIX-2714:
---------------------------------------
One other thought - you could instantiate the concrete BaseResultIterators in
the QueryPlan constructor instead of later in the iterators() method - that way
all the information will be immediately available. That might make it easier
for this to cooperate with the way calcite will use the row/byte count
estimates.
> Correct byte estimate in BaseResultIterators and expose as interface
> --------------------------------------------------------------------
>
> Key: PHOENIX-2714
> URL: https://issues.apache.org/jira/browse/PHOENIX-2714
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 4.7.0
> Reporter: Maryann Xue
> Assignee: Maryann Xue
> Labels: statistics
> Fix For: 4.8.0
>
> Attachments: PHOENIX-2714.patch
>
>
> The bytes are accumulated even if the range intersect is empty (produces a
> null scan).
> {code}
> while (guideIndex < gpsSize &&
> (currentGuidePost.compareTo(endKey) <= 0 || endKey.length == 0)) {
> Scan newScan = scanRanges.intersectScan(scan,
> currentKeyBytes, currentGuidePostBytes, keyOffset,
> false);
> estimatedRows += gps.getRowCounts().get(guideIndex);
> estimatedSize += gps.getByteCounts().get(guideIndex);
> scans = addNewScan(parallelScans, scans, newScan,
> currentGuidePostBytes, false, regionLocation);
> currentKeyBytes = currentGuidePost.copyBytes();
> currentGuidePost = PrefixByteCodec.decode(decoder, input);
> currentGuidePostBytes = currentGuidePost.copyBytes();
> guideIndex++;
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)