BATCH-1595: tweak jump to item query for Oracle
This commit is contained in:
@@ -122,7 +122,8 @@ public class JdbcPagingQueryIntegrationTests {
|
||||
List<Map<String, Object>> list = jdbcTemplate.queryForList(query);
|
||||
logger.debug("Jump to page result: " + list);
|
||||
assertEquals(1, list.size());
|
||||
String expected = "[{value=" + (minId + pageSize - 1);
|
||||
System.err.println(list);
|
||||
String expected = "[{sort_key=" + (minId + pageSize - 1);
|
||||
assertEquals(expected, list.toString().toLowerCase().substring(0, expected.length()));
|
||||
Object startAfterValue = list.get(0).entrySet().iterator().next().getValue();
|
||||
list = jdbcTemplate.queryForList(queryProvider.generateRemainingPagesQuery(pageSize), startAfterValue);
|
||||
|
||||
@@ -42,7 +42,7 @@ public class OraclePagingQueryProvider extends AbstractSqlPagingQueryProvider {
|
||||
int page = itemIndex / pageSize;
|
||||
int offset = (page * pageSize);
|
||||
offset = offset == 0 ? 1 : offset;
|
||||
return SqlPagingQueryUtils.generateRowNumSqlQueryWithNesting(this, this.getSortKey(), false, "TMP_ROW_NUM = "
|
||||
return SqlPagingQueryUtils.generateRowNumSqlQueryWithNesting(this, this.getSortKey() + " AS SORT_KEY", "SORT_KEY", false, "TMP_ROW_NUM = "
|
||||
+ offset);
|
||||
}
|
||||
|
||||
|
||||
@@ -114,10 +114,16 @@ public class SqlPagingQueryUtils {
|
||||
|
||||
public static String generateRowNumSqlQueryWithNesting(AbstractSqlPagingQueryProvider provider,
|
||||
String selectClause, boolean remainingPageQuery, String rowNumClause) {
|
||||
return generateRowNumSqlQueryWithNesting(provider, selectClause, selectClause, remainingPageQuery, rowNumClause);
|
||||
}
|
||||
|
||||
|
||||
public static String generateRowNumSqlQueryWithNesting(AbstractSqlPagingQueryProvider provider,
|
||||
String innerSelectClause, String outerSelectClause, boolean remainingPageQuery, String rowNumClause) {
|
||||
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT * FROM (SELECT ").append(selectClause).append(", ROWNUM as TMP_ROW_NUM");
|
||||
sql.append(" FROM (SELECT ").append(selectClause).append(" FROM ").append(provider.getFromClause());
|
||||
sql.append("SELECT * FROM (SELECT ").append(outerSelectClause).append(", ROWNUM as TMP_ROW_NUM");
|
||||
sql.append(" FROM (SELECT ").append(innerSelectClause).append(" FROM ").append(provider.getFromClause());
|
||||
buildWhereClause(provider, remainingPageQuery, sql);
|
||||
sql.append(" ORDER BY ").append(provider.getSortKey());
|
||||
buildAscendingClause(provider, sql);
|
||||
|
||||
@@ -33,14 +33,14 @@ public class OraclePagingQueryProviderTests extends AbstractSqlPagingQueryProvid
|
||||
|
||||
@Test @Override
|
||||
public void testGenerateJumpToItemQuery() {
|
||||
String sql = "SELECT * FROM (SELECT id, ROWNUM as TMP_ROW_NUM FROM (SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC)) WHERE TMP_ROW_NUM = 100";
|
||||
String sql = "SELECT * FROM (SELECT SORT_KEY, ROWNUM as TMP_ROW_NUM FROM (SELECT id AS SORT_KEY FROM foo WHERE bar = 1 ORDER BY id ASC)) WHERE TMP_ROW_NUM = 100";
|
||||
String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize);
|
||||
Assert.assertEquals(sql, s);
|
||||
}
|
||||
|
||||
@Test @Override
|
||||
public void testGenerateJumpToItemQueryForFirstPage() {
|
||||
String sql = "SELECT * FROM (SELECT id, ROWNUM as TMP_ROW_NUM FROM (SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC)) WHERE TMP_ROW_NUM = 1";
|
||||
String sql = "SELECT * FROM (SELECT SORT_KEY, ROWNUM as TMP_ROW_NUM FROM (SELECT id AS SORT_KEY FROM foo WHERE bar = 1 ORDER BY id ASC)) WHERE TMP_ROW_NUM = 1";
|
||||
String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize);
|
||||
Assert.assertEquals(sql, s);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user