Skip to content

Instantly share code, notes, and snippets.

@harawata
Last active September 1, 2015 08:06
Show Gist options
  • Save harawata/afa4d8091dd6c8d7faa7 to your computer and use it in GitHub Desktop.
Save harawata/afa4d8091dd6c8d7faa7 to your computer and use it in GitHub Desktop.
diff --git a/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java b/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
index afcb1ff..bfbe785 100644
--- a/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
+++ b/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
@@ -314,7 +314,7 @@ public class DefaultResultSetHandler implements ResultSetHandler {
throws SQLException {
DefaultResultContext<Object> resultContext = new DefaultResultContext<Object>();
skipRows(rsw.getResultSet(), rowBounds);
- while (shouldProcessMoreRows(resultContext, rowBounds) && rsw.getResultSet().next()) {
+ while (shouldProcessMoreRows(resultContext, rowBounds) && !rsw.getResultSet().isClosed() && rsw.getResultSet().next()) {
ResultMap discriminatedResultMap = resolveDiscriminatedResultMap(rsw.getResultSet(), resultMap, null);
Object rowValue = getRowValue(rsw, discriminatedResultMap);
storeObject(resultHandler, resultContext, rowValue, parentMapping, rsw.getResultSet());
@@ -345,7 +345,7 @@ public class DefaultResultSetHandler implements ResultSetHandler {
rs.absolute(rowBounds.getOffset());
}
} else {
- for (int i = 0; i < rowBounds.getOffset(); i++) {
+ for (int i = 0; i < rowBounds.getOffset() && !rs.isClosed(); i++) {
rs.next();
}
}
@@ -763,7 +763,7 @@ public class DefaultResultSetHandler implements ResultSetHandler {
final DefaultResultContext<Object> resultContext = new DefaultResultContext<Object>();
skipRows(rsw.getResultSet(), rowBounds);
Object rowValue = previousRowValue;
- while (shouldProcessMoreRows(resultContext, rowBounds) && rsw.getResultSet().next()) {
+ while (shouldProcessMoreRows(resultContext, rowBounds) && !rsw.getResultSet().isClosed() && rsw.getResultSet().next()) {
final ResultMap discriminatedResultMap = resolveDiscriminatedResultMap(rsw.getResultSet(), resultMap, null);
final CacheKey rowKey = createRowKey(discriminatedResultMap, rsw, null);
Object partialObject = nestedResultObjects.get(rowKey);
@@ -781,7 +781,7 @@ public class DefaultResultSetHandler implements ResultSetHandler {
}
}
}
- if (rowValue != null && mappedStatement.isResultOrdered() && shouldProcessMoreRows(resultContext, rowBounds)) {
+ if (rowValue != null && mappedStatement.isResultOrdered() && shouldProcessMoreRows(resultContext, rowBounds) && !rsw.getResultSet().isClosed()) {
storeObject(resultHandler, resultContext, rowValue, parentMapping, rsw.getResultSet());
previousRowValue = null;
} else if (rowValue != null) {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment