From 0f10b84a83d0f35249c1b3efc5492785f634f52e Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 4 Feb 2018 10:43:33 +0800 Subject: [PATCH] bug fixed for PageUtils.limit h2 support. for issue #2313 --- .../com/alibaba/druid/sql/PagerUtils.java | 4 ++-- .../bvt/sql/PagerUtilsTest_Limit_h2_0.java | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_h2_0.java diff --git a/src/main/java/com/alibaba/druid/sql/PagerUtils.java b/src/main/java/com/alibaba/druid/sql/PagerUtils.java index aaf6bb2663..46c38296c9 100644 --- a/src/main/java/com/alibaba/druid/sql/PagerUtils.java +++ b/src/main/java/com/alibaba/druid/sql/PagerUtils.java @@ -105,7 +105,7 @@ public class PagerUtils { if (JdbcConstants.MYSQL.equals(dbType) || // JdbcConstants.MARIADB.equals(dbType) || // JdbcConstants.H2.equals(dbType)) { - return limitMySqlQueryBlock((MySqlSelectQueryBlock) queryBlock, dbType, offset, count, check); + return limitMySqlQueryBlock(queryBlock, dbType, offset, count, check); } if (JdbcConstants.POSTGRESQL.equals(dbType)) { @@ -369,7 +369,7 @@ public class PagerUtils { return true; } - private static boolean limitMySqlQueryBlock(MySqlSelectQueryBlock queryBlock, String dbType, int offset, int count, boolean check) { + private static boolean limitMySqlQueryBlock(SQLSelectQueryBlock queryBlock, String dbType, int offset, int count, boolean check) { SQLLimit limit = queryBlock.getLimit(); if (limit != null) { if (offset > 0) { diff --git a/src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_h2_0.java b/src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_h2_0.java new file mode 100644 index 0000000000..95905fb7aa --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_h2_0.java @@ -0,0 +1,19 @@ +package com.alibaba.druid.bvt.sql; + +import com.alibaba.druid.sql.PagerUtils; +import com.alibaba.druid.util.JdbcConstants; +import com.alibaba.druid.util.JdbcUtils; +import junit.framework.TestCase; +import org.junit.Assert; + +public class PagerUtilsTest_Limit_h2_0 extends TestCase { + + public void test_db2_union() throws Exception { + String sql = "select * from t1 union select * from t2"; + String result = PagerUtils.limit("SELECT * FROM test", JdbcUtils.H2, 0, 10); + System.out.println(result); + Assert.assertEquals("SELECT *\n" + + "FROM test\n" + + "LIMIT 10", result); + } +}