diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/PostgresCallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/PostgresCallMetaDataProvider.java index 2881eb2ec5..31275e90eb 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/PostgresCallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/PostgresCallMetaDataProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,15 +30,22 @@ import org.springframework.lang.Nullable; * This class is intended for internal use by the Simple JDBC classes. * * @author Thomas Risberg + * @author Juergen Hoeller * @since 2.5 */ public class PostgresCallMetaDataProvider extends GenericCallMetaDataProvider { private static final String RETURN_VALUE_NAME = "returnValue"; + private final String schemaName; + public PostgresCallMetaDataProvider(DatabaseMetaData databaseMetaData) throws SQLException { super(databaseMetaData); + + // Use current schema (or public schema) if no schema specified + String schema = databaseMetaData.getConnection().getSchema(); + this.schemaName = (schema != null ? schema : "public"); } @@ -60,8 +67,7 @@ public class PostgresCallMetaDataProvider extends GenericCallMetaDataProvider { @Override @Nullable public String metaDataSchemaNameToUse(@Nullable String schemaName) { - // Use public schema if no schema specified - return (schemaName == null ? "public" : super.metaDataSchemaNameToUse(schemaName)); + return (schemaName == null ? this.schemaName : super.metaDataSchemaNameToUse(schemaName)); } @Override