[jOOQ/jOOQ#7398] Implement DiagnosticsConnection.ON

This commit is contained in:
Lukas Eder 2022-11-11 16:16:44 +01:00
parent 8045342b5f
commit 246edb9050
2 changed files with 25 additions and 8 deletions

View File

@ -80,6 +80,7 @@ import org.jooq.Routine;
import org.jooq.SQLDialect;
import org.jooq.Scope;
import org.jooq.Update;
import org.jooq.conf.DiagnosticsConnection;
import org.jooq.conf.Settings;
import org.jooq.tools.JooqLogger;
import org.jooq.tools.jdbc.JDBCUtils;
@ -120,7 +121,7 @@ class DefaultExecuteContext implements ExecuteContext {
ConnectionProvider connectionProvider;
private Connection connection;
private SettingsEnabledConnection wrappedConnection;
private Connection wrappedConnection;
private PreparedStatement statement;
private int statementExecutionCount;
private ResultSet resultSet;
@ -631,12 +632,19 @@ class DefaultExecuteContext implements ExecuteContext {
if (c != null) {
LOCAL_CONNECTION.set(c);
connection = c;
wrappedConnection = wrapConnection(provider, c);
wrappedConnection = wrap(provider, c);
}
}
private final SettingsEnabledConnection wrapConnection(ConnectionProvider provider, Connection c) {
return new SettingsEnabledConnection(new ProviderEnabledConnection(provider, c), derivedConfiguration.settings(), this);
private final Connection wrap(ConnectionProvider provider, Connection c) {
return wrap0(new SettingsEnabledConnection(new ProviderEnabledConnection(provider, c), derivedConfiguration.settings(), this));
}
private final Connection wrap0(Connection c) {
if (derivedConfiguration.settings().getDiagnosticsConnection() == DiagnosticsConnection.ON)
return new org.jooq.impl.DiagnosticsConnection(derivedConfiguration, c);
else
return c;
}
final void incrementStatementExecutionCount() {
@ -770,7 +778,7 @@ class DefaultExecuteContext implements ExecuteContext {
if (connection == null)
DefaultExecuteContext.this.connection();
return wrapConnection(this, connection);
return wrap(this, connection);
}
@Override

View File

@ -48,6 +48,7 @@ import static org.jooq.impl.DSL.count;
import static org.jooq.impl.DSL.noCondition;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
@ -70,7 +71,6 @@ import org.jooq.Query;
import org.jooq.QueryPart;
import org.jooq.RenderContext;
// ...
// ...
import org.jooq.Select;
import org.jooq.conf.Settings;
import org.jooq.impl.QOM.Eq;
@ -93,9 +93,16 @@ final class DiagnosticsConnection extends DefaultConnection {
final RenderContext normalisingRenderer;
final Parser parser;
final DiagnosticsListeners listeners;
final boolean release;
DiagnosticsConnection(Configuration configuration) {
super(configuration.connectionProvider().acquire());
this(configuration, null);
}
DiagnosticsConnection(Configuration configuration, Connection c) {
super(c != null ? c : configuration.connectionProvider().acquire());
this.release = c == null;
// [#7527] The Settings.diagnosticsPattern flag overrides the Settings.transformPatterns flag.
this.configuration = configuration;
@ -176,7 +183,9 @@ final class DiagnosticsConnection extends DefaultConnection {
@Override
public final void close() throws SQLException {
repeatedSQL.clear();
configuration.connectionProvider().release(getDelegate());
if (release)
configuration.connectionProvider().release(getDelegate());
}
final boolean checkPattern(Predicate<? super Settings> test) {