From f12f7f278083b176376f714a5f685ac286616580 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 25 Nov 2012 00:14:05 +0800 Subject: [PATCH] sqlserver sql parser support multi-values insert statement --- .../sqlserver/visitor/SQLServerOutputVisitor.java | 10 ++++++---- .../druid/bvt/sql/sqlserver/SQLServerInsertTest2.java | 8 ++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java index 460b137729..5f6bf013ad 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java @@ -103,7 +103,8 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe if (x.getColumns().size() > 0) { incrementIndent(); - print(" ("); + println(); + print("("); for (int i = 0, size = x.getColumns().size(); i < size; ++i) { if (i != 0) { if (i % 5 == 0) { @@ -120,14 +121,15 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe if (x.getValuesList().size() != 0) { println(); - print("VALUES "); + print("VALUES"); + println(); for (int i = 0, size = x.getValuesList().size(); i < size; ++i) { if (i != 0) { - print(", "); + print(","); + println(); } x.getValuesList().get(i).accept(this); } - } if (x.getQuery() != null) { diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest2.java index c3d36026b2..620f413bfe 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest2.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest2.java @@ -28,8 +28,12 @@ public class SQLServerInsertTest2 extends TestCase { String sql = "INSERT INTO test (name)" + // "VALUES (N'a'), (N'b'), (N'c')"; - String expect = "INSERT INTO test (name)" + // - "\nVALUES (N'a'), (N'b'), (N'c')"; + String expect = "INSERT INTO test" + // + "\n\t(name)" + // + "\nVALUES" + // + "\n(N'a')," + // + "\n(N'b')," + // + "\n(N'c')"; SQLServerStatementParser parser = new SQLServerStatementParser(sql); SQLStatement stmt = parser.parseStatementList().get(0);