[teiid-issues] [JBoss JIRA] (TEIID-5569) Subquery unnesting with aggregates

Steven Hawkins (Jira) issues at jboss.org
Tue Dec 11 14:39:00 EST 2018


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

Steven Hawkins commented on TEIID-5569:
---------------------------------------

We need an ifnull added in the first case:

{code}
SELECT pm1.g1.e1, pm1.g1.e2, ifnull(X__1.expr1, 0) AS expr3 FROM pm1.g1 LEFT OUTER JOIN (SELECT COUNT(*) AS expr1, e1 FROM pm1.g2 GROUP BY e1) AS X__1 ON pm1.g1.e1 = X__1.e1
{code}

In the event of usage in the where clause, the default logic of an inner join does not produce a correct result.

{code}
SELECT pm1.g1.e1, pm1.g1.e2 FROM pm1.g1 where e2 = /*+ MJ */ (select count(*) from pm1.g2 where e1 = pm1.g1.e1)
{code}

Actually needs a left outer join:

{code}
SELECT pm1.g1.e1, pm1.g1.e2 FROM pm1.g1 left outer join (SELECT COUNT(*) AS expr1, e1 FROM pm1.g2 GROUP BY e1) AS X__1 on (pm1.g1.e1 = X__1.e1) WHERE (e2 = ifnull(X__1.expr1, 0))
{code}

Things get more complicated if the projected aggregate is nested in an expression.  We should dissallow that case.

> Subquery unnesting with aggregates
> ----------------------------------
>
>                 Key: TEIID-5569
>                 URL: https://issues.jboss.org/browse/TEIID-5569
>             Project: Teiid
>          Issue Type: Bug
>          Components: Query Engine
>            Reporter: Steven Hawkins
>            Assignee: Steven Hawkins
>            Priority: Blocker
>             Fix For: 12.0
>
>
> A query such as:
> {code}
> SELECT pm1.g1.e1, pm1.g1.e2, /*+ MJ */ (select count(*) from pm1.g2 where e1 = pm1.g1.e1) FROM pm1.g1
> {code}
> Where the subquery contains aggregates without a group by will produce a join plan such that a group by is added to account for the projection of the e1 value for the join predicate.  However that will change the value from 0 to null for counts from pm1.g2 where there are no matching rows.



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the teiid-issues mailing list