GitHub user DaveBirdsall opened a pull request:

    https://github.com/apache/trafodion/pull/1558

    [TRAFODION-3066] Fix bug that causes 2053 warning on deeply nested 
subqueries

    When a query has at least three levels of subquery, and when the subqueries 
are transformed from semi-joins to inner-joins, we may see an Optimizer 
assertion failure warning (2053) when preparing the query. This bug has been 
there for a long time but is more likely now due to the changes in 
https://github.com/apache/trafodion/pull/1530.
    
    The problem is that when transforming a semi-join to an inner-join + group 
by, the new GroupByAgg node was getting its GroupAttributes as a copy of the 
child node. If the child node happened to also be a Join (as would happen with 
nested subqueries), the numJoinedTables_ field for the GroupByAgg's 
GroupAttributes would remain 2 or more. If during optimization, the 
GroupByOnJoinRule fired, pushing the GroupByAgg down, we end up with another 
Join expression in the same group. But having numJoinedTables_ being 2 or more 
in that Group would allow the LeftShiftJoinRule to fire, with the result that 
we might get multiple GroupBy criteria in the same join backbone. The 
Analysis.cpp module does not expect this expansion of the join back bone, and 
raises the assertion, which results in the 2053 warning.
    
    The fix is that when Join::transformSemiJoin creates the new GroupByAgg 
node, it must reset numJoinedTables_ in its new GroupAttributes object to 1.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/DaveBirdsall/trafodion Trafodion3066

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/trafodion/pull/1558.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1558
    
----
commit 3d54d5ac8ab797335e32bd6bbefff4150452bd15
Author: Dave Birdsall <dbirdsall@...>
Date:   2018-05-09T23:15:17Z

    [TRAFODION-3066] Fix bug that causes 2053 warning on deeply nested 
subqueries

----


---

Reply via email to