Modified:
branches/branch_5_0/connector-j/src/com/mysql/jdbc/DatabaseMetaData.java
branches/branch_5_0/connector-j/src/com/mysql/jdbc/DatabaseMetaDataUsingInfoSchema.java
branches/branch_5_0/connector-j/src/com/mysql/jdbc/MysqlDefs.java
branches/branch_5_0/connector-j/src/testsuite/regression/MetaDataRegressionTest.java
Log:
Fixes for working w/ INFORMATION_SCHEMA.
Modified: branches/branch_5_0/connector-j/src/com/mysql/jdbc/DatabaseMetaData.java
===================================================================
--- branches/branch_5_0/connector-j/src/com/mysql/jdbc/DatabaseMetaData.java 2005-10-25 14:36:38 UTC (rev 4446)
+++ branches/branch_5_0/connector-j/src/com/mysql/jdbc/DatabaseMetaData.java 2005-10-25 15:45:26 UTC (rev 4447)
@@ -6318,7 +6318,7 @@
* DOCUMENT ME!
*/
public boolean storesLowerCaseIdentifiers() throws SQLException {
- return true;
+ return this.conn.lowerCaseTableNames();
}
/**
@@ -6330,7 +6330,7 @@
* DOCUMENT ME!
*/
public boolean storesLowerCaseQuotedIdentifiers() throws SQLException {
- return true;
+ return !this.conn.lowerCaseTableNames();
}
/**
@@ -6366,7 +6366,7 @@
* DOCUMENT ME!
*/
public boolean storesUpperCaseIdentifiers() throws SQLException {
- return !this.conn.lowerCaseTableNames();
+ return false;
}
/**
Modified: branches/branch_5_0/connector-j/src/com/mysql/jdbc/DatabaseMetaDataUsingInfoSchema.java
===================================================================
--- branches/branch_5_0/connector-j/src/com/mysql/jdbc/DatabaseMetaDataUsingInfoSchema.java 2005-10-25 14:36:38 UTC (rev 4446)
+++ branches/branch_5_0/connector-j/src/com/mysql/jdbc/DatabaseMetaDataUsingInfoSchema.java 2005-10-25 15:45:26 UTC (rev 4447)
@@ -212,9 +212,9 @@
sqlBuf.append(" AS DATA_TYPE, ");
if (conn.getCapitalizeTypeNames()) {
- sqlBuf.append("UPPER(DATA_TYPE) AS TYPE_NAME,");
+ sqlBuf.append("UPPER(CASE WHEN LOCATE('unsigned', COLUMN_TYPE) != 0 AND LOCATE('unsigned', DATA_TYPE) = 0 THEN CONCAT(DATA_TYPE, ' unsigned') ELSE DATA_TYPE END) AS TYPE_NAME,");
} else {
- sqlBuf.append("DATA_TYPE AS TYPE_NAME,");
+ sqlBuf.append("CASE WHEN LOCATE('unsigned', COLUMN_TYPE) != 0 AND LOCATE('unsigned', DATA_TYPE) = 0 THEN CONCAT(DATA_TYPE, ' unsigned') ELSE DATA_TYPE END AS TYPE_NAME,");
}
sqlBuf
Modified: branches/branch_5_0/connector-j/src/com/mysql/jdbc/MysqlDefs.java
===================================================================
--- branches/branch_5_0/connector-j/src/com/mysql/jdbc/MysqlDefs.java 2005-10-25 14:36:38 UTC (rev 4446)
+++ branches/branch_5_0/connector-j/src/com/mysql/jdbc/MysqlDefs.java 2005-10-25 15:45:26 UTC (rev 4447)
@@ -568,6 +568,18 @@
buf.append(mysqlTypeName);
buf.append("' THEN ");
buf.append(typesMap.get(mysqlTypeName));
+
+ if (mysqlTypeName.equalsIgnoreCase("DOUBLE") ||
+ mysqlTypeName.equalsIgnoreCase("FLOAT") ||
+ mysqlTypeName.equalsIgnoreCase("DECIMAL") ||
+ mysqlTypeName.equalsIgnoreCase("NUMERIC")) {
+ buf.append(" WHEN ");
+ buf.append(mysqlTypeColumnName);
+ buf.append("='");
+ buf.append(mysqlTypeName);
+ buf.append(" unsigned' THEN ");
+ buf.append(typesMap.get(mysqlTypeName));
+ }
}
buf.append(" ELSE ");
Modified: branches/branch_5_0/connector-j/src/testsuite/regression/MetaDataRegressionTest.java
===================================================================
--- branches/branch_5_0/connector-j/src/testsuite/regression/MetaDataRegressionTest.java 2005-10-25 14:36:38 UTC (rev 4446)
+++ branches/branch_5_0/connector-j/src/testsuite/regression/MetaDataRegressionTest.java 2005-10-25 15:45:26 UTC (rev 4447)
@@ -1171,11 +1171,11 @@
assertEquals(false, dbmd.storesUpperCaseIdentifiers());
assertEquals(false, dbmd.storesUpperCaseQuotedIdentifiers());
} else {
- assertEquals(true, dbmd.storesLowerCaseIdentifiers());
+ assertEquals(false, dbmd.storesLowerCaseIdentifiers());
assertEquals(true, dbmd.storesLowerCaseQuotedIdentifiers());
assertEquals(true, dbmd.storesMixedCaseIdentifiers());
assertEquals(true, dbmd.storesMixedCaseQuotedIdentifiers());
- assertEquals(true, dbmd.storesUpperCaseIdentifiers());
+ assertEquals(false, dbmd.storesUpperCaseIdentifiers());
assertEquals(true, dbmd.storesUpperCaseQuotedIdentifiers());
}
}
@@ -1231,10 +1231,22 @@
null, tableName, "%");
assertTrue(this.rs.next());
assertEquals(Types.BINARY, this.rs.getInt("DATA_TYPE"));
- assertEquals(32, this.rs.getInt("COLUMN_SIZE"));
+
+ if (!((com.mysql.jdbc.Connection)this.conn).getUseInformationSchema() ||
+ (((com.mysql.jdbc.Connection)this.conn).getUseInformationSchema()) &&
+ versionMeetsMinimum(5, 0, 18)) {
+ assertEquals(32, this.rs.getInt("COLUMN_SIZE"));
+ }
+
assertTrue(this.rs.next());
assertEquals(Types.VARBINARY, this.rs.getInt("DATA_TYPE"));
- assertEquals(64, this.rs.getInt("COLUMN_SIZE"));
+
+ if (!((com.mysql.jdbc.Connection)this.conn).getUseInformationSchema() ||
+ (((com.mysql.jdbc.Connection)this.conn).getUseInformationSchema()) &&
+ versionMeetsMinimum(5, 0, 18)) {
+ assertEquals(64, this.rs.getInt("COLUMN_SIZE"));
+ }
+
this.rs.close();
this.rs = this.stmt.executeQuery("SELECT binary_field, varbinary_field FROM "
| Thread |
|---|
| • Connector/J commit: r4447 - in branches/branch_5_0/connector-j/src: com/mysql/jdbc testsuite/regression | mmatthews | 25 Oct |