diff --git a/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java b/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java index 6107093356..9905cee1e2 100644 --- a/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java +++ b/src/main/java/com/alibaba/druid/stat/JdbcSqlStat.java @@ -164,6 +164,16 @@ public final class JdbcSqlStat implements JdbcSqlStatMBean { context.setFile(val); } + + public final static void setContextSql(String val) { + JdbcStatContext context = JdbcStatManager.getInstance().getStatContext(); + if (context == null) { + context = JdbcStatManager.getInstance().createStatContext(); + JdbcStatManager.getInstance().setStatContext(context); + } + + context.setSql(val); + } public String getName() { return name; diff --git a/src/test/java/com/alibaba/druid/bvt/proxy/filter/StatFilterTest2.java b/src/test/java/com/alibaba/druid/bvt/proxy/filter/StatFilterTest2.java new file mode 100644 index 0000000000..3d61bda219 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/proxy/filter/StatFilterTest2.java @@ -0,0 +1,49 @@ +package com.alibaba.druid.bvt.proxy.filter; + +import java.sql.Connection; +import java.sql.Statement; + +import junit.framework.TestCase; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.stat.JdbcStatContext; +import com.alibaba.druid.stat.JdbcStatManager; + +public class StatFilterTest2 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:"); + dataSource.setFilters("stat"); + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_0() throws Exception { + + Connection conn = dataSource.getConnection(); + + Statement stmt = conn.createStatement(); + + setStatSql("Select ?"); + stmt.execute("select 1"); + + stmt.close(); + + conn.close(); + } + + public final static void setStatSql(String val) { + JdbcStatContext context = JdbcStatManager.getInstance().getStatContext(); + if (context == null) { + context = JdbcStatManager.getInstance().createStatContext(); + JdbcStatManager.getInstance().setStatContext(context); + } + + context.setSql(val); + } +}