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

Knut Anders Hatlen updated DERBY-534:
-------------------------------------

    Attachment: derby-534-12-a-subquery-npe.diff

Attaching derby-534-12-a-subquery-npe.diff which fixes the NPE exposed by the 
03 patch.

The NPE happened in GenericStatementContext.setTopResultSet() while copying 
materialized subqueries over to the new subquery tracking array in a for loop. 
As far as I can tell, the intention of the for loop is to copy every non-null 
element in the materializedSubqueries array to the new subquery tracking array. 
However, instead of checking that the element in materializedSubqueries is 
non-null, it checks that the element at the given index position on the old 
subquery tracking array is non-null. The NPE is thrown because the old subquery 
tracking array is null.

This is old code, so it may be possible to construct a test case that makes it 
fail even without a WHEN clause. I haven't been able to do that so far, though. 
According to the test coverage reports, the line that fails with an NPE is only 
partially covered: 
https://builds.apache.org/job/Derby-JaCoCo/lastSuccessfulBuild/artifact/coverage-report/org.apache.derby.impl.sql.conn/GenericStatementContext.java.html#L356

The patch enables the previously disabled test case added by the 03 patch. It 
also adds some more test cases with scalar subqueries in the WHEN clause.

All regression tests ran cleanly with the patch.

> Support use of the WHEN clause in CREATE TRIGGER statements
> -----------------------------------------------------------
>
>                 Key: DERBY-534
>                 URL: https://issues.apache.org/jira/browse/DERBY-534
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>            Reporter: Kristian Waagan
>            Assignee: Knut Anders Hatlen
>            Priority: Minor
>              Labels: derby_triage10_11
>         Attachments: derby-534-01-a-syntax.diff, 
> derby-534-02-a-refactor.diff, derby-534-03-a-npe-testcase.diff, 
> derby-534-04-a-referencing.diff, derby-534-05-a-generated-cols.diff, 
> derby-534-06-a-temptables.diff, derby-534-07-a-more-restrictions.diff, 
> derby-534-08-a-test-invalidation.diff, derby-534-09-a-drop-column-deps.diff, 
> derby-534-09-b-drop-column-deps.diff, derby-534-10-a-get-sps.diff, 
> derby-534-11-a-more-tests.diff, derby-534-12-a-subquery-npe.diff, 
> parser.diff, WhenClause.html, WhenClause.html, WhenClause.html, 
> WhenClause.html
>
>
> Support use of the WHEN clause in CREATE TRIGGER statements. The clause is 
> described in the SQL standard (2003) in chapter "11.39 <trigger definition>" 
> under "<triggered action>".
> There are traces in the code that suggests some work has been done on this 
> earlier. If anyone knows something about this, please add a comment to this 
> issue.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to