diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSourceStatValue.java b/src/main/java/com/alibaba/druid/pool/DruidDataSourceStatValue.java index 3f7ee04bee..f344c25718 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSourceStatValue.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSourceStatValue.java @@ -22,10 +22,10 @@ import com.alibaba.druid.stat.JdbcSqlStatValue; import com.alibaba.druid.support.monitor.MField; import com.alibaba.druid.support.monitor.MTable; -@MTable(name="druid_datasource") +@MTable(name = "druid_datasource") public class DruidDataSourceStatValue { - @MField + @MField(groupBy = true) protected String name; @MField @@ -34,7 +34,6 @@ public class DruidDataSourceStatValue { @MField protected String driverClassName; - @MField protected String url; protected String userName; protected List filterClassNames; @@ -123,8 +122,7 @@ public class DruidDataSourceStatValue { @MField protected long blobOpenCount; - - + protected long sqlSkipCount; protected List sqlList; diff --git a/src/main/java/com/alibaba/druid/stat/JdbcSqlStatValue.java b/src/main/java/com/alibaba/druid/stat/JdbcSqlStatValue.java index 36f462dd2d..2bc0343a99 100644 --- a/src/main/java/com/alibaba/druid/stat/JdbcSqlStatValue.java +++ b/src/main/java/com/alibaba/druid/stat/JdbcSqlStatValue.java @@ -33,7 +33,7 @@ public class JdbcSqlStatValue { protected String sql; - @MField + @MField(groupBy = true) private long sqlHash; @MField diff --git a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatValue.java b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatValue.java index 5087e790b3..d506140f35 100644 --- a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatValue.java +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStatValue.java @@ -24,7 +24,7 @@ import com.alibaba.druid.support.monitor.MTable; @MTable(name = "druid_webapp") public class WebAppStatValue { - @MField + @MField(groupBy = true) String contextPath; @MField diff --git a/src/main/java/com/alibaba/druid/support/http/stat/WebURIStatValue.java b/src/main/java/com/alibaba/druid/support/http/stat/WebURIStatValue.java index 2ab6e0d963..812b3b9aae 100644 --- a/src/main/java/com/alibaba/druid/support/http/stat/WebURIStatValue.java +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebURIStatValue.java @@ -28,7 +28,7 @@ import com.alibaba.druid.support.profile.ProfileEntryStatValue; @MTable(name = "druid_weburi") public class WebURIStatValue { - @MField + @MField(groupBy = true) protected String uri; @MField diff --git a/src/main/java/com/alibaba/druid/support/monitor/MField.java b/src/main/java/com/alibaba/druid/support/monitor/MField.java index 866dec887d..60391280cc 100644 --- a/src/main/java/com/alibaba/druid/support/monitor/MField.java +++ b/src/main/java/com/alibaba/druid/support/monitor/MField.java @@ -25,4 +25,6 @@ import java.lang.annotation.Target; public @interface MField { String name() default ""; + + boolean groupBy() default false; } diff --git a/src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDaoJdbcImpl.java b/src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDaoJdbcImpl.java index 0dd0663689..0d0c654369 100644 --- a/src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDaoJdbcImpl.java +++ b/src/main/java/com/alibaba/druid/support/monitor/dao/MonitorDaoJdbcImpl.java @@ -328,8 +328,10 @@ public class MonitorDaoJdbcImpl implements MonitorDao { } } - protected void setParameterForSqlStat(BeanInfo beanInfo, MonitorContext ctx, PreparedStatement stmt, Object sqlStat) - throws SQLException { + protected void setParameterForSqlStat(BeanInfo beanInfo, // + MonitorContext ctx, // + PreparedStatement stmt, // + Object sqlStat) throws SQLException { int paramIndex = 1; setParam(stmt, paramIndex++, ctx.getDomainName()); @@ -449,7 +451,8 @@ public class MonitorDaoJdbcImpl implements MonitorDao { public static class BeanInfo { private final Class clazz; - private final List fields = new ArrayList(); + private final List fields = new ArrayList(); + private final List groupByFields = new ArrayList(); private String insertSql; private String tableName; @@ -476,7 +479,11 @@ public class MonitorDaoJdbcImpl implements MonitorDao { columnName = field.getName(); } - fields.add(new FieldInfo(field, columnName)); + FieldInfo fieldInfo = new FieldInfo(field, columnName); + fields.add(fieldInfo); + if (annotation.groupBy()) { + groupByFields.add(fieldInfo); + } } } @@ -500,6 +507,10 @@ public class MonitorDaoJdbcImpl implements MonitorDao { return fields; } + public List getGroupByFields() { + return groupByFields; + } + } public static class FieldInfo { @@ -529,6 +540,6 @@ public class MonitorDaoJdbcImpl implements MonitorDao { @Override public void saveSqlWall(MonitorContext ctx, List statList) { - + } } diff --git a/src/main/java/com/alibaba/druid/support/spring/stat/SpringMethodStatValue.java b/src/main/java/com/alibaba/druid/support/spring/stat/SpringMethodStatValue.java index dc79bde1e1..cfddf3410c 100644 --- a/src/main/java/com/alibaba/druid/support/spring/stat/SpringMethodStatValue.java +++ b/src/main/java/com/alibaba/druid/support/spring/stat/SpringMethodStatValue.java @@ -26,10 +26,10 @@ import com.alibaba.druid.util.Utils; @MTable(name = "druid_springmethod") public class SpringMethodStatValue { - @MField + @MField(groupBy = true) private String className; - @MField + @MField(groupBy = true) private String signature; @MField diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableAddPrimaryKey.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableAddPrimaryKey.java index 6cae3afafe..e41e4dff85 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableAddPrimaryKey.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableAddPrimaryKey.java @@ -33,7 +33,7 @@ public class MySqlAlterTableAddPrimaryKey extends TestCase { String output = SQLUtils.toMySqlString(stmt); Assert.assertEquals("ALTER TABLE `test`.`tb1`" + // "\n\tCHANGE COLUMN `fid` `fid` INT(11) NULL NOT NULL,\n\t" + // - "ADD PRIAMRY KEY (`fid`)", output); + "ADD PRIMARY KEY (`fid`)", output); } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableAddPrimaryKey_1.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableAddPrimaryKey_1.java index 4f85296ab4..3620808e4f 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableAddPrimaryKey_1.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlAlterTableAddPrimaryKey_1.java @@ -33,7 +33,7 @@ public class MySqlAlterTableAddPrimaryKey_1 extends TestCase { parser.match(Token.EOF); String output = SQLUtils.toMySqlString(stmt); Assert.assertEquals("ALTER TABLE tabelname" + // - "\n\tADD CONSTRAINT mYconstraint PRIAMRY KEY (id)", output); + "\n\tADD CONSTRAINT mYconstraint PRIMARY KEY (id)", output); } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest47.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest47.java index b267556bfa..1b1684269f 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest47.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest47.java @@ -59,7 +59,7 @@ public class MySqlCreateTableTest47 extends MysqlTest { + "\n\tpname VARCHAR(60), "// + "\n\tDESCRIPTION TEXT, "// + "\n\tICONURL VARCHAR(255), "// - + "\n\tCONSTRAINT PK_issuestatus PRIAMRY KEY (ID)"// + + "\n\tCONSTRAINT PK_issuestatus PRIMARY KEY (ID)"// + "\n)", output); } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest48.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest48.java index 1ae54c4d75..0a0ec2c7d8 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest48.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest48.java @@ -60,7 +60,7 @@ public class MySqlCreateTableTest48 extends MysqlTest { + "\n\tREPOSITORY_ID INTEGER, "// + "\n\tCONSTRAINT fk_ao_e8b6cc_repo_to_changeset_repository_id FOREIGN KEY (ID) REFERENCES AO_E8B6CC_REPOSITORY_MAPPING (ID), "// + "\n\tCONSTRAINT fk_ao_e8b6cc_repo_to_changeset_changeset_id FOREIGN KEY (ID) REFERENCES AO_E8B6CC_CHANGESET_MAPPING (ID), "// - + "\n\tPRIAMRY KEY (ID)"// + + "\n\tPRIMARY KEY (ID)"// + "\n) ENGINE = InnoDB",// output);