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 rh...@apache.org on 2010/06/28 20:53:20 UTC

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

Author: rhillegas
Date: Mon Jun 28 18:53:20 2010
New Revision: 958677

URL: http://svn.apache.org/viewvc?rev=958677&view=rev
Log:
DERBY-4716: Enable BOOLEAN literal defaults in CREATE/ALTER TABLE statements.

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.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/ColumnDefinitionNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java?rev=958677&r1=958676&r2=958677&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java Mon Jun 28 18:53:20 2010
@@ -769,6 +769,9 @@ public class ColumnDefinitionNode extend
 
 		switch (colType) {
 
+			case StoredFormatIds.BOOLEAN_TYPE_ID:
+                return ( defaultNode instanceof BooleanConstantNode );
+                
 			case StoredFormatIds.INT_TYPE_ID:
 			// DB2 doesn't allow floating point values to be used
 			// as defaults for integer columns (they ARE allowed

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=958677&r1=958676&r2=958677&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 Mon Jun 28 18:53:20 2010
@@ -55,6 +55,7 @@ public class BooleanValuesTest  extends 
     private static final String NOT_UNION_COMPATIBLE = "42X61";
     private static final String BAD_CONVERSION = "42846";
     private static final String ILLEGAL_INSERT = "42821";
+    private static final String BAD_DEFAULT = "42894";
 
     ///////////////////////////////////////////////////////////////////////////////////
     //
@@ -1076,6 +1077,49 @@ public class BooleanValuesTest  extends 
         goodStatement( conn, "drop table booleanIndexed" );
     }
 
+    /**
+     * <p>
+     * Verify that you can declare literal defaults for boolean columns.
+     * </p>
+     */
+    public void test_14_defaults() throws Exception
+    {
+        Connection conn = getConnection();
+
+        goodStatement( conn, "create table booleanDefaults( a int, b boolean default true, c boolean default false, d boolean default null )" );
+        goodStatement( conn, "insert into booleanDefaults( a ) values ( 0 )" );
+        assertResults
+            (
+             conn,
+             "select * from booleanDefaults order by a",
+             new String[][]
+             {
+                 { "0", "true", "false", null }
+             },
+             false
+             );
+        
+        goodStatement( conn, "alter table booleanDefaults add column e boolean default true" );
+        assertResults
+            (
+             conn,
+             "select * from booleanDefaults order by a",
+             new String[][]
+             {
+                 { "0", "true", "false", null, "true" }
+             },
+             false
+             );
+
+        goodStatement( conn, "drop table booleanDefaults" );
+
+        expectCompilationError( BAD_DEFAULT, "create table badDefault( a int, b boolean default 0 )" );
+        expectCompilationError( BAD_DEFAULT, "create table badDefault( a int, b boolean default 9.99 )" );
+        expectCompilationError( BAD_DEFAULT, "create table badDefault( a int, b boolean default 5e1 )" );
+        expectCompilationError( BAD_DEFAULT, "create table badDefault( a int, b boolean default 'false' )" );
+        expectCompilationError( BAD_DEFAULT, "create table badDefault( a int, b boolean default X'DE' )" );
+    }
+    
     ///////////////////////////////////////////////////////////////////////////////////
     //
     // SQL ROUTINES