From a26e4c546def096aa5769023d0666f608abcd912 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 25 Sep 2016 05:06:50 +0800 Subject: [PATCH] refactor sql parser & support tableMapping. issue #1432 --- .../java/com/alibaba/druid/sql/SQLUtils.java | 20 ++- .../mysql/visitor/MySqlOutputVisitor.java | 4 +- .../MySqlParameterizedOutputVisitor.java | 2 + .../oracle/visitor/OracleOutputVisitor.java | 24 +--- .../postgresql/visitor/PGOutputVisitor.java | 19 +-- .../visitor/SQLServerOutputVisitor.java | 23 +--- .../sql/visitor/SQLASTOutputVisitor.java | 117 ++++++++++++------ .../bvt/sql/MappingTest_createTable.java | 75 +++++++++++ .../druid/bvt/sql/MappingTest_delete.java | 46 +++++++ .../druid/bvt/sql/MappingTest_insert.java | 52 ++++++++ .../druid/bvt/sql/MappingTest_select.java | 52 ++++++++ .../druid/bvt/sql/MappingTest_update.java | 58 +++++++++ .../druid/bvt/sql/db2/DB2InsertTest_0.java | 6 +- .../sql/oracle/insert/OracleInsertTest10.java | 5 +- .../sql/oracle/insert/OracleInsertTest11.java | 3 +- .../sql/oracle/insert/OracleInsertTest12.java | 3 +- .../sql/oracle/insert/OracleInsertTest15.java | 3 +- .../sql/oracle/insert/OracleInsertTest16.java | 3 +- .../sql/oracle/insert/OracleInsertTest17.java | 6 +- .../sql/oracle/insert/OracleInsertTest18.java | 6 +- .../sql/oracle/insert/OracleInsertTest19.java | 3 +- .../bvt/sql/phoenix/PhoenixUpsertTest.java | 6 +- .../bvt/sql/phoenix/PhoenixUpsertTest_1.java | 6 +- .../bvt/sql/phoenix/PhoenixUpsertTest_2.java | 6 +- .../sql/phoenix/PhoenixUpsertTest_std.java | 6 +- .../bvt/sql/sqlserver/SQLServerIfTest.java | 12 +- .../sql/sqlserver/SQLServerInsertTest.java | 6 +- .../sql/sqlserver/SQLServerInsertTest1.java | 6 +- .../sql/sqlserver/SQLServerInsertTest2.java | 6 +- .../sql/sqlserver/SQLServerInsertTest3.java | 3 +- .../sql/sqlserver/SQLServerInsertTest5.java | 11 +- .../sql/sqlserver/SQLServerInsertTest6.java | 6 +- .../sql/sqlserver/SQLServerInsertTest8.java | 3 +- 33 files changed, 430 insertions(+), 177 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/MappingTest_createTable.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/MappingTest_delete.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/MappingTest_insert.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/MappingTest_select.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/MappingTest_update.java diff --git a/src/main/java/com/alibaba/druid/sql/SQLUtils.java b/src/main/java/com/alibaba/druid/sql/SQLUtils.java index 26a52a4e87..106d22906d 100644 --- a/src/main/java/com/alibaba/druid/sql/SQLUtils.java +++ b/src/main/java/com/alibaba/druid/sql/SQLUtils.java @@ -17,6 +17,7 @@ package com.alibaba.druid.sql; import java.util.ArrayList; import java.util.List; +import java.util.Map; import com.alibaba.druid.DruidRuntimeException; import com.alibaba.druid.sql.ast.SQLExpr; @@ -263,10 +264,18 @@ public class SQLUtils { } public static String toSQLString(List statementList, String dbType, List parameters) { - return toSQLString(statementList, dbType, parameters, null); + return toSQLString(statementList, dbType, parameters, null, null); } public static String toSQLString(List statementList, String dbType, List parameters, FormatOption option) { + return toSQLString(statementList, dbType, parameters, option, null); + } + + public static String toSQLString(List statementList + , String dbType + , List parameters + , FormatOption option + , Map tableMapping) { StringBuilder out = new StringBuilder(); SQLASTOutputVisitor visitor = createFormatOutputVisitor(out, statementList, dbType); if (parameters != null) { @@ -278,6 +287,10 @@ public class SQLUtils { } visitor.setUppCase(option.isUppCase()); + if (tableMapping != null) { + visitor.setTableMapping(tableMapping); + } + for (int i = 0; i < statementList.size(); i++) { SQLStatement stmt = statementList.get(i); @@ -645,5 +658,10 @@ public class SQLUtils { this.ucase = val; } } + + public static String refactor(String dbType, String sql, Map tableMapping) { + List stmtList = parseStatements(sql, dbType); + return SQLUtils.toSQLString(stmtList, dbType, null, null, tableMapping); + } } 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 29c5677d96..4eed2117f6 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 @@ -467,7 +467,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV print0(ucase ? "IF NOT EXISTS " : "if not exists "); } - x.getName().accept(this); + printTableSourceExpr(x.getName()); if (x.getLike() != null) { print0(ucase ? " LIKE " : " like "); @@ -2659,7 +2659,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } public boolean visit(SQLExprTableSource x) { - x.getExpr().accept(this); + printTableSourceExpr(x.getExpr()); if (x.getAlias() != null) { print(' '); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java index 6b4cdcdbcc..5518c6d792 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java @@ -15,6 +15,8 @@ */ package com.alibaba.druid.sql.dialect.mysql.visitor; +import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.SQLObject; import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr; import com.alibaba.druid.sql.ast.expr.SQLCharExpr; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index a231e58fc7..19608221a0 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -619,7 +619,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(OracleSelectTableReference x) { if (x.isOnly()) { print0(ucase ? "ONLY (" : "only ("); - x.getExpr().accept(this); + printTableSourceExpr(x.getExpr()); if (x.getPartition() != null) { print(' '); @@ -628,7 +628,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS print(')'); } else { - x.getExpr().accept(this); + printTableSourceExpr(x.getExpr()); if (x.getPartition() != null) { print(' '); @@ -1285,27 +1285,11 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS x.getTableSource().accept(this); - if (x.getColumns().size() > 0) { - incrementIndent(); - println(); - print('('); - for (int i = 0, size = x.getColumns().size(); i < size; ++i) { - if (i != 0) { - if (i % 5 == 0) { - println(); - } - print0(", "); - } - x.getColumns().get(i).accept(this); - } - print(')'); - decrementIndent(); - } + printInsertColumns(x.getColumns()); if (x.getValues() != null) { println(); - print0(ucase ? "VALUES" : "values"); - println(); + print0(ucase ? "VALUES " : "values "); x.getValues().accept(this); } else { if (x.getQuery() != null) { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java index 2d61fa616e..7ccd24664c 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java @@ -291,7 +291,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor print0(ucase ? "ONLY " : "only "); } - x.getTableName().accept(this); + printTableSourceExpr(x.getTableName()); if (x.getAlias() != null) { print0(ucase ? " AS " : " as "); @@ -337,22 +337,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor x.getTableSource().accept(this); - if (x.getColumns().size() > 0) { - incrementIndent(); - println(); - print('('); - for (int i = 0, size = x.getColumns().size(); i < size; ++i) { - if (i != 0) { - if (i % 5 == 0) { - println(); - } - print0(", "); - } - x.getColumns().get(i).accept(this); - } - print(')'); - decrementIndent(); - } + printInsertColumns(x.getColumns()); if (x.getValues() != null) { println(); 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 948f9acf16..a63e456597 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 @@ -151,23 +151,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe x.getTableSource().accept(this); - if (x.getColumns().size() > 0) { - incrementIndent(); - println(); - print('('); - for (int i = 0, size = x.getColumns().size(); i < size; ++i) { - if (i != 0) { - if (i % 5 == 0) { - println(); - } - print0(", "); - } - - x.getColumns().get(i).accept(this); - } - print(')'); - decrementIndent(); - } + printInsertColumns(x.getColumns()); if (x.getOutput() != null) { println(); @@ -177,8 +161,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe if (x.getValuesList().size() != 0) { println(); - print0(ucase ? "VALUES" : "values"); - println(); + print0(ucase ? "VALUES " : "values "); for (int i = 0, size = x.getValuesList().size(); i < size; ++i) { if (i != 0) { print(','); @@ -256,7 +239,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe } public boolean visit(SQLExprTableSource x) { - x.getExpr().accept(this); + printTableSourceExpr(x.getExpr()); if (x.getAlias() != null) { print(' '); diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java index 692fe059c1..3509a218e0 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -22,9 +22,7 @@ import java.sql.Blob; import java.sql.Clob; import java.sql.NClob; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; import com.alibaba.druid.sql.ast.*; import com.alibaba.druid.sql.ast.expr.*; @@ -40,17 +38,19 @@ import com.alibaba.druid.util.JdbcConstants; public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements PrintableVisitor { protected final Appendable appender; - private String indent = "\t"; - private int indentCount = 0; - private boolean prettyFormat = true; - protected boolean ucase = true; - protected int selectListNumberOfLine = 5; + private String indent = "\t"; + private int indentCount = 0; + private boolean prettyFormat = true; + protected boolean ucase = true; + protected int selectListNumberOfLine = 5; - protected boolean groupItemSingleLine = false; + protected boolean groupItemSingleLine = false; - protected List parameters; + protected List parameters; - protected String dbType; + protected String dbType; + + protected Map tableMapping; public SQLASTOutputVisitor(Appendable appender){ this.appender = appender; @@ -64,6 +64,17 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab return this.parameters.size(); } + public void addTableMapping(String srcTable, String destTable) { + if (tableMapping != null) { + tableMapping = new HashMap(); + } + tableMapping.put(srcTable, destTable); + } + + public void setTableMapping(Map tableMapping) { + this.tableMapping = tableMapping; + } + public List getParameters() { if (parameters == null) { parameters = new ArrayList(); @@ -772,8 +783,22 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab return false; } + protected void printTableSourceExpr(SQLExpr expr) { + if (tableMapping != null && expr instanceof SQLName) { + String tableName = expr.toString(); + String destTableName = tableMapping.get(tableName); + if (destTableName != null) { + tableName = destTableName; + print0(tableName); + return; + } + } + + expr.accept(this); + } + public boolean visit(SQLExprTableSource x) { - x.getExpr().accept(this); + printTableSourceExpr(x.getExpr()); if (x.getAlias() != null) { print(' '); @@ -984,10 +1009,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (from == null) { print0(ucase ? "DELETE FROM " : "delete from "); - x.getTableName().accept(this); + printTableSourceExpr(x.getTableName()); } else { print0(ucase ? "DELETE " : "delete "); - x.getTableName().accept(this); + printTableSourceExpr(x.getTableName()); print0(ucase ? " FROM " : " from "); from.accept(this); } @@ -1019,35 +1044,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab x.getTableSource().accept(this); - if (x.getColumns().size() > 0) { - incrementIndent(); - println(); - print('('); - for (int i = 0, size = x.getColumns().size(); i < size; ++i) { - if (i != 0) { - if (i % 5 == 0) { - println(); - } - print0(", "); - } - - SQLExpr column = x.getColumns().get(i); - column.accept(this); - - String dataType = (String) column.getAttribute("dataType"); - if (dataType != null) { - print(' '); - print(dataType); - } - } - print(')'); - decrementIndent(); - } + printInsertColumns(x.getColumns()); if (!x.getValuesList().isEmpty()) { println(); - print0(ucase ? "VALUES" : "values"); - println(); + print0(ucase ? "VALUES " : "values "); printAndAccept(x.getValuesList(), ", "); } else { if (x.getQuery() != null) { @@ -1060,6 +1061,40 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab return false; } + protected void printInsertColumns(List columns) { + final int size = columns.size(); + if (size > 0) { + if (size > 5) { + incrementIndent(); + println(); + } else { + print(' '); + } + print('('); + for (int i = 0; i < size; ++i) { + if (i != 0) { + if (i % 5 == 0) { + println(); + } + print0(", "); + } + + SQLExpr column = columns.get(i); + column.accept(this); + + String dataType = (String) column.getAttribute("dataType"); + if (dataType != null) { + print(' '); + print(dataType); + } + } + print(')'); + if (size > 5) { + decrementIndent(); + } + } + } + public boolean visit(SQLUpdateSetItem x) { x.getColumn().accept(this); print0(" = "); @@ -1101,7 +1136,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab print0(ucase ? "LOCAL TEMPORARY " : "local temporary "); } - x.getName().accept(this); + printTableSourceExpr(x.getName()); int size = x.getTableElementList().size(); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_createTable.java b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_createTable.java new file mode 100644 index 0000000000..6c1ef7f6bd --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_createTable.java @@ -0,0 +1,75 @@ +package com.alibaba.druid.bvt.sql; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.util.JdbcConstants; +import junit.framework.TestCase; + +import java.util.Collections; +import java.util.Map; + +/** + * Created by wenshao on 16/9/25. + */ +public class MappingTest_createTable extends TestCase { + String sql = "create table user (\n" + + "source_key int,\n" + + "source_value varchar(32),\n" + + "primary key(source_key)\n" + + ");"; + + Map mapping = Collections.singletonMap("user", "user_01"); + + public void test_mapping_createTable() throws Exception { + String result = SQLUtils.refactor(null, sql, mapping); + assertEquals("CREATE TABLE user_01 (\n" + + "\tsource_key int,\n" + + "\tsource_value varchar(32),\n" + + "\tPRIMARY KEY (source_key)\n" + + ")", result); + } + + public void test_mapping_createTable_mysql() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.MYSQL, sql, mapping); + assertEquals("CREATE TABLE user_01 (\n" + + "\tsource_key int, \n" + + "\tsource_value varchar(32), \n" + + "\tPRIMARY KEY (source_key)\n" + + ")", result); + } + + public void test_mapping_createTable_oracle() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.ORACLE, sql, mapping); + assertEquals("CREATE TABLE user_01 (\n" + + "\tsource_key int,\n" + + "\tsource_value varchar(32),\n" + + "\tPRIMARY KEY (source_key)\n" + + ")", result); + } + + public void test_mapping_createTable_pg() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.POSTGRESQL, sql, mapping); + assertEquals("CREATE TABLE user_01 (\n" + + "\tsource_key int,\n" + + "\tsource_value varchar(32),\n" + + "\tPRIMARY KEY (source_key)\n" + + ")", result); + } + + public void test_mapping_createTable_sqlserver() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.SQL_SERVER, sql, mapping); + assertEquals("CREATE TABLE user_01 (\n" + + "\tsource_key int,\n" + + "\tsource_value varchar(32),\n" + + "\tPRIMARY KEY (source_key)\n" + + ")", result); + } + + public void test_mapping_createTable_db2() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.DB2, sql, mapping); + assertEquals("CREATE TABLE user_01 (\n" + + "\tsource_key int,\n" + + "\tsource_value varchar(32),\n" + + "\tPRIMARY KEY (source_key)\n" + + ")", result); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_delete.java b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_delete.java new file mode 100644 index 0000000000..adac114fa6 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_delete.java @@ -0,0 +1,46 @@ +package com.alibaba.druid.bvt.sql; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.util.JdbcConstants; +import junit.framework.TestCase; + +import java.util.Collections; +import java.util.Map; + +/** + * Created by wenshao on 16/9/25. + */ +public class MappingTest_delete extends TestCase { + private String sql = "delete from user"; + Map mapping = Collections.singletonMap("user", "user_01"); + + public void test_mapping() throws Exception { + String result = SQLUtils.refactor(null, sql, mapping); + assertEquals("DELETE FROM user_01", result); + } + + public void test_mapping_mysql() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.MYSQL, sql, mapping); + assertEquals("DELETE FROM user_01", result); + } + + public void test_mapping_pg() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.POSTGRESQL, sql, mapping); + assertEquals("DELETE FROM user_01", result); + } + + public void test_mapping_oracle() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.ORACLE, sql, mapping); + assertEquals("DELETE FROM user_01", result); + } + + public void test_mapping_sqlserver() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.SQL_SERVER, sql, mapping); + assertEquals("DELETE FROM user_01", result); + } + + public void test_mapping_db2() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.DB2, sql, mapping); + assertEquals("DELETE FROM user_01", result); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_insert.java b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_insert.java new file mode 100644 index 0000000000..317f7ad8db --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_insert.java @@ -0,0 +1,52 @@ +package com.alibaba.druid.bvt.sql; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.util.JdbcConstants; +import junit.framework.TestCase; + +import java.util.Collections; +import java.util.Map; + +/** + * Created by wenshao on 16/9/25. + */ +public class MappingTest_insert extends TestCase { + private String sql = "insert into user (id, name) values (123, 'abc')"; + Map mapping = Collections.singletonMap("user", "user_01"); + + public void test_mapping() throws Exception { + String result = SQLUtils.refactor(null, sql, mapping); + assertEquals("INSERT INTO user_01 (id, name)\n" + + "VALUES (123, 'abc')", result); + } + + public void test_mapping_mysql() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.MYSQL, sql, mapping); + assertEquals("INSERT INTO user_01 (id, name)\n" + + "VALUES (123, 'abc')", result); + } + + public void test_mapping_pg() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.POSTGRESQL, sql, mapping); + assertEquals("INSERT INTO user_01 (id, name)\n" + + "VALUES (123, 'abc')", result); + } + + public void test_mapping_oracle() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.ORACLE, sql, mapping); + assertEquals("INSERT INTO user_01 (id, name)\n" + + "VALUES (123, 'abc')", result); + } + + public void test_mapping_sqlserver() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.SQL_SERVER, sql, mapping); + assertEquals("INSERT INTO user_01 (id, name)\n" + + "VALUES (123, 'abc')", result); + } + + public void test_mapping_db2() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.DB2, sql, mapping); + assertEquals("INSERT INTO user_01 (id, name)\n" + + "VALUES (123, 'abc')", result); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_select.java b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_select.java new file mode 100644 index 0000000000..b0bafe7ad3 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_select.java @@ -0,0 +1,52 @@ +package com.alibaba.druid.bvt.sql; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.util.JdbcConstants; +import junit.framework.TestCase; + +import java.util.Collections; +import java.util.Map; + +/** + * Created by wenshao on 16/9/25. + */ +public class MappingTest_select extends TestCase { + String sql = "select * from user"; + Map mapping = Collections.singletonMap("user", "user_01"); + + public void test_mapping() throws Exception { + String result = SQLUtils.refactor(null, sql, mapping); + assertEquals("SELECT *\n" + + "FROM user_01", result); + } + + public void test_mapping_mysql() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.MYSQL, sql, mapping); + assertEquals("SELECT *\n" + + "FROM user_01", result); + } + + public void test_mapping_pg() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.POSTGRESQL, sql, mapping); + assertEquals("SELECT *\n" + + "FROM user_01", result); + } + + public void test_mapping_oracle() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.ORACLE, sql, mapping); + assertEquals("SELECT *\n" + + "FROM user_01", result); + } + + public void test_mapping_sqlserver() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.SQL_SERVER, sql, mapping); + assertEquals("SELECT *\n" + + "FROM user_01", result); + } + + public void test_mapping_odps() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.ODPS, sql, mapping); + assertEquals("SELECT *\n" + + "FROM user_01", result); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_update.java b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_update.java new file mode 100644 index 0000000000..1485d36b7e --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_update.java @@ -0,0 +1,58 @@ +package com.alibaba.druid.bvt.sql; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.util.JdbcConstants; +import junit.framework.TestCase; + +import java.util.Collections; +import java.util.Map; + +/** + * Created by wenshao on 16/9/25. + */ +public class MappingTest_update extends TestCase { + private String sql = "update user set f1 = 1 where id = 3"; + Map mapping = Collections.singletonMap("user", "user_01"); + + public void test_mapping() throws Exception { + String result = SQLUtils.refactor(null, sql, mapping); + assertEquals("UPDATE user_01\n" + + "SET f1 = 1\n" + + "WHERE id = 3", result); + } + + public void test_mapping_mysql() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.MYSQL, sql, mapping); + assertEquals("UPDATE user_01\n" + + "SET f1 = 1\n" + + "WHERE id = 3", result); + } + + public void test_mapping_pg() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.POSTGRESQL, sql, mapping); + assertEquals("UPDATE user_01\n" + + "SET f1 = 1\n" + + "WHERE id = 3", result); + } + + public void test_mapping_oracle() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.ORACLE, sql, mapping); + assertEquals("UPDATE user_01\n" + + "SET f1 = 1\n" + + "WHERE id = 3", result); + } + + public void test_mapping_sqlserver() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.SQL_SERVER, sql, mapping); + assertEquals("UPDATE user_01\n" + + "SET f1 = 1\n" + + "WHERE id = 3", result); + } + + public void test_mapping_db2() throws Exception { + String result = SQLUtils.refactor(JdbcConstants.DB2, sql, mapping); + assertEquals("UPDATE user_01\n" + + "SET f1 = 1\n" + + "WHERE id = 3", result); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/db2/DB2InsertTest_0.java b/src/test/java/com/alibaba/druid/bvt/sql/db2/DB2InsertTest_0.java index 16e675b79d..f270b34d02 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/db2/DB2InsertTest_0.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/db2/DB2InsertTest_0.java @@ -59,10 +59,8 @@ public class DB2InsertTest_0 extends DB2Test { // Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "full_name"))); String output = SQLUtils.toSQLString(stmt, JdbcConstants.DB2); - Assert.assertEquals("INSERT INTO t" - + "\n\t(id, name)" - + "\nVALUES" - + "\n(?, ?), (?, ?), (?, ?)", // + Assert.assertEquals("INSERT INTO t (id, name)\n" + + "VALUES (?, ?), (?, ?), (?, ?)", // output); } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest10.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest10.java index ec80ef6e6c..68723a59f8 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest10.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest10.java @@ -40,9 +40,8 @@ public class OracleInsertTest10 extends OracleTest { Assert.assertEquals(1, statementList.size()); - Assert.assertEquals("INSERT INTO departments"// - + "\nVALUES"// - + "\n(280, 'Recreation', 121, 1700)",// + Assert.assertEquals("INSERT INTO departments\n" + + "VALUES (280, 'Recreation', 121, 1700)",// SQLUtils.toSQLString(stmt, JdbcConstants.ORACLE)); OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest11.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest11.java index 3858411f04..ca1d6a935c 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest11.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest11.java @@ -41,8 +41,7 @@ public class OracleInsertTest11 extends OracleTest { Assert.assertEquals(1, statementList.size()); Assert.assertEquals("INSERT INTO departments"// - + "\nVALUES"// - + "\n(280, 'Recreation', DEFAULT, 1700)",// + + "\nVALUES (280, 'Recreation', DEFAULT, 1700)",// SQLUtils.toSQLString(stmt, JdbcConstants.ORACLE)); OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest12.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest12.java index 96c64f6c38..de2c16a173 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest12.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest12.java @@ -45,8 +45,7 @@ public class OracleInsertTest12 extends OracleTest { Assert.assertEquals("INSERT INTO employees" // + "\n\t(employee_id, last_name, email, hire_date, job_id" // + "\n\t, salary, commission_pct)" // - + "\nVALUES" // - + "\n(207, 'Gregory', 'pgregory@example.com', SYSDATE, 'PU_CLERK'" // + + "\nVALUES (207, 'Gregory', 'pgregory@example.com', SYSDATE, 'PU_CLERK'" // + "\n\t, 1.2E+3, NULL)",// SQLUtils.toSQLString(stmt, JdbcConstants.ORACLE)); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest15.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest15.java index 33cc57746d..883e3513cd 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest15.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest15.java @@ -43,8 +43,7 @@ public class OracleInsertTest15 extends OracleTest { Assert.assertEquals(1, statementList.size()); Assert.assertEquals("INSERT INTO employees@remote" // - + "\nVALUES"// - + "\n(8002, 'Juan', 'Fernandez', 'juanf@example.com', NULL"// + + "\nVALUES (8002, 'Juan', 'Fernandez', 'juanf@example.com', NULL"// + "\n\t, TO_DATE('04-OCT-1992', 'DD-MON-YYYY'), 'SH_CLERK', 3000, NULL, 121"// + "\n\t, 20)",// SQLUtils.toSQLString(stmt, JdbcConstants.ORACLE)); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest16.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest16.java index cc1db5bf9f..b5888b4901 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest16.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest16.java @@ -41,8 +41,7 @@ public class OracleInsertTest16 extends OracleTest { Assert.assertEquals(1, statementList.size()); Assert.assertEquals("INSERT INTO departments" // - + "\nVALUES"// - + "\n(departments_seq.NEXTVAL, 'Entertainment', 162, 1400)",// + + "\nVALUES (departments_seq.NEXTVAL, 'Entertainment', 162, 1400)",// SQLUtils.toSQLString(stmt, JdbcConstants.ORACLE)); OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest17.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest17.java index 996d545577..52e5109178 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest17.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest17.java @@ -39,10 +39,8 @@ public class OracleInsertTest17 extends OracleTest { Assert.assertEquals(1, statementList.size()); - Assert.assertEquals("INSERT INTO sys_log" - + "\n\t(ID, EXCEPTION)" - + "\nVALUES" - + "\n(?, ?)",// + Assert.assertEquals("INSERT INTO sys_log (ID, EXCEPTION)" + + "\nVALUES (?, ?)",// SQLUtils.toSQLString(stmt, JdbcConstants.ORACLE)); OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest18.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest18.java index 74d54555b0..6d2857d62f 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest18.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest18.java @@ -39,10 +39,8 @@ public class OracleInsertTest18 extends OracleTest { Assert.assertEquals(1, statementList.size()); - Assert.assertEquals("INSERT INTO sys_log" - + "\n\t(ID, \"EXCEPTION\")" - + "\nVALUES" - + "\n(?, ?)",// + Assert.assertEquals("INSERT INTO sys_log (ID, \"EXCEPTION\")" + + "\nVALUES (?, ?)",// SQLUtils.toSQLString(stmt, JdbcConstants.ORACLE)); OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest19.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest19.java index 99987137ff..5b37bc477b 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest19.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/insert/OracleInsertTest19.java @@ -42,8 +42,7 @@ public class OracleInsertTest19 extends OracleTest { Assert.assertEquals(1, statementList.size()); - Assert.assertEquals("INSERT INTO TB_DUOBAO_PARTICIPATE_NUMBER" - + "\n\t(PARTICIPATE_NUMBER, PERIOD_ID, PRODUCT_ID, number_index)" + Assert.assertEquals("INSERT INTO TB_DUOBAO_PARTICIPATE_NUMBER (PARTICIPATE_NUMBER, PERIOD_ID, PRODUCT_ID, number_index)" + "\nSELECT ?, ?, ?, ?" + "\nFROM DUAL" + "\nUNION ALL" diff --git a/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest.java b/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest.java index 12c823e824..00997270fe 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest.java @@ -46,10 +46,8 @@ public class PhoenixUpsertTest extends TestCase { // Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "full_name"))); String output = SQLUtils.toSQLString(stmt, JdbcConstants.PHOENIX); - Assert.assertEquals("UPSERT INTO t_1\n" + - "\t(a, b, c)\n" + - "VALUES\n" + - "(?, ?, ?)", // + Assert.assertEquals("UPSERT INTO t_1 (a, b, c)\n" + + "VALUES (?, ?, ?)", // output); } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_1.java b/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_1.java index 801fefb525..b90869e5b9 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_1.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_1.java @@ -44,10 +44,8 @@ public class PhoenixUpsertTest_1 extends TestCase { // Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "full_name"))); String output = SQLUtils.toSQLString(stmt, JdbcConstants.PHOENIX); - Assert.assertEquals("UPSERT INTO t_1\n" + - "\t(a BIGINT, b, c)\n" + - "VALUES\n" + - "(?, ?, ?)", // + Assert.assertEquals("UPSERT INTO t_1 (a BIGINT, b, c)\n" + + "VALUES (?, ?, ?)", // output); } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_2.java b/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_2.java index 729740b710..1cbc250db2 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_2.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_2.java @@ -44,10 +44,8 @@ public class PhoenixUpsertTest_2 extends TestCase { // Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "full_name"))); String output = SQLUtils.toSQLString(stmt, JdbcConstants.PHOENIX); - Assert.assertEquals("UPSERT INTO t_1\n" + - "\t(a CHAR(15), b, c)\n" + - "VALUES\n" + - "(?, ?, ?)", // + Assert.assertEquals("UPSERT INTO t_1 (a CHAR(15), b, c)\n" + + "VALUES (?, ?, ?)", // output); } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_std.java b/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_std.java index ac6f3599f8..ad9f995988 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_std.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/phoenix/PhoenixUpsertTest_std.java @@ -44,10 +44,8 @@ public class PhoenixUpsertTest_std extends TestCase { // Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "full_name"))); String output = SQLUtils.toSQLString(stmt, JdbcConstants.PHOENIX); - Assert.assertEquals("UPSERT INTO t_1\n" + - "\t(a, b, c)\n" + - "VALUES\n" + - "(?, ?, ?)", // + Assert.assertEquals("UPSERT INTO t_1 (a, b, c)\n" + + "VALUES (?, ?, ?)", // output); } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerIfTest.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerIfTest.java index 8bf253d81a..d2aed38c6d 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerIfTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerIfTest.java @@ -21,17 +21,13 @@ public class SQLServerIfTest extends TestCase { String sql = "if @is_exists is null begin insert into Inventory_1 (co_id,sku_id,order_lock) values (@0,@1,@2) end else begin insert into Inventory_2 (co_id,sku_id,order_lock) values (@0,@1,@2) end "; String expect = "IF @is_exists IS NULL"// + "\n\tBEGIN"// - + "\n\t\tINSERT INTO Inventory_1"// - + "\n\t\t\t(co_id, sku_id, order_lock)"// - + "\n\t\tVALUES"// - + "\n\t\t(@0, @1, @2);"// + + "\n\t\tINSERT INTO Inventory_1 (co_id, sku_id, order_lock)"// + + "\n\t\tVALUES (@0, @1, @2);"// + "\n\tEND"// + "\nELSE"// + "\n\tBEGIN"// - + "\n\t\tINSERT INTO Inventory_2"// - + "\n\t\t\t(co_id, sku_id, order_lock)"// - + "\n\t\tVALUES"// - + "\n\t\t(@0, @1, @2);"// + + "\n\t\tINSERT INTO Inventory_2 (co_id, sku_id, order_lock)"// + + "\n\t\tVALUES (@0, @1, @2);"// + "\n\tEND"; SQLServerStatementParser parser = new SQLServerStatementParser(sql); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest.java index 1ad7d2246b..2c8eed1856 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest.java @@ -28,10 +28,8 @@ public class SQLServerInsertTest extends TestCase { String sql = "INSERT INTO Cities (Location)" + // "VALUES ( CONVERT(Point, '12.3:46.2') );"; - String expect = "INSERT INTO Cities" + // - "\n\t(Location)" + // - "\nVALUES" + // - "\n(CONVERT(Point, '12.3:46.2'))"; + String expect = "INSERT INTO Cities (Location)" + // + "\nVALUES (CONVERT(Point, '12.3:46.2'))"; SQLServerStatementParser parser = new SQLServerStatementParser(sql); SQLStatement stmt = parser.parseStatementList().get(0); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest1.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest1.java index 45b818de22..1228d90dd5 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest1.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest1.java @@ -28,10 +28,8 @@ public class SQLServerInsertTest1 extends TestCase { String sql = "INSERT INTO Cities (Location)" + "VALUES ( dbo.CreateNewPoint(x, y) );"; - String expect = "INSERT INTO Cities" + // - "\n\t(Location)" + // - "\nVALUES" + // - "\n(dbo.CreateNewPoint(x, y))"; + String expect = "INSERT INTO Cities (Location)" + // + "\nVALUES (dbo.CreateNewPoint(x, y))"; SQLServerStatementParser parser = new SQLServerStatementParser(sql); SQLStatement stmt = parser.parseStatementList().get(0); 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 ebdb76327f..b38ca0e345 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 @@ -29,10 +29,8 @@ public class SQLServerInsertTest2 extends TestCase { String sql = "INSERT INTO test (name)" + // "VALUES (N'a'), (N'b'), (N'c')"; - String expect = "INSERT INTO test" + // - "\n\t(name)" + // - "\nVALUES" + // - "\n(N'a')," + // + String expect = "INSERT INTO test (name)" + // + "\nVALUES (N'a')," + // "\n(N'b')," + // "\n(N'c')"; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest3.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest3.java index 032b059b59..6854d149e7 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest3.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest3.java @@ -29,8 +29,7 @@ public class SQLServerInsertTest3 extends TestCase { "VALUES (N'F2', N'Square Feet', GETDATE());;"; String expect = "INSERT INTO Production.UnitMeasure" + // - "\nVALUES" + // - "\n(N'F2', N'Square Feet', GETDATE())"; + "\nVALUES (N'F2', N'Square Feet', GETDATE())"; SQLServerStatementParser parser = new SQLServerStatementParser(sql); SQLStatement stmt = parser.parseStatementList().get(0); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest5.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest5.java index 2c2e8fb40b..dac968bdcd 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest5.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest5.java @@ -48,9 +48,8 @@ public class SQLServerInsertTest5 extends TestCase { SQLServerSchemaStatVisitor visitor = new SQLServerSchemaStatVisitor(); stmt.accept(visitor); - String formatSql = "INSERT INTO t"// - + "\n\t(a, b)"// - + "\nVALUES" + "\n('a1', 'b1'),"// + String formatSql = "INSERT INTO t (a, b)"// + + "\nVALUES ('a1', 'b1'),"// + "\n('a2', 'b2'),"// + "\n('a3', 'b3')"; Assert.assertEquals(formatSql, SQLUtils.toSQLServerString(insertStmt)); @@ -74,10 +73,8 @@ public class SQLServerInsertTest5 extends TestCase { SQLServerSchemaStatVisitor visitor = new SQLServerSchemaStatVisitor(); stmt.accept(visitor); - String formatSql = "INSERT INTO t"// - + "\n\t(a, b)"// - + "\nVALUES"// - + "\n('a1', 'b1'),"// + String formatSql = "INSERT INTO t (a, b)"// + + "\nVALUES ('a1', 'b1'),"// + "\n('a2', 'b2'),"// + "\n('a3', 'b3'),"// + "\n('a4', 'b4')"; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest6.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest6.java index 19af6ff702..3edb09d8e8 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest6.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest6.java @@ -48,10 +48,8 @@ public class SQLServerInsertTest6 extends TestCase { SQLServerSchemaStatVisitor visitor = new SQLServerSchemaStatVisitor(); stmt.accept(visitor); - String formatSql = "INSERT INTO [dbo].[SurveyAnswer]"// - + "\n\t([CustomerId], [QuestionId], [OptionId], [CreateTime], [LastUpdateTime])"// - + "\nVALUES" // - + "\n(@0, @1, @2, @3, @4)"; + String formatSql = "INSERT INTO [dbo].[SurveyAnswer] ([CustomerId], [QuestionId], [OptionId], [CreateTime], [LastUpdateTime])"// + + "\nVALUES (@0, @1, @2, @3, @4)"; Assert.assertEquals(formatSql, SQLUtils.toSQLServerString(insertStmt)); } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest8.java b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest8.java index 3089997831..10d27eb820 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest8.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/sqlserver/SQLServerInsertTest8.java @@ -51,8 +51,7 @@ public class SQLServerInsertTest8 extends TestCase { String formatSql = "INSERT INTO Production.ScrapReason"// + "\nOUTPUT INSERTED.ScrapReasonID, INSERTED.Name, INSERTED.ModifiedDate"// + "\n\tINTO @MyTableVar"// - + "\nVALUES"// - + "\n(N'Operator error', GETDATE())"; + + "\nVALUES (N'Operator error', GETDATE())"; Assert.assertEquals(formatSql, SQLUtils.toSQLServerString(insertStmt)); }