You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Jacques Nadeau (JIRA)" <ji...@apache.org> on 2016/03/04 07:44:40 UTC

[jira] [Updated] (DRILL-4467) Invalid projection created using PrelUtil.getColumns

     [ https://issues.apache.org/jira/browse/DRILL-4467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jacques Nadeau updated DRILL-4467:
----------------------------------
    Priority: Critical  (was: Major)

> 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: Laurent Goujon
>            Priority: Critical
>
> 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)