From 2017fb7cf12c32b48587993a0e036727f7a36c1a Mon Sep 17 00:00:00 2001 From: likangning Date: Fri, 31 May 2019 14:16:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3PagerUtils=E4=BF=AE=E6=94=B9o?= =?UTF-8?q?ffset=E7=9A=84bug=EF=BC=8C=E5=BD=93offset=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA0=E6=97=B6=EF=BC=8C=E5=8F=96?= =?UTF-8?q?=E5=80=BC=E4=B8=8D=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/alibaba/druid/sql/PagerUtils.java | 2 +- .../druid/bvt/sql/PagerUtilsTest_Limit_mysql_0.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alibaba/druid/sql/PagerUtils.java b/src/main/java/com/alibaba/druid/sql/PagerUtils.java index 38703b4f95..dd249367da 100644 --- a/src/main/java/com/alibaba/druid/sql/PagerUtils.java +++ b/src/main/java/com/alibaba/druid/sql/PagerUtils.java @@ -400,7 +400,7 @@ public class PagerUtils { private static boolean limitMySqlQueryBlock(SQLSelectQueryBlock queryBlock, String dbType, int offset, int count, boolean check) { SQLLimit limit = queryBlock.getLimit(); if (limit != null) { - if (offset > 0) { + if (offset >= 0) { limit.setOffset(new SQLIntegerExpr(offset)); } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_mysql_0.java b/src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_mysql_0.java index 1363ae19f6..c155d78d80 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_mysql_0.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/PagerUtilsTest_Limit_mysql_0.java @@ -41,4 +41,12 @@ public class PagerUtilsTest_Limit_mysql_0 extends TestCase { "\nORDER BY id, name" + // "\nLIMIT 20, 10", result); } + + public void test_mysql_4() throws Exception { + String sql = "select id, name, salary from t limit 100 offset 5"; + String result = PagerUtils.limit(sql, JdbcConstants.MYSQL, 0, 20); + Assert.assertEquals("SELECT id, name, salary" + // + "\nFROM t" + // + "\nLIMIT 0, 20", result); + } }