diff --git a/jOOQ/src/main/java/org/jooq/Attachable.java b/jOOQ/src/main/java/org/jooq/Attachable.java
index c9fc414f45..5236019baf 100644
--- a/jOOQ/src/main/java/org/jooq/Attachable.java
+++ b/jOOQ/src/main/java/org/jooq/Attachable.java
@@ -53,10 +53,10 @@
*/
package org.jooq;
-import java.io.Serializable;
-import java.sql.Connection;
-
-import javax.sql.DataSource;
+import java.io.Serializable;
+import java.sql.Connection;
+
+import javax.sql.DataSource;
/**
* An object in jOOQ that can have an underlying {@link Configuration} attached
@@ -80,11 +80,18 @@ import javax.sql.DataSource;
public interface Attachable extends Serializable {
/**
- * Attach this object to a new {@link Configuration}
+ * Attach this object to a new {@link Configuration}.
*
* @param configuration A configuration or null, if you wish to
* detach this Attachable from its previous
* configuration.
*/
- void attach(Configuration configuration);
+ void attach(Configuration configuration);
+
+ /**
+ * Detach this object from its current {@link Configuration}.
+ *
+ * This is the same as calling attach(null).
+ */
+ void detach();
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingQuery.java
index 6329ac8971..dca9e042ab 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingQuery.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingQuery.java
@@ -53,18 +53,18 @@
*/
package org.jooq.impl;
-import java.util.List;
-import java.util.Map;
-
-import org.jooq.AttachableInternal;
-import org.jooq.BindContext;
-import org.jooq.Clause;
-import org.jooq.Configuration;
-import org.jooq.Context;
-import org.jooq.Param;
-import org.jooq.Query;
-import org.jooq.RenderContext;
-import org.jooq.conf.ParamType;
+import java.util.List;
+import java.util.Map;
+
+import org.jooq.AttachableInternal;
+import org.jooq.BindContext;
+import org.jooq.Clause;
+import org.jooq.Configuration;
+import org.jooq.Context;
+import org.jooq.Param;
+import org.jooq.Query;
+import org.jooq.RenderContext;
+import org.jooq.conf.ParamType;
/**
* @author Lukas Eder
@@ -143,6 +143,11 @@ abstract class AbstractDelegatingQuery extends AbstractQueryPar
delegate.attach(configuration);
}
+ @Override
+ public final void detach() {
+ delegate.detach();
+ }
+
@Override
public final int execute() {
return delegate.execute();
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java
index ecb4bae165..741896a173 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java
@@ -107,6 +107,11 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query, Attacha
configuration = c;
}
+ @Override
+ public final void detach() {
+ attach(null);
+ }
+
@Override
public final Configuration configuration() {
return configuration;
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java
index fc27c81217..e622f76a8a 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java
@@ -53,48 +53,48 @@
*/
package org.jooq.impl;
-import static org.jooq.Clause.FIELD;
-import static org.jooq.Clause.FIELD_FUNCTION;
-import static org.jooq.SQLDialect.POSTGRES;
-import static org.jooq.SQLDialect.SQLSERVER;
-import static org.jooq.impl.DSL.function;
-import static org.jooq.impl.DSL.table;
-import static org.jooq.impl.DSL.using;
-import static org.jooq.impl.DSL.val;
-
-import java.sql.CallableStatement;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.jooq.AggregateFunction;
-import org.jooq.ArrayRecord;
-import org.jooq.AttachableInternal;
-import org.jooq.BindContext;
-import org.jooq.Clause;
-import org.jooq.Configuration;
-import org.jooq.Context;
-import org.jooq.DSLContext;
-import org.jooq.DataType;
-import org.jooq.ExecuteContext;
-import org.jooq.ExecuteListener;
-import org.jooq.Field;
-import org.jooq.Package;
-import org.jooq.Parameter;
-import org.jooq.RenderContext;
-import org.jooq.Result;
-import org.jooq.Routine;
-import org.jooq.Schema;
-import org.jooq.UDTField;
-import org.jooq.UDTRecord;
-import org.jooq.tools.Convert;
+import static org.jooq.Clause.FIELD;
+import static org.jooq.Clause.FIELD_FUNCTION;
+import static org.jooq.SQLDialect.POSTGRES;
+import static org.jooq.SQLDialect.SQLSERVER;
+import static org.jooq.impl.DSL.function;
+import static org.jooq.impl.DSL.table;
+import static org.jooq.impl.DSL.using;
+import static org.jooq.impl.DSL.val;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jooq.AggregateFunction;
+import org.jooq.ArrayRecord;
+import org.jooq.AttachableInternal;
+import org.jooq.BindContext;
+import org.jooq.Clause;
+import org.jooq.Configuration;
+import org.jooq.Context;
+import org.jooq.DSLContext;
+import org.jooq.DataType;
+import org.jooq.ExecuteContext;
+import org.jooq.ExecuteListener;
+import org.jooq.Field;
+import org.jooq.Package;
+import org.jooq.Parameter;
+import org.jooq.RenderContext;
+import org.jooq.Result;
+import org.jooq.Routine;
+import org.jooq.Schema;
+import org.jooq.UDTField;
+import org.jooq.UDTRecord;
+import org.jooq.tools.Convert;
/**
* A common base class for stored procedures
@@ -208,6 +208,11 @@ public abstract class AbstractRoutine