Skip to content

Commit 60bdadb

Browse files
committed
Add test for MariaDB, Postgres, Sqlite, MySQL
Signed-off-by: KyeongHoon Lee <[email protected]>
1 parent 888cc86 commit 60bdadb

File tree

4 files changed

+64
-4
lines changed

4 files changed

+64
-4
lines changed

spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MariaDBPagingQueryProviderTests.java

+18
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.springframework.batch.item.database.support;
1717

1818
import java.util.HashMap;
19+
import java.util.LinkedHashMap;
1920
import java.util.Map;
2021

2122
import org.junit.jupiter.api.Test;
@@ -26,6 +27,7 @@
2627

2728
/**
2829
* @author Mahmoud Ben Hassine
30+
* @author Kyeonghoon Lee
2931
*/
3032
class MariaDBPagingQueryProviderTests extends AbstractSqlPagingQueryProviderTests {
3133

@@ -67,6 +69,22 @@ void testGenerateRemainingPagesQueryWithGroupBy() {
6769
assertEquals(sql, s);
6870
}
6971

72+
@Test
73+
void testGenerateRemainingPagesQueryWithGroupByWithAlias() {
74+
pagingQueryProvider.setSelectClause("SELECT f.id, f.name, f.age");
75+
pagingQueryProvider.setFromClause("FROM foo f");
76+
pagingQueryProvider.setWhereClause("f.bar = 1");
77+
pagingQueryProvider.setGroupClause("f.id, f.dep");
78+
Map<String, Order> sortKeys = new LinkedHashMap<>();
79+
sortKeys.put("f.id", Order.ASCENDING);
80+
pagingQueryProvider.setSortKeys(sortKeys);
81+
82+
String sql = "SELECT * FROM (SELECT f.id, f.name, f.age FROM foo f WHERE f.bar = 1 GROUP BY f.id, f.dep) AS MAIN_QRY WHERE ((id > ?)) ORDER BY id ASC LIMIT "
83+
+ pageSize;
84+
String s = pagingQueryProvider.generateRemainingPagesQuery(pageSize);
85+
assertEquals(sql, s);
86+
}
87+
7088
@Test
7189
void testFirstPageSqlWithAliases() {
7290
Map<String, Order> sorts = new HashMap<>();

spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/MySqlPagingQueryProviderTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,12 @@ void testGenerateRemainingPagesQueryWithGroupByWithAlias() {
7575
pagingQueryProvider.setSelectClause("SELECT f.id, f.name, f.age");
7676
pagingQueryProvider.setFromClause("FROM foo f");
7777
pagingQueryProvider.setWhereClause("f.bar = 1");
78-
pagingQueryProvider.setGroupClause("dep");
78+
pagingQueryProvider.setGroupClause("f.id, f.dep");
7979
Map<String, Order> sortKeys = new LinkedHashMap<>();
8080
sortKeys.put("f.id", Order.ASCENDING);
8181
pagingQueryProvider.setSortKeys(sortKeys);
8282

83-
String sql = "SELECT * FROM (SELECT f.id, f.name, f.age FROM foo f WHERE f.bar = 1 GROUP BY dep) AS MAIN_QRY WHERE ((id > ?)) ORDER BY id ASC LIMIT "
83+
String sql = "SELECT * FROM (SELECT f.id, f.name, f.age FROM foo f WHERE f.bar = 1 GROUP BY f.id, f.dep) AS MAIN_QRY WHERE ((id > ?)) ORDER BY id ASC LIMIT "
8484
+ pageSize;
8585
String s = pagingQueryProvider.generateRemainingPagesQuery(pageSize);
8686
assertEquals(sql, s);

spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/PostgresPagingQueryProviderTests.java

+22-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2022 the original author or authors.
2+
* Copyright 2012-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -18,10 +18,15 @@
1818
import static org.junit.jupiter.api.Assertions.assertEquals;
1919

2020
import org.junit.jupiter.api.Test;
21+
import org.springframework.batch.item.database.Order;
22+
23+
import java.util.LinkedHashMap;
24+
import java.util.Map;
2125

2226
/**
2327
* @author Thomas Risberg
2428
* @author Michael Minella
29+
* @author Kyeonghoon Lee
2530
*/
2631
class PostgresPagingQueryProviderTests extends AbstractSqlPagingQueryProviderTests {
2732

@@ -63,6 +68,22 @@ void testGenerateRemainingPagesQueryWithGroupBy() {
6368
assertEquals(sql, s);
6469
}
6570

71+
@Test
72+
void testGenerateRemainingPagesQueryWithGroupByWithAlias() {
73+
pagingQueryProvider.setSelectClause("SELECT f.id, f.name, f.age");
74+
pagingQueryProvider.setFromClause("FROM foo f");
75+
pagingQueryProvider.setWhereClause("f.bar = 1");
76+
pagingQueryProvider.setGroupClause("f.id, f.dep");
77+
Map<String, Order> sortKeys = new LinkedHashMap<>();
78+
sortKeys.put("f.id", Order.ASCENDING);
79+
pagingQueryProvider.setSortKeys(sortKeys);
80+
81+
String sql = "SELECT * FROM (SELECT f.id, f.name, f.age FROM foo f WHERE f.bar = 1 GROUP BY f.id, f.dep) AS MAIN_QRY WHERE ((id > ?)) ORDER BY id ASC LIMIT "
82+
+ pageSize;
83+
String s = pagingQueryProvider.generateRemainingPagesQuery(pageSize);
84+
assertEquals(sql, s);
85+
}
86+
6687
@Override
6788
String getFirstPageSqlWithMultipleSortKeys() {
6889
return "SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 100";

spring-batch-infrastructure/src/test/java/org/springframework/batch/item/database/support/SqlitePagingQueryProviderTests.java

+22-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2014-2022 the original author or authors.
2+
* Copyright 2014-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -18,11 +18,16 @@
1818
import static org.junit.jupiter.api.Assertions.assertEquals;
1919

2020
import org.junit.jupiter.api.Test;
21+
import org.springframework.batch.item.database.Order;
22+
23+
import java.util.LinkedHashMap;
24+
import java.util.Map;
2125

2226
/**
2327
* @author Thomas Risberg
2428
* @author Michael Minella
2529
* @author Luke Taylor
30+
* @author Kyeonghoon Lee
2631
*/
2732
class SqlitePagingQueryProviderTests extends AbstractSqlPagingQueryProviderTests {
2833

@@ -64,6 +69,22 @@ void testGenerateRemainingPagesQueryWithGroupBy() {
6469
assertEquals(sql, s);
6570
}
6671

72+
@Test
73+
void testGenerateRemainingPagesQueryWithGroupByWithAlias() {
74+
pagingQueryProvider.setSelectClause("SELECT f.id, f.name, f.age");
75+
pagingQueryProvider.setFromClause("FROM foo f");
76+
pagingQueryProvider.setWhereClause("f.bar = 1");
77+
pagingQueryProvider.setGroupClause("dep");
78+
Map<String, Order> sortKeys = new LinkedHashMap<>();
79+
sortKeys.put("f.id", Order.ASCENDING);
80+
pagingQueryProvider.setSortKeys(sortKeys);
81+
82+
String sql = "SELECT * FROM (SELECT f.id, f.name, f.age FROM foo f WHERE f.bar = 1 GROUP BY dep) AS MAIN_QRY WHERE ((id > ?)) ORDER BY id ASC LIMIT "
83+
+ pageSize;
84+
String s = pagingQueryProvider.generateRemainingPagesQuery(pageSize);
85+
assertEquals(sql, s);
86+
}
87+
6788
@Override
6889
String getFirstPageSqlWithMultipleSortKeys() {
6990
return "SELECT id, name, age FROM foo WHERE bar = 1 ORDER BY name ASC, id DESC LIMIT 100";

0 commit comments

Comments
 (0)