[teiid-issues] [JBoss JIRA] (TEIID-3937) Multiplying two columns in CASE statement overrides pushdown (Impala)
Don Krapohl (JIRA)
issues at jboss.org
Wed Jan 27 15:44:00 EST 2016
[ https://issues.jboss.org/browse/TEIID-3937?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Don Krapohl updated TEIID-3937:
-------------------------------
Description:
In the Impala translator, pushdown doesn't happen when two columns are multiplied in the THEN portion of a CASE statement with bigdecimal 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 BIGDECIMAL output
CASE WHEN column1 IS NOT NULL
THEN cast(column1 as BIGDECIMAL ) * cast(column2 as BIGDECIMAL )
ELSE cast(column3 as BIGDECIMAL ) 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 BIGDECIMAL
Column2 is BIGINT/LONG
Column3 is BIGDECIMAL
Output column is BIGDECIMAL
was:
Pushdown doesn't happen when two columns are multiplied in the THEN portion of a CASE statement with bigdecimal 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
We're ouputting as bigdecimal so that may be a factor in the decision to push down as double datatype does work.
> 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 bigdecimal 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 BIGDECIMAL output
> CASE WHEN column1 IS NOT NULL
> THEN cast(column1 as BIGDECIMAL ) * cast(column2 as BIGDECIMAL )
> ELSE cast(column3 as BIGDECIMAL ) 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 BIGDECIMAL
> Column2 is BIGINT/LONG
> Column3 is BIGDECIMAL
> Output column is BIGDECIMAL
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the teiid-issues
mailing list