diff --git a/hibernate-core/src/main/java/org/hibernate/engine/jdbc/spi/TypeInfo.java b/hibernate-core/src/main/java/org/hibernate/engine/jdbc/spi/TypeInfo.java index 27f751599a51..6a4c7f86eec4 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/jdbc/spi/TypeInfo.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/jdbc/spi/TypeInfo.java @@ -86,36 +86,38 @@ public static LinkedHashSet extractTypeInfo(DatabaseMetaData metaData) final LinkedHashSet typeInfoSet = new LinkedHashSet<>(); try { final ResultSet resultSet = metaData.getTypeInfo(); - try { - while ( resultSet.next() ) { - typeInfoSet.add( - new TypeInfo( - resultSet.getString( "TYPE_NAME" ), - resultSet.getInt( "DATA_TYPE" ), - interpretCreateParams( resultSet.getString( "CREATE_PARAMS" ) ), - resultSet.getBoolean( "UNSIGNED_ATTRIBUTE" ), - resultSet.getInt( "PRECISION" ), - resultSet.getShort( "MINIMUM_SCALE" ), - resultSet.getShort( "MAXIMUM_SCALE" ), - resultSet.getBoolean( "FIXED_PREC_SCALE" ), - resultSet.getString( "LITERAL_PREFIX" ), - resultSet.getString( "LITERAL_SUFFIX" ), - resultSet.getBoolean( "CASE_SENSITIVE" ), - TypeSearchability.interpret( resultSet.getShort( "SEARCHABLE" ) ), - TypeNullability.interpret( resultSet.getShort( "NULLABLE" ) ) - ) - ); - } - } - catch ( SQLException e ) { - LOG.unableToAccessTypeInfoResultSet( e.toString() ); - } - finally { + if (resultSet != null) { try { - resultSet.close(); + while ( resultSet.next() ) { + typeInfoSet.add( + new TypeInfo( + resultSet.getString( "TYPE_NAME" ), + resultSet.getInt( "DATA_TYPE" ), + interpretCreateParams( resultSet.getString( "CREATE_PARAMS" ) ), + resultSet.getBoolean( "UNSIGNED_ATTRIBUTE" ), + resultSet.getInt( "PRECISION" ), + resultSet.getShort( "MINIMUM_SCALE" ), + resultSet.getShort( "MAXIMUM_SCALE" ), + resultSet.getBoolean( "FIXED_PREC_SCALE" ), + resultSet.getString( "LITERAL_PREFIX" ), + resultSet.getString( "LITERAL_SUFFIX" ), + resultSet.getBoolean( "CASE_SENSITIVE" ), + TypeSearchability.interpret( resultSet.getShort( "SEARCHABLE" ) ), + TypeNullability.interpret( resultSet.getShort( "NULLABLE" ) ) + ) + ); + } } catch ( SQLException e ) { - LOG.unableToReleaseTypeInfoResultSet(); + LOG.unableToAccessTypeInfoResultSet( e.toString() ); + } + finally { + try { + resultSet.close(); + } + catch ( SQLException e ) { + LOG.unableToReleaseTypeInfoResultSet(); + } } } }