Derby
  1. Derby
  2. DERBY-4704

Incorrect nullability when casting non-nullable VARCHAR to BOOLEAN

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 10.7.1.1
    • Fix Version/s: 10.7.1.1
    • Component/s: SQL
    • Labels:
      None
    • Issue & fix info:
      Patch Available
    • Bug behavior facts:
      Wrong query result

      Description

      With the following table definition and query

      CREATE TABLE T (X VARCHAR(10) NOT NULL);
      INSERT INTO T VALUES 'true', 'false', 'unknown';
      SELECT CAST(X AS BOOLEAN) FROM T;

      the meta-data for the returned result will say that the column is not nullable, although it will contain a NULL value in the third row.

      1. derby-4704-01-aa-nullability.diff
        4 kB
        Rick Hillegas
      2. repro.diff
        2 kB
        Knut Anders Hatlen

        Issue Links

          Activity

          Knut Anders Hatlen created issue -
          Hide
          Knut Anders Hatlen added a comment -

          Marking as "Wrong query result" since the client driver returns the wrong value for unknown (false instead of null) because of this. It also raises an error, but that's not until after it has returned the wrong value.

          ij> SELECT X, CAST(X AS BOOLEAN) FROM T;
          X |2
          ----------------
          true |true
          false |false
          unknown |false
          JAVA ERROR: java.lang.ArrayIndexOutOfBoundsException: 123

          Show
          Knut Anders Hatlen added a comment - Marking as "Wrong query result" since the client driver returns the wrong value for unknown (false instead of null) because of this. It also raises an error, but that's not until after it has returned the wrong value. ij> SELECT X, CAST(X AS BOOLEAN) FROM T; X |2 ---------------- true |true false |false unknown |false JAVA ERROR: java.lang.ArrayIndexOutOfBoundsException: 123
          Knut Anders Hatlen made changes -
          Field Original Value New Value
          Bug behavior facts [Wrong query result]
          Hide
          Knut Anders Hatlen added a comment -

          Attached is a JUnit test case that reproduces the bug. It is disabled for now, but should be enabled when the bug has been fixed.

          Committed revision 955900.

          Show
          Knut Anders Hatlen added a comment - Attached is a JUnit test case that reproduces the bug. It is disabled for now, but should be enabled when the bug has been fixed. Committed revision 955900.
          Knut Anders Hatlen made changes -
          Attachment repro.diff [ 12447445 ]
          Rick Hillegas made changes -
          Link This issue is part of DERBY-499 [ DERBY-499 ]
          Rick Hillegas made changes -
          Assignee Rick Hillegas [ rhillegas ]
          Hide
          Rick Hillegas added a comment -

          Attaching derby-4704-01-aa-nullability.diff. This patch forces all casts of strings to booleans to result in nullable types. That is because the string could be "unknown", which casts to NULL. I am running the regression tests now.

          Touches the following files:

          ---------------

          M java/engine/org/apache/derby/impl/sql/compile/CastNode.java

          The actual change.

          ---------------

          M java/testing/org/apache/derbyTesting/functionTests/tests/lang/BooleanValuesTest.java

          Enable Knut's test case.

          Show
          Rick Hillegas added a comment - Attaching derby-4704-01-aa-nullability.diff. This patch forces all casts of strings to booleans to result in nullable types. That is because the string could be "unknown", which casts to NULL. I am running the regression tests now. Touches the following files: --------------- M java/engine/org/apache/derby/impl/sql/compile/CastNode.java The actual change. --------------- M java/testing/org/apache/derbyTesting/functionTests/tests/lang/BooleanValuesTest.java Enable Knut's test case.
          Rick Hillegas made changes -
          Attachment derby-4704-01-aa-nullability.diff [ 12447466 ]
          Rick Hillegas made changes -
          Issue & fix info [Patch Available]
          Hide
          Rick Hillegas added a comment -

          Tests passed cleanly. Committed at subversion revision 956025.

          Show
          Rick Hillegas added a comment - Tests passed cleanly. Committed at subversion revision 956025.
          Rick Hillegas made changes -
          Fix Version/s 10.7.0.0 [ 12314971 ]
          Resolution Fixed [ 1 ]
          Status Open [ 1 ] Resolved [ 5 ]
          Hide
          Knut Anders Hatlen added a comment -

          Thanks for fixing this bug, Rick. Closing the issue.

          Show
          Knut Anders Hatlen added a comment - Thanks for fixing this bug, Rick. Closing the issue.
          Knut Anders Hatlen made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Rick Hillegas made changes -
          Affects Version/s 10.7.1.1 [ 12315564 ]
          Affects Version/s 10.7.1.0 [ 12314971 ]
          Fix Version/s 10.7.1.1 [ 12315564 ]
          Fix Version/s 10.7.1.0 [ 12314971 ]
          Gavin made changes -
          Workflow jira [ 12513732 ] Default workflow, editable Closed status [ 12800243 ]
          Transition Time In Source Status Execution Times Last Executer Last Execution Date
          Open Open Resolved Resolved
          6h 23m 1 Rick Hillegas 18/Jun/10 16:28
          Resolved Resolved Closed Closed
          2d 17h 41m 1 Knut Anders Hatlen 21/Jun/10 10:10

            People

            • Assignee:
              Rick Hillegas
              Reporter:
              Knut Anders Hatlen
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development