From e98fba644d8584a5d40a07ec243411d1a1d1942b Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 25 Sep 2016 05:13:01 +0800 Subject: [PATCH] refactor sql parser & support tableMapping. issue #1432 --- .../java/com/alibaba/druid/sql/SQLUtils.java | 2 +- .../bvt/sql/MappingTest_createTable.java | 12 ++--- .../druid/bvt/sql/MappingTest_delete.java | 12 ++--- .../druid/bvt/sql/MappingTest_drop.java | 46 +++++++++++++++++++ .../druid/bvt/sql/MappingTest_insert.java | 12 ++--- .../druid/bvt/sql/MappingTest_select.java | 12 ++--- .../druid/bvt/sql/MappingTest_update.java | 12 ++--- 7 files changed, 77 insertions(+), 31 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/MappingTest_drop.java diff --git a/src/main/java/com/alibaba/druid/sql/SQLUtils.java b/src/main/java/com/alibaba/druid/sql/SQLUtils.java index 106d22906d..6cb2ad5fa5 100644 --- a/src/main/java/com/alibaba/druid/sql/SQLUtils.java +++ b/src/main/java/com/alibaba/druid/sql/SQLUtils.java @@ -659,7 +659,7 @@ public class SQLUtils { } } - public static String refactor(String dbType, String sql, Map tableMapping) { + public static String refactor(String sql, String dbType, Map tableMapping) { List stmtList = parseStatements(sql, dbType); return SQLUtils.toSQLString(stmtList, dbType, null, null, tableMapping); } 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 index 6c1ef7f6bd..fef32c9ade 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_createTable.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_createTable.java @@ -20,7 +20,7 @@ public class MappingTest_createTable extends TestCase { Map mapping = Collections.singletonMap("user", "user_01"); public void test_mapping_createTable() throws Exception { - String result = SQLUtils.refactor(null, sql, mapping); + String result = SQLUtils.refactor(sql, null, mapping); assertEquals("CREATE TABLE user_01 (\n" + "\tsource_key int,\n" + "\tsource_value varchar(32),\n" + @@ -29,7 +29,7 @@ public class MappingTest_createTable extends TestCase { } public void test_mapping_createTable_mysql() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.MYSQL, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.MYSQL, mapping); assertEquals("CREATE TABLE user_01 (\n" + "\tsource_key int, \n" + "\tsource_value varchar(32), \n" + @@ -38,7 +38,7 @@ public class MappingTest_createTable extends TestCase { } public void test_mapping_createTable_oracle() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.ORACLE, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.ORACLE, mapping); assertEquals("CREATE TABLE user_01 (\n" + "\tsource_key int,\n" + "\tsource_value varchar(32),\n" + @@ -47,7 +47,7 @@ public class MappingTest_createTable extends TestCase { } public void test_mapping_createTable_pg() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.POSTGRESQL, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.POSTGRESQL, mapping); assertEquals("CREATE TABLE user_01 (\n" + "\tsource_key int,\n" + "\tsource_value varchar(32),\n" + @@ -56,7 +56,7 @@ public class MappingTest_createTable extends TestCase { } public void test_mapping_createTable_sqlserver() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.SQL_SERVER, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.SQL_SERVER, mapping); assertEquals("CREATE TABLE user_01 (\n" + "\tsource_key int,\n" + "\tsource_value varchar(32),\n" + @@ -65,7 +65,7 @@ public class MappingTest_createTable extends TestCase { } public void test_mapping_createTable_db2() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.DB2, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.DB2, mapping); assertEquals("CREATE TABLE user_01 (\n" + "\tsource_key int,\n" + "\tsource_value varchar(32),\n" + 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 index adac114fa6..3e3d2fae97 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_delete.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_delete.java @@ -15,32 +15,32 @@ public class MappingTest_delete extends TestCase { Map mapping = Collections.singletonMap("user", "user_01"); public void test_mapping() throws Exception { - String result = SQLUtils.refactor(null, sql, mapping); + String result = SQLUtils.refactor(sql, null, mapping); assertEquals("DELETE FROM user_01", result); } public void test_mapping_mysql() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.MYSQL, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.MYSQL, mapping); assertEquals("DELETE FROM user_01", result); } public void test_mapping_pg() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.POSTGRESQL, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.POSTGRESQL, mapping); assertEquals("DELETE FROM user_01", result); } public void test_mapping_oracle() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.ORACLE, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.ORACLE, mapping); assertEquals("DELETE FROM user_01", result); } public void test_mapping_sqlserver() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.SQL_SERVER, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.SQL_SERVER, mapping); assertEquals("DELETE FROM user_01", result); } public void test_mapping_db2() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.DB2, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.DB2, mapping); assertEquals("DELETE FROM user_01", result); } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_drop.java b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_drop.java new file mode 100644 index 0000000000..f75d5affee --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_drop.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_drop extends TestCase { + private String sql = "drop table user"; + Map mapping = Collections.singletonMap("user", "user_01"); + + public void test_mapping() throws Exception { + String result = SQLUtils.refactor(sql, null, mapping); + assertEquals("DROP TABLE user_01", result); + } + + public void test_mapping_mysql() throws Exception { + String result = SQLUtils.refactor(sql, JdbcConstants.MYSQL, mapping); + assertEquals("DROP TABLE user_01", result); + } + + public void test_mapping_pg() throws Exception { + String result = SQLUtils.refactor(sql, JdbcConstants.POSTGRESQL, mapping); + assertEquals("DROP TABLE user_01", result); + } + + public void test_mapping_oracle() throws Exception { + String result = SQLUtils.refactor(sql, JdbcConstants.ORACLE, mapping); + assertEquals("DROP TABLE user_01", result); + } + + public void test_mapping_sqlserver() throws Exception { + String result = SQLUtils.refactor(sql, JdbcConstants.SQL_SERVER, mapping); + assertEquals("DROP TABLE user_01", result); + } + + public void test_mapping_db2() throws Exception { + String result = SQLUtils.refactor(sql, JdbcConstants.DB2, mapping); + assertEquals("DROP TABLE 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 index 317f7ad8db..8764206763 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_insert.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_insert.java @@ -15,37 +15,37 @@ public class MappingTest_insert extends TestCase { Map mapping = Collections.singletonMap("user", "user_01"); public void test_mapping() throws Exception { - String result = SQLUtils.refactor(null, sql, mapping); + String result = SQLUtils.refactor(sql, null, 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); + String result = SQLUtils.refactor(sql, JdbcConstants.MYSQL, 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); + String result = SQLUtils.refactor(sql, JdbcConstants.POSTGRESQL, 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); + String result = SQLUtils.refactor(sql, JdbcConstants.ORACLE, 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); + String result = SQLUtils.refactor(sql, JdbcConstants.SQL_SERVER, 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); + String result = SQLUtils.refactor(sql, JdbcConstants.DB2, 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 index b0bafe7ad3..7a6802623a 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_select.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_select.java @@ -15,37 +15,37 @@ public class MappingTest_select extends TestCase { Map mapping = Collections.singletonMap("user", "user_01"); public void test_mapping() throws Exception { - String result = SQLUtils.refactor(null, sql, mapping); + String result = SQLUtils.refactor(sql, null, mapping); assertEquals("SELECT *\n" + "FROM user_01", result); } public void test_mapping_mysql() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.MYSQL, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.MYSQL, mapping); assertEquals("SELECT *\n" + "FROM user_01", result); } public void test_mapping_pg() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.POSTGRESQL, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.POSTGRESQL, mapping); assertEquals("SELECT *\n" + "FROM user_01", result); } public void test_mapping_oracle() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.ORACLE, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.ORACLE, mapping); assertEquals("SELECT *\n" + "FROM user_01", result); } public void test_mapping_sqlserver() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.SQL_SERVER, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.SQL_SERVER, mapping); assertEquals("SELECT *\n" + "FROM user_01", result); } public void test_mapping_odps() throws Exception { - String result = SQLUtils.refactor(JdbcConstants.ODPS, sql, mapping); + String result = SQLUtils.refactor(sql, JdbcConstants.ODPS, 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 index 1485d36b7e..01da7c80b4 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_update.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/MappingTest_update.java @@ -15,42 +15,42 @@ public class MappingTest_update extends TestCase { Map mapping = Collections.singletonMap("user", "user_01"); public void test_mapping() throws Exception { - String result = SQLUtils.refactor(null, sql, mapping); + String result = SQLUtils.refactor(sql, null, 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); + String result = SQLUtils.refactor(sql, JdbcConstants.MYSQL, 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); + String result = SQLUtils.refactor(sql, JdbcConstants.POSTGRESQL, 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); + String result = SQLUtils.refactor(sql, JdbcConstants.ORACLE, 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); + String result = SQLUtils.refactor(sql, JdbcConstants.SQL_SERVER, 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); + String result = SQLUtils.refactor(sql, JdbcConstants.DB2, mapping); assertEquals("UPDATE user_01\n" + "SET f1 = 1\n" + "WHERE id = 3", result);