[ 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)