Skip to content

Commit f2269eb

Browse files
committed
chore: dedup SubqueriesBase between sql and r2dbc
1 parent fc33eea commit f2269eb

5 files changed

Lines changed: 116 additions & 80 deletions

File tree

querydsl-libraries/querydsl-r2dbc/src/test/java/com/querydsl/r2dbc/KeywordQuotingBase.java

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,22 @@
1717

1818
import static org.assertj.core.api.Assertions.assertThat;
1919

20+
import com.google.common.base.Splitter;
2021
import com.querydsl.core.types.PathMetadata;
2122
import com.querydsl.core.types.PathMetadataFactory;
2223
import com.querydsl.core.types.dsl.BooleanPath;
2324
import com.querydsl.core.types.dsl.StringPath;
24-
import com.querydsl.r2dbc.ddl.CreateTableClause;
25-
import com.querydsl.r2dbc.ddl.DropTableClause;
26-
import com.querydsl.sql.ColumnMetadata;
27-
import com.querydsl.sql.RelationalPathBase;
25+
import com.querydsl.sql.ddl.CreateTableClause;
26+
import com.querydsl.sql.ddl.DropTableClause;
27+
import java.sql.SQLException;
2828
import org.junit.After;
2929
import org.junit.Before;
3030
import org.junit.Test;
3131

