[ https://issues.apache.org/jira/browse/DRILL-4467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jacques Nadeau resolved DRILL-4467. ----------------------------------- Resolution: Fixed Fixed with edea8b1cf4e5476d803e8b87c79e08e8c3263e04 > 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)