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); + } }