[teiid-issues] [JBoss JIRA] (TEIID-3937) Multiplying two columns in CASE statement overrides pushdown (Impala)

Steven Hawkins (JIRA) issues at jboss.org
Mon Feb 1 09:47:00 EST 2016


    [ https://issues.jboss.org/browse/TEIID-3937?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13157125#comment-13157125 ] 

Steven Hawkins commented on TEIID-3937:
---------------------------------------

After reproducing this locally, I see what is happening.  The translator is not marked as requiring a connection for the capabilities, so it is not looking automatically at the version.  You can workaround this by manually setting the databaseVersion property on the translator.  I'll fix the code for this as well.

> Multiplying two columns in CASE statement overrides pushdown (Impala)
> ---------------------------------------------------------------------
>
>                 Key: TEIID-3937
>                 URL: https://issues.jboss.org/browse/TEIID-3937
>             Project: Teiid
>          Issue Type: Bug
>          Components: JDBC Connector
>    Affects Versions: 8.12.4
>         Environment: Ubuntu Trusty
>            Reporter: Don Krapohl
>            Assignee: Steven Hawkins
>
> In the Impala translator, pushdown doesn't happen when two columns are multiplied in the THEN portion of a CASE statement with decimal data type.
> //this should push down but does not
> CASE WHEN column1  IS NOT NULL 
> THEN column1 * column2
> ELSE column3 END
> //but you can multiply the columns by a constant and it will push down
> CASE WHEN column1  IS NOT NULL 
> THEN column1 * 34567
> ELSE column3 END
> //or
> CASE WHEN column1  IS NOT NULL 
> THEN 34567 * column2
> ELSE column3 END
> //or casting to consistent datatypes with DECIMAL output
> CASE WHEN column1 IS NOT NULL 
> THEN cast(column1 as DECIMAL ) * cast(column2 as DECIMAL )
> ELSE cast(column3 as DECIMAL ) END
> //BUT output it as double with the cast statement above changed and it does push down (so floating point works)
> CASE WHEN column1 IS NOT NULL 
> THEN cast(column1 as double ) * cast(column2 as double)
> ELSE cast(column3 as double) END
> Source data types:
> Column1 is DECIMAL
> Column2 is BIGINT/LONG
> Column3 is DECIMAL
> Output column is DECIMAL



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the teiid-issues mailing list