3232
public abstract class KeywordQuotingBase extends AbstractBaseTest {
3333

34+
private static Splitter COMMA = Splitter.on(',');
35+
3436
private static class Quoting extends RelationalPathBase<Quoting> {
3537

3638
public static final Quoting quoting = new Quoting("quoting");
@@ -43,7 +45,7 @@ private Quoting(String path) {
4345
addMetadata();
4446
}
4547

46-
public Quoting(PathMetadata metadata) {
48+
Quoting(PathMetadata metadata) {
4749
super(Quoting.class, metadata, "PUBLIC", "quoting");
4850
addMetadata();
4951
}
@@ -62,14 +64,13 @@ public void setUp() throws Exception {
6264
.column("from", String.class)
6365
.size(30)
6466
.column("all", Boolean.class)
65-
.execute()
66-
.block();
67-
execute(insert(quoting).columns(quoting.from, quoting.all).values("from", true)).block();
67+
.execute();
68+
execute(insert(quoting).columns(quoting.from, quoting.all).values("from", true));
6869
}
6970

7071
@After
7172
public void tearDown() throws Exception {
72-
new DropTableClause(connection, configuration, "quoting").execute().block();
73+
new DropTableClause(connection, configuration, "quoting").execute();
7374
}
7475

7576
@Test
@@ -84,4 +85,35 @@ public void keywords() {
8485
.block())
8586
.isEqualTo("from");
8687
}
88+
89+
@Test
90+
public void validateKeywordsCompleteness() throws SQLException {
91+
var keywords =
92+
switch (target) {
93+
case CUBRID -> Keywords.CUBRID;
94+
case DB2 -> Keywords.DB2;
95+
case DERBY -> Keywords.DERBY;
96+
case FIREBIRD -> Keywords.FIREBIRD;
97+
case H2 -> Keywords.H2;
98+
case HSQLDB -> Keywords.HSQLDB;
99+
case LUCENE -> Keywords.DEFAULT;
100+
case MEM -> Keywords.DEFAULT;
101+
case MYSQL -> Keywords.MYSQL;
102+
case ORACLE -> Keywords.ORACLE;
103+
case POSTGRESQL -> Keywords.POSTGRESQL;
104+
case SQLITE -> Keywords.SQLITE;
105+
case SQLSERVER -> Keywords.SQLSERVER2012;
106+
case TERADATA -> Keywords.DEFAULT;
107+
};
108+
109+
var driverKeyWords =
110+
COMMA
111+
.splitToStream(connection.getMetaData().getSQLKeywords())
112+
.filter(w -> !w.isBlank())
113+
.map(String::toUpperCase)
114+
.map(String::strip)
115+
.toList();
116+
117+
assertThat(keywords).containsAll(driverKeyWords);
118+
}
87119
}

querydsl-libraries/querydsl-r2dbc/src/test/java/com/querydsl/r2dbc/LikeEscapeBase.java

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,56 +16,55 @@
1616
import static com.querydsl.r2dbc.Constants.survey;
1717
import static org.assertj.core.api.Assertions.assertThat;
1818

19+
import java.sql.SQLException;
1920
import org.junit.After;
2021
import org.junit.Before;
2122
import org.junit.Test;
2223

2324
public abstract class LikeEscapeBase extends AbstractBaseTest {
2425

2526
@Before
26-
public void setUp() {
27-
delete(survey).execute().block();
28-
insert(survey)
29-
.set(survey.id, 5)
30-
.set(survey.name, "aaa")
31-
.execute()
32-
.then(insert(survey).set(survey.id, 6).set(survey.name, "a_").execute())
33-
.then(insert(survey).set(survey.id, 7).set(survey.name, "a%").execute())
34-
.block();
27+
public void setUp() throws SQLException {
28+
delete(survey).execute();
29+
var insert = insert(survey);
30+
insert.set(survey.id, 5).set(survey.name, "aaa").addBatch();
31+
insert.set(survey.id, 6).set(survey.name, "a_").addBatch();
32+
insert.set(survey.id, 7).set(survey.name, "a%").addBatch();
33+
insert.execute();
3534
}
3635

3736
@After
38-
public void tearDown() {
39-
delete(survey).execute().block();
40-
insert(survey).values(1, "Hello World", "Hello").execute().block();
37+
public void tearDown() throws SQLException {
38+
delete(survey).execute();
39+
insert(survey).values(1, "Hello World", "Hello").execute();
4140
}
4241

4342
@Test
4443
public void like() {
45-
assertThat((long) query().from(survey).where(survey.name.like("a!%")).fetchCount().block())
44+
assertThat(query().from(survey).where(survey.name.like("a!%")).fetchCount().block())
4645
.isEqualTo(0);
47-
assertThat((long) query().from(survey).where(survey.name.like("a!_")).fetchCount().block())
46+
assertThat(query().from(survey).where(survey.name.like("a!_")).fetchCount().block())
4847
.isEqualTo(0);
49-
assertThat((long) query().from(survey).where(survey.name.like("a%")).fetchCount().block())
48+
assertThat(query().from(survey).where(survey.name.like("a%")).fetchCount().block())
5049
.isEqualTo(3);
51-
assertThat((long) query().from(survey).where(survey.name.like("a_")).fetchCount().block())
50+
assertThat(query().from(survey).where(survey.name.like("a_")).fetchCount().block())
5251
.isEqualTo(2);
5352

54-
assertThat((long) query().from(survey).where(survey.name.startsWith("a_")).fetchCount().block())
53+
assertThat(query().from(survey).where(survey.name.startsWith("a_")).fetchCount().block())
5554
.isEqualTo(1);
56-
assertThat((long) query().from(survey).where(survey.name.startsWith("a%")).fetchCount().block())
55+
assertThat(query().from(survey).where(survey.name.startsWith("a%")).fetchCount().block())
5756
.isEqualTo(1);
5857
}
5958

6059
@Test
6160
public void like_with_escape() {
62-
assertThat((long) query().from(survey).where(survey.name.like("a!%", '!')).fetchCount().block())
61+
assertThat(query().from(survey).where(survey.name.like("a!%", '!')).fetchCount().block())
6362
.isEqualTo(1);
64-
assertThat((long) query().from(survey).where(survey.name.like("a!_", '!')).fetchCount().block())
63+
assertThat(query().from(survey).where(survey.name.like("a!_", '!')).fetchCount().block())
6564
.isEqualTo(1);
66-
assertThat((long) query().from(survey).where(survey.name.like("a%", '!')).fetchCount().block())
65+
assertThat(query().from(survey).where(survey.name.like("a%", '!')).fetchCount().block())
6766
.isEqualTo(3);
68-
assertThat((long) query().from(survey).where(survey.name.like("a_", '!')).fetchCount().block())
67+
assertThat(query().from(survey).where(survey.name.like("a_", '!')).fetchCount().block())
6968
.isEqualTo(2);
7069
}
7170

querydsl-libraries/querydsl-r2dbc/src/test/java/com/querydsl/r2dbc/SelectMySQLBase.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,26 @@
44
import static com.querydsl.r2dbc.Constants.survey;
55

66
import com.querydsl.core.testutil.IncludeIn;
7-
import com.querydsl.r2dbc.mysql.R2DBCMySQLQuery;
87
import org.junit.Test;
98

109
public abstract class SelectMySQLBase extends AbstractBaseTest {
1110

12-
protected R2DBCMySQLQuery<?> myR2DBCQuery() {
13-
return new R2DBCMySQLQuery<Void>(connection, configuration);
11+
protected MyR2DBCQuery<?> mysqlQuery() {
12+
return new MyR2DBCQuery<Void>(connection, configuration);
1413
}
1514

1615
@Test
1716
@IncludeIn(MYSQL)
1817
public void mysql_extensions() {
19-
myR2DBCQuery().from(survey).bigResult().select(survey.id).fetch().collectList().block();
20-
myR2DBCQuery().from(survey).bufferResult().select(survey.id).fetch().collectList().block();
21-
myR2DBCQuery().from(survey).cache().select(survey.id).fetch().collectList().block();
22-
myR2DBCQuery().from(survey).calcFoundRows().select(survey.id).fetch().collectList().block();
23-
myR2DBCQuery().from(survey).noCache().select(survey.id).fetch().collectList().block();
18+
mysqlQuery().from(survey).bigResult().select(survey.id).fetch().collectList().block();
19+
mysqlQuery().from(survey).bufferResult().select(survey.id).fetch().collectList().block();
20+
mysqlQuery().from(survey).cache().select(survey.id).fetch().collectList().block();
21+
mysqlQuery().from(survey).calcFoundRows().select(survey.id).fetch().collectList().block();
22+
mysqlQuery().from(survey).noCache().select(survey.id).fetch().collectList().block();
2423

25-
myR2DBCQuery().from(survey).highPriority().select(survey.id).fetch().collectList().block();
26-
myR2DBCQuery().from(survey).lockInShareMode().select(survey.id).fetch().collectList().block();
27-
myR2DBCQuery().from(survey).smallResult().select(survey.id).fetch().collectList().block();
28-
myR2DBCQuery().from(survey).straightJoin().select(survey.id).fetch().collectList().block();
24+
mysqlQuery().from(survey).highPriority().select(survey.id).fetch().collectList().block();
25+
mysqlQuery().from(survey).lockInShareMode().select(survey.id).fetch().collectList().block();
26+
mysqlQuery().from(survey).smallResult().select(survey.id).fetch().collectList().block();
27+
mysqlQuery().from(survey).straightJoin().select(survey.id).fetch().collectList().block();
2928
}
3029
}

querydsl-libraries/querydsl-r2dbc/src/test/java/com/querydsl/r2dbc/SubqueriesBase.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@
2727
import com.querydsl.r2dbc.domain.Employee;
2828
import com.querydsl.r2dbc.domain.QEmployee;
2929
import com.querydsl.sql.ForeignKey;
30+
import com.querydsl.sql.SQLExpressions;
31+
import com.querydsl.sql.SQLQuery;
3032
import java.math.BigDecimal;
33+
import java.sql.SQLException;
3134
import java.util.Arrays;
3235
import org.junit.Test;
3336

@@ -75,7 +78,7 @@ public void list_in_query() {
7578
@Test
7679
@SkipForQuoted
7780
@ExcludeIn(DB2) // ID is reserved IN DB2
78-
public void subQueries() {
81+
public void subQueries() throws SQLException {
7982
// subquery in where block
8083
expectedQuery =
8184
"""
@@ -156,11 +159,11 @@ public void subQuery_leftJoin() {
156159
@ExcludeIn({MYSQL, POSTGRESQL, DERBY, SQLSERVER, TERADATA})
157160
public void subQuery_params() {
158161
var aParam = new Param<String>(String.class, "param");
159-
R2DBCQuery<?> subQuery =
160-
R2DBCExpressions.select(Wildcard.all).from(employee).where(employee.firstname.eq(aParam));
162+
SQLQuery<?> subQuery =
163+
SQLExpressions.select(Wildcard.all).from(employee).where(employee.firstname.eq(aParam));
161164
subQuery.set(aParam, "Mike");
162165

163-
assertThat((long) query().from(subQuery).fetchCount().block()).isEqualTo(1);
166+
assertThat(query().from(subQuery).fetchCount().block()).isEqualTo(1);
164167
}
165168

166169
@Test
@@ -238,7 +241,7 @@ public void scalarSubQueryInClause() {
238241
this.query()
239242
.from(employee)
240243
.where(
241-
R2DBCExpressions.select(employee.firstname)
244+
SQLExpressions.select(employee.firstname)
242245
.from(employee)
243246
.orderBy(employee.salary.asc())
244247
.limit(1)
@@ -265,7 +268,7 @@ public void scalarSubQueryInClause2() {
265268
this.query()
266269
.from(employee)
267270
.where(
268-
R2DBCExpressions.select(employee.firstname)
271+
SQLExpressions.select(employee.firstname)
269272
.from(employee)
270273
.orderBy(employee.salary.asc())
271274
.limit(1)

0 commit comments

Comments
 (0)