mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fixed for DruidPooledStatement trace ResultSet, fix #4254
This commit is contained in:
@@ -55,7 +55,19 @@ public class DruidPooledStatement extends PoolableWrapper implements Statement {
|
||||
protected void addResultSetTrace(ResultSet resultSet) {
|
||||
if (resultSetTrace == null) {
|
||||
resultSetTrace = new ArrayList<ResultSet>(1);
|
||||
} else if (resultSetTrace.size() > 0) {
|
||||
int lastIndex = resultSetTrace.size() - 1;
|
||||
ResultSet lastResultSet = resultSetTrace.get(lastIndex);
|
||||
try {
|
||||
if (lastResultSet.isClosed()) {
|
||||
resultSetTrace.set(lastIndex, resultSet);
|
||||
return;
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
// skip
|
||||
}
|
||||
}
|
||||
|
||||
resultSetTrace.add(resultSet);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,16 +17,7 @@ package com.alibaba.druid.bvt.pool.basic;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.Reader;
|
||||
import java.sql.Blob;
|
||||
import java.sql.Clob;
|
||||
import java.sql.Date;
|
||||
import java.sql.NClob;
|
||||
import java.sql.RowId;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLXML;
|
||||
import java.sql.Time;
|
||||
import java.sql.Timestamp;
|
||||
import java.sql.Types;
|
||||
import java.sql.*;
|
||||
|
||||
import org.junit.Assert;
|
||||
import junit.framework.TestCase;
|
||||
@@ -73,6 +64,13 @@ public class PoolableCallableStatementTest extends TestCase {
|
||||
Assert.assertEquals(2, raw.getOutParameters().size());
|
||||
}
|
||||
|
||||
public void test_executeQuery_large() throws Exception {
|
||||
for (int i = 0; i < 1000 * 1000; ++i) {
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
rs.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void test_basic() throws Exception {
|
||||
Assert.assertEquals(raw, stmt.getCallableStatementRaw());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user