From 9da2cbc8d3556eb7de5a2efdd5604253c0b04553 Mon Sep 17 00:00:00 2001 From: Yako Date: Wed, 22 Oct 2014 19:41:05 +0800 Subject: [PATCH] improve MySqlParameterizedOutputVisitor --- .../sql/dialect/mysql/visitor/MySqlOutputVisitor.java | 11 ++++++----- .../sql/visitor/ParameterizedOutputVisitorUtils.java | 3 +-- .../mysql/MySqlParameterizedOutputVisitorTest_6.java | 8 +++++--- 3 files changed, 12 insertions(+), 10 deletions(-) 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 97baa50a41..d1c68b9ea0 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 @@ -1747,11 +1747,6 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlSetTransactionIsolationLevelStatement x) { - return false; - } - - @Override - public void endVisit(MySqlSetTransactionIsolationLevelStatement x) { if (x.getGlobal() == null) { print("SET TRANSACTION ISOLATION LEVEL "); } else if (x.getGlobal().booleanValue()) { @@ -1760,6 +1755,12 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV print("SET SESSION TRANSACTION ISOLATION LEVEL "); } print(x.getLevel()); + return false; + } + + @Override + public void endVisit(MySqlSetTransactionIsolationLevelStatement x) { + } @Override diff --git a/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java b/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java index 9f0e35a1c1..debb6b8311 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java @@ -32,7 +32,6 @@ import com.alibaba.druid.sql.ast.expr.SQLNCharExpr; import com.alibaba.druid.sql.ast.expr.SQLNullExpr; import com.alibaba.druid.sql.ast.expr.SQLNumberExpr; import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr; -import com.alibaba.druid.sql.ast.statement.SQLAssignItem; import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; import com.alibaba.druid.sql.dialect.db2.visitor.DB2ParameterizedOutputVisitor; @@ -165,7 +164,7 @@ public class ParameterizedOutputVisitorUtils { if (parent instanceof SQLDataType // || parent instanceof SQLColumnDefinition // || parent instanceof SQLServerTop // - || parent instanceof SQLAssignItem // + //|| parent instanceof SQLAssignItem // || parent instanceof SQLSelectOrderByItem // ) { return false; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlParameterizedOutputVisitorTest_6.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlParameterizedOutputVisitorTest_6.java index 7160263274..fea37bcba6 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlParameterizedOutputVisitorTest_6.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlParameterizedOutputVisitorTest_6.java @@ -26,11 +26,13 @@ public class MySqlParameterizedOutputVisitorTest_6 extends TestCase { public void test_0() throws Exception { String sql = "SET autocommit=1"; - Assert.assertSame(ParameterizedOutputVisitorUtils.parameterize(sql, JdbcConstants.MYSQL), sql); + String paramSql = "SET @@autocommit = ?"; + Assert.assertEquals(ParameterizedOutputVisitorUtils.parameterize(sql, JdbcConstants.MYSQL), paramSql); } - + public void test_1() throws Exception { String sql = "SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000;"; - Assert.assertSame(ParameterizedOutputVisitorUtils.parameterize(sql, JdbcConstants.MYSQL), sql); + String paramSql = "SET @@global.sort_buffer_size = ?, @@sort_buffer_size = ?"; + Assert.assertEquals(ParameterizedOutputVisitorUtils.parameterize(sql, JdbcConstants.MYSQL), paramSql); } }