bug fixed for sql parsre parameterized.

This commit is contained in:
wenshao
2017-06-25 18:38:12 +08:00
parent 5a913ded09
commit 4decf975c6
11 changed files with 58 additions and 27 deletions
@@ -0,0 +1,30 @@
package com.alibaba.druid.bvt.bug;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlExportParameterVisitor;
import junit.framework.TestCase;
import java.io.StringWriter;
/**
* Created by wenshao on 25/06/2017.
*/
public class Issue1769 extends TestCase {
public void test_for_issue() throws Exception {
String sql = "SELECT id FROM test WHERE type = 9 AND name = ? AND orderId in (1, 2, 3);";
MySqlStatementParser parser = new MySqlStatementParser(sql);
SQLStatement stmt = parser.parseStatement();
StringWriter out = new StringWriter();
MySqlExportParameterVisitor v = new MySqlExportParameterVisitor(out);
v.setParameterized(true);
v.setShardingSupport(false);
v.setPrettyFormat(false);
stmt.accept(v);
System.out.println(v.getParameters());
System.out.println(v.getTables());
assertEquals("SELECT id FROM test WHERE type = ? AND name = ? AND orderId IN (?)", out.toString());
}
}
@@ -26,11 +26,11 @@ public class ExportParameterShardingTest extends TestCase {
SQLStatement stmt = stmtList.get(0);
StringBuilder out = new StringBuilder();
List<Object> parameters = new ArrayList<Object>();
SQLASTOutputVisitor visitor = SQLUtils.createOutputVisitor(out, dbType);
visitor.setParameterized(true);
visitor.setParameterizedMergeInList(true);
visitor.setParameters(parameters);
List<Object> parameters = visitor.getParameters();
//visitor.setParameters(parameters);
stmt.accept(visitor);
@@ -52,7 +52,7 @@ public class ExportParameterShardingTest extends TestCase {
StringBuilder out = new StringBuilder();
SQLASTOutputVisitor visitor = SQLUtils.createOutputVisitor(out, dbType);
visitor.setParameters(parameters);
visitor.setInputParameters(parameters);
visitor.addTableMapping("t_user", "t_user_0000");
@@ -69,7 +69,7 @@ public class MySqlParameterizedOutputVisitorTest_29 extends TestCase {
StringBuilder buf = new StringBuilder();
SQLASTOutputVisitor visitor1 = SQLUtils.createOutputVisitor(buf, dbType);
visitor1.addTableMapping("xx_abcde_ta", "xx_abcde_ta_0018");
visitor1.setParameters(visitor.getParameters());
visitor1.setInputParameters(visitor.getParameters());
pstmt.accept(visitor1);
assertEquals("SELECT `a1`.`id`, `a1`.`gmt_create`, `a1`.`gmt_modified`, `a1`.`push_date`, `a1`.`parent_task_id`\n" +
@@ -74,7 +74,7 @@ public class MySqlParameterizedOutputVisitorTest_30 extends TestCase {
StringBuilder buf = new StringBuilder();
SQLASTOutputVisitor visitor1 = SQLUtils.createOutputVisitor(buf, dbType);
visitor1.addTableMapping("udata", "udata_0888");
visitor1.setParameters(visitor.getParameters());
visitor1.setInputParameters(visitor.getParameters());
pstmt.accept(visitor1);
assertEquals("SELECT `udata`.`id` AS `id`, `udata`.`gmt_create` AS `gmtCreate`, `udata`.`gmt_modified` AS `gmtModified`, `udata`.`uid` AS `userId`, `udata`.`user_nick` AS `userNick`\n" +
@@ -71,7 +71,7 @@ public class MySqlParameterizedOutputVisitorTest_31 extends TestCase {
StringBuilder buf = new StringBuilder();
SQLASTOutputVisitor visitor1 = SQLUtils.createOutputVisitor(buf, dbType);
visitor1.addTableMapping("udata", "udata_0888");
visitor1.setParameters(visitor.getParameters());
visitor1.setInputParameters(visitor.getParameters());
pstmt.accept(visitor1);
assertEquals("SELECT `udata`.`id` AS `id`, `udata`.`gmt_create` AS `gmtCreate`, `udata`.`gmt_modified` AS `gmtModified`, `udata`.`uid` AS `userId`, `udata`.`user_nick` AS `userNick`\n" +
@@ -65,7 +65,7 @@ public class MySqlParameterizedOutputVisitorTest_32 extends TestCase {
StringBuilder buf = new StringBuilder();
SQLASTOutputVisitor visitor1 = SQLUtils.createOutputVisitor(buf, dbType);
visitor1.addTableMapping("udata", "udata_0888");
visitor1.setParameters(visitor.getParameters());
visitor1.setInputParameters(visitor.getParameters());
pstmt.accept(visitor1);
assertEquals("SELECT COUNT(*) AS count\n" +
@@ -52,7 +52,7 @@ public class MySqlParameterizedOutputVisitorTest_33 extends TestCase {
StringBuilder buf = new StringBuilder();
SQLASTOutputVisitor visitor1 = SQLUtils.createOutputVisitor(buf, dbType);
visitor1.addTableMapping("udata", "udata_0888");
visitor1.setParameters(visitor.getParameters());
visitor1.setInputParameters(visitor.getParameters());
pstmt.accept(visitor1);
assertEquals("SELECT *\n" +
@@ -52,7 +52,7 @@ public class MySqlParameterizedOutputVisitorTest_34 extends TestCase {
StringBuilder buf = new StringBuilder();
SQLASTOutputVisitor visitor1 = SQLUtils.createOutputVisitor(buf, dbType);
visitor1.addTableMapping("udata", "udata_0888");
visitor1.setParameters(visitor.getParameters());
visitor1.setInputParameters(visitor.getParameters());
pstmt.accept(visitor1);
assertEquals("SELECT *\n" +