diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java index 9839bf9bc7..af0797f4c1 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java @@ -1291,7 +1291,8 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter { } String columnName = x.getName().toString(); - addColumn(tableName, columnName); + Column column = addColumn(tableName, columnName); + column.setDataType(x.getDataType().getName()); return false; } diff --git a/src/main/java/com/alibaba/druid/stat/TableStat.java b/src/main/java/com/alibaba/druid/stat/TableStat.java index d1b3071324..210c71f328 100644 --- a/src/main/java/com/alibaba/druid/stat/TableStat.java +++ b/src/main/java/com/alibaba/druid/stat/TableStat.java @@ -409,6 +409,11 @@ public class TableStat { private transient String fullName; + /** + * @since 1.0.20 + */ + private String dataType; + public Column(){ } @@ -487,6 +492,20 @@ public class TableStat { this.name = name; this.fullName = null; } + + /** + * @since 1.0.20 + */ + public String getDataType() { + return dataType; + } + + /** + * @since 1.0.20 + */ + public void setDataType(String dataType) { + this.dataType = dataType; + } public Map getAttributes() { return attributes; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest70.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest70.java index fbccad5a31..7ae5afda6e 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest70.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest70.java @@ -23,6 +23,7 @@ import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; +import com.alibaba.druid.stat.TableStat.Column; public class MySqlCreateTableTest70 extends MysqlTest { @@ -53,6 +54,10 @@ public class MySqlCreateTableTest70 extends MysqlTest { MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); stmt.accept(visitor); + + Column column = visitor.getColumn("app_customer_license", "version"); + Assert.assertNotNull(column); + Assert.assertEquals("bigint", column.getDataType()); { String output = SQLUtils.toMySqlString(stmt);