diff --git a/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java b/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java index 4859f5d22d..af6eeb8bb2 100644 --- a/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java +++ b/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java @@ -57,7 +57,6 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean { private final static Log LOG = LogFactory.getLog(StatFilter.class); - public final static String ATTR_SQL = "stat.sql"; public final static String ATTR_UPDATE_COUNT = "stat.updteCount"; public final static String ATTR_TRANSACTION = "stat.tx"; @@ -228,14 +227,14 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean { dataSourceStat.getStatementStat().incrementPrepareCallCount(); JdbcSqlStat sqlStat = createSqlStat(statement, statement.getSql()); - statement.getAttributes().put(ATTR_SQL, sqlStat); + statement.setSqlStat(sqlStat); } @Override public void statementPrepareAfter(PreparedStatementProxy statement) { dataSourceStat.getStatementStat().incrementPrepareCounter(); JdbcSqlStat sqlStat = createSqlStat(statement, statement.getSql()); - statement.getAttributes().put(ATTR_SQL, sqlStat); + statement.setSqlStat(sqlStat); } @Override @@ -283,7 +282,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean { JdbcSqlStat sqlStat = getSqlStat(statement); if (sqlStat == null) { sqlStat = createSqlStat(statement, sql); - statement.getAttributes().put(ATTR_SQL, sqlStat); + statement.setSqlStat(sqlStat); } if (sqlStat != null) { @@ -322,7 +321,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean { JdbcSqlStat sqlStat = getSqlStat(statement); if (sqlStat == null) { sqlStat = createSqlStat(statement, sql); - statement.getAttributes().put(ATTR_SQL, sqlStat); + statement.setSqlStat(sqlStat); } JdbcStatContext statContext = JdbcStatManager.getInstance().getStatContext(); @@ -671,7 +670,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean { return null; } - return (JdbcSqlStat) statement.getAttributes().get(ATTR_SQL); + return statement.getSqlStat(); } public JdbcSqlStat getSqlCounter(String sql) { diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/StatementProxy.java b/src/main/java/com/alibaba/druid/proxy/jdbc/StatementProxy.java index 8ff69d3706..62e22e8683 100644 --- a/src/main/java/com/alibaba/druid/proxy/jdbc/StatementProxy.java +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/StatementProxy.java @@ -19,6 +19,8 @@ import java.sql.Statement; import java.util.List; import java.util.Map; +import com.alibaba.druid.stat.JdbcSqlStat; + /** * @author wenshao */ @@ -31,6 +33,10 @@ public interface StatementProxy extends Statement, WrapperProxy { List getBatchSqlList(); String getBatchSql(); + + JdbcSqlStat getSqlStat(); + + void setSqlStat(JdbcSqlStat sqlStat); String getLastExecuteSql(); diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/StatementProxyImpl.java b/src/main/java/com/alibaba/druid/proxy/jdbc/StatementProxyImpl.java index 4c1732272e..667be82cc1 100644 --- a/src/main/java/com/alibaba/druid/proxy/jdbc/StatementProxyImpl.java +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/StatementProxyImpl.java @@ -28,6 +28,7 @@ import java.util.Map; import com.alibaba.druid.filter.FilterChain; import com.alibaba.druid.filter.FilterChainImpl; +import com.alibaba.druid.stat.JdbcSqlStat; /** * @author wenshao @@ -43,6 +44,7 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro protected long lastExecuteCompleteTime; protected long lastExecuteCompleteNano; protected String lastExecuteSql; + protected JdbcSqlStat sqlStat; protected ArrayList batchSqlList; @@ -316,13 +318,13 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro public boolean isCloseOnCompletion() throws SQLException { throw new SQLFeatureNotSupportedException(); } - + @SuppressWarnings("unchecked") public T unwrap(Class iface) throws SQLException { if (iface == Statement.class) { return (T) statement; } - + return super.unwrap(iface); } @@ -330,4 +332,13 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro public Map getParameters() { return Collections.emptyMap(); } + + public JdbcSqlStat getSqlStat() { + return sqlStat; + } + + public void setSqlStat(JdbcSqlStat sqlStat) { + this.sqlStat = sqlStat; + } + } diff --git a/src/test/java/com/alibaba/druid/pool/TestMockPerf.java b/src/test/java/com/alibaba/druid/pool/TestMockPerf.java index 2e1918e856..0846bc02eb 100644 --- a/src/test/java/com/alibaba/druid/pool/TestMockPerf.java +++ b/src/test/java/com/alibaba/druid/pool/TestMockPerf.java @@ -16,7 +16,7 @@ public class TestMockPerf extends TestCase { dataSource.setMinIdle(3); dataSource.setMaxActive(20); dataSource.setDbType("mysql"); - dataSource.setFilters("stat,wall"); + dataSource.setFilters("stat"); dataSource.init(); }