diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java index 90a08f9689..1c3313f110 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java @@ -40,6 +40,7 @@ import static java.util.Arrays.asList; import static java.util.concurrent.Executors.newSingleThreadExecutor; // ... import static org.jooq.SQLDialect.CUBRID; +// ... import static org.jooq.SQLDialect.POSTGRES; // ... import static org.jooq.impl.DSL.field; @@ -251,6 +252,9 @@ abstract class AbstractResultQuery extends AbstractQuery imple protected final int execute(ExecuteContext ctx, ExecuteListener listener) throws SQLException { listener.executeStart(ctx); + // [#5666] Avoid calling Statement.getUpdateCount() twice + Integer updateCount = null; + // [#4511] [#4753] PostgreSQL doesn't like fetchSize with autoCommit == true int f = SettingsTools.getFetchSize(fetchSize, ctx.settings()); if (ctx.family() == POSTGRES && f != 0 && ctx.connection().getAutoCommit()) @@ -265,6 +269,28 @@ abstract class AbstractResultQuery extends AbstractQuery imple + + + + + + + + + + + + + + + + + + + + + + if (ctx.statement().execute()) { ctx.resultSet(ctx.statement().getResultSet()); } @@ -281,9 +307,9 @@ abstract class AbstractResultQuery extends AbstractQuery imple // not a result set. if (ctx.resultSet() == null) { DSLContext dsl = DSL.using(ctx.configuration()); - Field updateCount = field(name("UPDATE_COUNT"), int.class); - Result> r = dsl.newResult(updateCount); - r.add(dsl.newRecord(updateCount).values(ctx.statement().getUpdateCount())); + Field c = field(name("UPDATE_COUNT"), int.class); + Result> r = dsl.newResult(c); + r.add(dsl.newRecord(c).values(updateCount != null ? updateCount : ctx.statement().getUpdateCount())); ctx.resultSet(new MockResultSet(r)); }