You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2014/05/11 00:12:30 UTC

[jira] [Updated] (DERBY-6567) Incorrect nullability for CASE expression with parameter

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

Knut Anders Hatlen updated DERBY-6567:
--------------------------------------

    Attachment: d6567-1a.diff

The attached patch [^d6567-1a.diff] fixes the problem by setting the nullability of ConditionalNode based on the nullability of the THEN and ELSE expressions. If (and only if) at least one of the THEN and ELSE expressions is nullable, the result of the CASE expression is also nullable. The patch also adds a test case that verifies the fix.

The regression tests ran cleanly with the patch.

> Incorrect nullability for CASE expression with parameter
> --------------------------------------------------------
>
>                 Key: DERBY-6567
>                 URL: https://issues.apache.org/jira/browse/DERBY-6567
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.10.2.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: d6567-1a.diff
>
>
> This JUnit test code fails because it detects that the query returns null even though the result column is reported as not nullable:
> {code}
>         PreparedStatement ps = prepareStatement(
>                 "values case when false then 1 else ? end");
>         ps.setNull(1, Types.INTEGER);
>         JDBC.assertSingleValueResultSet(ps.executeQuery(), null);
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)