[
https://issues.apache.org/jira/browse/DRILL-5538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16060080#comment-16060080
]
ASF GitHub Bot commented on DRILL-5538:
---------------------------------------
Github user jinfengni commented on a diff in the pull request:
https://github.com/apache/drill/pull/844#discussion_r123632779
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
---
@@ -459,7 +468,13 @@ protected Prel convertToPrel(RelNode drel) throws
RelConversionException, SqlUns
/* The order of the following transformations is important */
/*
- * 0.) For select * from join query, we need insert project on top of
scan and a top project just
+ * 0.)
+ * Add top project before screen operator or writer to ensure that
final output column names are preserved.
+ */
+ phyRelNode = TopProjectVisitor.insertTopProject(phyRelNode,
validatedRowType);
--- End diff --
Make sense to me that you put this Visitor handling first, after physical
transform() call, before these existing visitor handling.
> Create TopProject with validatedNodeType after PHYSICAL phase
> --------------------------------------------------------------
>
> Key: DRILL-5538
> URL: https://issues.apache.org/jira/browse/DRILL-5538
> Project: Apache Drill
> Issue Type: Bug
> Components: Query Planning & Optimization
> Affects Versions: 1.10.0
> Reporter: Arina Ielchiieva
> Assignee: Arina Ielchiieva
>
> When [RDBMS storage
> plugin|https://drill.apache.org/docs/rdbms-storage-plugin/] is enabled,
> during query execution certain JDBC rules are added.
> One of the rules is
> [ProjectRemoveRule|https://github.com/apache/drill/blob/master/contrib/storage-jdbc/src/main/java/org/apache/drill/exec/store/jdbc/JdbcStoragePlugin.java#L140].
> Drill also uses this rule but during phases when it considers it useful, for
> example, during LOGICAL and JOIN_PLANNING. On the contrary, storage plugin
> rules are added to any phase of query planning. Thus it results to project
> stage to be removed when actually it is needed.
> Sometimes when ProjectRemoveRule decides that project is trivial and removes
> it, during this stage Drill added column alias or removed implicit columns.
> For example, with RDBMS plugin enabled, alias is not displayed for simple
> query:
> {noformat}
> 0: jdbc:drill:zk=local> create temporary table t as select * from sys.version;
> SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
> SLF4J: Defaulting to no-operation (NOP) logger implementation
> SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further
> details.
> +-----------+----------------------------+
> | Fragment | Number of records written |
> +-----------+----------------------------+
> | 0_0 | 1 |
> +-----------+----------------------------+
> 1 row selected (0.623 seconds)
> 0: jdbc:drill:zk=local> select version as current_version from t;
> +------------------+
> | version |
> +------------------+
> | 1.11.0-SNAPSHOT |
> +------------------+
> 1 row selected (0.28 seconds)
> {noformat}
> Proposed fix is to move the creating of TopProject with validatedNodeType
> after physical planning is done.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)