[ 
https://issues.apache.org/jira/browse/PHOENIX-2714?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15167530#comment-15167530
 ] 

James Taylor commented on PHOENIX-2714:
---------------------------------------

Even though it may not be necessary in calcite, I think it'd make sense to 
expose this in QueryPlan and do the summations ourselves. Also, since we have 
at least a few weeks before 4.8, I think we should do the rest of the work I 
mentioned above and avoid the code duplication. Not sure it's necessary to make 
it static either. Getting the tree of iterators through the 
QueryPlan.iterators() method is not an expensive operation (it shouldn't cause 
any execution to occur - if it does we should fix that), so for calcite, we 
could just call this to get our cost information (at least for now). That way, 
we'll get accurate row/byte count for all our queries which would be nice. 
WDYT? 

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

Reply via email to