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

ASF GitHub Bot commented on DRILL-4467:
---------------------------------------

Github user laurentgo closed the pull request at:

    https://github.com/apache/drill/pull/404


> Invalid projection created using PrelUtil.getColumns
> ----------------------------------------------------
>
>                 Key: DRILL-4467
>                 URL: https://issues.apache.org/jira/browse/DRILL-4467
>             Project: Apache Drill
>          Issue Type: Bug
>            Reporter: Laurent Goujon
>            Assignee: Jacques Nadeau
>            Priority: Critical
>             Fix For: 1.6.0
>
>
> In {{DrillPushProjIntoScan}}, a new scan and a new projection are created 
> using {{PrelUtil#getColumn(RelDataType, List<RexNode>)}}.
> The returned {{ProjectPushInfo}} instance has several fields, one of them is 
> {{desiredFields}} which is the list of projected fields. There's one instance 
> per {{RexNode}} but because instances were initially added to a set, they 
> might not be in the same order as the order they were created.
> The issue happens in the following code:
> {code:java}
>       List<RexNode> newProjects = Lists.newArrayList();
>       for (RexNode n : proj.getChildExps()) {
>         newProjects.add(n.accept(columnInfo.getInputRewriter()));
>       }
> {code}
> This code creates a new list of projects out of the initial ones, by mapping 
> the indices from the old projects to the new projects, but the indices of the 
> new RexNode instances might be out of order (because of the ordering of 
> desiredFields). And if indices are out of order, the check 
> {{ProjectRemoveRule.isTrivial(newProj)}} will fail.
> My guess is that desiredFields ordering should be preserved when instances 
> are added, to satisfy the condition above.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to