diff --git a/spring-batch-infrastructure-tests/src/test/java/org/springframework/batch/item/database/JdbcPagingQueryIntegrationTests.java b/spring-batch-infrastructure-tests/src/test/java/org/springframework/batch/item/database/JdbcPagingQueryIntegrationTests.java index fc158cd365..d613a48dc0 100644 --- a/spring-batch-infrastructure-tests/src/test/java/org/springframework/batch/item/database/JdbcPagingQueryIntegrationTests.java +++ b/spring-batch-infrastructure-tests/src/test/java/org/springframework/batch/item/database/JdbcPagingQueryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2012 the original author or authors. + * Copyright 2006-2016 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. @@ -33,7 +33,6 @@ import org.apache.commons.logging.LogFactory; import org.junit.After; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.batch.item.database.support.AbstractSqlPagingQueryProvider; @@ -169,27 +168,6 @@ private Map getStartAfterValues( return startAfterValues; } - @Test - @Ignore - public 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()); - expected = "[{id=" + (minId + pageSize); - } - protected PagingQueryProvider getPagingQueryProvider() throws Exception { SqlPagingQueryProviderFactoryBean factory = new SqlPagingQueryProviderFactoryBean(); 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 805e6af67a..dd4bf0d4ff 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-2013 the original author or authors. + * Copyright 2006-2016 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. @@ -262,26 +262,6 @@ public void open(ExecutionContext 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) { 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 91861c1eff..bafd746c80 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-2016 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,18 +53,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 d71d6e0305..2f154b9594 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-2012 the original author or authors. + * Copyright 2006-2016 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. @@ -226,17 +226,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(); String keyWordString = keyWord + " "; 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 712028cb60..a68d1e1118 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 @@ -1,5 +1,5 @@ /* - * Copyright 2006-2008 the original author or authors. + * Copyright 2006-2016 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. @@ -38,14 +38,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/HsqlPagingQueryProvider.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/support/HsqlPagingQueryProvider.java index 198651b21c..c96752e4b6 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-2016 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. @@ -46,14 +46,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 5714e3df40..8de033ab3d 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-2012 the original author or authors. + * Copyright 2006-2016 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. @@ -47,14 +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 ").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 4217e7f771..21f3800601 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-2016 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 @@ -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 326b897e02..9a9be3ddd7 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-2012 the original author or authors. + * Copyright 2006-2016 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,5 @@ public String generateRemainingPagesQuery(int pageSize) { 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 651a184354..dd2504b87b 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-2015 the original author or authors. + * Copyright 2006-2016 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. @@ -179,66 +179,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. * 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 e884c456fe..831d94a380 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-2016 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; /** @@ -92,60 +88,7 @@ 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 e7a7aff25c..3c63ddf4ae 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 the original author or authors. + * Copyright 2014-2016 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. @@ -47,19 +47,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 240e9c9e30..11db1f0749 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012 the original author or authors. + * Copyright 2012-2016 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. @@ -21,7 +21,6 @@ import java.util.LinkedHashMap; import java.util.Map; -import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.batch.item.database.support.HsqlPagingQueryProvider; @@ -29,7 +28,6 @@ import org.springframework.jdbc.core.RowMapper; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.util.ReflectionTestUtils; /** * @author Dave Syer @@ -40,21 +38,10 @@ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "/org/springframework/batch/item/database/JdbcPagingItemReaderParameterTests-context.xml") public 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"); @@ -84,17 +71,7 @@ public Foo mapRow(ResultSet rs, int i) throws SQLException { return reader; } - - @Test - public 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 601c3c3e4f..1ed40cd57e 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012 the original author or authors. + * Copyright 2012-2016 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. @@ -21,7 +21,6 @@ import java.util.LinkedHashMap; import java.util.Map; -import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.batch.item.database.support.HsqlPagingQueryProvider; @@ -29,7 +28,6 @@ import org.springframework.jdbc.core.RowMapper; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.util.ReflectionTestUtils; /** * @author Dave Syer @@ -40,20 +38,10 @@ @ContextConfiguration(locations = "/org/springframework/batch/item/database/JdbcPagingItemReaderParameterTests-context.xml") public 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"); @@ -84,16 +72,6 @@ public Foo mapRow(ResultSet rs, int i) throws SQLException { } - @Test - public 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/support/AbstractSqlPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/AbstractSqlPagingQueryProviderTests.java index a82e5354b8..165a846cd7 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 @@ -1,5 +1,5 @@ /* - * Copyright 2006-2012 the original author or authors. + * Copyright 2006-2016 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. @@ -84,55 +84,20 @@ public void testGenerateRemainingPagesQueryWithMultipleSortKeys() { assertEquals(getRemainingSqlWithMultipleSortKeys(), s); } - @Test - public 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 - public 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 public abstract void testGenerateFirstPageQuery(); @Test public abstract void testGenerateRemainingPagesQuery(); - @Test - public abstract void testGenerateJumpToItemQuery(); - - @Test - public abstract void testGenerateJumpToItemQueryForFirstPage(); - @Test public abstract void testGenerateFirstPageQueryWithGroupBy(); @Test public abstract void testGenerateRemainingPagesQueryWithGroupBy(); - @Test - public abstract void testGenerateJumpToItemQueryWithGroupBy(); - - @Test - public abstract void testGenerateJumpToItemQueryForFirstPageWithGroupBy(); - public abstract String getFirstPageSqlWithMultipleSortKeys(); public abstract String getRemainingSqlWithMultipleSortKeys(); - public abstract String getJumpToItemQueryWithMultipleSortKeys(); - - public 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 237b2ace44..08aa740fb2 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015 the original author or authors. + * Copyright 2012-2016 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. @@ -45,22 +45,6 @@ public void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - public 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 - public 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 public void testGenerateFirstPageQueryWithGroupBy() { @@ -79,24 +63,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Test - @Override - public 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 - public 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 public String getFirstPageSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC FETCH FIRST 100 ROWS ONLY"; @@ -107,13 +73,4 @@ public 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 - public 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 - public 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 4536f80134..2b524ffbca 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 @@ -1,5 +1,5 @@ /* - * Copyright 2006-2012 the original author or authors. + * Copyright 2006-2016 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. @@ -97,22 +97,6 @@ public void testGenerateRemainingPagesQuery() { Assert.assertEquals(sql, s); } - @Test - @Override - public 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); - Assert.assertEquals(sql, s); - } - - @Test - @Override - public 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); - Assert.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. */ @@ -152,24 +136,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - public 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 - public 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 public 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"; @@ -180,13 +146,4 @@ public 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 - public 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 - public 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/H2PagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/H2PagingQueryProviderTests.java index 223893ae72..03ffe97f9d 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 @@ -1,5 +1,5 @@ /* - * Copyright 2006-2015 the original author or authors. + * Copyright 2006-2016 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. @@ -45,20 +45,6 @@ public void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test @Override - public 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 - public 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 public void testGenerateFirstPageQueryWithGroupBy() { @@ -77,24 +63,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - public 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 - public 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 public String getFirstPageSqlWithMultipleSortKeys() { return "SELECT TOP 100 id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; @@ -105,13 +73,4 @@ public 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 - public String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT LIMIT 99 1 name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; - } - - @Override - public 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/HsqlPagingQueryProviderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/HsqlPagingQueryProviderTests.java index 598933571f..8deaabebd7 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 @@ -1,5 +1,5 @@ /* - * Copyright 2006-2015 the original author or authors. + * Copyright 2006-2016 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. @@ -44,20 +44,6 @@ public void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test @Override - public 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 - public 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 public void testGenerateFirstPageQueryWithGroupBy() { @@ -76,24 +62,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - public 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 - public 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 public String getFirstPageSqlWithMultipleSortKeys() { return "SELECT TOP 100 id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; @@ -104,13 +72,4 @@ public 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 - public String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT LIMIT 99 1 name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; - } - - @Override - public 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 6897fbd0fc..86fc0af7e0 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 @@ -1,5 +1,5 @@ /* - * Copyright 2006-2015 the original author or authors. + * Copyright 2006-2016 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,20 +48,6 @@ public void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test @Override - public 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 - public 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 public void testGenerateFirstPageQueryWithGroupBy() { @@ -80,24 +66,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - public 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 - public 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 public void testFirstPageSqlWithAliases() { this.pagingQueryProvider = new MySqlPagingQueryProvider(); @@ -108,11 +76,9 @@ public void testFirstPageSqlWithAliases() { }}); 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); } @@ -126,13 +92,4 @@ public 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 - public String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 99, 1"; - } - - @Override - public 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 4ee1a012e9..7caa057a67 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012 the original author or authors. + * Copyright 2012-2016 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,20 +48,6 @@ public void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test @Override - public 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 - public 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 public void testGenerateFirstPageQueryWithGroupBy() { @@ -80,23 +66,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - public 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 - public 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 public String getFirstPageSqlWithMultipleSortKeys() { @@ -108,13 +77,4 @@ public 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 - public 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 - public 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 1ef017be3f..af9ffb0df6 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015 the original author or authors. + * Copyright 2012-2016 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. @@ -44,20 +44,6 @@ public void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test @Override - public 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("Wrong SQL for jump to", sql, s); - } - - @Test @Override - public 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("Wrong SQL for first page", sql, s); - } - @Override @Test public void testGenerateFirstPageQueryWithGroupBy() { @@ -76,24 +62,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - public 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 - public 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 public String getFirstPageSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 100"; @@ -104,13 +72,4 @@ public 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 - public String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 1 OFFSET 99"; - } - - @Override - public 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 cfe793b77e..cbe40c6d05 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 @@ -1,5 +1,5 @@ /* - * Copyright 2006-2015 the original author or authors. + * Copyright 2006-2016 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. @@ -17,7 +17,6 @@ package org.springframework.batch.item.database.support; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import java.util.LinkedHashMap; import java.util.Map; @@ -25,7 +24,6 @@ import org.junit.Before; import org.junit.Test; import org.springframework.batch.item.database.Order; -import org.springframework.util.StringUtils; /** * @author Thomas Risberg @@ -89,14 +87,6 @@ public void testGenerateRowNumSqlQuery() { SqlPagingQueryUtils.generateRowNumSqlQuery(qp, true, "ROWNUMBER <= 100")); } - @Test - public 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 public void testGenerateTopSqlQueryDescending() { sortKeys.put("ID", Order.DESCENDING); @@ -131,50 +121,6 @@ public void testGenerateRowNumSqlQueryDescending() { SqlPagingQueryUtils.generateRowNumSqlQuery(qp, true, "ROWNUMBER <= 100")); } - @Test - public 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 - public 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 - public void testGenerateTopJumpQueryDescending() { - sortKeys.put("ID", Order.DESCENDING); - AbstractSqlPagingQueryProvider qp = new TestSqlPagingQueryProvider("FOO", "BAR", sortKeys); - String query = SqlPagingQueryUtils.generateTopJumpToQuery(qp, "TOP 100, 1"); - assertTrue("Wrong query: " + query, query.contains("ID DESC")); - assertEquals("Wrong query: " + query, 0, StringUtils.countOccurrencesOf(query, "ASC")); - assertEquals("Wrong query: " + query, 1, StringUtils.countOccurrencesOf(query, "DESC")); - qp.setWhereClause("BAZ IS NOT NULL"); - assertTrue("Wrong query: " + query, query.contains("ID DESC")); - } - - @Test - public void testGenerateLimitJumpQueryDescending() { - sortKeys.put("ID", Order.DESCENDING); - AbstractSqlPagingQueryProvider qp = new TestSqlPagingQueryProvider("FOO", "BAR", sortKeys); - String query = SqlPagingQueryUtils.generateLimitJumpToQuery(qp, "LIMIT 100, 1"); - assertTrue("Wrong query: " + query, query.contains("ID DESC")); - assertEquals("Wrong query: " + query, 0, StringUtils.countOccurrencesOf(query, "ASC")); - assertEquals("Wrong query: " + query, 1, StringUtils.countOccurrencesOf(query, "DESC")); - qp.setWhereClause("BAZ IS NOT NULL"); - assertTrue("Wrong query: " + query, query.contains("ID DESC")); - } - private static class TestSqlPagingQueryProvider extends AbstractSqlPagingQueryProvider { public TestSqlPagingQueryProvider(String select, String from, Map sortKeys) { @@ -193,11 +139,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 f2f21e849e..4c46f0d009 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015 the original author or authors. + * Copyright 2012-2016 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. @@ -45,22 +45,6 @@ public void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test - @Override - public 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 - public 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 public void testGenerateFirstPageQueryWithGroupBy() { @@ -79,24 +63,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Test - @Override - public 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 - public 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 public String getFirstPageSqlWithMultipleSortKeys() { return "SELECT TOP 100 id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; @@ -107,13 +73,4 @@ public 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 - public 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 - public 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 e5ee28678f..d66e0671fa 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 @@ -1,5 +1,5 @@ /* - * Copyright 2006-2012 the original author or authors. + * Copyright 2006-2016 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. @@ -15,12 +15,7 @@ */ package org.springframework.batch.item.database.support; -import org.junit.Assert; import org.junit.Test; -import org.springframework.batch.item.database.Order; - -import java.util.HashMap; -import java.util.Map; import static org.junit.Assert.assertEquals; @@ -50,22 +45,6 @@ public void testGenerateRemainingPagesQuery() { assertEquals("", sql, s); } - @Test - @Override - public 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 - public 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); - Assert.assertEquals("", sql, s); - } - @Test @Override public void testGenerateFirstPageQueryWithGroupBy() { @@ -84,38 +63,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Test - @Override - public 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 - public 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 - public 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 public 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"; @@ -126,13 +73,4 @@ public 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 - public 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 - public 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 c4fe6967f8..f571389709 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 @@ -1,5 +1,5 @@ /* - * Copyright 2014-2015 the original author or authors. + * Copyright 2014-2016 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. @@ -45,20 +45,6 @@ public void testGenerateRemainingPagesQuery() { assertEquals(sql, s); } - @Test @Override - public 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 - public 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 public void testGenerateFirstPageQueryWithGroupBy() { @@ -77,24 +63,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Override - @Test - public 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 - public 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 public String getFirstPageSqlWithMultipleSortKeys() { return "SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 100"; @@ -105,13 +73,4 @@ public 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 - public String getJumpToItemQueryWithMultipleSortKeys() { - return "SELECT name, id FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 99, 1"; - } - - @Override - public 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 5ad5b8ac04..f9fa5177eb 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015 the original author or authors. + * Copyright 2012-2016 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. @@ -45,22 +45,6 @@ public void testGenerateRemainingPagesQuery() { assertEquals("", sql, s); } - @Test - @Override - public 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 - public 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 public void testGenerateFirstPageQueryWithGroupBy() { @@ -79,24 +63,6 @@ public void testGenerateRemainingPagesQueryWithGroupBy() { assertEquals(sql, s); } - @Test - @Override - public 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 - public 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 public String getFirstPageSqlWithMultipleSortKeys() { return "SELECT TOP 100 id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC"; @@ -107,13 +73,4 @@ public 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 - public 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 - public 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"; - } }