diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUpdateStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUpdateStatement.java index 143efc8f48..223d3d36dc 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUpdateStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUpdateStatement.java @@ -18,7 +18,9 @@ package com.alibaba.druid.sql.ast.statement; import java.util.ArrayList; import java.util.List; +import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.*; +import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; public class SQLUpdateStatement extends SQLStatementImpl implements SQLReplaceable { @@ -112,22 +114,8 @@ public class SQLUpdateStatement extends SQLStatementImpl implements SQLReplaceab @Override public void output(StringBuffer buf) { - buf.append("UPDATE "); - - this.tableSource.output(buf); - - buf.append(" SET "); - for (int i = 0, size = items.size(); i < size; ++i) { - if (i != 0) { - buf.append(", "); - } - items.get(i).output(buf); - } - - if (this.where != null) { - buf.append(" WHERE "); - this.where.output(buf); - } + SQLASTOutputVisitor visitor = SQLUtils.createOutputVisitor(buf, dbType); + this.accept(visitor); } @Override diff --git a/src/test/java/com/alibaba/druid/bvt/bug/Issue2015.java b/src/test/java/com/alibaba/druid/bvt/bug/Issue2015.java new file mode 100644 index 0000000000..eac45dcf80 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/bug/Issue2015.java @@ -0,0 +1,21 @@ +package com.alibaba.druid.bvt.bug; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.util.JdbcConstants; +import junit.framework.TestCase; + +import java.util.List; + +public class Issue2015 extends TestCase { + public void test_for_issue() throws Exception { + String sql = "update t set a=1,b=2 where a > 1"; + List stmtList = SQLUtils.parseStatements(sql, JdbcConstants.MYSQL); + + StringBuffer buf = new StringBuffer(); + stmtList.get(0).output(buf); + assertEquals("UPDATE t\n" + + "SET a = 1, b = 2\n" + + "WHERE a > 1", buf.toString()); + } +}