From 1111fd48c8c73b21043554dfb603c5041d9c4b2b Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 11 Sep 2017 17:45:32 +0800 Subject: [PATCH] improved sql parser. --- pom.xml | 2 +- .../sql/ast/statement/SQLCommentStatement.java | 17 ++++++++++++----- .../ast/statement/SQLCreateTableStatement.java | 2 +- .../mysql/visitor/MySqlOutputVisitor.java | 6 +++--- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 0cd5c9970a..bf609dbcdf 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ --> com.alibaba druid - 1.1.4-preview_01 + 1.1.4-preview_08 jar druid diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCommentStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCommentStatement.java index f13093a5c0..fe0eaf7d87 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCommentStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCommentStatement.java @@ -27,9 +27,9 @@ public class SQLCommentStatement extends SQLStatementImpl { TABLE, COLUMN } - private SQLName on; - private Type type; - private SQLExpr comment; + private SQLExprTableSource on; + private Type type; + private SQLExpr comment; public SQLExpr getComment() { return comment; @@ -47,14 +47,21 @@ public class SQLCommentStatement extends SQLStatementImpl { this.type = type; } - public SQLName getOn() { + public SQLExprTableSource getOn() { return on; } - public void setOn(SQLName on) { + public void setOn(SQLExprTableSource on) { + if (on != null) { + on.setParent(this); + } this.on = on; } + public void setOn(SQLName on) { + this.setOn(new SQLExprTableSource(on)); + } + @Override protected void accept0(SQLASTVisitor visitor) { if (visitor.visit(this)) { diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java index 7e0a4a9df6..c34a2d4249 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java @@ -624,7 +624,7 @@ public class SQLCreateTableStatement extends SQLStatementImpl implements SQLDDLS } public boolean apply(SQLCommentStatement x) { - SQLName on = x.getOn(); + SQLName on = x.getOn().getName(); SQLExpr comment = x.getComment(); if (comment == null) { return false; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java index 3903dc4aeb..a123ae1742 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java @@ -3580,20 +3580,20 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV public boolean visit(SQLCommentStatement x) { SQLCommentStatement.Type type = x.getType(); - SQLExpr on = x.getOn(); + SQLExprTableSource on = x.getOn(); if (type == SQLCommentStatement.Type.TABLE) { print0(ucase ? "ALTER TABLE " : "alter table "); on.accept(this); print0(ucase ? " COMMENT = " : " comment = "); x.getComment().accept(this); } else { - SQLPropertyExpr propertyExpr = (SQLPropertyExpr) on; + SQLPropertyExpr propertyExpr = (SQLPropertyExpr) on.getExpr(); SQLExpr table = propertyExpr.getOwner(); String column = propertyExpr.getName(); print0(ucase ? "ALTER TABLE " : "alter table "); - table.accept(this); + printTableSourceExpr(table); print0(ucase ? " MODIFY COLUMN " : " modify column "); print(column); print0(ucase ? " COMMENT " : " comment ");