db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From d..@apache.org
Subject svn commit: r508418 - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting: functionTests/tests/jdbcapi/DatabaseMetaDataTest.java junit/BaseJDBCTestCase.java junit/JDBC.java
Date Fri, 16 Feb 2007 14:24:04 GMT
Author: djd
Date: Fri Feb 16 06:24:03 2007
New Revision: 508418

URL: http://svn.apache.org/viewvc?view=rev&rev=508418
Log:
Improve the JDBC.assertSameContents to use the assertEquals() methods for Blob and Clob in
BaseJDBCTestCase.
Create a SQLXML constant in JDBC for the tests to use rather than using engine code.
Add an initial version of utility method to DatabaseMetaDataTest that returns a JDBC type
identifier from java.sql.Types
given a SQL type name.

Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DatabaseMetaDataTest.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/BaseJDBCTestCase.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DatabaseMetaDataTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DatabaseMetaDataTest.java?view=diff&rev=508418&r1=508417&r2=508418
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DatabaseMetaDataTest.java
(original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DatabaseMetaDataTest.java
Fri Feb 16 06:24:03 2007
@@ -20,6 +20,7 @@
  */
 package org.apache.derbyTesting.functionTests.tests.jdbcapi;
 
+import java.io.IOException;
 import java.sql.CallableStatement;
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
@@ -79,6 +80,7 @@
  *  metadata continues to work at various points in the upgrade.
  */
 public class DatabaseMetaDataTest extends BaseJDBCTestCase {
+  
     /*
     ** Escaped function testing
     */
@@ -786,10 +788,11 @@
     /**
      * Execute dmd.getTables() but perform additional checking
      * of the ODBC variant.
+     * @throws IOException 
      */
     private ResultSet getDMDTables(DatabaseMetaData dmd,
             String catalog, String schema, String table, String[] tableTypes)
-        throws SQLException
+        throws SQLException, IOException
     {
         checkGetTablesODBC(catalog, schema, table, tableTypes);
         return dmd.getTables(catalog, schema, table, tableTypes);
@@ -799,8 +802,9 @@
      * Test getTables() without modifying the database.
      * 
      * @throws SQLException
+     * @throws IOException 
      */
-    public void testGetTablesNoModify() throws SQLException {
+    public void testGetTablesNoModify() throws SQLException, IOException {
         
         DatabaseMetaData dmd = getDMD();
         
@@ -876,8 +880,9 @@
      * Test getTables() with  modifying the database.
      * 
      * @throws SQLException
+     * @throws IOException 
      */
-    public void testGetTablesModify() throws SQLException {
+    public void testGetTablesModify() throws SQLException, IOException {
                 
         int totalTables = createTablesForTest(false);
         
@@ -994,9 +999,10 @@
     /**
      * Execute and check the ODBC variant of getTables which
      * uses a procedure to provide the same information to ODBC clients.
+     * @throws IOException 
      */
     private void checkGetTablesODBC(String catalog, String schema,
-            String table, String[] tableTypes) throws SQLException
+            String table, String[] tableTypes) throws SQLException, IOException
     {
         String tableTypesAsString = null;
         if (tableTypes != null) {
@@ -1356,8 +1362,6 @@
      */
     public void testGetTypeInfo() throws SQLException
     {
-	// SQLXML is the constant used to represent XML data type in derby
-	final int SQLXML = JDBC40Translation.SQLXML;
         // Client returns BOOLEAN type from the engine as SMALLINT
         int BOOLEAN = Types.BOOLEAN;      
         if (usingDerbyNetClient())
@@ -1430,7 +1434,7 @@
           Types.INTEGER, Types.LONGVARBINARY, Types.LONGVARCHAR,
           Types.NUMERIC, Types.REAL, Types.SMALLINT,
           Types.TIME, Types.TIMESTAMP,  Types.VARBINARY,
-          Types.VARCHAR, SQLXML
+          Types.VARCHAR, JDBC.SQLXML
         };
         
         // Rows are returned from getTypeInfo in order of
@@ -1517,7 +1521,7 @@
             case Types.VARCHAR:
                 precision = 32672;
                 break;
-	    case SQLXML:
+	    case JDBC.SQLXML:
 		precision = 0;
 		break;
             }
@@ -1600,7 +1604,7 @@
             case Types.VARCHAR:
                 searchable = DatabaseMetaData.typeSearchable;
                 break;
-	    case SQLXML:
+	    case JDBC.SQLXML:
 		searchable = DatabaseMetaData.typePredNone;
 		break;
             default:
@@ -2020,5 +2024,58 @@
         }
         
         return list;
+    }
+    
+    /**
+     * Given a valid SQL type return the corresponding
+     * JDBC type identifier from java.sql.Types.
+     * Will assert if the type is not known
+     * (in future, currently just return Types.NULL).
+     */
+    public static int getJDBCType(String type)
+    {
+        if ("SMALLINT".equals(type))
+            return Types.SMALLINT;
+        if ("INTEGER".equals(type) || "INT".equals(type))
+            return Types.INTEGER;
+        if ("BIGINT".equals(type))
+            return Types.BIGINT;
+        
+        if (type.equals("FLOAT") || type.startsWith("FLOAT("))
+            return Types.FLOAT;
+        if (type.equals("REAL"))
+            return Types.REAL;
+
+        if ("DOUBLE".equals(type) || "DOUBLE PRECISION".equals(type))
+            return Types.INTEGER;
+        
+        if ("DATE".equals(type))
+            return Types.DATE;
+        if ("TIME".equals(type))
+            return Types.TIME;
+        if ("TIMESTAMP".equals(type))
+            return Types.TIMESTAMP;
+        
+        if (type.equals("DECIMAL") || type.startsWith("DECIMAL("))
+            return Types.DECIMAL;
+        if (type.equals("NUMERIC") || type.startsWith("NUMERIC("))
+            return Types.NUMERIC;
+
+        if (type.equals("BLOB") || type.startsWith("BLOB("))
+            return Types.BLOB;
+        if (type.equals("BINARY LARGE OBJECT") || 
+                type.startsWith("BINARY LARGE OBJECT("))
+            return Types.BLOB;
+        
+        if (type.equals("CLOB") || type.startsWith("CLOB("))
+            return Types.CLOB;
+        if (type.equals("CHARACTER LARGE OBJECT") || 
+                type.startsWith("CHARACTER LARGE OBJECT("))
+            return Types.CLOB;
+
+        if ("XML".equals(type))
+            return JDBC.SQLXML;
+        
+        return Types.NULL;
     }
 }

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/BaseJDBCTestCase.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/BaseJDBCTestCase.java?view=diff&rev=508418&r1=508417&r2=508418
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/BaseJDBCTestCase.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/BaseJDBCTestCase.java Fri
Feb 16 06:24:03 2007
@@ -444,12 +444,10 @@
         assertEquals("Clobs have different lengths",
                      c1.length(), c2.length());
         Reader r1 = c1.getCharacterStream();
+        assertNotNull(r1); // java.sql.Blob object cannot represent NULL
         Reader r2 = c2.getCharacterStream();
-        if (r1 == null || r2 == null) {
-            assertNull("Clob c2 has null-stream, clob c1 doesn't", r1);
-            assertNull("Clob c1 has null-stream, clob c2 doesn't", r2);
-            return;
-        }
+        assertNotNull(r2); // java.sql.Blob object cannot represent NULL
+
         long index = 1;
         int ch1 = r1.read();
         int ch2 = r2.read();

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java?view=diff&rev=508418&r1=508417&r2=508418
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java Fri Feb 16 06:24:03
2007
@@ -19,6 +19,7 @@
  */
 package org.apache.derbyTesting.junit;
 
+import java.io.IOException;
 import java.sql.*;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -33,6 +34,11 @@
  *
  */
 public class JDBC {
+    
+    /**
+     * Types.SQLXML value without having to compile with JDBC4.
+     */
+    public static final int SQLXML = 2009;
 	
     /**
      * Tell if we are allowed to use DriverManager to create database
@@ -751,11 +757,12 @@
      * The compete ResultSet is walked for both ResultSets,
      * and they are both closed.
      * <BR>
-     * Columns are compared as primitive ints or longs or as
-     * Strings. Code needs more work to handle BLOB/CLOB columns.
+     * Columns are compared as primitive ints or longs, Blob,
+     * Clobs or as Strings.
+     * @throws IOException 
      */
     public static void assertSameContents(ResultSet rs1, ResultSet rs2)
-            throws SQLException {
+            throws SQLException, IOException {
         ResultSetMetaData rsmd = rs1.getMetaData();
         int columnCount = rsmd.getColumnCount();
         while (rs1.next()) {
@@ -768,6 +775,14 @@
                     break;
                 case Types.BIGINT:
                     Assert.assertEquals(rs1.getLong(col), rs2.getLong(col));
+                    break;
+                case Types.BLOB:
+                    BaseJDBCTestCase.assertEquals(rs1.getBlob(col),
+                            rs2.getBlob(col));
+                    break;
+                case Types.CLOB:
+                    BaseJDBCTestCase.assertEquals(rs1.getClob(col),
+                            rs2.getClob(col));
                     break;
                 default:
                     Assert.assertEquals(rs1.getString(col), rs2.getString(col));



Mime
View raw message