drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Laurent Goujon (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DRILL-4467) Invalid projection created using PrelUtil.getColumns
Date Wed, 02 Mar 2016 22:21:18 GMT
Laurent Goujon created DRILL-4467:
-------------------------------------

             Summary: 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


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)

Mime
View raw message