diff --git a/src/main/java/com/alibaba/druid/filter/stat/MergeStatFilter.java b/src/main/java/com/alibaba/druid/filter/stat/MergeStatFilter.java new file mode 100644 index 0000000000..5845b05557 --- /dev/null +++ b/src/main/java/com/alibaba/druid/filter/stat/MergeStatFilter.java @@ -0,0 +1,7 @@ +package com.alibaba.druid.filter.stat; + +public class MergeStatFilter extends StatFilter { + public MergeStatFilter() { + super.setMergeSql(true); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/TestOraclePrefetch.java b/src/test/java/com/alibaba/druid/bvt/pool/TestOraclePrefetch.java index bec35cb51c..47a6cbbe90 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/TestOraclePrefetch.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/TestOraclePrefetch.java @@ -9,8 +9,8 @@ import junit.framework.TestCase; import oracle.jdbc.OracleConnection; import oracle.jdbc.internal.OraclePreparedStatement; -import com.alibaba.druid.bvt.util.OracleMockDriver; import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.test.util.OracleMockDriver; import com.alibaba.druid.util.JdbcUtils; public class TestOraclePrefetch extends TestCase { diff --git a/src/test/java/com/alibaba/druid/bvt/proxy/filter/MergeStatFilterTest.java b/src/test/java/com/alibaba/druid/bvt/proxy/filter/MergeStatFilterTest.java new file mode 100644 index 0000000000..9dcaceb659 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/proxy/filter/MergeStatFilterTest.java @@ -0,0 +1,39 @@ +package com.alibaba.druid.bvt.proxy.filter; + +import java.sql.Connection; +import java.sql.Statement; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.pool.DruidDataSource; + +public class MergeStatFilterTest extends TestCase { + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xx"); + dataSource.setFilters("mergeStat"); + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_merge() throws Exception { + for (int i = 0; i < 100; ++i) { + String sql = "select * from t where id = " + i; + Connection conn = dataSource.getConnection(); + + Statement stmt = conn.createStatement(); + stmt.execute(sql); + stmt.close(); + + conn.close(); + } + + Assert.assertEquals(1, dataSource.getDataSourceStat().getSqlStatMap().size()); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/proxy/filter/MergeStatFilterTest2.java b/src/test/java/com/alibaba/druid/bvt/proxy/filter/MergeStatFilterTest2.java new file mode 100644 index 0000000000..4a81060c36 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/proxy/filter/MergeStatFilterTest2.java @@ -0,0 +1,51 @@ +package com.alibaba.druid.bvt.proxy.filter; + +import java.sql.Connection; +import java.sql.Statement; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.pool.DruidDataSource; + +public class MergeStatFilterTest2 extends TestCase { + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xx"); + dataSource.setFilters("mergeStat"); + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_merge() throws Exception { + { + String sql = "select * from t where id = 3 or id = 5 or id = 7"; + Connection conn = dataSource.getConnection(); + + Statement stmt = conn.createStatement(); + stmt.execute(sql); + stmt.close(); + + conn.close(); + } + + { + String sql = "select * from t where id = 122 or id = 55"; + Connection conn = dataSource.getConnection(); + + Statement stmt = conn.createStatement(); + stmt.execute(sql); + stmt.close(); + + conn.close(); + } + + Assert.assertEquals(1, dataSource.getDataSourceStat().getSqlStatMap() + .size()); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFormatTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFormatTest.java new file mode 100644 index 0000000000..0cdbda3029 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFormatTest.java @@ -0,0 +1,12 @@ +package com.alibaba.druid.bvt.sql.oracle; + +import com.alibaba.druid.sql.SQLUtils; + +import junit.framework.TestCase; + +public class OracleFormatTest extends TestCase{ + public void test_formatOracle(){ + String sql = SQLUtils.formatOracle("select substr('123''''a''''bc',0,3) FROM dual"); + System.out.println(sql); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/util/OracleMockConnection.java b/src/test/java/com/alibaba/druid/test/util/OracleMockConnection.java similarity index 96% rename from src/test/java/com/alibaba/druid/bvt/util/OracleMockConnection.java rename to src/test/java/com/alibaba/druid/test/util/OracleMockConnection.java index 22c39af130..b9aeb0b9b2 100644 --- a/src/test/java/com/alibaba/druid/bvt/util/OracleMockConnection.java +++ b/src/test/java/com/alibaba/druid/test/util/OracleMockConnection.java @@ -1,4 +1,4 @@ -package com.alibaba.druid.bvt.util; +package com.alibaba.druid.test.util; import java.math.BigDecimal; import java.math.BigInteger; @@ -151,8 +151,8 @@ public class OracleMockConnection extends MockConnection implements oracle.jdbc. return null; } + // TODO Auto-generated method stub public NUMBER createNUMBER(boolean arg0) throws SQLException { - // TODO Auto-generated method stub return null; } diff --git a/src/test/java/com/alibaba/druid/bvt/util/OracleMockDriver.java b/src/test/java/com/alibaba/druid/test/util/OracleMockDriver.java similarity index 86% rename from src/test/java/com/alibaba/druid/bvt/util/OracleMockDriver.java rename to src/test/java/com/alibaba/druid/test/util/OracleMockDriver.java index 4181a3cbbc..5eab93f49a 100644 --- a/src/test/java/com/alibaba/druid/bvt/util/OracleMockDriver.java +++ b/src/test/java/com/alibaba/druid/test/util/OracleMockDriver.java @@ -1,4 +1,4 @@ -package com.alibaba.druid.bvt.util; +package com.alibaba.druid.test.util; import java.sql.Connection; import java.sql.SQLException; diff --git a/src/test/java/com/alibaba/druid/bvt/util/OracleMockPreparedStatement.java b/src/test/java/com/alibaba/druid/test/util/OracleMockPreparedStatement.java similarity index 95% rename from src/test/java/com/alibaba/druid/bvt/util/OracleMockPreparedStatement.java rename to src/test/java/com/alibaba/druid/test/util/OracleMockPreparedStatement.java index 08a37329fd..536bfda28d 100644 --- a/src/test/java/com/alibaba/druid/bvt/util/OracleMockPreparedStatement.java +++ b/src/test/java/com/alibaba/druid/test/util/OracleMockPreparedStatement.java @@ -1,4 +1,4 @@ -package com.alibaba.druid.bvt.util; +package com.alibaba.druid.test.util; import java.io.InputStream; import java.io.Reader; diff --git a/src/test/java/com/alibaba/druid/bvt/util/OracleUtilsTest.java b/src/test/java/com/alibaba/druid/test/util/OracleUtilsTest.java similarity index 93% rename from src/test/java/com/alibaba/druid/bvt/util/OracleUtilsTest.java rename to src/test/java/com/alibaba/druid/test/util/OracleUtilsTest.java index c1e497f24d..8926ccfa9b 100644 --- a/src/test/java/com/alibaba/druid/bvt/util/OracleUtilsTest.java +++ b/src/test/java/com/alibaba/druid/test/util/OracleUtilsTest.java @@ -1,4 +1,4 @@ -package com.alibaba.druid.bvt.util; +package com.alibaba.druid.test.util; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method;