diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDatabaseMetaData.java b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDatabaseMetaData.java index e7d581a7a..2dfb40d89 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDatabaseMetaData.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDatabaseMetaData.java @@ -25,7 +25,6 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.logging.Level; -import com.microsoft.sqlserver.jdbc.JDBCType; /** diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/TestResource.java b/src/test/java/com/microsoft/sqlserver/jdbc/TestResource.java index 3ebcabf41..607254030 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/TestResource.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/TestResource.java @@ -213,7 +213,5 @@ protected Object[][] getContents() { {"R_noLoginModulesConfiguredForJdbcDriver", "javax.security.auth.login.LoginException (No LoginModules configured for SQLJDBCDriver)"}, {"R_unexpectedThreadCount", "Thread count is higher than expected."}, - {"R_classLoaderNotFoundForColumnType", "Class Loader for type {0} not found for column {1}"}, - {"R_classNotAssignable", "Class {0} is not assignable from class {1} for column {2}"}, {"R_expectedClassDoesNotMatchActualClass", "Expected column class {0} does not match actual column class {1} for column {2}."}}; } diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/databasemetadata/DatabaseMetaDataTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/databasemetadata/DatabaseMetaDataTest.java index 29640c52e..999ccdc1e 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/databasemetadata/DatabaseMetaDataTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/databasemetadata/DatabaseMetaDataTest.java @@ -63,7 +63,6 @@ public class DatabaseMetaDataTest extends AbstractTest { private static final String functionName = RandomUtil.getIdentifier("DBMetadataFunction"); private static Map getColumnsDWColumns = null; private static Map getImportedKeysDWColumns = null; - private static Map> getColumnMetaDataClass = null; private static final String TABLE_CAT = "TABLE_CAT"; private static final String TABLE_SCHEM = "TABLE_SCHEM"; private static final String TABLE_NAME = "TABLE_NAME"; @@ -920,46 +919,48 @@ public void testGetImportedKeysDW() throws SQLException { } } + /** + * Validates the metadata data types defined by JDBC spec. + * Refer to DatabaseMetadata getColumns() specs + * + * @throws SQLException + */ @Test - // Validates the metadata data types defined by JDBC spec - // https://docs.oracle.com/javase/8/docs/api/java/sql/DatabaseMetaData.html#getColumns-java.lang.String-java.lang.String-java.lang.String-java.lang.String- public void testValidateColumnMetadata() throws SQLException { - - if (getColumnMetaDataClass == null) { - getColumnMetaDataClass = new LinkedHashMap<>(); - getColumnMetaDataClass.put(TABLE_CAT, String.class); - getColumnMetaDataClass.put(TABLE_SCHEM, String.class); - getColumnMetaDataClass.put(TABLE_NAME, String.class); - getColumnMetaDataClass.put(COLUMN_NAME, String.class); - getColumnMetaDataClass.put(DATA_TYPE, Integer.class); - getColumnMetaDataClass.put(TYPE_NAME, String.class); - getColumnMetaDataClass.put(COLUMN_SIZE, Integer.class); - getColumnMetaDataClass.put(BUFFER_LENGTH, Integer.class); // Not used - getColumnMetaDataClass.put(DECIMAL_DIGITS, Integer.class); - getColumnMetaDataClass.put(NUM_PREC_RADIX, Integer.class); - getColumnMetaDataClass.put(NULLABLE, Integer.class); - getColumnMetaDataClass.put(REMARKS, String.class); - getColumnMetaDataClass.put(COLUMN_DEF, String.class); - getColumnMetaDataClass.put(SQL_DATA_TYPE, Integer.class); - getColumnMetaDataClass.put(SQL_DATETIME_SUB, Integer.class); - getColumnMetaDataClass.put(CHAR_OCTET_LENGTH, Integer.class); - getColumnMetaDataClass.put(ORDINAL_POSITION, Integer.class); - getColumnMetaDataClass.put(IS_NULLABLE, String.class); - getColumnMetaDataClass.put(SCOPE_CATALOG, String.class); - getColumnMetaDataClass.put(SCOPE_SCHEMA, String.class); - getColumnMetaDataClass.put(SCOPE_TABLE, String.class); - getColumnMetaDataClass.put(SOURCE_DATA_TYPE, Short.class); - getColumnMetaDataClass.put(IS_AUTOINCREMENT, String.class); - getColumnMetaDataClass.put(IS_GENERATEDCOLUMN, String.class); - getColumnMetaDataClass.put(SS_IS_SPARSE, Short.class); - getColumnMetaDataClass.put(SS_IS_COLUMN_SET, Short.class); - getColumnMetaDataClass.put(SS_UDT_CATALOG_NAME, String.class); - getColumnMetaDataClass.put(SS_UDT_SCHEMA_NAME, String.class); - getColumnMetaDataClass.put(SS_UDT_ASSEMBLY_TYPE_NAME, String.class); - getColumnMetaDataClass.put(SS_XML_SCHEMACOLLECTION_CATALOG_NAME, String.class); - getColumnMetaDataClass.put(SS_XML_SCHEMACOLLECTION_SCHEMA_NAME, String.class); - getColumnMetaDataClass.put(SS_XML_SCHEMACOLLECTION_NAME, String.class); - } + Map> getColumnMetaDataClass = new LinkedHashMap<>(); + + getColumnMetaDataClass.put(TABLE_CAT, String.class); + getColumnMetaDataClass.put(TABLE_SCHEM, String.class); + getColumnMetaDataClass.put(TABLE_NAME, String.class); + getColumnMetaDataClass.put(COLUMN_NAME, String.class); + getColumnMetaDataClass.put(DATA_TYPE, Integer.class); + getColumnMetaDataClass.put(TYPE_NAME, String.class); + getColumnMetaDataClass.put(COLUMN_SIZE, Integer.class); + getColumnMetaDataClass.put(BUFFER_LENGTH, Integer.class); // Not used + getColumnMetaDataClass.put(DECIMAL_DIGITS, Integer.class); + getColumnMetaDataClass.put(NUM_PREC_RADIX, Integer.class); + getColumnMetaDataClass.put(NULLABLE, Integer.class); + getColumnMetaDataClass.put(REMARKS, String.class); + getColumnMetaDataClass.put(COLUMN_DEF, String.class); + getColumnMetaDataClass.put(SQL_DATA_TYPE, Integer.class); + getColumnMetaDataClass.put(SQL_DATETIME_SUB, Integer.class); + getColumnMetaDataClass.put(CHAR_OCTET_LENGTH, Integer.class); + getColumnMetaDataClass.put(ORDINAL_POSITION, Integer.class); + getColumnMetaDataClass.put(IS_NULLABLE, String.class); + getColumnMetaDataClass.put(SCOPE_CATALOG, String.class); + getColumnMetaDataClass.put(SCOPE_SCHEMA, String.class); + getColumnMetaDataClass.put(SCOPE_TABLE, String.class); + getColumnMetaDataClass.put(SOURCE_DATA_TYPE, Short.class); + getColumnMetaDataClass.put(IS_AUTOINCREMENT, String.class); + getColumnMetaDataClass.put(IS_GENERATEDCOLUMN, String.class); + getColumnMetaDataClass.put(SS_IS_SPARSE, Short.class); + getColumnMetaDataClass.put(SS_IS_COLUMN_SET, Short.class); + getColumnMetaDataClass.put(SS_UDT_CATALOG_NAME, String.class); + getColumnMetaDataClass.put(SS_UDT_SCHEMA_NAME, String.class); + getColumnMetaDataClass.put(SS_UDT_ASSEMBLY_TYPE_NAME, String.class); + getColumnMetaDataClass.put(SS_XML_SCHEMACOLLECTION_CATALOG_NAME, String.class); + getColumnMetaDataClass.put(SS_XML_SCHEMACOLLECTION_SCHEMA_NAME, String.class); + getColumnMetaDataClass.put(SS_XML_SCHEMACOLLECTION_NAME, String.class); try (Connection conn = getConnection()) { ResultSetMetaData metadata = conn.getMetaData().getColumns(null, null, tableName, null).getMetaData(); @@ -973,14 +974,18 @@ public void testValidateColumnMetadata() throws SQLException { Class expectedClass = getColumnMetaDataClass.get(columnLabel); // Ensure the metadata column is in the metadata column class map - assertNotNull(expectedClass); + if (expectedClass == null) { + MessageFormat form1 = new MessageFormat(TestResource.getResource("R_objectNullOrEmpty")); + Object[] msgArgs1 = {"expected metadata column class for column " + columnLabel}; + fail(form1.format(msgArgs1)); + } // Ensure the actual and expected column metadata types match if (!columnClassName.equals(expectedClass.getName())) { - MessageFormat form1 = new MessageFormat(TestResource.getResource("R_expectedClassDoesNotMatchActualClass")); + MessageFormat form1 = new MessageFormat( + TestResource.getResource("R_expectedClassDoesNotMatchActualClass")); Object[] msgArgs1 = {expectedClass.getName(), columnClassName, columnLabel}; fail(form1.format(msgArgs1)); - } } }