List:Internals« Previous MessageNext Message »
From:tikeda Date:October 12 2005 5:15pm
Subject:Connector/J commit: r4395 - branches/branch_5_0/connector-j/src/testsuite/simple
View as plain text  
Modified:
   branches/branch_5_0/connector-j/src/testsuite/simple/MetadataTest.java
Log:
Added tests for DatabaseMetaDataUsingInfoSchema

Modified: branches/branch_5_0/connector-j/src/testsuite/simple/MetadataTest.java
===================================================================
--- branches/branch_5_0/connector-j/src/testsuite/simple/MetadataTest.java	2005-10-12 17:13:16 UTC (rev 4394)
+++ branches/branch_5_0/connector-j/src/testsuite/simple/MetadataTest.java	2005-10-12 17:15:06 UTC (rev 4395)
@@ -24,17 +24,18 @@
  */
 package testsuite.simple;
 
-import testsuite.BaseTestCase;
-
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 import java.sql.Types;
-import java.util.BitSet;
+import java.util.HashSet;
 import java.util.Properties;
+import java.util.Set;
 
+import testsuite.BaseTestCase;
+
 /**
  * Tests DatabaseMetaData methods.
  * 
@@ -516,4 +517,96 @@
 		assertEquals("java.lang.Boolean", this.rs.getMetaData()
 				.getColumnClassName(1));
 	}
+    
+    /**
+     * Tests the implementation of Information Schema for primary keys.
+     */
+    public void testGetPrimaryKeysUsingInfoShcema() throws Exception {
+        if (versionMeetsMinimum(5, 0, 7)) {
+            this.stmt.executeUpdate("DROP TABLE IF EXISTS t1");
+            this.stmt.executeUpdate("CREATE TABLE t1 (c1 int(1) primary key)");
+            Properties props = new Properties();
+            props.put("useInformationSchema", "true");
+            com.mysql.jdbc.Connection conn1 = (com.mysql.jdbc.Connection) getConnectionWithProps(null);
+            conn1.setUseInformationSchema(true);
+            com.mysql.jdbc.DatabaseMetaDataUsingInfoSchema metaData =
+                (com.mysql.jdbc.DatabaseMetaDataUsingInfoSchema) conn1.getMetaData();
+            this.rs = metaData.getPrimaryKeys(null, null, "t1");
+            this.rs.next();
+            assertEquals("t1", this.rs.getString("TABLE_NAME"));
+            assertEquals("c1", this.rs.getString("COLUMN_NAME"));
+            conn1.close();
+        }
+    }
+    
+    /**
+     * Tests the implementation of Information Schema for index info.
+     */
+    public void testGetIndexInfoUsingInfoSchema() throws Exception {
+        if (versionMeetsMinimum(5, 0, 7)) {
+            this.stmt.executeUpdate("DROP TABLE IF EXISTS t1");
+            this.stmt.executeUpdate("CREATE TABLE t1 (c1 int(1))");
+            this.stmt.executeUpdate("CREATE INDEX index1 ON t1 (c1)");
+            Properties props = new Properties();
+            props.put("useInformationSchema", "true");
+            Connection conn1 = getConnectionWithProps(props);
+            DatabaseMetaData metaData = conn1.getMetaData();
+            this.rs = metaData.getIndexInfo("test", null, "t1", false, true);
+            this.rs.next();
+            assertEquals("t1", this.rs.getString("TABLE_NAME"));
+            assertEquals("c1", this.rs.getString("COLUMN_NAME"));
+            assertEquals("1", this.rs.getString("NON_UNIQUE"));
+            assertEquals("index1", this.rs.getString("INDEX_NAME"));
+            conn1.close();
+        }
+    }
+    
+    /**
+     * Tests the implementation of Information Schema for columns.
+     */
+    public void testGetColumnsUsingInfoSchema() throws Exception {
+        if (versionMeetsMinimum(5, 0, 7)) {
+            this.stmt.executeUpdate("DROP TABLE IF EXISTS t1");
+            this.stmt.executeUpdate("CREATE TABLE t1 (c1 char(1))");
+            Properties props = new Properties();
+            props.put("useInformationSchema", "true");
+            Connection conn1 = getConnectionWithProps(props);
+            DatabaseMetaData metaData = conn1.getMetaData();
+            this.rs = metaData.getColumns(null, null, "t1", null);
+            this.rs.next();
+            assertEquals("t1", this.rs.getString("TABLE_NAME"));
+            assertEquals("c1", this.rs.getString("COLUMN_NAME"));
+            assertEquals("char", this.rs.getString("TYPE_NAME"));
+            assertEquals("1", this.rs.getString("COLUMN_SIZE"));
+            conn1.close();
+        }
+    }
+    
+    /**
+     * Tests the implementation of Information Schema for tables.
+     */
+    public void testGetTablesUsingInfoSchema() throws Exception {
+        if (versionMeetsMinimum(5, 0, 7)) {
+            this.stmt.executeUpdate("DROP TABLE IF EXISTS `t1-1`");
+            this.stmt.executeUpdate("CREATE TABLE `t1-1` (c1 char(1))");
+            this.stmt.executeUpdate("DROP TABLE IF EXISTS `t1-2`");
+            this.stmt.executeUpdate("CREATE TABLE `t1-2` (c1 char(1))");
+            this.stmt.executeUpdate("DROP TABLE IF EXISTS `t2`");
+            this.stmt.executeUpdate("CREATE TABLE `t2` (c1 char(1))");
+            Set tableNames = new HashSet();
+            tableNames.add("t1-1");
+            tableNames.add("t1-2");
+            Properties props = new Properties();
+            props.put("useInformationSchema", "true");
+            Connection conn1 = getConnectionWithProps(props);
+            DatabaseMetaData metaData = conn1.getMetaData();
+            // pattern matching for table name
+            this.rs = metaData.getTables(null, null, "t1-_", null);
+            while (this.rs.next()) {
+                assertTrue(tableNames.remove(this.rs.getString("TABLE_NAME")));
+            }
+            conn1.close();
+            assertTrue(tableNames.isEmpty());
+        }
+    }
 }

Thread
Connector/J commit: r4395 - branches/branch_5_0/connector-j/src/testsuite/simpletikeda12 Oct