[ 
https://issues.apache.org/jira/browse/DERBY-4736?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dag H. Wanvik updated DERBY-4736:
---------------------------------

    Attachment: derby-4736-followup-a.diff
                derby-4736-followup-a.stat

Attaching a patch which fixes the nullability issue and adds a new test case.

The problem is that the added call to SelectNode#bindResultColumns, in addition 
to calling
fromList.bindResultColumns, which what we need in for this issue, also calls 
super.bindResultColumns,
which sets up the datatypes over again, erroneously (i.e. without taking into 
consideration the nature of outer join which can make values stemming from 
otherwise NOT NULL columns be null in the final result set).

Replacing the call to SelectNode#bindResultColumns with 
fromTable.bindResultColumns avoids this problem. Running regressions.




> ASSERT FAIL when code generating a column reference in a join predicate in 
> presence of other outer join reordering
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4736
>                 URL: https://issues.apache.org/jira/browse/DERBY-4736
>             Project: Derby
>          Issue Type: Sub-task
>          Components: SQL
>    Affects Versions: 10.0.2.0, 10.0.2.1, 10.1.1.0, 10.1.2.1, 10.1.3.1, 
> 10.2.1.6, 10.2.2.0, 10.3.1.4, 10.3.2.1, 10.3.3.0, 10.4.1.3, 10.4.2.0, 
> 10.5.1.1, 10.5.2.0, 10.5.3.0, 10.6.1.0
>            Reporter: Dag H. Wanvik
>            Assignee: Dag H. Wanvik
>             Fix For: 10.7.0.0
>
>         Attachments: derby-4736-1a.diff, derby-4736-1a.stat, 
> derby-4736-1b.diff, derby-4736-1b.stat, derby-4736-1c.diff, 
> derby-4736-1c.stat, derby-4736-1d.diff, derby-4736-1d.stat, 
> derby-4736-followup-a.diff, derby-4736-followup-a.stat, loj-analysis.txt, 
> query_plan_derby_4736.pdf
>
>
> From schema given in DERBY-4712, this query gives an ASSERT with sane Derby:
> rs = s.executeQuery("SELECT 1 FROM (T0 LEFT JOIN (T1 LEFT JOIN (T2 LEFT JOIN 
> " +
>                                " (T3 LEFT JOIN T4 ON 1=1) ON T2.X = T3.X) ON 
> 1=1) ON 1=1) " +
>                                " LEFT JOIN " +
>                                " (T5 INNER JOIN T6 ON 1=1) " +
>                                " ON T2.X = 1 ");
> Cf the attachments in DERBY-4712 assert-bind-opt-trees.*. 
> From preliminary analysis, this error seems to be unrelated to the NPEs 
> reported in DERBY-4712, so filing this as a sub-issue.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to