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 dj...@apache.org on 2008/01/30 20:57:39 UTC
svn commit: r616873 -
/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CaseExpressionTest.java
Author: djd
Date: Wed Jan 30 11:57:38 2008
New Revision: 616873
URL: http://svn.apache.org/viewvc?rev=616873&view=rev
Log:
Add some test cases for nullability of the value from a CASE expression. One of the cases failed before revision 616853 for DERBY-2775.
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CaseExpressionTest.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CaseExpressionTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CaseExpressionTest.java?rev=616873&r1=616872&r2=616873&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CaseExpressionTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CaseExpressionTest.java Wed Jan 30 11:57:38 2008
@@ -304,13 +304,45 @@
rs = s.executeQuery("SELECT d from t where d = (SELECT CASE WHEN 1 = 0 THEN CURRENT_DATE ELSE NULL END from t)");
JDBC.assertEmpty(rs);
- // Make sure metadata has correct type
+ // Make sure metadata has correct type for various null handling
rs = s.executeQuery("SELECT CASE WHEN 1 = 1 THEN NULL ELSE CURRENT_DATE END from t");
ResultSetMetaData rsmd = rs.getMetaData();
assertEquals(java.sql.Types.DATE, rsmd.getColumnType(1));
// should be nullable since it returns NULL #:)
- assertTrue(rsmd.isNullable(1) == ResultSetMetaData.columnNullable);
- JDBC.assertSingleValueResultSet(rs, null);
+ assertEquals(ResultSetMetaData.columnNullable, rsmd.isNullable(1));
+ JDBC.assertSingleValueResultSet(rs, null);
+
+ rs = s.executeQuery("SELECT CASE WHEN 1 = 0 THEN CURRENT_DATE ELSE NULL END from t");
+ rsmd = rs.getMetaData();
+ assertEquals(java.sql.Types.DATE, rsmd.getColumnType(1));
+ // should be nullable since it returns NULL #:)
+ assertEquals(ResultSetMetaData.columnNullable, rsmd.isNullable(1));
+ JDBC.assertSingleValueResultSet(rs, null);
+
+ // and with an implicit NULL return.
+ rs = s.executeQuery("SELECT CASE WHEN 1 = 0 THEN CURRENT_DATE END from t");
+ rsmd = rs.getMetaData();
+ assertEquals(java.sql.Types.DATE, rsmd.getColumnType(1));
+ // should be nullable since it returns NULL #:)
+ assertEquals(ResultSetMetaData.columnNullable, rsmd.isNullable(1));
+ JDBC.assertSingleValueResultSet(rs, null);
+
+ // and no possible NULL return.
+
+ rs = s.executeQuery("SELECT CASE WHEN 1 = 0 THEN 6 ELSE 4 END from t");
+ rsmd = rs.getMetaData();
+ assertEquals(java.sql.Types.INTEGER, rsmd.getColumnType(1));
+ // should be nullable since it returns NULL #:)
+ assertEquals(ResultSetMetaData.columnNoNulls, rsmd.isNullable(1));
+ JDBC.assertSingleValueResultSet(rs, "4");
+
+ rs = s.executeQuery("SELECT CASE WHEN 1 = 1 THEN 6 ELSE 4 END from t");
+ rsmd = rs.getMetaData();
+ assertEquals(java.sql.Types.INTEGER, rsmd.getColumnType(1));
+ // should be nullable since it returns NULL #:)
+ assertEquals(ResultSetMetaData.columnNoNulls, rsmd.isNullable(1));
+ JDBC.assertSingleValueResultSet(rs, "6");
+
}
}