BATCH-1571: fix paging queries for Postgres

This commit is contained in:
dsyer
2010-05-19 07:55:23 +00:00
parent a7c1a1e07b
commit 90c63f71dc
11 changed files with 92 additions and 37 deletions

View File

@@ -43,8 +43,7 @@ public class PostgresPagingQueryProvider extends AbstractSqlPagingQueryProvider
int page = itemIndex / pageSize;
int offset = (page * pageSize) - 1;
offset = offset<0 ? 0 : offset;
String limitClause = new StringBuilder().append("LIMIT ").append(offset).append(" 1").toString();
String limitClause = new StringBuilder().append("LIMIT 1 OFFSET ").append(offset).toString();
return SqlPagingQueryUtils.generateLimitJumpToQuery(this, limitClause);
}

View File

@@ -29,16 +29,16 @@ public class PostgresPagingQueryProviderTests extends AbstractSqlPagingQueryProv
@Test @Override
public void testGenerateJumpToItemQuery() {
String sql = "SELECT id AS SORT_KEY FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 99 1";
String sql = "SELECT id AS SORT_KEY FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 1 OFFSET 99";
String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize);
Assert.assertEquals("", sql, s);
Assert.assertEquals("Wrong SQL for jump to", sql, s);
}
@Test @Override
public void testGenerateJumpToItemQueryForFirstPage() {
String sql = "SELECT id AS SORT_KEY FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 0 1";
String sql = "SELECT id AS SORT_KEY FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 1 OFFSET 0";
String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize);
Assert.assertEquals("", sql, s);
Assert.assertEquals("Wrong SQL for first page", sql, s);
}
}