BATCH-1453: Oracle paging corrections
This commit is contained in:
@@ -84,12 +84,12 @@ public class SqlPagingQueryUtils {
|
||||
public static String generateRowNumSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery,
|
||||
String rowNumClause) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT ").append(provider.getSelectClause());
|
||||
sql.append("SELECT * FROM (SELECT ").append(provider.getSelectClause());
|
||||
sql.append(" FROM ").append(provider.getFromClause());
|
||||
buildWhereClause(provider, remainingPageQuery, sql);
|
||||
sql.append(provider.getWhereClause() != null || remainingPageQuery ? " AND " : " WHERE ").append(rowNumClause);
|
||||
sql.append(" ORDER BY ").append(provider.getSortKey());
|
||||
buildAscendingClause(provider, sql);
|
||||
sql.append(") WHERE ").append(rowNumClause);
|
||||
|
||||
return sql.toString();
|
||||
|
||||
|
||||
@@ -15,18 +15,18 @@ public class OraclePagingQueryProviderTests extends AbstractSqlPagingQueryProvid
|
||||
@Test
|
||||
@Override
|
||||
public void testGenerateFirstPageQuery() {
|
||||
String sql = "SELECT id, name, age FROM foo WHERE bar = 1 AND ROWNUM <= 100 ORDER BY id ASC";
|
||||
String sql = "SELECT * FROM (SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY id ASC) WHERE ROWNUM <= 100";
|
||||
String s = pagingQueryProvider.generateFirstPageQuery(pageSize);
|
||||
Assert.assertEquals("", sql, s);
|
||||
pagingQueryProvider.setWhereClause("");
|
||||
String sql2 = "SELECT id, name, age FROM foo WHERE ROWNUM <= 100 ORDER BY id ASC";
|
||||
String sql2 = "SELECT * FROM (SELECT id, name, age FROM foo ORDER BY id ASC) WHERE ROWNUM <= 100";
|
||||
String s2 = pagingQueryProvider.generateFirstPageQuery(pageSize);
|
||||
Assert.assertEquals("", sql2, s2);
|
||||
}
|
||||
|
||||
@Test @Override
|
||||
public void testGenerateRemainingPagesQuery() {
|
||||
String sql = "SELECT id, name, age FROM foo WHERE bar = 1 AND id > ? AND ROWNUM <= 100 ORDER BY id ASC";
|
||||
String sql = "SELECT * FROM (SELECT id, name, age FROM foo WHERE bar = 1 AND id > ? ORDER BY id ASC) WHERE ROWNUM <= 100";
|
||||
String s = pagingQueryProvider.generateRemainingPagesQuery(pageSize);
|
||||
Assert.assertEquals("", sql, s);
|
||||
}
|
||||
|
||||
@@ -60,14 +60,14 @@ public class SqlPagingQueryUtilsTests {
|
||||
@Test
|
||||
public void testGenerateRowNumSqlQuery() {
|
||||
AbstractSqlPagingQueryProvider qp = new TestSqlPagingQueryProvider("FOO", "BAR", "ID");
|
||||
assertEquals("SELECT FOO FROM BAR WHERE ROWNUMBER <= 100 ORDER BY ID ASC", SqlPagingQueryUtils
|
||||
assertEquals("SELECT * FROM (SELECT FOO FROM BAR ORDER BY ID ASC) WHERE ROWNUMBER <= 100", SqlPagingQueryUtils
|
||||
.generateRowNumSqlQuery(qp, false, "ROWNUMBER <= 100"));
|
||||
assertEquals("SELECT FOO FROM BAR WHERE ID > ? AND ROWNUMBER <= 100 ORDER BY ID ASC", SqlPagingQueryUtils
|
||||
assertEquals("SELECT * FROM (SELECT FOO FROM BAR WHERE ID > ? ORDER BY ID ASC) WHERE ROWNUMBER <= 100", SqlPagingQueryUtils
|
||||
.generateRowNumSqlQuery(qp, true, "ROWNUMBER <= 100"));
|
||||
qp.setWhereClause("BAZ IS NOT NULL");
|
||||
assertEquals("SELECT FOO FROM BAR WHERE BAZ IS NOT NULL AND ROWNUMBER <= 100 ORDER BY ID ASC",
|
||||
assertEquals("SELECT * FROM (SELECT FOO FROM BAR WHERE BAZ IS NOT NULL ORDER BY ID ASC) WHERE ROWNUMBER <= 100",
|
||||
SqlPagingQueryUtils.generateRowNumSqlQuery(qp, false, "ROWNUMBER <= 100"));
|
||||
assertEquals("SELECT FOO FROM BAR WHERE BAZ IS NOT NULL AND ID > ? AND ROWNUMBER <= 100 ORDER BY ID ASC",
|
||||
assertEquals("SELECT * FROM (SELECT FOO FROM BAR WHERE BAZ IS NOT NULL AND ID > ? ORDER BY ID ASC) WHERE ROWNUMBER <= 100",
|
||||
SqlPagingQueryUtils.generateRowNumSqlQuery(qp, true, "ROWNUMBER <= 100"));
|
||||
}
|
||||
|
||||
@@ -90,14 +90,14 @@ public class SqlPagingQueryUtilsTests {
|
||||
public void testGenerateRowNumSqlQueryDescending() {
|
||||
AbstractSqlPagingQueryProvider qp = new TestSqlPagingQueryProvider("FOO", "BAR", "ID");
|
||||
qp.setAscending(false);
|
||||
assertEquals("SELECT FOO FROM BAR WHERE ROWNUMBER <= 100 ORDER BY ID DESC", SqlPagingQueryUtils
|
||||
assertEquals("SELECT * FROM (SELECT FOO FROM BAR ORDER BY ID DESC) WHERE ROWNUMBER <= 100", SqlPagingQueryUtils
|
||||
.generateRowNumSqlQuery(qp, false, "ROWNUMBER <= 100"));
|
||||
assertEquals("SELECT FOO FROM BAR WHERE ID < ? AND ROWNUMBER <= 100 ORDER BY ID DESC", SqlPagingQueryUtils
|
||||
assertEquals("SELECT * FROM (SELECT FOO FROM BAR WHERE ID < ? ORDER BY ID DESC) WHERE ROWNUMBER <= 100", SqlPagingQueryUtils
|
||||
.generateRowNumSqlQuery(qp, true, "ROWNUMBER <= 100"));
|
||||
qp.setWhereClause("BAZ IS NOT NULL");
|
||||
assertEquals("SELECT FOO FROM BAR WHERE BAZ IS NOT NULL AND ROWNUMBER <= 100 ORDER BY ID DESC",
|
||||
assertEquals("SELECT * FROM (SELECT FOO FROM BAR WHERE BAZ IS NOT NULL ORDER BY ID DESC) WHERE ROWNUMBER <= 100",
|
||||
SqlPagingQueryUtils.generateRowNumSqlQuery(qp, false, "ROWNUMBER <= 100"));
|
||||
assertEquals("SELECT FOO FROM BAR WHERE BAZ IS NOT NULL AND ID < ? AND ROWNUMBER <= 100 ORDER BY ID DESC",
|
||||
assertEquals("SELECT * FROM (SELECT FOO FROM BAR WHERE BAZ IS NOT NULL AND ID < ? ORDER BY ID DESC) WHERE ROWNUMBER <= 100",
|
||||
SqlPagingQueryUtils.generateRowNumSqlQuery(qp, true, "ROWNUMBER <= 100"));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user