diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDiagnosticsContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDiagnosticsContext.java index c7097e41ee..c53017c92f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultDiagnosticsContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDiagnosticsContext.java @@ -51,6 +51,7 @@ final class DefaultDiagnosticsContext implements DiagnosticsContext { ResultSet resultSet; + boolean resultSetClosing; int resultSetFetchedColumns; int resultSetActualColumns; int resultSetFetchedRows; @@ -90,12 +91,15 @@ public final int resultSetActualRows() { return -1; try { - while (resultSet.next()) - resultSetActualRows++; + if (resultSetClosing || resultSet.getType() != ResultSet.TYPE_FORWARD_ONLY) { + while (resultSet.next()) + resultSetActualRows++; - resultSet.absolute(resultSetFetchedRows); + resultSet.absolute(resultSetFetchedRows); + } } catch (SQLException ignore) {} + return resultSetActualRows; } diff --git a/jOOQ/src/main/java/org/jooq/impl/DiagnosticsResultSet.java b/jOOQ/src/main/java/org/jooq/impl/DiagnosticsResultSet.java index 9f6e3dcffe..e61326be32 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DiagnosticsResultSet.java +++ b/jOOQ/src/main/java/org/jooq/impl/DiagnosticsResultSet.java @@ -745,6 +745,7 @@ public final void close() throws SQLException { super.absolute(current = rows); DefaultDiagnosticsContext ctx = ctx(); + ctx.resultSetClosing = true; if (super.next()) connection.listeners.tooManyRowsFetched(ctx);