[#7097] Avoid consuming result sets that aren't being closed or scrollable

This commit is contained in:
lukaseder 2018-01-25 12:31:04 +01:00
parent c8812d0bc3
commit 8f96a58c7d
2 changed files with 8 additions and 3 deletions

View File

@ -51,6 +51,7 @@ import org.jooq.DiagnosticsContext;
final class DefaultDiagnosticsContext implements DiagnosticsContext {
ResultSet resultSet;
boolean resultSetClosing;
int resultSetFetchedColumns;
int resultSetActualColumns;
int resultSetFetchedRows;
@ -90,12 +91,15 @@ final class DefaultDiagnosticsContext implements DiagnosticsContext {
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;
}

View File

@ -745,6 +745,7 @@ final class DiagnosticsResultSet extends DefaultResultSet {
super.absolute(current = rows);
DefaultDiagnosticsContext ctx = ctx();
ctx.resultSetClosing = true;
if (super.next())
connection.listeners.tooManyRowsFetched(ctx);