You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Arina Ielchiieva (JIRA)" <ji...@apache.org> on 2017/06/15 12:05:00 UTC

[jira] [Updated] (DRILL-5538) Exclude ProjectRemoveRule during PHYSICAL phase if it comes from storage plugins

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

Arina Ielchiieva updated DRILL-5538:
------------------------------------
    Description: 
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.

  was:
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 exclude ProjectRemoveRule during PHYSICAL phase if it comes from storage plugins to prevent Drill losing column alias or displaying implicit columns.


> Exclude ProjectRemoveRule during PHYSICAL phase if it comes from storage plugins
> --------------------------------------------------------------------------------
>
>                 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)