mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fixed for sql parsre parameterized.
This commit is contained in:
@@ -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");
|
||||
|
||||
|
||||
+1
-1
@@ -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" +
|
||||
|
||||
+1
-1
@@ -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" +
|
||||
|
||||
+1
-1
@@ -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" +
|
||||
|
||||
+1
-1
@@ -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" +
|
||||
|
||||
+1
-1
@@ -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" +
|
||||
|
||||
+1
-1
@@ -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" +
|
||||
|
||||
Reference in New Issue
Block a user