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/simple | tikeda | 12 Oct |