[teiid-issues] [JBoss JIRA] (TEIID-3641) ANSI 89 joins not translating to 92 syntax correctly

Steven Hawkins (JIRA) issues at jboss.org
Sun Oct 11 15:19:03 EDT 2015


     [ https://issues.jboss.org/browse/TEIID-3641?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steven Hawkins closed TEIID-3641.
---------------------------------


> ANSI 89 joins not translating to 92 syntax correctly
> ----------------------------------------------------
>
>                 Key: TEIID-3641
>                 URL: https://issues.jboss.org/browse/TEIID-3641
>             Project: Teiid
>          Issue Type: Bug
>          Components: JDBC Connector
>    Affects Versions: 8.11.2
>         Environment: Ubuntu Linux Trusty
>            Reporter: Don Krapohl
>            Assignee: Steven Hawkins
>             Fix For: 8.12
>
>
> SQL 89 syntax being translated to SQL 92 has the ON portion of the join in the wrong place when there are multiple tables.
> Example source query:
> select sum(Table3.sales) as c1,
>      Table1.customer_id as c2,
>      Table1.customer_name as c3,
>      Table2.store_id as c4
> from 
>     dim_customer Table1,
>     dim_store Table2,
>      fact_sales Table3
> where (     Table1.customer_id = Table3.customer_id 
>         and Table1.customer_id = 3184 
>         and Table2.store_id = Table3.store_id 
>         and Table2.store_id = 9020 
>         and Table3.customer_id = 3184 
>         and Table3.store_id = 9020 ) 
> group by Table1.customer_id, Table1.customer_name, Table2.store_id
> is translated to
> SELECT SUM(g_2.sales), g_0.customer_id, g_0.customer_name, g_1.store_id
>   FROM dim_customer g_0 
>   JOIN dim_store g_1 
>   JOIN fact_sales g_2
>     ON g_1.store_id = g_2.store_id
>     ON g_0.customer_id = g_2.customer_id 
>  WHERE g_0.customer_id = 3184
>    AND g_1.store_id = 9020
>    AND g_2.customer_id = 3184
>    AND g_2.store_id = 9020 
>  GROUP BY g_0.customer_id, g_0.customer_name, g_1.store_id
>  
>  
>  
>  
>  Notice the two JOIN... JOIN... followed by two ON... ON... statements.  Our database (Impala) doesn't recognize this pattern of join syntax.  I haven't tested to determine if it's just Impala that doesn't recognize this syntax (implying a translator bug) or core query parsing.  Expected query should be something close to:
>  
>  SELECT SUM(g_2.sales), g_0.customer_id, g_0.customer_name, g_1.store_id
>    FROM dim_customer g_0 
>    JOIN fact_sales g_2
>      ON g_0.customer_id = g_2.customer_id 
>    JOIN dim_store g_1 
>      ON g_1.store_id = g_2.store_id
>   WHERE g_0.customer_id = 3184
>     AND g_1.store_id = 9020
>     AND g_2.customer_id = 3184
>     AND g_2.store_id = 9020 
>  GROUP BY g_0.customer_id, g_0.customer_name, g_1.store_id



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


More information about the teiid-issues mailing list