Maryann Xue resolved PHOENIX-3279.
    Resolution: Fixed

Committed. Thank you, [~jamestaylor], for the review!

> QueryPlan.iterator(ParallelScanGrouper scanGrouper) should pass null 
> ('unknown') as scan parameter when calling this.iterator(ParallelScanGrouper 
> scanGrouper, Scan scan)
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>                 Key: PHOENIX-3279
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3279
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.8.0
>            Reporter: Maryann Xue
>            Assignee: Maryann Xue
>             Fix For: 4.9.0
>         Attachments: PHOENIX-3279.patch
> This issue was introduced by PHOENIX-2628, and it caused a regression in 
> CalciteIT after calcite branch was synced with master branch.
> In most implementations of QueryPlan.iterator(ParallelScanGrouper 
> scanGrouper), the QueryPlan calls this.iterator(ParallelScanGrouper 
> scanGrouper, Scan scan) with a Scan object it gets from its inner QueryPlan. 
> This logic is actually wrong when a ScanPlan (or AggregatePlan) is nested in 
> two or more DelegateQueryPlans. For example, 
> TupleProjectionPlan(ClientScanPlan(ScanPlan), the TupleProjectionPlan will 
> pass the ClientScanPlan.getContext().getScan() to 
> ClientScanPlan.iterator(ParallelScanGrouper scanGrouper, Scan scan), and in 
> turn to ScanPlan.iterator(ParallelScanGrouper scanGrouper, Scan scan), which 
> will shadow the original Scan object in the ScanPlan.
> It would be better to just pass "null" in indicate "unknown" in this case. 
> The QueryPlan which does care about the Scan object, which is mostly 
> BaseQueryPlan, will have to handle this "null" value.

This message was sent by Atlassian JIRA

Reply via email to