From 3879c88d90ded0994ca69c8ac3e9d6362a0934a5 Mon Sep 17 00:00:00 2001 From: wenshao Date: Fri, 5 Aug 2016 22:56:25 +0800 Subject: [PATCH] bug fixed for moreResultSets. --- .../druid/pool/DruidPooledResultSet.java | 2 +- .../druid/pool/DruidPooledStatement.java | 27 ++++++++++++------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidPooledResultSet.java b/src/main/java/com/alibaba/druid/pool/DruidPooledResultSet.java index 0d31fc4326..afca269020 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidPooledResultSet.java +++ b/src/main/java/com/alibaba/druid/pool/DruidPooledResultSet.java @@ -40,7 +40,7 @@ public final class DruidPooledResultSet extends PoolableWrapper implements Resul private final ResultSet rs; private final DruidPooledStatement stmt; - private boolean closed = false; + protected boolean closed = false; protected int cursorIndex = 0; protected int fetchRowCount = 0; diff --git a/src/main/java/com/alibaba/druid/pool/DruidPooledStatement.java b/src/main/java/com/alibaba/druid/pool/DruidPooledStatement.java index af859fb78b..a8d12470df 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidPooledStatement.java +++ b/src/main/java/com/alibaba/druid/pool/DruidPooledStatement.java @@ -15,18 +15,13 @@ */ package com.alibaba.druid.pool; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.SQLFeatureNotSupportedException; -import java.sql.SQLWarning; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.List; - import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; +import java.sql.*; +import java.util.ArrayList; +import java.util.List; + /** * @author wenshao [szujobs@hotmail.com] */ @@ -459,7 +454,19 @@ public class DruidPooledStatement extends PoolableWrapper implements Statement { checkOpen(); try { - return stmt.getMoreResults(); + boolean moreResults = stmt.getMoreResults(); + + if (moreResults) { + if (resultSetTrace != null) { + ResultSet lastResultSet = resultSetTrace.get(resultSetTrace.size() - 1); + if (lastResultSet instanceof DruidPooledResultSet) { + DruidPooledResultSet pooledResultSet = ((DruidPooledResultSet) lastResultSet); + pooledResultSet.closed = true; + } + } + } + + return moreResults; } catch (Throwable t) { throw checkException(t); }