You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2010/06/18 13:21:23 UTC

svn commit: r955940 - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/sql/compile/CastNode.java testing/org/apache/derbyTesting/functionTests/tests/lang/BooleanValuesTest.java

Author: kahatlen
Date: Fri Jun 18 11:21:23 2010
New Revision: 955940

URL: http://svn.apache.org/viewvc?rev=955940&view=rev
Log:
DERBY-4658: Allow explicit casts of string values to BOOLEAN

Removed unnecessary call to setNullability() and added a test that
verified that the correct nullability had been set.

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/BooleanValuesTest.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java?rev=955940&r1=955939&r2=955940&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java Fri Jun 18 11:21:23 2010
@@ -464,14 +464,10 @@ public class CastNode extends ValueNode
 				}
 				else if (cleanCharValue.equals("UNKNOWN"))
 				{
-					ConstantNode cn = (ConstantNode) getNodeFactory().getNode(
+					return (ValueNode) getNodeFactory().getNode(
 											C_NodeTypes.BOOLEAN_CONSTANT_NODE,
 											null,
 											getContextManager());
-
-                    cn.setNullability( true );
-
-                    return cn;
 				}
 				else
 				{

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/BooleanValuesTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/BooleanValuesTest.java?rev=955940&r1=955939&r2=955940&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/BooleanValuesTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/BooleanValuesTest.java Fri Jun 18 11:21:23 2010
@@ -811,6 +811,38 @@ public class BooleanValuesTest  extends 
                 rs, new String[][] { {"true"}, {"false"}, {null} });
     }
 
+    public void test_10_nullabilityOfCastFromLiteral() throws SQLException {
+        Statement s = createStatement();
+
+        ResultSet rs = s.executeQuery("values cast('true' as boolean)");
+        JDBC.assertNullability(rs, new boolean[] { false });
+        JDBC.assertSingleValueResultSet(rs, "true");
+
+        rs = s.executeQuery("values cast('false' as boolean)");
+        JDBC.assertNullability(rs, new boolean[] { false });
+        JDBC.assertSingleValueResultSet(rs, "false");
+
+        rs = s.executeQuery("values cast('unknown' as boolean)");
+        JDBC.assertNullability(rs, new boolean[] { true });
+        JDBC.assertSingleValueResultSet(rs, null);
+
+        rs = s.executeQuery(
+                "values (cast('true' as boolean),\n" +
+                "        cast('false' as boolean),\n" +
+                "        cast('unknown' as boolean))");
+        JDBC.assertNullability(rs, new boolean[] { false, false, true });
+        JDBC.assertFullResultSet(
+                rs, new String[][] {{ "true", "false", null }});
+
+        rs = s.executeQuery(
+                "values (cast ('true' as boolean)),\n" +
+                "       (cast ('false' as boolean)),\n" +
+                "       (cast ('unknown' as boolean))");
+        JDBC.assertNullability(rs, new boolean[] { true });
+        JDBC.assertFullResultSet(
+                rs, new String[][] { {"true"}, {"false"}, {null} });
+    }
+
     ///////////////////////////////////////////////////////////////////////////////////
     //
     // SQL ROUTINES