BATCH-1499, BATCH-1497: add alias in SqlPagingItemReader.
This commit is contained in:
@@ -251,7 +251,7 @@
|
||||
<property key="velocimacro.library" value="src/main/sql/sqlserver.vpp" />
|
||||
</engine>
|
||||
</config>
|
||||
<fileset dir="${basedir}/src/main/sql" includes="schema.sql.vpp" />
|
||||
<fileset dir="${basedir}/src/main/sql" includes="schema*.sql.vpp" />
|
||||
<mapper type="glob" from="*.sql.vpp" to="*-sqlserver.sql" />
|
||||
</vppcopy>
|
||||
<vppcopy todir="${basedir}/target/generated-resources" overwrite="true">
|
||||
@@ -264,7 +264,7 @@
|
||||
<property key="velocimacro.library" value="src/main/sql/sybase.vpp" />
|
||||
</engine>
|
||||
</config>
|
||||
<fileset dir="${basedir}/src/main/sql" includes="schema.sql.vpp" />
|
||||
<fileset dir="${basedir}/src/main/sql" includes="schema*.sql.vpp" />
|
||||
<mapper type="glob" from="*.sql.vpp" to="*-sybase.sql" />
|
||||
</vppcopy>
|
||||
</tasks>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
-- Autogenerated: do not edit this file
|
||||
|
||||
DROP TABLE BATCH_STEP_EXECUTION_CONTEXT ;
|
||||
DROP TABLE BATCH_JOB_EXECUTION_CONTEXT ;
|
||||
DROP TABLE BATCH_STEP_EXECUTION ;
|
||||
DROP TABLE BATCH_JOB_EXECUTION ;
|
||||
DROP TABLE BATCH_JOB_PARAMS ;
|
||||
DROP TABLE BATCH_JOB_INSTANCE ;
|
||||
|
||||
DROP TABLE BATCH_STEP_EXECUTION_SEQ ;
|
||||
DROP TABLE BATCH_JOB_EXECUTION_SEQ ;
|
||||
DROP TABLE BATCH_JOB_SEQ ;
|
||||
@@ -0,0 +1,12 @@
|
||||
-- Autogenerated: do not edit this file
|
||||
|
||||
DROP TABLE BATCH_STEP_EXECUTION_CONTEXT ;
|
||||
DROP TABLE BATCH_JOB_EXECUTION_CONTEXT ;
|
||||
DROP TABLE BATCH_STEP_EXECUTION ;
|
||||
DROP TABLE BATCH_JOB_EXECUTION ;
|
||||
DROP TABLE BATCH_JOB_PARAMS ;
|
||||
DROP TABLE BATCH_JOB_INSTANCE ;
|
||||
|
||||
DROP TABLE BATCH_STEP_EXECUTION_SEQ ;
|
||||
DROP TABLE BATCH_JOB_EXECUTION_SEQ ;
|
||||
DROP TABLE BATCH_JOB_SEQ ;
|
||||
@@ -17,9 +17,10 @@
|
||||
package org.springframework.batch.item.database.support;
|
||||
|
||||
/**
|
||||
* Sql Server implementation of a {@link org.springframework.batch.item.database.PagingQueryProvider} using
|
||||
* Sql Server implementation of a
|
||||
* {@link org.springframework.batch.item.database.PagingQueryProvider} using
|
||||
* database specific features.
|
||||
*
|
||||
*
|
||||
* @author Thomas Risberg
|
||||
* @since 2.0
|
||||
*/
|
||||
@@ -35,6 +36,11 @@ public class SqlServerPagingQueryProvider extends SqlWindowingPagingQueryProvide
|
||||
return SqlPagingQueryUtils.generateTopSqlQuery(this, true, buildTopClause(pageSize));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object getSubQueryAlias() {
|
||||
return "AS TMP_SUB ";
|
||||
}
|
||||
|
||||
private String buildTopClause(int pageSize) {
|
||||
return new StringBuilder().append("TOP ").append(pageSize).toString();
|
||||
}
|
||||
|
||||
@@ -29,14 +29,14 @@ public class SqlServerPagingQueryProviderTests extends AbstractSqlPagingQueryPro
|
||||
|
||||
@Test @Override
|
||||
public void testGenerateJumpToItemQuery() {
|
||||
String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) WHERE ROW_NUMBER = 100";
|
||||
String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE ROW_NUMBER = 100";
|
||||
String s = pagingQueryProvider.generateJumpToItemQuery(145, pageSize);
|
||||
Assert.assertEquals("", sql, s);
|
||||
}
|
||||
|
||||
@Test @Override
|
||||
public void testGenerateJumpToItemQueryForFirstPage() {
|
||||
String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) WHERE ROW_NUMBER = 1";
|
||||
String sql = "SELECT SORT_KEY FROM ( SELECT id AS SORT_KEY, ROW_NUMBER() OVER (ORDER BY id ASC) AS ROW_NUMBER FROM foo WHERE bar = 1) AS TMP_SUB WHERE ROW_NUMBER = 1";
|
||||
String s = pagingQueryProvider.generateJumpToItemQuery(45, pageSize);
|
||||
Assert.assertEquals("", sql, s);
|
||||
}
|
||||
|
||||
@@ -93,6 +93,12 @@
|
||||
<version>5.1.6</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.jtds</groupId>
|
||||
<artifactId>jtds</artifactId>
|
||||
<version>1.2.4</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>hsqldb</groupId>
|
||||
<artifactId>hsqldb</artifactId>
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
# Placeholders batch.*
|
||||
# for MS SQLServer:
|
||||
batch.jdbc.driver=net.sourceforge.jtds.jdbc.Driver
|
||||
batch.jdbc.url=jdbc:jtds:sqlserver://dbhost:1433;databaseName=test
|
||||
batch.jdbc.user=spring
|
||||
batch.jdbc.password=spring
|
||||
batch.schema=
|
||||
batch.jndi.name=
|
||||
batch.naming.factory.initial=
|
||||
batch.naming.provider.url=
|
||||
batch.jdbc.url=jdbc:jtds:sqlserver://localhost:1433;instance=SQLEXPRESS
|
||||
batch.jdbc.user=sa
|
||||
batch.jdbc.password=sa
|
||||
batch.jdbc.testWhileIdle=false
|
||||
batch.jdbc.validationQuery=
|
||||
batch.drop.script=/org/springframework/batch/core/schema-drop-sqlserver.sql
|
||||
batch.schema.script=/org/springframework/batch/core/schema-sqlserver.sql
|
||||
batch.business.schema.script=business-schema-sqlserver.sql
|
||||
batch.data.source.init=true
|
||||
batch.database.incrementer.class=org.springframework.jdbc.support.incrementer.SqlServerMaxValueIncrementer
|
||||
batch.lob.handler.class=org.springframework.jdbc.support.lob.DefaultLobHandler
|
||||
|
||||
# Bean Properties for override
|
||||
# when not using sequences:
|
||||
incrementerParent.columnName=ID
|
||||
batch.database.incrementer.parent=columnIncrementerParent
|
||||
batch.grid.size=2
|
||||
batch.verify.cursor.position=true
|
||||
|
||||
@@ -12,12 +12,11 @@ DROP TABLE ERROR_LOG ;
|
||||
|
||||
-- Autogenerated: do not edit this file
|
||||
|
||||
CREATE TABLE CUSTOMER_SEQ (ID BIGINT IDENTITY);
|
||||
INSERT INTO CUSTOMER_SEQ (ID) values (5);
|
||||
CREATE TABLE BATCH_STAGING_SEQ (ID BIGINT IDENTITY);
|
||||
INSERT INTO BATCH_STAGING_SEQ (ID) values (0);
|
||||
CREATE TABLE TRADE_SEQ (ID BIGINT IDENTITY);
|
||||
INSERT INTO TRADE_SEQ (ID) values (0);
|
||||
CREATE TABLE CUSTOMER_SEQ (ID BIGINT IDENTITY);
|
||||
SET IDENTITY_INSERT CUSTOMER_SEQ ON;
|
||||
INSERT INTO CUSTOMER_SEQ (ID) values (5);
|
||||
CREATE TABLE BATCH_STAGING_SEQ (ID BIGINT IDENTITY);
|
||||
CREATE TABLE TRADE_SEQ (ID BIGINT IDENTITY);
|
||||
|
||||
CREATE TABLE BATCH_STAGING (
|
||||
ID BIGINT NOT NULL PRIMARY KEY ,
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<property name="whereClause" value="WHERE CREDIT > :credit" />
|
||||
</bean>
|
||||
</property>
|
||||
<property name="pageSize" value="10" />
|
||||
<property name="pageSize" value="2" />
|
||||
<property name="parameterValues">
|
||||
<map>
|
||||
<entry key="statusCode" value="PE" />
|
||||
|
||||
@@ -24,7 +24,7 @@ log4j.appender.chainsaw.layout=org.apache.log4j.xml.XMLLayout
|
||||
### enable spring
|
||||
#log4j.logger.org.springframework=info
|
||||
#log4j.logger.org.springframework.transaction=debug
|
||||
#log4j.logger.org.springframework.jdbc.core=debug
|
||||
log4j.logger.org.springframework.jdbc.core=debug
|
||||
#log4j.logger.org.springframework.orm=debug
|
||||
|
||||
### debug your specific package or classes with the following example
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#macro (sequence $name $value)CREATE TABLE ${name} (ID BIGINT IDENTITY);
|
||||
SET IDENTITY_INSERT ${name} ON;
|
||||
INSERT INTO ${name} (ID) values (${value});
|
||||
#end
|
||||
#macro (notnull $name $type)ALTER COLUMN ${name} ${type} NOT NULL#end
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright 2006-2007 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.batch.sample.iosample;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.batch.core.JobParametersBuilder;
|
||||
import org.springframework.batch.core.StepExecution;
|
||||
import org.springframework.batch.item.ExecutionContext;
|
||||
import org.springframework.batch.item.ItemReader;
|
||||
import org.springframework.batch.item.ItemStream;
|
||||
import org.springframework.batch.sample.domain.trade.CustomerCredit;
|
||||
import org.springframework.batch.test.MetaDataInstanceFactory;
|
||||
import org.springframework.batch.test.StepScopeTestExecutionListener;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.TestExecutionListeners;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
|
||||
|
||||
/**
|
||||
* @author Dave Syer
|
||||
* @since 2.1
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@TestExecutionListeners( { DependencyInjectionTestExecutionListener.class, StepScopeTestExecutionListener.class })
|
||||
@ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/ioSampleJob.xml",
|
||||
"/jobs/iosample/jdbcPaging.xml" })
|
||||
public class JdbcPagingRestartIntegrationTests {
|
||||
|
||||
@Autowired
|
||||
private ItemReader<CustomerCredit> reader;
|
||||
|
||||
public StepExecution getStepExecution() {
|
||||
return MetaDataInstanceFactory.createStepExecution(new JobParametersBuilder().addDouble("credit", 10000.)
|
||||
.toJobParameters());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReader() throws Exception {
|
||||
ExecutionContext executionContext = new ExecutionContext();
|
||||
executionContext.putInt("JdbcPagingItemReader.read.count", 2);
|
||||
((ItemStream)reader).open(executionContext);
|
||||
assertNotNull(reader.read());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user