[
https://issues.apache.org/jira/browse/DRILL-5920?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul Rogers resolved DRILL-5920.
--------------------------------
Resolution: Not A Bug
> Drill incorrectly projects column aliases to scan operator
> ----------------------------------------------------------
>
> Key: DRILL-5920
> URL: https://issues.apache.org/jira/browse/DRILL-5920
> Project: Apache Drill
> Issue Type: Bug
> Affects Versions: 1.10.0
> Reporter: Paul Rogers
> Priority: Major
>
> The {{TestNewTextReader.ensureColumnNameDisplayedinError}} unit test runs
> this query:
> {code}
> select max(columns[1]) as col1
> from cp.`textinput/input1.csv`
> where col1 is not null
> {code}
> The following appears in the {{SubScan}} for the {{TextFormatPlugin}}:
> {noformat}
> [`col1`, `columns`[1]]
> {noformat}
> This is clearly wrong. The actual table column is {{columns}} (and,
> specifically, element 1.) {{col1} is an alias that should never have been
> pushed down to the data source because the data source does not know about
> aliases.
> Further, the projection list makes no distinction between the "real" and
> "alias" columns, so, to the data source, both look like real table columns.
> The current workaround is to create a nullable int column for {{col1}} which
> is, presumably, replaced by a later projection operator.
> Because this behavior is wrong, we must think though all the possible failure
> cases and how to handle them in this incorrect design. What if the alias
> matches an (expensive) table column? What if the alias is the same as some
> base column in the same query?
> {code}
> SELECT a as b, b as c FROM ...
> {code}
> Incorrect name handling may work in many cases, but it does lead to problems
> because the behavior is not following the accepted SQL standards.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)