BATCH-1657: Derby queries upgraded to 10.6.2.1
This commit is contained in:
@@ -31,10 +31,12 @@ import javax.sql.DataSource;
|
||||
*/
|
||||
public class DerbyPagingQueryProvider extends SqlWindowingPagingQueryProvider {
|
||||
|
||||
private String version;
|
||||
|
||||
@Override
|
||||
public void init(DataSource dataSource) throws Exception {
|
||||
super.init(dataSource);
|
||||
String version = JdbcUtils.extractDatabaseMetaData(dataSource, "getDatabaseProductVersion").toString();
|
||||
version = JdbcUtils.extractDatabaseMetaData(dataSource, "getDatabaseProductVersion").toString();
|
||||
if ("10.4.1.3".compareTo(version) > 0) {
|
||||
throw new InvalidDataAccessResourceUsageException("Apache Derby version " + version + " is not supported by this class, Only version 10.4.1.3 or later is supported");
|
||||
}
|
||||
@@ -49,5 +51,14 @@ public class DerbyPagingQueryProvider extends SqlWindowingPagingQueryProvider {
|
||||
protected String getOverClause() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getAfterWhereClause() {
|
||||
if (version!=null && "10.6.1".compareTo(version) > 0) {
|
||||
// Old behaviour retained, even though it is broken
|
||||
return "";
|
||||
}
|
||||
return " " + super.getOverClause();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ public class SqlWindowingPagingQueryProvider extends AbstractSqlPagingQueryProvi
|
||||
sql.append(") AS ROW_NUMBER");
|
||||
sql.append(" FROM ").append(getFromClause()).append(
|
||||
getWhereClause() == null ? "" : " WHERE " + getWhereClause());
|
||||
sql.append(getAfterWhereClause());
|
||||
String alias = extractTableAlias();
|
||||
sql.append(") ").append(getSubQueryAlias()).append("WHERE " + alias + "ROW_NUMBER <= ").append(pageSize);
|
||||
|
||||
@@ -76,12 +77,17 @@ public class SqlWindowingPagingQueryProvider extends AbstractSqlPagingQueryProvi
|
||||
sql.append(" < ");
|
||||
}
|
||||
sql.append(getSortKeyPlaceHolder());
|
||||
sql.append(getAfterWhereClause());
|
||||
String alias = extractTableAlias();
|
||||
sql.append(") ").append(getSubQueryAlias()).append("WHERE " + alias + "ROW_NUMBER <= ").append(pageSize);
|
||||
|
||||
return sql.toString();
|
||||
}
|
||||
|
||||
protected String getAfterWhereClause() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generateJumpToItemQuery(int itemIndex, int pageSize) {
|
||||
int page = itemIndex / pageSize;
|
||||
@@ -97,6 +103,7 @@ public class SqlWindowingPagingQueryProvider extends AbstractSqlPagingQueryProvi
|
||||
sql.append(") AS ROW_NUMBER");
|
||||
sql.append(" FROM ").append(getFromClause()).append(
|
||||
getWhereClause() == null ? "" : " WHERE " + getWhereClause());
|
||||
sql.append(getAfterWhereClause());
|
||||
String alias = extractTableAlias();
|
||||
sql.append(") ").append(getSubQueryAlias()).append("WHERE " + alias + "ROW_NUMBER = ").append(lastRowNum);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user