[JBoss JIRA] (TEIID-3937) Multiplying two columns in CASE statement overrides pushdown (Impala)
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3937?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-3937:
---------------------------------------
> If you tell me how you call I may be able to see how it comes back.
We are using DatabaseMetaData.getDatabaseProductVersion() from Connection.getMetaData()
> Issue is the same with DECIMAL data type.
Decimal and BigDecimal are synonymous for Teiid.
> Multiplying two columns in CASE statement overrides pushdown (…
[View More]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)
[View Less]
9 years, 2 months
[JBoss JIRA] (TEIID-3937) Multiplying two columns in CASE statement overrides pushdown (Impala)
by Don Krapohl (JIRA)
[ https://issues.jboss.org/browse/TEIID-3937?page=com.atlassian.jira.plugin... ]
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 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 …
[View More]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
was:
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
> 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)
[View Less]
9 years, 2 months
[JBoss JIRA] (TEIID-3937) Multiplying two columns in CASE statement overrides pushdown (Impala)
by Don Krapohl (JIRA)
[ https://issues.jboss.org/browse/TEIID-3937?page=com.atlassian.jira.plugin... ]
Don Krapohl commented on TEIID-3937:
------------------------------------
Corrected data type descriptions. Issue is the same with DECIMAL data type.
> Multiplying two columns in CASE statement overrides pushdown (Impala)
> ---------------------------------------------------------------------
>
> Key: TEIID-3937
> URL: https://issues.jboss.org/browse/TEIID-3937
&…
[View More]gt; 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)
[View Less]
9 years, 2 months
[JBoss JIRA] (TEIID-3816) Informix translator - <> ALL is translated as NOT IN - this statement seem to not work in Infromix
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3816?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-3816:
---------------------------------------
There are several related bugs with Informix here dealing with a boolean subquery that returns a single row. Informix will ignore the NOT with an IN predicate, and has the results for <> ALL and = ALL flipped.
Since this is such a specific scenario and there isn't a simple compensation that we can do at the translator level, …
[View More]I would vote for making a KI out of this.
> Informix translator - <> ALL is translated as NOT IN - this statement seem to not work in Infromix
> --------------------------------------------------------------------------------------------------
>
> Key: TEIID-3816
> URL: https://issues.jboss.org/browse/TEIID-3816
> Project: Teiid
> Issue Type: Bug
> Affects Versions: 8.7.2.6_2
> Reporter: Juraj Duráni
> Assignee: Steven Hawkins
> Fix For: 8.12.x
>
>
> Query:
> {code:sql}
> SELECT INTKEY, BOOLEANVALUE FROM BQT1.SMALLA WHERE BOOLEANVALUE <> ALL (SELECT BOOLEANVALUE FROM BQT1.SMALLA WHERE INTKEY = 40)
> {code}
> Source-specific command:
> {code:sql}
> SELECT g_0.IntKey, g_0.BooleanValue FROM Source.SmallA AS g_0 WHERE g_0.BooleanValue NOT IN (SELECT g_1.BooleanValue FROM Source.SmallA AS g_1 WHERE g_1.IntKey = 40)
> {code}
> *Note: boolean value for row where Intkey = 40 is false.*
> Expected result:
> |intkey|booleanvalue|
> |1|true|
> |...|...|
> Actual result:
> |intkey|booleanvalue|
> |0|false|
> |...|...|
> This seems to be an Informix issue as neither '<> ALL' nor 'NOT IN' works.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
[View Less]
9 years, 2 months
[JBoss JIRA] (TEIID-3816) Informix translator - <> ALL is translated as NOT IN - this statement seem to not work in Infromix
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3816?page=com.atlassian.jira.plugin... ]
Steven Hawkins updated TEIID-3816:
----------------------------------
Description:
Query:
{code:sql}
SELECT INTKEY, BOOLEANVALUE FROM BQT1.SMALLA WHERE BOOLEANVALUE <> ALL (SELECT BOOLEANVALUE FROM BQT1.SMALLA WHERE INTKEY = 40)
{code}
Source-specific command:
{code:sql}
SELECT g_0.IntKey, g_0.BooleanValue FROM Source.SmallA AS g_0 WHERE g_0.BooleanValue NOT IN (SELECT g_1.BooleanValue FROM Source.…
[View More]SmallA AS g_1 WHERE g_1.IntKey = 40)
{code}
*Note: boolean value for row where Intkey = 40 is false.*
Expected result:
|intkey|booleanvalue|
|1|true|
|...|...|
Actual result:
|intkey|booleanvalue|
|0|false|
|...|...|
This seems to be an Informix issue as neither '<> ALL' nor 'NOT IN' works.
was:
Query:
{code:sql}
SELECT INTKEY, BOOLEANVALUE FROM BQT1.SMALLA WHERE BOOLEANVALUE <> ALL (SELECT BOOLEANVALUE FROM BQT1.SMALLA WHERE INTKEY = 40)
{code}
Source-specific command:
{code:sql}
SELECT g_0.IntKey, g_0.BooleanValue FROM Source.SmallA AS g_0 WHERE g_0.BooleanValue NOT IN (SELECT g_1.BooleanValue FROM Source.SmallA AS g_1 WHERE g_1.IntKey = 40)
{code}
*Note: boolean value for row where Intkey = 40 is false.*
Expected result:
|intkey|booleanvalue|
|1|true|
|...|...|
Actual result:
|intkey|booleanvalue|
|1|false|
|...|...|
This seems to be an Informix issue as neither '<> ALL' nor 'NOT IN' works.
> Informix translator - <> ALL is translated as NOT IN - this statement seem to not work in Infromix
> --------------------------------------------------------------------------------------------------
>
> Key: TEIID-3816
> URL: https://issues.jboss.org/browse/TEIID-3816
> Project: Teiid
> Issue Type: Bug
> Affects Versions: 8.7.2.6_2
> Reporter: Juraj Duráni
> Assignee: Steven Hawkins
> Fix For: 8.12.x
>
>
> Query:
> {code:sql}
> SELECT INTKEY, BOOLEANVALUE FROM BQT1.SMALLA WHERE BOOLEANVALUE <> ALL (SELECT BOOLEANVALUE FROM BQT1.SMALLA WHERE INTKEY = 40)
> {code}
> Source-specific command:
> {code:sql}
> SELECT g_0.IntKey, g_0.BooleanValue FROM Source.SmallA AS g_0 WHERE g_0.BooleanValue NOT IN (SELECT g_1.BooleanValue FROM Source.SmallA AS g_1 WHERE g_1.IntKey = 40)
> {code}
> *Note: boolean value for row where Intkey = 40 is false.*
> Expected result:
> |intkey|booleanvalue|
> |1|true|
> |...|...|
> Actual result:
> |intkey|booleanvalue|
> |0|false|
> |...|...|
> This seems to be an Informix issue as neither '<> ALL' nor 'NOT IN' works.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
[View Less]
9 years, 2 months
[JBoss JIRA] (TEIID-3937) Multiplying two columns in CASE statement overrides pushdown (Impala)
by Don Krapohl (JIRA)
[ https://issues.jboss.org/browse/TEIID-3937?page=com.atlassian.jira.plugin... ]
Don Krapohl commented on TEIID-3937:
------------------------------------
We're on the standard parcel distro of Cloudera CDH 5.4.9 (latest supported), which should show as Impala 2.2.0+cdh5.4.9+0. Not sure if the version comes back as 2.2.0 when you call. If you tell me how you call I may be able to see how it comes back.
> Multiplying two columns in CASE statement overrides pushdown (Impala)
> -------…
[View More]--------------------------------------------------------------
>
> 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)
[View Less]
9 years, 2 months