From 9476b99b0cad9f2197667f2ddfaeba015accc728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Fri, 6 May 2016 09:32:34 +0800 Subject: [PATCH] bug fixed for SQLServerOutputVisitor visit 'with clause', for issue 1205, https://github.com/alibaba/druid/issues/1205 --- .../visitor/SQLServerOutputVisitor.java | 10 +++++----- .../sql/PagerUtilsTest_Limit_SQLServer_5.java | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_SQLServer_5.java diff --git a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java index 1994aa3fc1..948f9acf16 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java @@ -258,17 +258,17 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe public boolean visit(SQLExprTableSource x) { x.getExpr().accept(this); + if (x.getAlias() != null) { + print(' '); + print0(x.getAlias()); + } + if (x.getHints() != null && x.getHints().size() > 0) { print0(ucase ? " WITH (" : " with ("); printAndAccept(x.getHints(), ", "); print(')'); } - if (x.getAlias() != null) { - print(' '); - print0(x.getAlias()); - } - return false; } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_SQLServer_5.java b/src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_SQLServer_5.java new file mode 100644 index 0000000000..837e763904 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_SQLServer_5.java @@ -0,0 +1,18 @@ +package com.alibaba.druid.bvt.sql; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.sql.PagerUtils; +import com.alibaba.druid.util.JdbcConstants; + +public class PagerUtilsTest_Limit_SQLServer_5 extends TestCase { + + public void test_db2_union() throws Exception { + String sql = " select * from test t with (nolock)"; + String result = PagerUtils.limit(sql, JdbcConstants.SQL_SERVER, 0, 10); + Assert.assertEquals("SELECT TOP 10 *" + + "\nFROM test t WITH (nolock)", result); + } +}