BATCH-1639: fix oracle jump to item
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Placeholders batch.*
|
||||
# for Oracle:
|
||||
batch.jdbc.driver=oracle.jdbc.OracleDriver
|
||||
batch.jdbc.url=jdbc:oracle:thin:@localhost:1521:xe
|
||||
batch.jdbc.url=jdbc:oracle:thin:@oracle:1521:xe
|
||||
batch.jdbc.user=spring
|
||||
batch.jdbc.password=spring
|
||||
batch.jdbc.testWhileIdle=false
|
||||
|
||||
@@ -188,8 +188,7 @@ public class JdbcPagingItemReader<T> extends AbstractPagingItemReader<T> impleme
|
||||
|
||||
PagingRowMapper rowCallback = new PagingRowMapper();
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List query;
|
||||
List<?> query;
|
||||
|
||||
if (getPage() == 0) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
@@ -225,7 +224,7 @@ public class JdbcPagingItemReader<T> extends AbstractPagingItemReader<T> impleme
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
Collection<T> result = query;
|
||||
Collection<T> result = (Collection<T>) query;
|
||||
results.addAll(result);
|
||||
|
||||
}
|
||||
|
||||
@@ -116,13 +116,13 @@ public class SqlPagingQueryUtils {
|
||||
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(outerSelectClause).append(", ROWNUM as TMP_ROW_NUM");
|
||||
sql.append("SELECT ").append(outerSelectClause).append(" 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());
|
||||
|
||||
@@ -33,14 +33,14 @@ public class OraclePagingQueryProviderTests extends AbstractSqlPagingQueryProvid
|
||||
|
||||
@Test @Override
|
||||
public void testGenerateJumpToItemQuery() {
|
||||
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 sql = "SELECT SORT_KEY 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 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 sql = "SELECT SORT_KEY 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);
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ public class SqlPagingQueryUtilsTests {
|
||||
public void testGenerateRowNumSqlQueryWithNesting() {
|
||||
AbstractSqlPagingQueryProvider qp = new TestSqlPagingQueryProvider("FOO", "BAR", "ID");
|
||||
assertEquals(
|
||||
"SELECT * FROM (SELECT FOO, ROWNUM as TMP_ROW_NUM FROM (SELECT FOO FROM BAR ORDER BY ID ASC)) WHERE ROWNUMBER <= 100",
|
||||
"SELECT FOO FROM (SELECT FOO, ROWNUM as TMP_ROW_NUM FROM (SELECT FOO FROM BAR ORDER BY ID ASC)) WHERE ROWNUMBER <= 100",
|
||||
SqlPagingQueryUtils.generateRowNumSqlQueryWithNesting(qp, "FOO", false, "ROWNUMBER <= 100"));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user