From 217b7b25f6218e4f411bf29a4ea8571394958d1f Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 15 May 2017 21:47:57 +0800 Subject: [PATCH] bug fixed for SQLUtils.format mysql sharding sql. --- .../mysql/visitor/MySqlOutputVisitor.java | 2 +- .../sql/visitor/SQLASTOutputVisitor.java | 2 +- .../druid/bvt/sql/mysql/MySqlFormatTest3.java | 31 +++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlFormatTest3.java 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 660b26973e..d69916112b 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 @@ -189,7 +189,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } public boolean isShardingSupport() { - return shardingSupport; + return parameterized && shardingSupport; } public void setShardingSupport(boolean shardingSupport) { diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java index 124168d8a5..9adb2b9852 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -631,7 +631,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Paramet } private boolean printName(SQLName x, String name) { - boolean shardingSupport = this.shardingSupport; + boolean shardingSupport = this.shardingSupport && parameterized; if (shardingSupport) { SQLObject parent = x.getParent(); shardingSupport = parent instanceof SQLExprTableSource || parent instanceof SQLPropertyExpr; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlFormatTest3.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlFormatTest3.java new file mode 100644 index 0000000000..e5806a6c1a --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlFormatTest3.java @@ -0,0 +1,31 @@ +/* + * Copyright 1999-2017 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.mysql; + +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.util.JdbcUtils; +import junit.framework.TestCase; +import org.junit.Assert; + +public class MySqlFormatTest3 extends TestCase { + + public void test_0() throws Exception { + String text = "select * from db_00.t_00_00 where id > 1;"; + Assert.assertEquals("SELECT *\n" + + "FROM db_00.t_00_00\n" + + "WHERE id > 1;", SQLUtils.format(text, JdbcUtils.MYSQL)); + } +}