Skip to content

Commit 15728f1

Browse files
committed
HHH-19653 log schema/catalog
1 parent 8e7048d commit 15728f1

File tree

8 files changed

+96
-4
lines changed

8 files changed

+96
-4
lines changed

hibernate-agroal/src/main/java/org/hibernate/agroal/internal/AgroalConnectionProvider.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@
4040
import static java.util.stream.Collectors.toMap;
4141
import static org.hibernate.cfg.AgroalSettings.AGROAL_CONFIG_PREFIX;
4242
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.toIsolationNiceName;
43+
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getCatalog;
4344
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getFetchSize;
4445
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getIsolation;
46+
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getSchema;
4547
import static org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.allowJdbcMetadataAccess;
4648

4749
/**
@@ -178,6 +180,8 @@ public DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect) {
178180
? connectionConfig.connectionProviderClass().toString()
179181
: extractDriverNameFromMetadata(),
180182
dialect.getVersion(),
183+
getSchema( agroalDataSource ),
184+
getCatalog( agroalDataSource ),
181185
Boolean.toString( connectionConfig.autoCommit() ),
182186
connectionConfig.jdbcTransactionIsolation() != null
183187
&& connectionConfig.jdbcTransactionIsolation().isDefined()

hibernate-c3p0/src/main/java/org/hibernate/c3p0/internal/C3P0ConnectionProvider.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,10 @@
4343
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.extractSetting;
4444
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.getConnectionProperties;
4545
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.toIsolationNiceName;
46+
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getCatalog;
4647
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getFetchSize;
4748
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getIsolation;
49+
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getSchema;
4850
import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean;
4951
import static org.hibernate.internal.util.config.ConfigurationHelper.getInteger;
5052

@@ -160,6 +162,8 @@ public void configure(Map<String, Object> properties) {
160162
dataSource = createDataSource( jdbcUrl, connectionProps, poolSettings );
161163

162164
final Integer fetchSize = getFetchSize( dataSource );
165+
final String schema = getSchema( dataSource );
166+
final String catalog = getCatalog( dataSource );
163167
if ( isolation == null ) {
164168
isolation = getIsolation( dataSource );
165169
}
@@ -168,6 +172,8 @@ public void configure(Map<String, Object> properties) {
168172
jdbcUrl,
169173
jdbcDriverClass,
170174
dialect.getVersion(),
175+
schema,
176+
catalog,
171177
Boolean.toString( autocommit ),
172178
isolation == null ? null : toIsolationNiceName( isolation ),
173179
requireNonNullElse( getInteger( C3P0_STYLE_MIN_POOL_SIZE.substring( 5 ), poolSettings ),

hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/internal/DatabaseConnectionInfoImpl.java

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public class DatabaseConnectionInfoImpl implements DatabaseConnectionInfo {
3737
protected final String jdbcUrl;
3838
protected final String jdbcDriver;
3939
protected final DatabaseVersion dialectVersion;
40+
protected final String schema;
41+
protected final String catalog;
4042
protected final String autoCommitMode;
4143
protected final String isolationLevel;
4244
protected final Integer poolMinSize;
@@ -48,6 +50,8 @@ public DatabaseConnectionInfoImpl(
4850
String jdbcUrl,
4951
String jdbcDriver,
5052
DatabaseVersion dialectVersion,
53+
String schema,
54+
String catalog,
5155
String autoCommitMode,
5256
String isolationLevel,
5357
Integer poolMinSize,
@@ -57,6 +61,8 @@ public DatabaseConnectionInfoImpl(
5761
this.jdbcUrl = nullIfEmpty( jdbcUrl );
5862
this.jdbcDriver = nullIfEmpty( jdbcDriver );
5963
this.dialectVersion = dialectVersion;
64+
this.schema = schema;
65+
this.catalog = catalog;
6066
this.autoCommitMode = nullIfEmpty( autoCommitMode );
6167
this.isolationLevel = nullIfEmpty( isolationLevel );
6268
this.poolMinSize = poolMinSize;
@@ -70,6 +76,8 @@ public DatabaseConnectionInfoImpl(Map<String, Object> settings, Dialect dialect)
7076
determineUrl( settings ),
7177
determineDriver( settings ),
7278
dialect.getVersion(),
79+
null,
80+
null,
7381
determineAutoCommitMode( settings ),
7482
determineIsolationLevel( settings ),
7583
// No setting for min. pool size
@@ -80,7 +88,43 @@ public DatabaseConnectionInfoImpl(Map<String, Object> settings, Dialect dialect)
8088
}
8189

8290
public DatabaseConnectionInfoImpl(Dialect dialect) {
83-
this( null, null, null, dialect.getVersion(), null, null, null, null, null );
91+
this( null, null, null, dialect.getVersion(), null, null, null, null, null, null, null );
92+
}
93+
94+
public static String getSchema(DataSource dataSource) {
95+
try ( var conn = dataSource.getConnection() ) {
96+
return conn.getSchema();
97+
}
98+
catch ( SQLException ignored ) {
99+
return null;
100+
}
101+
}
102+
103+
public static String getCatalog(DataSource dataSource) {
104+
try ( var conn = dataSource.getConnection() ) {
105+
return conn.getCatalog();
106+
}
107+
catch ( SQLException ignored ) {
108+
return null;
109+
}
110+
}
111+
112+
static String getSchema(ConnectionCreator creator) {
113+
try ( var conn = creator.createConnection() ) {
114+
return conn.getSchema();
115+
}
116+
catch ( SQLException ignored ) {
117+
return null;
118+
}
119+
}
120+
121+
static String getCatalog(ConnectionCreator creator) {
122+
try ( var conn = creator.createConnection() ) {
123+
return conn.getCatalog();
124+
}
125+
catch ( SQLException ignored ) {
126+
return null;
127+
}
84128
}
85129

86130
public static Integer getFetchSize(DataSource dataSource) {
@@ -163,12 +207,23 @@ public Integer getPoolMaxSize() {
163207
return fetchSize;
164208
}
165209

210+
@Override
211+
public @Nullable String getSchema() {
212+
return schema;
213+
}
214+
215+
@Override
216+
public @Nullable String getCatalog() {
217+
return catalog;
218+
}
219+
166220
@Override
167221
public String toInfoString() {
168222
return """
169223
\tDatabase JDBC URL [%s]
170224
\tDatabase driver: %s
171225
\tDatabase version: %s
226+
\tDefault catalog/schema: %s/%s
172227
\tAutocommit mode: %s
173228
\tIsolation level: %s
174229
\tJDBC fetch size: %s
@@ -179,6 +234,8 @@ public String toInfoString() {
179234
handleEmpty( jdbcUrl ),
180235
handleEmpty( jdbcDriver ),
181236
handleEmpty( dialectVersion ),
237+
handleEmpty( catalog ),
238+
handleEmpty( schema ),
182239
handleEmpty( autoCommitMode ),
183240
handleEmpty( isolationLevel ),
184241
handleEmpty( fetchSize ),

hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/internal/DatasourceConnectionProviderImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ public DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect, Extract
162162
metaData == null ? null : metaData.getUrl(),
163163
metaData == null ? null : metaData.getDriver(),
164164
dialect.getVersion(),
165+
metaData == null ? null : metaData.getConnectionSchemaName(),
166+
metaData == null ? null : metaData.getConnectionCatalogName(),
165167
null,
166168
metaData == null ? null : isolationString( metaData ),
167169
null,
@@ -184,6 +186,6 @@ private static Integer fetchSize(ExtractedDatabaseMetaData metaData) {
184186

185187
private String isolationString(ExtractedDatabaseMetaData metaData) {
186188
return toIsolationNiceName( metaData.getTransactionIsolation() )
187-
+ " [default " + toIsolationNiceName( metaData.getDefaultTransactionIsolation() ) + "]";
189+
+ " [default " + toIsolationNiceName( metaData.getDefaultTransactionIsolation() ) + "]";
188190
}
189191
}

hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/internal/DriverManagerConnectionProviderImpl.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,14 @@
3636
import org.hibernate.internal.log.ConnectionInfoLogger;
3737

3838
import static org.hibernate.cfg.JdbcSettings.JAKARTA_JDBC_URL;
39+
import static org.hibernate.cfg.JdbcSettings.POOL_SIZE;
3940
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.extractIsolation;
4041
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.getConnectionProperties;
4142
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.toIsolationNiceName;
43+
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getCatalog;
4244
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getFetchSize;
4345
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getIsolation;
46+
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getSchema;
4447
import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean;
4548
import static org.hibernate.internal.util.config.ConfigurationHelper.getInt;
4649
import static org.hibernate.internal.util.config.ConfigurationHelper.getLong;
@@ -92,7 +95,7 @@ public void configure(Map<String, Object> configurationValues) {
9295
private PooledConnections buildPool(Map<String,Object> configurationValues, ServiceRegistryImplementor serviceRegistry) {
9396
final boolean autoCommit = getBoolean( AvailableSettings.AUTOCOMMIT, configurationValues ); // default to false
9497
final int minSize = getInt( MIN_SIZE, configurationValues, 1 );
95-
final int maxSize = getInt( AvailableSettings.POOL_SIZE, configurationValues, 20 );
98+
final int maxSize = getInt( POOL_SIZE, configurationValues, 20 );
9699
final int initialSize = getInt( INITIAL_SIZE, configurationValues, minSize );
97100

98101
final ConnectionCreator creator = buildCreator( configurationValues, serviceRegistry );
@@ -163,12 +166,14 @@ private static ConnectionCreator buildCreator(
163166
url,
164167
driverList,
165168
SimpleDatabaseVersion.ZERO_VERSION,
169+
getSchema( connectionCreator ),
170+
getCatalog( connectionCreator ),
166171
Boolean.toString( autoCommit ),
167172
isolation != null
168173
? toIsolationNiceName( isolation )
169174
: toIsolationNiceName( getIsolation( connectionCreator ) ),
170175
getInt( MIN_SIZE, configurationValues, 1 ),
171-
getInt( AvailableSettings.POOL_SIZE, configurationValues, 20 ),
176+
getInt( POOL_SIZE, configurationValues, 20 ),
172177
getFetchSize( connectionCreator )
173178
);
174179

@@ -299,6 +304,8 @@ public DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect) {
299304
dbInfo.getJdbcUrl(),
300305
dbInfo.getJdbcDriver(),
301306
dialect.getVersion(),
307+
dbInfo.getSchema(),
308+
dbInfo.getCatalog(),
302309
dbInfo.getAutoCommitMode(),
303310
dbInfo.getIsolationLevel(),
304311
dbInfo.getPoolMinSize(),

hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/spi/DataSourceBasedMultiTenantConnectionProviderImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ public DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect) {
126126
null,
127127
null,
128128
null,
129+
null,
130+
null,
129131
null
130132
) {
131133
@Override

hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/spi/DatabaseConnectionInfo.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,18 @@ public interface DatabaseConnectionInfo {
3737
@Nullable
3838
DatabaseVersion getDialectVersion();
3939

40+
/**
41+
* The default schema
42+
*/
43+
@Nullable
44+
String getSchema();
45+
46+
/**
47+
* The default catalog
48+
*/
49+
@Nullable
50+
String getCatalog();
51+
4052
/**
4153
* The transaction auto-commit mode in effect.
4254
*/

hibernate-hikaricp/src/main/java/org/hibernate/hikaricp/internal/HikariCPConnectionProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ public DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect) {
107107
? extractDriverNameFromMetadata()
108108
: hikariConfig.getDriverClassName(),
109109
dialect.getVersion(),
110+
hikariConfig.getSchema(),
111+
hikariConfig.getCatalog(),
110112
Boolean.toString( hikariConfig.isAutoCommit() ),
111113
hikariConfig.getTransactionIsolation() != null
112114
? hikariConfig.getTransactionIsolation()

0 commit comments

Comments
 (0)