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_db2_0 extends TestCase { public void test_mysql_0() throws Exception { String sql = "select * from t"; String result = PagerUtils.limit(sql, JdbcConstants.DB2, 0, 10); Assert.assertEquals("SELECT *" + // "\nFROM t" + // "\nFETCH FIRST 10 ROWS ONLY", result); } public void test_mysql_1() throws Exception { String sql = "select * from t"; String result = PagerUtils.limit(sql, JdbcConstants.DB2, 10, 10); Assert.assertEquals("SELECT *"// + "\nFROM (SELECT *, ROW_NUMBER() OVER () AS ROWNUM"// + "\n\tFROM t"// + "\n\t) XX"// + "\nWHERE ROWNUM > 10"// + "\n\tAND ROWNUM <= 20", result); } public void test_mysql_2() throws Exception { String sql = "select * from t where age > 100"; String result = PagerUtils.limit(sql, JdbcConstants.DB2, 20, 10); Assert.assertEquals("SELECT *"// + "\nFROM (SELECT *, ROW_NUMBER() OVER () AS ROWNUM"// + "\n\tFROM t"// + "\n\tWHERE age > 100"// + "\n\t) XX"// + "\nWHERE ROWNUM > 20"// + "\n\tAND ROWNUM <= 30", result); } public void test_mysql_3() throws Exception { String sql = "select id, name, salary from t order by id, name"; String result = PagerUtils.limit(sql, JdbcConstants.DB2, 20, 10); Assert.assertEquals("SELECT *"// + "\nFROM (SELECT id, name, salary, ROW_NUMBER() OVER (ORDER BY id, name) AS ROWNUM"// + "\n\tFROM t"// + "\n\t) XX"// + "\nWHERE ROWNUM > 20"// + "\n\tAND ROWNUM <= 30", result); } public void test_fetch_order() { String sql="SELECT t.CUSTNAME AS custname\n" + "FROM CPS_LOAN_INFO t WHERE t.DEL_FLAG = 0\n" + "ORDER BY t.CREATE_TIME DESC"; String limitSql=PagerUtils.limit(sql, JdbcConstants.DB2,0,20) ; int fetchRowIndex=limitSql.indexOf("FETCH FIRST"); int orderIndex=limitSql.indexOf("ORDER BY") ; Assert.assertTrue(fetchRowIndex>orderIndex); } }