diff --git a/jOOQ-test/src/test/java/org/jooq/test/_/testcases/StatementTests.java b/jOOQ-test/src/test/java/org/jooq/test/_/testcases/StatementTests.java
index ec5edf145a..189162ebc4 100644
--- a/jOOQ-test/src/test/java/org/jooq/test/_/testcases/StatementTests.java
+++ b/jOOQ-test/src/test/java/org/jooq/test/_/testcases/StatementTests.java
@@ -65,6 +65,7 @@ import java.util.logging.Logger;
import javax.sql.DataSource;
import org.jooq.Configuration;
+import org.jooq.ConnectionProvider;
import org.jooq.Cursor;
import org.jooq.DSLContext;
import org.jooq.ExecuteContext;
@@ -179,10 +180,9 @@ extends BaseTest> query =
DSL.using(c1)
@@ -190,13 +190,33 @@ extends BaseTest> query =
DSL.using(c2)
@@ -216,22 +235,61 @@ extends BaseTest
+ * [#3191] This is needed, e.g. when using
+ * {@link Query#keepStatement(boolean)}.
+ */
+ final void connection(ConnectionProvider provider, Connection c) {
+ if (c != null) {
+ LOCAL_CONNECTION.set(c);
+ connection = new SettingsEnabledConnection(new ProviderEnabledConnection(provider, c), configuration.settings());
+ }
+ }
+
@Override
public final void record(Record r) {
this.record = r;