Skip to content

Commit 642e554

Browse files
committed
Process PostgreSQL-returned catalog/schema names in given case
Closes gh-35064
1 parent 4f63047 commit 642e554

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -225,19 +225,23 @@ else if (isStoresLowerCaseIdentifiers()) {
225225
}
226226
}
227227

228+
/**
229+
* This implementation delegates to {@link #catalogNameToUse}.
230+
*/
228231
@Override
229232
@Nullable
230233
public String metaDataCatalogNameToUse(@Nullable String catalogName) {
231234
return catalogNameToUse(catalogName);
232235
}
233236

237+
/**
238+
* This implementation delegates to {@link #schemaNameToUse}.
239+
* @see #getDefaultSchema()
240+
*/
234241
@Override
235242
@Nullable
236243
public String metaDataSchemaNameToUse(@Nullable String schemaName) {
237-
if (schemaName == null) {
238-
return schemaNameToUse(getDefaultSchema());
239-
}
240-
return schemaNameToUse(schemaName);
244+
return schemaNameToUse(schemaName != null ? schemaName : getDefaultSchema());
241245
}
242246

243247
/**
@@ -401,7 +405,7 @@ private void processTableColumns(DatabaseMetaData databaseMetaData, TableMetaDat
401405
try {
402406
tableColumns = databaseMetaData.getColumns(
403407
metaDataCatalogName, metaDataSchemaName, metaDataTableName, null);
404-
while (tableColumns.next()) {
408+
while (tableColumns != null && tableColumns.next()) {
405409
String columnName = tableColumns.getString("COLUMN_NAME");
406410
int dataType = tableColumns.getInt("DATA_TYPE");
407411
if (dataType == Types.DECIMAL) {

spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/PostgresTableMetaDataProvider.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,16 @@
1919
import java.sql.DatabaseMetaData;
2020
import java.sql.SQLException;
2121

22+
import org.springframework.lang.Nullable;
23+
2224
/**
2325
* The PostgreSQL specific implementation of {@link TableMetaDataProvider}.
2426
* Supports a feature for retrieving generated keys without the JDBC 3.0
25-
* {@code getGeneratedKeys} support.
27+
* {@code getGeneratedKeys} support. Also, it processes PostgreSQL-returned
28+
* catalog and schema names from {@code DatabaseMetaData} in the given case.
2629
*
2730
* @author Thomas Risberg
31+
* @author Juergen Hoeller
2832
* @since 2.5
2933
*/
3034
public class PostgresTableMetaDataProvider extends GenericTableMetaDataProvider {
@@ -34,6 +38,18 @@ public PostgresTableMetaDataProvider(DatabaseMetaData databaseMetaData) throws S
3438
}
3539

3640

41+
@Override
42+
@Nullable
43+
public String metaDataCatalogNameToUse(@Nullable String catalogName) {
44+
return catalogName;
45+
}
46+
47+
@Override
48+
@Nullable
49+
public String metaDataSchemaNameToUse(@Nullable String schemaName) {
50+
return (schemaName != null ? schemaName : getDefaultSchema());
51+
}
52+
3753
@Override
3854
public boolean isGetGeneratedKeysSimulated() {
3955
return true;

0 commit comments

Comments
 (0)