From ed15dd4d78bb127bf17f38aa9a0e8e1381504726 Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 4 Sep 2017 11:35:38 +0800 Subject: [PATCH] add testcase for issue #1912 --- .../java/com/alibaba/druid/sql/SQLUtils.java | 12 +----- .../com/alibaba/druid/bvt/bug/Issue1912.java | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/bug/Issue1912.java diff --git a/src/main/java/com/alibaba/druid/sql/SQLUtils.java b/src/main/java/com/alibaba/druid/sql/SQLUtils.java index ea809d4607..94fe2a33aa 100644 --- a/src/main/java/com/alibaba/druid/sql/SQLUtils.java +++ b/src/main/java/com/alibaba/druid/sql/SQLUtils.java @@ -696,12 +696,6 @@ public class SQLUtils { return SQLUtils.toSQLString(stmtList, dbType, null, null, tableMapping); } - public static boolean containsIndexDDL(String sql, String dbType) { - List stmtList = parseStatements(sql, dbType); - - return false; - } - public static long hash(String sql, String dbType) { Lexer lexer = SQLParserUtils.createLexer(sql, dbType); @@ -871,10 +865,6 @@ public class SQLUtils { return false; } - public static SQLExpr decodeToCase(SQLMethodInvokeExpr x) { - return SQLTransformUtils.transformDecode(x); - } - public static boolean replaceInParent(SQLExpr expr, SQLExpr target) { if (expr == null) { return false; @@ -900,7 +890,7 @@ public class SQLUtils { } /** - * 重新排序建表语句 + * 重新排序建表语句,解决建表语句的依赖关系 * @param sql * @param dbType * @return diff --git a/src/test/java/com/alibaba/druid/bvt/bug/Issue1912.java b/src/test/java/com/alibaba/druid/bvt/bug/Issue1912.java new file mode 100644 index 0000000000..ce7c09114f --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/bug/Issue1912.java @@ -0,0 +1,41 @@ +package com.alibaba.druid.bvt.bug; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; +import com.alibaba.druid.sql.parser.SQLStatementParser; +import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; +import com.alibaba.druid.sql.visitor.SQLASTVisitorAdapter; +import junit.framework.TestCase; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Issue1912 extends TestCase { + public void test_for_issue() throws Exception { + String sql = "select a from t"; + SQLStatementParser parser = new SQLStatementParser(sql); + SQLStatement stmt = parser.parseStatement(); + + final Map columnMapping = new HashMap(); + columnMapping.put("a", "b"); + + SQLASTVisitor visitor = new SQLASTVisitorAdapter() { + public boolean visit(SQLIdentifierExpr x) { + + String destColumn = columnMapping.get(x.getName()); + if (destColumn != null) { + x.setName(destColumn); + } + + return super.visit(x); + } + }; + stmt.accept(visitor); + + assertEquals("SELECT b\n" + + "FROM t", SQLUtils.toSQLString(stmt)); + } +}