diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index 0ac7c79f52..bb73f5d21d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -3696,13 +3696,13 @@ public class DefaultBinding implements Binding { @Override final Result get0(BindingGetResultSetContext ctx) throws SQLException { - ResultSet nested = (ResultSet) ctx.resultSet().getObject(ctx.index()); + ResultSet nested = Convert.convert(ctx.resultSet().getObject(ctx.index()), ResultSet.class); return DSL.using(ctx.configuration()).fetch(nested); } @Override final Result get0(BindingGetStatementContext ctx) throws SQLException { - ResultSet nested = (ResultSet) ctx.statement().getObject(ctx.index()); + ResultSet nested = Convert.convert(ctx.statement().getObject(ctx.index()), ResultSet.class); return DSL.using(ctx.configuration()).fetch(nested); } diff --git a/jOOQ/src/main/java/org/jooq/tools/Convert.java b/jOOQ/src/main/java/org/jooq/tools/Convert.java index b710842afe..8e86ebaf1f 100644 --- a/jOOQ/src/main/java/org/jooq/tools/Convert.java +++ b/jOOQ/src/main/java/org/jooq/tools/Convert.java @@ -59,6 +59,7 @@ import java.net.URI; import java.net.URL; import java.nio.ByteBuffer; import java.sql.Date; +import java.sql.ResultSet; import java.sql.Struct; import java.sql.Time; import java.sql.Timestamp; @@ -92,12 +93,14 @@ import org.jooq.Field; import org.jooq.JSON; import org.jooq.JSONB; import org.jooq.Record; +import org.jooq.Result; import org.jooq.SQLDialect; import org.jooq.UDTRecord; import org.jooq.XML; import org.jooq.exception.DataTypeException; import org.jooq.impl.IdentityConverter; import org.jooq.tools.jdbc.MockArray; +import org.jooq.tools.jdbc.MockResultSet; import org.jooq.tools.reflect.Reflect; import org.jooq.types.UByte; import org.jooq.types.UInteger; @@ -590,6 +593,11 @@ public final class Convert { return (U) convertArray(fromArray, toClass); } + // [#11560] Results wrapped in ResultSet + else if (Result.class.isAssignableFrom(fromClass) && toClass == ResultSet.class) { + return (U) new MockResultSet((Result) from); + } + // [#3062] Default collections if no specific collection type was requested else if (Collection.class.isAssignableFrom(fromClass) ) { Object[] fromArray = ((Collection) from).toArray();