diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/AbstractPagingItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/AbstractPagingItemReader.java index 39518bde1e..0ede0eb5dd 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/AbstractPagingItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/AbstractPagingItemReader.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2019 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -156,14 +156,10 @@ protected void jumpToItem(int itemIndex) throws Exception { current = itemIndex % pageSize; } - doJumpToPage(itemIndex); - if (logger.isDebugEnabled()) { logger.debug("Jumping to page " + getPage() + " and index " + current); } } - abstract protected void doJumpToPage(int itemIndex); - } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/HibernatePagingItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/HibernatePagingItemReader.java index 691259d771..53d993d76a 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/HibernatePagingItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/HibernatePagingItemReader.java @@ -157,10 +157,6 @@ protected void doReadPage() { } - @Override - protected void doJumpToPage(int itemIndex) { - } - @Override protected void doClose() throws Exception { helper.close(); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcPagingItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcPagingItemReader.java index 0af57b9d3d..c5fd0cfc93 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcPagingItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcPagingItemReader.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2021 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -254,33 +254,6 @@ public void open(ExecutionContext executionContext) { super.open(executionContext); } - @Override - protected void doJumpToPage(int itemIndex) { - /* - * Normally this would be false (the startAfterValue is enough information to - * restart from. - */ - // TODO: this is dead code, startAfterValues is never null - see - // #open(ExecutionContext) - if (startAfterValues == null && getPage() > 0) { - - String jumpToItemSql = queryProvider.generateJumpToItemQuery(itemIndex, getPageSize()); - - if (logger.isDebugEnabled()) { - logger.debug("SQL used for jumping: [" + jumpToItemSql + "]"); - } - - if (this.queryProvider.isUsingNamedParameters()) { - startAfterValues = namedParameterJdbcTemplate.queryForMap(jumpToItemSql, - getParameterMap(parameterValues, null)); - } - else { - startAfterValues = getJdbcTemplate().queryForMap(jumpToItemSql, - getParameterList(parameterValues, null).toArray()); - } - } - } - private Map getParameterMap(Map values, Map sortKeyValues) { Map parameterMap = new LinkedHashMap<>(); if (values != null) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JpaPagingItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JpaPagingItemReader.java index 33e9d83dfc..47ff7d211b 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JpaPagingItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JpaPagingItemReader.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2021 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -221,10 +221,6 @@ protected void doReadPage() { } // end if } - @Override - protected void doJumpToPage(int itemIndex) { - } - @Override protected void doClose() throws Exception { entityManager.close(); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/PagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/PagingQueryProvider.java index ce4bd1322d..fb86ccd8a1 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/PagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/PagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2012 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,18 +50,6 @@ public interface PagingQueryProvider { */ String generateRemainingPagesQuery(int pageSize); - /** - * - * Generate the query that will provide the jump to item query. The itemIndex provided - * could be in the middle of the page and together with the page size it will be used - * to calculate the last index of the preceding page to be able to retrieve the sort - * key for this row. - * @param itemIndex the index for the next item to be read - * @param pageSize number of rows to read for each page - * @return the generated query - */ - String generateJumpToItemQuery(int itemIndex, int pageSize); - /** * The number of parameters that are declared in the query * @return number of parameters diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/AbstractSqlPagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/AbstractSqlPagingQueryProvider.java index 81a5a564b8..439b105437 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/AbstractSqlPagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/AbstractSqlPagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2021 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -221,16 +221,6 @@ public void init(DataSource dataSource) throws Exception { @Override public abstract String generateRemainingPagesQuery(int pageSize); - /** - * Method generating the query string to be used for jumping to a specific item - * position. This method must be implemented in sub classes. - * @param itemIndex the index of the item to jump to - * @param pageSize number of rows to read per page - * @return query string - */ - @Override - public abstract String generateJumpToItemQuery(int itemIndex, int pageSize); - private String removeKeyWord(String keyWord, String clause) { String temp = clause.trim(); int length = keyWord.length(); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/H2PagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/H2PagingQueryProvider.java index 93d38fb258..5f358b7cd2 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/H2PagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/H2PagingQueryProvider.java @@ -41,15 +41,4 @@ private String buildLimitClause(int pageSize) { return new StringBuilder().append("FETCH NEXT ").append(pageSize).append(" ROWS ONLY").toString(); } - @Override - public String generateJumpToItemQuery(int itemIndex, int pageSize) { - int page = itemIndex / pageSize; - int offset = (page * pageSize) - 1; - offset = offset < 0 ? 0 : offset; - - String limitClause = new StringBuilder().append("OFFSET ").append(offset).append(" ROWS FETCH NEXT 1 ROWS ONLY") - .toString(); - return SqlPagingQueryUtils.generateLimitJumpToQuery(this, limitClause); - } - } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HanaPagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HanaPagingQueryProvider.java index 10c7440820..54bd06d23d 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HanaPagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HanaPagingQueryProvider.java @@ -47,13 +47,4 @@ private String buildLimitClause(int pageSize) { return new StringBuilder().append("LIMIT ").append(pageSize).toString(); } - @Override - public String generateJumpToItemQuery(int itemIndex, int pageSize) { - int page = itemIndex / pageSize; - int offset = (page * pageSize) - 1; - offset = offset < 0 ? 0 : offset; - String limitClause = new StringBuilder().append("LIMIT 1 OFFSET ").append(offset).toString(); - return SqlPagingQueryUtils.generateLimitJumpToQuery(this, limitClause); - } - } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HsqlPagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HsqlPagingQueryProvider.java index cc43043514..fed56bab8b 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HsqlPagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HsqlPagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2012 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,14 +48,4 @@ private String buildTopClause(int pageSize) { return new StringBuilder().append("TOP ").append(pageSize).toString(); } - @Override - public String generateJumpToItemQuery(int itemIndex, int pageSize) { - int page = itemIndex / pageSize; - int offset = (page * pageSize) - 1; - offset = offset < 0 ? 0 : offset; - - String topClause = new StringBuilder().append("LIMIT ").append(offset).append(" 1").toString(); - return SqlPagingQueryUtils.generateTopJumpToQuery(this, topClause); - } - } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/MySqlPagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/MySqlPagingQueryProvider.java index 7513021674..ad2eba7cf4 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/MySqlPagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/MySqlPagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2021 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,14 +48,4 @@ private String buildLimitClause(int pageSize) { return new StringBuilder().append("LIMIT ").append(pageSize).toString(); } - @Override - public String generateJumpToItemQuery(int itemIndex, int pageSize) { - 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(); - return SqlPagingQueryUtils.generateLimitJumpToQuery(this, limitClause); - } - } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/OraclePagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/OraclePagingQueryProvider.java index 360baac518..9958727437 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/OraclePagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/OraclePagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2012 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,10 +16,6 @@ package org.springframework.batch.item.database.support; -import java.util.Map; - -import org.springframework.batch.item.database.Order; - /** * Oracle implementation of a * {@link org.springframework.batch.item.database.PagingQueryProvider} using database @@ -41,29 +37,6 @@ public String generateRemainingPagesQuery(int pageSize) { return SqlPagingQueryUtils.generateRowNumSqlQuery(this, true, buildRowNumClause(pageSize)); } - @Override - public String generateJumpToItemQuery(int itemIndex, int pageSize) { - int page = itemIndex / pageSize; - int offset = (page * pageSize); - offset = offset == 0 ? 1 : offset; - String sortKeySelect = this.getSortKeySelect(); - return SqlPagingQueryUtils.generateRowNumSqlQueryWithNesting(this, sortKeySelect, sortKeySelect, false, - "TMP_ROW_NUM = " + offset); - } - - private String getSortKeySelect() { - StringBuilder sql = new StringBuilder(); - String prefix = ""; - - for (Map.Entry sortKey : this.getSortKeys().entrySet()) { - sql.append(prefix); - prefix = ", "; - sql.append(sortKey.getKey()); - } - - return sql.toString(); - } - private String buildRowNumClause(int pageSize) { return new StringBuilder().append("ROWNUM <= ").append(pageSize).toString(); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/PostgresPagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/PostgresPagingQueryProvider.java index 5220cfc343..c9d050017e 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/PostgresPagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/PostgresPagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2021 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -53,13 +53,4 @@ private String buildLimitClause(int pageSize) { return new StringBuilder().append("LIMIT ").append(pageSize).toString(); } - @Override - public String generateJumpToItemQuery(int itemIndex, int pageSize) { - int page = itemIndex / pageSize; - int offset = (page * pageSize) - 1; - offset = offset < 0 ? 0 : offset; - String limitClause = new StringBuilder().append("LIMIT 1 OFFSET ").append(offset).toString(); - return SqlPagingQueryUtils.generateLimitJumpToQuery(this, limitClause); - } - } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlPagingQueryUtils.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlPagingQueryUtils.java index 0b1f414294..3717a30b79 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlPagingQueryUtils.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlPagingQueryUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2021 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -201,66 +201,6 @@ public static String generateRowNumSqlQuery(AbstractSqlPagingQueryProvider provi } - 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 ").append(outerSelectClause).append(" FROM (SELECT ").append(outerSelectClause).append(", ") - .append(StringUtils.hasText(provider.getGroupClause()) ? "MIN(ROWNUM) as TMP_ROW_NUM" - : "ROWNUM as TMP_ROW_NUM"); - sql.append(" FROM (SELECT ").append(innerSelectClause).append(" FROM ").append(provider.getFromClause()); - buildWhereClause(provider, remainingPageQuery, sql); - buildGroupByClause(provider, sql); - sql.append(" ORDER BY ").append(buildSortClause(provider)); - sql.append(")) WHERE ").append(rowNumClause); - - return sql.toString(); - - } - - /** - * Generate SQL query string using a LIMIT clause - * @param provider {@link AbstractSqlPagingQueryProvider} providing the implementation - * specifics - * @param limitClause the implementation specific top clause to be used - * @return the generated query - */ - public static String generateLimitJumpToQuery(AbstractSqlPagingQueryProvider provider, String limitClause) { - StringBuilder sql = new StringBuilder(); - sql.append("SELECT ").append(buildSortKeySelect(provider)); - sql.append(" FROM ").append(provider.getFromClause()); - sql.append(provider.getWhereClause() == null ? "" : " WHERE " + provider.getWhereClause()); - buildGroupByClause(provider, sql); - sql.append(" ORDER BY ").append(buildSortClause(provider)); - sql.append(" " + limitClause); - - return sql.toString(); - } - - /** - * Generate SQL query string using a TOP clause - * @param provider {@link AbstractSqlPagingQueryProvider} providing the implementation - * specifics - * @param topClause the implementation specific top clause to be used - * @return the generated query - */ - public static String generateTopJumpToQuery(AbstractSqlPagingQueryProvider provider, String topClause) { - StringBuilder sql = new StringBuilder(); - sql.append("SELECT ").append(topClause).append(" ").append(buildSortKeySelect(provider)); - sql.append(" FROM ").append(provider.getFromClause()); - sql.append(provider.getWhereClause() == null ? "" : " WHERE " + provider.getWhereClause()); - buildGroupByClause(provider, sql); - sql.append(" ORDER BY ").append(buildSortClause(provider)); - - return sql.toString(); - } - /** * Generates ORDER BY attributes based on the sort keys. * @param provider the {@link AbstractSqlPagingQueryProvider} to be used for used for @@ -352,22 +292,6 @@ public static void buildSortConditions(AbstractSqlPagingQueryProvider provider, sql.append(")"); } - private static String buildSortKeySelect(AbstractSqlPagingQueryProvider provider) { - StringBuilder select = new StringBuilder(); - - String prefix = ""; - - for (Map.Entry sortKey : provider.getSortKeys().entrySet()) { - select.append(prefix); - - prefix = ", "; - - select.append(sortKey.getKey()); - } - - return select.toString(); - } - private static void buildWhereClause(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, StringBuilder sql) { if (remainingPageQuery) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProvider.java index 3d17a3584f..323bcf6668 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2012 the original author or authors. + * Copyright 2006-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,10 +16,6 @@ package org.springframework.batch.item.database.support; -import java.util.LinkedHashMap; -import java.util.Map; - -import org.springframework.batch.item.database.Order; import org.springframework.util.StringUtils; /** @@ -95,59 +91,6 @@ public String generateRemainingPagesQuery(int pageSize) { return sql.toString(); } - @Override - public String generateJumpToItemQuery(int itemIndex, int pageSize) { - int page = itemIndex / pageSize; - int lastRowNum = (page * pageSize); - if (lastRowNum <= 0) { - lastRowNum = 1; - } - - StringBuilder sql = new StringBuilder(); - sql.append("SELECT "); - buildSortKeySelect(sql, getSortKeysReplaced(extractTableAlias())); - sql.append(" FROM ( "); - sql.append("SELECT "); - buildSortKeySelect(sql); - sql.append(", ROW_NUMBER() OVER (").append(getOverClause()); - sql.append(") AS ROW_NUMBER"); - sql.append(getOverSubstituteClauseStart()); - sql.append(" FROM ").append(getFromClause()); - sql.append(getWhereClause() == null ? "" : " WHERE " + getWhereClause()); - sql.append(getGroupClause() == null ? "" : " GROUP BY " + getGroupClause()); - sql.append(getOverSubstituteClauseEnd()); - sql.append(") ").append(getSubQueryAlias()).append("WHERE ").append(extractTableAlias()).append("ROW_NUMBER = ") - .append(lastRowNum); - sql.append(" ORDER BY ").append(SqlPagingQueryUtils.buildSortClause(getSortKeysReplaced(extractTableAlias()))); - - return sql.toString(); - } - - private Map getSortKeysReplaced(Object qualifierReplacement) { - final String newQualifier = "" + qualifierReplacement; - final Map sortKeys = new LinkedHashMap<>(); - for (Map.Entry sortKey : getSortKeys().entrySet()) { - sortKeys.put(sortKey.getKey().replaceFirst("^.*\\.", newQualifier), sortKey.getValue()); - } - return sortKeys; - } - - private void buildSortKeySelect(StringBuilder sql) { - buildSortKeySelect(sql, null); - } - - private void buildSortKeySelect(StringBuilder sql, Map sortKeys) { - String prefix = ""; - if (sortKeys == null) { - sortKeys = getSortKeys(); - } - for (Map.Entry sortKey : sortKeys.entrySet()) { - sql.append(prefix); - prefix = ", "; - sql.append(sortKey.getKey()); - } - } - protected String getOverClause() { StringBuilder sql = new StringBuilder(); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlitePagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlitePagingQueryProvider.java index f36938886e..7f2699f175 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlitePagingQueryProvider.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/SqlitePagingQueryProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2021 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -58,23 +58,6 @@ public String generateRemainingPagesQuery(int pageSize) { } } - /* - * (non-Javadoc) - * - * @see - * org.springframework.batch.item.database.support.AbstractSqlPagingQueryProvider# - * generateJumpToItemQuery(int, int) - */ - @Override - public String generateJumpToItemQuery(int itemIndex, int pageSize) { - 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(); - return SqlPagingQueryUtils.generateLimitJumpToQuery(this, limitClause); - } - private String buildLimitClause(int pageSize) { return new StringBuilder().append("LIMIT ").append(pageSize).toString(); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingItemReaderClassicParameterTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingItemReaderClassicParameterTests.java index 0db2e877bd..37da9320fc 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingItemReaderClassicParameterTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingItemReaderClassicParameterTests.java @@ -21,13 +21,10 @@ import java.util.LinkedHashMap; import java.util.Map; -import org.junit.jupiter.api.Test; - import org.springframework.batch.item.database.support.HsqlPagingQueryProvider; import org.springframework.batch.item.sample.Foo; import org.springframework.jdbc.core.RowMapper; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; -import org.springframework.test.util.ReflectionTestUtils; /** * @author Dave Syer @@ -39,20 +36,9 @@ locations = "/org/springframework/batch/item/database/JdbcPagingItemReaderParameterTests-context.xml") class JdbcPagingItemReaderClassicParameterTests extends AbstractJdbcPagingItemReaderParameterTests { - // force jumpToItemQuery in JdbcPagingItemReader.doJumpToPage(int) - private static boolean forceJumpToItemQuery = false; - @Override protected AbstractPagingItemReader getItemReader() throws Exception { - JdbcPagingItemReader reader = new JdbcPagingItemReader() { - @Override - protected void doJumpToPage(int itemIndex) { - if (forceJumpToItemQuery) { - ReflectionTestUtils.setField(this, "startAfterValues", null); - } - super.doJumpToPage(itemIndex); - } - }; + JdbcPagingItemReader reader = new JdbcPagingItemReader<>(); reader.setDataSource(dataSource); HsqlPagingQueryProvider queryProvider = new HsqlPagingQueryProvider(); queryProvider.setSelectClause("select ID, NAME, VALUE"); @@ -81,17 +67,6 @@ public Foo mapRow(ResultSet rs, int i) throws SQLException { } - @Test - void testReadAfterJumpSecondPageWithJumpToItemQuery() throws Exception { - try { - forceJumpToItemQuery = true; - super.testReadAfterJumpSecondPage(); - } - finally { - forceJumpToItemQuery = false; - } - } - @Override protected String getName() { return "JdbcPagingItemReader"; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingItemReaderNamedParameterTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingItemReaderNamedParameterTests.java index 45244ca7ac..c94517a51b 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingItemReaderNamedParameterTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingItemReaderNamedParameterTests.java @@ -22,13 +22,11 @@ import java.util.Map; import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; import org.springframework.batch.item.database.support.HsqlPagingQueryProvider; import org.springframework.batch.item.sample.Foo; import org.springframework.jdbc.core.RowMapper; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; -import org.springframework.test.util.ReflectionTestUtils; /** * @author Dave Syer @@ -43,20 +41,9 @@ // tests class JdbcPagingItemReaderNamedParameterTests extends AbstractJdbcPagingItemReaderParameterTests { - // force jumpToItemQuery in JdbcPagingItemReader.doJumpToPage(int) - private static boolean forceJumpToItemQuery = false; - @Override protected AbstractPagingItemReader getItemReader() throws Exception { - JdbcPagingItemReader reader = new JdbcPagingItemReader() { - @Override - protected void doJumpToPage(int itemIndex) { - if (forceJumpToItemQuery) { - ReflectionTestUtils.setField(this, "startAfterValues", null); - } - super.doJumpToPage(itemIndex); - } - }; + JdbcPagingItemReader reader = new JdbcPagingItemReader<>(); reader.setDataSource(dataSource); HsqlPagingQueryProvider queryProvider = new HsqlPagingQueryProvider(); queryProvider.setSelectClause("select ID, NAME, VALUE"); @@ -85,17 +72,6 @@ public Foo mapRow(ResultSet rs, int i) throws SQLException { } - @Test - void testReadAfterJumpSecondPageWithJumpToItemQuery() throws Exception { - try { - forceJumpToItemQuery = true; - super.testReadAfterJumpSecondPage(); - } - finally { - forceJumpToItemQuery = false; - } - } - @Override protected String getName() { return "JdbcPagingItemReader"; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingQueryIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingQueryIntegrationTests.java index 4a9fe1e148..0df112ad57 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingQueryIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/JdbcPagingQueryIntegrationTests.java @@ -166,25 +166,6 @@ private Map getStartAfterValues(PagingQueryProvider queryProvide return startAfterValues; } - @Test - void testJumpToItem() throws Exception { - - PagingQueryProvider queryProvider = getPagingQueryProvider(); - - int minId = jdbcTemplate.queryForObject("SELECT MIN(VALUE) FROM T_FOOS", Integer.class); - - String query = queryProvider.generateJumpToItemQuery(pageSize, pageSize); - List> list = jdbcTemplate.queryForList(query); - logger.debug("Jump to page result: " + list); - assertEquals(1, list.size()); - System.err.println(list); - String expected = "[{value=" + (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); - assertEquals(pageSize, list.size()); - } - protected PagingQueryProvider getPagingQueryProvider() throws Exception { SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/AbstractSqlPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/AbstractSqlPagingQueryProviderTests.java index de86c25f53..3b58b7d2ca 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/AbstractSqlPagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/AbstractSqlPagingQueryProviderTests.java @@ -85,26 +85,6 @@ void testGenerateRemainingPagesQueryWithMultipleSortKeys() { assertEquals(getRemainingSqlWithMultipleSortKeys(), s); } - @Test - void testGenerateJumpToItemQueryWithMultipleSortKeys() { - Map sortKeys = new LinkedHashMap<>(); - sortKeys.put("name", Order.ASCENDING); - sortKeys.put("id", Order.DESCENDING); - pagingQueryProvider.setSortKeys(sortKeys); - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(getJumpToItemQueryWithMultipleSortKeys(), s); - } - - @Test - void testGenerateJumpToItemQueryForFirstPageWithMultipleSortKeys() { - Map sortKeys = new LinkedHashMap<>(); - sortKeys.put("name", Order.ASCENDING); - sortKeys.put("id", Order.DESCENDING); - pagingQueryProvider.setSortKeys(sortKeys); - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(getJumpToItemQueryForFirstPageWithMultipleSortKeys(), s); - } - @Test void testRemoveKeyWordsFollowedBySpaceChar() { String selectClause = "SELECT id, 'yes', false"; @@ -153,30 +133,14 @@ void testRemoveKeyWordsFollowedByNewLineChar() { @Test abstract void testGenerateRemainingPagesQuery(); - @Test - abstract void testGenerateJumpToItemQuery(); - - @Test - abstract void testGenerateJumpToItemQueryForFirstPage(); - @Test abstract void testGenerateFirstPageQueryWithGroupBy(); @Test abstract void testGenerateRemainingPagesQueryWithGroupBy(); - @Test - abstract void testGenerateJumpToItemQueryWithGroupBy(); - - @Test - abstract void testGenerateJumpToItemQueryForFirstPageWithGroupBy(); - abstract String getFirstPageSqlWithMultipleSortKeys(); abstract String getRemainingSqlWithMultipleSortKeys(); - abstract String getJumpToItemQueryWithMultipleSortKeys(); - - abstract String getJumpToItemQueryForFirstPageWithMultipleSortKeys(); - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/Db2PagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/Db2PagingQueryProviderTests.java index 3588b2ffe3..dc74d0acde 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/Db2PagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/Db2PagingQueryProviderTests.java @@ -45,22 +45,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Test @Override void testGenerateFirstPageQueryWithGroupBy() { @@ -79,24 +63,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1 GROUP BY dep) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1 GROUP BY dep) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override String getFirstPageSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC FETCH FIRST 100 ROWS ONLY"; @@ -107,14 +73,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE (bar = 1) AND ((name > ?) OR (name = ? AND id < ?)) ORDER BY name ASC, id DESC FETCH FIRST 100 ROWS ONLY"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM ( SELECT name, id, ROW_NUMBER() OVER ( ORDER BY name ASC, id DESC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY name ASC, id DESC"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM ( SELECT name, id, ROW_NUMBER() OVER ( ORDER BY name ASC, id DESC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY name ASC, id DESC"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/DerbyPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/DerbyPagingQueryProviderTests.java index 229fd061a7..f2be2f7437 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/DerbyPagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/DerbyPagingQueryProviderTests.java @@ -90,22 +90,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 ) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 ) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - /** * Older versions of Derby don't allow order by in the sub select. This should work * with 10.6.1 and above. @@ -147,24 +131,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 GROUP BY dep ) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Override - @Test - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 GROUP BY dep ) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override String getFirstPageSqlWithMultipleSortKeys() { return "SELECT * FROM ( SELECT TMP_ORDERED.*, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 ) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 100 ORDER BY name ASC, id DESC"; @@ -175,14 +141,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT * FROM ( SELECT TMP_ORDERED.*, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 ) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 100 AND ((name > ?) OR (name = ? AND id < ?)) ORDER BY name ASC, id DESC"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM ( SELECT name, id, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 ) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY name ASC, id DESC"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM ( SELECT name, id, ROW_NUMBER() OVER () AS ROW_NUMBER FROM (SELECT id, name, age FROM foo WHERE bar = 1 ) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY name ASC, id DESC"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/H2PagingQueryProviderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/H2PagingQueryProviderIntegrationTests.java index d68b1ee97f..f244de978a 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/H2PagingQueryProviderIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/H2PagingQueryProviderIntegrationTests.java @@ -34,7 +34,6 @@ import org.springframework.transaction.support.TransactionTemplate; import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; /** * @author Henning Pƶttker @@ -70,10 +69,6 @@ void testQueryProvider(ModeEnum compatibilityMode) { List secondPage = jdbcTemplate.queryForList(queryProvider.generateRemainingPagesQuery(2), String.class, 2); assertArrayEquals(new String[] { "Infrastructure" }, secondPage.toArray(), "secondPage"); - - Integer secondItem = jdbcTemplate.queryForObject(queryProvider.generateJumpToItemQuery(3, 2), - Integer.class); - assertEquals(Integer.valueOf(2), secondItem); }); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/H2PagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/H2PagingQueryProviderTests.java index 4ca35ab809..c0848d9ded 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/H2PagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/H2PagingQueryProviderTests.java @@ -48,22 +48,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC OFFSET 99 ROWS FETCH NEXT 1 ROWS ONLY"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override @Test void testGenerateFirstPageQueryWithGroupBy() { @@ -83,24 +67,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC OFFSET 99 ROWS FETCH NEXT 1 ROWS ONLY"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Override - @Test - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override String getFirstPageSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC FETCH NEXT 100 ROWS ONLY"; @@ -112,14 +78,4 @@ String getRemainingSqlWithMultipleSortKeys() { + "ORDER BY name ASC, id DESC FETCH NEXT 100 ROWS ONLY"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC OFFSET 99 ROWS FETCH NEXT 1 ROWS ONLY"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/HanaPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/HanaPagingQueryProviderTests.java index 37c365f4b8..c86f3c1e9b 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/HanaPagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/HanaPagingQueryProviderTests.java @@ -50,22 +50,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 1 OFFSET 99"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 1 OFFSET 0"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override @Test void testGenerateFirstPageQueryWithGroupBy() { @@ -84,24 +68,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC LIMIT 1 OFFSET 99"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Override - @Test - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC LIMIT 1 OFFSET 0"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Test void testFirstPageSqlWithAliases() { Map sorts = new HashMap<>(); @@ -113,15 +79,11 @@ void testFirstPageSqlWithAliases() { this.pagingQueryProvider.setSortKeys(sorts); String firstPage = this.pagingQueryProvider.generateFirstPageQuery(5); - String jumpToItemQuery = this.pagingQueryProvider.generateJumpToItemQuery(7, 5); String remainingPagesQuery = this.pagingQueryProvider.generateRemainingPagesQuery(5); assertEquals( "SELECT owner.id as ownerid, first_name, last_name, dog_name FROM dog_owner owner INNER JOIN dog ON owner.id = dog.id ORDER BY owner.id ASC LIMIT 5", firstPage); - assertEquals( - "SELECT owner.id FROM dog_owner owner INNER JOIN dog ON owner.id = dog.id ORDER BY owner.id ASC LIMIT 1 OFFSET 4", - jumpToItemQuery); assertEquals( "SELECT owner.id as ownerid, first_name, last_name, dog_name FROM dog_owner owner INNER JOIN dog ON owner.id = dog.id WHERE ((owner.id > ?)) ORDER BY owner.id ASC LIMIT 5", remainingPagesQuery); @@ -137,14 +99,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE (bar = 1) AND ((name > ?) OR (name = ? AND id < ?)) ORDER BY name ASC, id DESC LIMIT 100"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 1 OFFSET 99"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 1 OFFSET 0"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/HsqlPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/HsqlPagingQueryProviderTests.java index aeda6ccd92..31b531d076 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/HsqlPagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/HsqlPagingQueryProviderTests.java @@ -45,22 +45,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT LIMIT 99 1 id FROM foo WHERE bar = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT LIMIT 0 1 id FROM foo WHERE bar = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override @Test void testGenerateFirstPageQueryWithGroupBy() { @@ -79,24 +63,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT LIMIT 99 1 id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Override - @Test - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT LIMIT 0 1 id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override String getFirstPageSqlWithMultipleSortKeys() { return "SELECT TOP 100 id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; @@ -107,14 +73,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT TOP 100 id, name, age FROM foo WHERE (bar = 1) AND ((name > ?) OR (name = ? AND id < ?)) ORDER BY name ASC, id DESC"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT LIMIT 99 1 name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT LIMIT 0 1 name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MySqlPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MySqlPagingQueryProviderTests.java index 59256c0acd..5c3280a5f9 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MySqlPagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MySqlPagingQueryProviderTests.java @@ -50,22 +50,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 99, 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 0, 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override @Test void testGenerateFirstPageQueryWithGroupBy() { @@ -84,24 +68,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC LIMIT 99, 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Override - @Test - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC LIMIT 0, 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Test void testFirstPageSqlWithAliases() { Map sorts = new HashMap<>(); @@ -113,15 +79,11 @@ void testFirstPageSqlWithAliases() { this.pagingQueryProvider.setSortKeys(sorts); String firstPage = this.pagingQueryProvider.generateFirstPageQuery(5); - String jumpToItemQuery = this.pagingQueryProvider.generateJumpToItemQuery(7, 5); String remainingPagesQuery = this.pagingQueryProvider.generateRemainingPagesQuery(5); assertEquals( "SELECT owner.id as ownerid, first_name, last_name, dog_name FROM dog_owner owner INNER JOIN dog ON owner.id = dog.id ORDER BY owner.id ASC LIMIT 5", firstPage); - assertEquals( - "SELECT owner.id FROM dog_owner owner INNER JOIN dog ON owner.id = dog.id ORDER BY owner.id ASC LIMIT 4, 1", - jumpToItemQuery); assertEquals( "SELECT owner.id as ownerid, first_name, last_name, dog_name FROM dog_owner owner INNER JOIN dog ON owner.id = dog.id WHERE ((owner.id > ?)) ORDER BY owner.id ASC LIMIT 5", remainingPagesQuery); @@ -137,14 +99,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE (bar = 1) AND ((name > ?) OR (name = ? AND id < ?)) ORDER BY name ASC, id DESC LIMIT 100"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 99, 1"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 0, 1"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/OraclePagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/OraclePagingQueryProviderTests.java index 8ccedd75ab..d68bd6ab12 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/OraclePagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/OraclePagingQueryProviderTests.java @@ -49,22 +49,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id 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 s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id 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 s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override @Test void testGenerateFirstPageQueryWithGroupBy() { @@ -83,24 +67,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM (SELECT id, MIN(ROWNUM) as TMP_ROW_NUM FROM (SELECT id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC)) WHERE TMP_ROW_NUM = 100"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Override - @Test - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM (SELECT id, MIN(ROWNUM) as TMP_ROW_NUM FROM (SELECT id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC)) WHERE TMP_ROW_NUM = 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override String getFirstPageSqlWithMultipleSortKeys() { return "SELECT * FROM (SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC) WHERE ROWNUM <= 100"; @@ -111,14 +77,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT * FROM (SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC) WHERE ROWNUM <= 100 AND ((name > ?) OR (name = ? AND id < ?))"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM (SELECT name, id, ROWNUM as TMP_ROW_NUM FROM (SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC)) WHERE TMP_ROW_NUM = 100"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM (SELECT name, id, ROWNUM as TMP_ROW_NUM FROM (SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC)) WHERE TMP_ROW_NUM = 1"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/PostgresPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/PostgresPagingQueryProviderTests.java index 19695dbc90..6ad8a6544b 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/PostgresPagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/PostgresPagingQueryProviderTests.java @@ -45,22 +45,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 1 OFFSET 99"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s, "Wrong SQL for jump to"); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 1 OFFSET 0"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s, "Wrong SQL for first page"); - } - @Override @Test void testGenerateFirstPageQueryWithGroupBy() { @@ -79,24 +63,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("id, dep"); - String sql = "SELECT id FROM foo WHERE bar = 1 GROUP BY id, dep ORDER BY id ASC LIMIT 1 OFFSET 99"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Override - @Test - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("id, dep"); - String sql = "SELECT id FROM foo WHERE bar = 1 GROUP BY id, dep ORDER BY id ASC LIMIT 1 OFFSET 0"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override String getFirstPageSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 100"; @@ -107,14 +73,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE (bar = 1) AND ((name > ?) OR (name = ? AND id < ?)) ORDER BY name ASC, id DESC LIMIT 100"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 1 OFFSET 99"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 1 OFFSET 0"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlPagingQueryUtilsTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlPagingQueryUtilsTests.java index 427baeaab1..b3ff056e29 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlPagingQueryUtilsTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlPagingQueryUtilsTests.java @@ -17,14 +17,12 @@ package org.springframework.batch.item.database.support; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.LinkedHashMap; import java.util.Map; import org.junit.jupiter.api.Test; import org.springframework.batch.item.database.Order; -import org.springframework.util.StringUtils; /** * @author Thomas Risberg @@ -79,14 +77,6 @@ void testGenerateRowNumSqlQuery() { SqlPagingQueryUtils.generateRowNumSqlQuery(qp, true, "ROWNUMBER <= 100")); } - @Test - void testGenerateRowNumSqlQueryWithNesting() { - AbstractSqlPagingQueryProvider qp = new TestSqlPagingQueryProvider("FOO", "BAR", sortKeys); - assertEquals( - "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")); - } - @Test void testGenerateTopSqlQueryDescending() { sortKeys.put("ID", Order.DESCENDING); @@ -119,50 +109,6 @@ void testGenerateRowNumSqlQueryDescending() { SqlPagingQueryUtils.generateRowNumSqlQuery(qp, true, "ROWNUMBER <= 100")); } - @Test - void testGenerateLimitJumpToQuery() { - AbstractSqlPagingQueryProvider qp = new TestSqlPagingQueryProvider("FOO", "BAR", sortKeys); - assertEquals("SELECT ID FROM BAR ORDER BY ID ASC LIMIT 100, 1", - SqlPagingQueryUtils.generateLimitJumpToQuery(qp, "LIMIT 100, 1")); - qp.setWhereClause("BAZ IS NOT NULL"); - assertEquals("SELECT ID FROM BAR WHERE BAZ IS NOT NULL ORDER BY ID ASC LIMIT 100, 1", - SqlPagingQueryUtils.generateLimitJumpToQuery(qp, "LIMIT 100, 1")); - } - - @Test - void testGenerateTopJumpToQuery() { - AbstractSqlPagingQueryProvider qp = new TestSqlPagingQueryProvider("FOO", "BAR", sortKeys); - assertEquals("SELECT TOP 100, 1 ID FROM BAR ORDER BY ID ASC", - SqlPagingQueryUtils.generateTopJumpToQuery(qp, "TOP 100, 1")); - qp.setWhereClause("BAZ IS NOT NULL"); - assertEquals("SELECT TOP 100, 1 ID FROM BAR WHERE BAZ IS NOT NULL ORDER BY ID ASC", - SqlPagingQueryUtils.generateTopJumpToQuery(qp, "TOP 100, 1")); - } - - @Test - void testGenerateTopJumpQueryDescending() { - sortKeys.put("ID", Order.DESCENDING); - AbstractSqlPagingQueryProvider qp = new TestSqlPagingQueryProvider("FOO", "BAR", sortKeys); - String query = SqlPagingQueryUtils.generateTopJumpToQuery(qp, "TOP 100, 1"); - assertTrue(query.contains("ID DESC"), "Wrong query: " + query); - assertEquals(0, StringUtils.countOccurrencesOf(query, "ASC"), "Wrong query: " + query); - assertEquals(1, StringUtils.countOccurrencesOf(query, "DESC"), "Wrong query: " + query); - qp.setWhereClause("BAZ IS NOT NULL"); - assertTrue(query.contains("ID DESC"), "Wrong query: " + query); - } - - @Test - void testGenerateLimitJumpQueryDescending() { - sortKeys.put("ID", Order.DESCENDING); - AbstractSqlPagingQueryProvider qp = new TestSqlPagingQueryProvider("FOO", "BAR", sortKeys); - String query = SqlPagingQueryUtils.generateLimitJumpToQuery(qp, "LIMIT 100, 1"); - assertTrue(query.contains("ID DESC"), "Wrong query: " + query); - assertEquals(0, StringUtils.countOccurrencesOf(query, "ASC"), "Wrong query: " + query); - assertEquals(1, StringUtils.countOccurrencesOf(query, "DESC"), "Wrong query: " + query); - qp.setWhereClause("BAZ IS NOT NULL"); - assertTrue(query.contains("ID DESC"), "Wrong query: " + query); - } - private static class TestSqlPagingQueryProvider extends AbstractSqlPagingQueryProvider { public TestSqlPagingQueryProvider(String select, String from, Map sortKeys) { @@ -181,11 +127,6 @@ public String generateRemainingPagesQuery(int pageSize) { return null; } - @Override - public String generateJumpToItemQuery(int itemIndex, int pageSize) { - return null; - } - } } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlServerPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlServerPagingQueryProviderTests.java index 9cec4e2e08..e94afe4b1c 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlServerPagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlServerPagingQueryProviderTests.java @@ -45,22 +45,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Test @Override void testGenerateFirstPageQueryWithGroupBy() { @@ -79,24 +63,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1 GROUP BY dep) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1 GROUP BY dep) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override String getFirstPageSqlWithMultipleSortKeys() { return "SELECT TOP 100 id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; @@ -107,14 +73,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT TOP 100 id, name, age FROM foo WHERE (bar = 1) AND ((name > ?) OR (name = ? AND id < ?)) ORDER BY name ASC, id DESC"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM ( SELECT name, id, ROW_NUMBER() OVER ( ORDER BY name ASC, id DESC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY name ASC, id DESC"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM ( SELECT name, id, ROW_NUMBER() OVER ( ORDER BY name ASC, id DESC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY name ASC, id DESC"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProviderTests.java index 34aedc3b92..bac04788f5 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlWindowingPagingQueryProviderTests.java @@ -16,10 +16,6 @@ package org.springframework.batch.item.database.support; import org.junit.jupiter.api.Test; -import org.springframework.batch.item.database.Order; - -import java.util.HashMap; -import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -49,22 +45,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Test @Override void testGenerateFirstPageQueryWithGroupBy() { @@ -83,38 +63,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1 GROUP BY dep) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1 GROUP BY dep) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - - @Test - void testGenerateJumpToItemQueryForTableQualifierReplacement() { - pagingQueryProvider.setFromClause("foo_e E, foo_i I"); - pagingQueryProvider.setWhereClause("E.id=I.id"); - - Map sortKeys = new HashMap<>(); - sortKeys.put("E.id", Order.DESCENDING); - pagingQueryProvider.setSortKeys(sortKeys); - - String sql = "SELECT TMP_SUB.id FROM ( SELECT E.id, ROW_NUMBER() OVER ( ORDER BY id DESC) AS ROW_NUMBER FROM foo_e E, foo_i I WHERE E.id=I.id) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY TMP_SUB.id DESC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override String getFirstPageSqlWithMultipleSortKeys() { return "SELECT * FROM ( SELECT *, ROW_NUMBER() OVER ( ORDER BY name ASC, id DESC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 100 ORDER BY name ASC, id DESC"; @@ -125,14 +73,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT * FROM ( SELECT *, ROW_NUMBER() OVER ( ORDER BY name ASC, id DESC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 100 AND ((name > ?) OR (name = ? AND id < ?)) ORDER BY name ASC, id DESC"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM ( SELECT name, id, ROW_NUMBER() OVER ( ORDER BY name ASC, id DESC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 100 ORDER BY name ASC, id DESC"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM ( SELECT name, id, ROW_NUMBER() OVER ( ORDER BY name ASC, id DESC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER = 1 ORDER BY name ASC, id DESC"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlitePagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlitePagingQueryProviderTests.java index 7c3825c7d5..16cf9c3148 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlitePagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlitePagingQueryProviderTests.java @@ -46,22 +46,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 99, 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id FROM foo WHERE bar = 1 ORDER BY id ASC LIMIT 0, 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override @Test void testGenerateFirstPageQueryWithGroupBy() { @@ -80,24 +64,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC LIMIT 99, 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Override - @Test - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM foo WHERE bar = 1 GROUP BY dep ORDER BY id ASC LIMIT 0, 1"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override String getFirstPageSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 100"; @@ -108,14 +74,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE (bar = 1) AND ((name > ?) OR (name = ? AND id < ?)) ORDER BY name ASC, id DESC LIMIT 100"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 99, 1"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 0, 1"; - } - } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SybasePagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SybasePagingQueryProviderTests.java index 545661c405..0ecd69deeb 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SybasePagingQueryProviderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SybasePagingQueryProviderTests.java @@ -45,22 +45,6 @@ void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQuery() { - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) WHERE ROW_NUMBER = 100 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPage() { - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) WHERE ROW_NUMBER = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Test @Override void testGenerateFirstPageQueryWithGroupBy() { @@ -79,24 +63,6 @@ void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Test - @Override - void testGenerateJumpToItemQueryWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1 GROUP BY dep) WHERE ROW_NUMBER = 100 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize); - assertEquals(sql, s); - } - - @Test - @Override - void testGenerateJumpToItemQueryForFirstPageWithGroupBy() { - pagingQueryProvider.setGroupClause("dep"); - String sql = "SELECT id FROM ( SELECT id, ROW_NUMBER() OVER ( ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1 GROUP BY dep) WHERE ROW_NUMBER = 1 ORDER BY id ASC"; - String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize); - assertEquals(sql, s); - } - @Override String getFirstPageSqlWithMultipleSortKeys() { return "SELECT TOP 100 id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; @@ -107,14 +73,4 @@ String getRemainingSqlWithMultipleSortKeys() { return "SELECT TOP 100 id, name, age FROM foo WHERE (bar = 1) AND ((name > ?) OR (name = ? AND id < ?)) ORDER BY name ASC, id DESC"; } - @Override - String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM ( SELECT name, id, ROW_NUMBER() OVER ( ORDER BY name ASC, id DESC) AS ROW_NUMBER FROM foo WHERE bar = 1) WHERE ROW_NUMBER = 100 ORDER BY name ASC, id DESC"; - } - - @Override - String getJumpToItemQueryForFirstPageWithMultipleSortKeys() { - return "SELECT name, id FROM ( SELECT name, id, ROW_NUMBER() OVER ( ORDER BY name ASC, id DESC) AS ROW_NUMBER FROM foo WHERE bar = 1) WHERE ROW_NUMBER = 1 ORDER BY name ASC, id DESC"; - } - }