diff --git a/pom.xml b/pom.xml
index eaee823fa0..83e9e0993e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
org.springframework.data
spring-data-relational-parent
- 4.0.0-SNAPSHOT
+ 4.0.0-1993-force-quoting-SNAPSHOT
pom
Spring Data Relational Parent
diff --git a/spring-data-jdbc-distribution/pom.xml b/spring-data-jdbc-distribution/pom.xml
index b3c39e64c3..c0cf7c24a7 100644
--- a/spring-data-jdbc-distribution/pom.xml
+++ b/spring-data-jdbc-distribution/pom.xml
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-relational-parent
- 4.0.0-SNAPSHOT
+ 4.0.0-1993-force-quoting-SNAPSHOT
../pom.xml
diff --git a/spring-data-jdbc/pom.xml b/spring-data-jdbc/pom.xml
index e61fd64020..753b0846d2 100644
--- a/spring-data-jdbc/pom.xml
+++ b/spring-data-jdbc/pom.xml
@@ -6,7 +6,7 @@
4.0.0
spring-data-jdbc
- 4.0.0-SNAPSHOT
+ 4.0.0-1993-force-quoting-SNAPSHOT
Spring Data JDBC
Spring Data module for JDBC repositories.
@@ -15,7 +15,7 @@
org.springframework.data
spring-data-relational-parent
- 4.0.0-SNAPSHOT
+ 4.0.0-1993-force-quoting-SNAPSHOT
diff --git a/spring-data-r2dbc/pom.xml b/spring-data-r2dbc/pom.xml
index 3ee76fd3c1..f228bc9bcb 100644
--- a/spring-data-r2dbc/pom.xml
+++ b/spring-data-r2dbc/pom.xml
@@ -6,7 +6,7 @@
4.0.0
spring-data-r2dbc
- 4.0.0-SNAPSHOT
+ 4.0.0-1993-force-quoting-SNAPSHOT
Spring Data R2DBC
Spring Data module for R2DBC
@@ -15,7 +15,7 @@
org.springframework.data
spring-data-relational-parent
- 4.0.0-SNAPSHOT
+ 4.0.0-1993-force-quoting-SNAPSHOT
diff --git a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/mapping/R2dbcMappingContext.java b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/mapping/R2dbcMappingContext.java
index 5053291be6..76357d90e7 100644
--- a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/mapping/R2dbcMappingContext.java
+++ b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/mapping/R2dbcMappingContext.java
@@ -25,6 +25,7 @@
* R2DBC-specific extension to {@link RelationalMappingContext}.
*
* @author Mark Paluch
+ * @author Jens Schauder
*/
public class R2dbcMappingContext extends RelationalMappingContext {
@@ -32,7 +33,7 @@ public class R2dbcMappingContext extends RelationalMappingContext {
* Create a new {@link R2dbcMappingContext}.
*/
public R2dbcMappingContext() {
- setForceQuote(false);
+ setForceQuote(true);
}
/**
@@ -41,8 +42,10 @@ public R2dbcMappingContext() {
* @param namingStrategy must not be {@literal null}.
*/
public R2dbcMappingContext(NamingStrategy namingStrategy) {
+
super(namingStrategy);
- setForceQuote(false);
+
+ setForceQuote(true);
}
@Override
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/config/H2IntegrationTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/config/H2IntegrationTests.java
index bef0c43925..0f87756ae3 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/config/H2IntegrationTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/config/H2IntegrationTests.java
@@ -42,6 +42,7 @@
* Integration test for {@link DatabaseClient} and repositories using H2.
*
* @author Mark Paluch
+ * @author Jens Schauder
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration
@@ -56,7 +57,7 @@ class H2IntegrationTests {
void before() {
try {
- jdbc.execute("DROP TABLE legoset");
+ jdbc.execute("DROP TABLE \"legoset\"");
} catch (DataAccessException e) {}
jdbc.execute(H2TestSupport.CREATE_TABLE_LEGOSET);
}
@@ -64,9 +65,9 @@ void before() {
@Test // gh-109
void shouldSelectCountWithDatabaseClient() {
- jdbc.execute("INSERT INTO legoset (id, name, manual) VALUES(42055, 'SCHAUFELRADBAGGER', 12)");
+ jdbc.execute("INSERT INTO \"legoset\" (id, name, manual) VALUES(42055, 'SCHAUFELRADBAGGER', 12)");
- databaseClient.sql("SELECT COUNT(*) FROM legoset") //
+ databaseClient.sql("SELECT COUNT(*) FROM \"legoset\"") //
.map(it -> it.get(0, Long.class)) //
.all() //
.as(StepVerifier::create) //
@@ -77,7 +78,7 @@ void shouldSelectCountWithDatabaseClient() {
@Test // gh-109
void shouldSelectCountWithRepository() {
- jdbc.execute("INSERT INTO legoset (id, name, manual) VALUES(42055, 'SCHAUFELRADBAGGER', 12)");
+ jdbc.execute("INSERT INTO \"legoset\" (id, name, manual) VALUES(42055, 'SCHAUFELRADBAGGER', 12)");
repository.selectCount() //
.as(StepVerifier::create) //
@@ -99,7 +100,7 @@ public ConnectionFactory connectionFactory() {
interface H2Repository extends ReactiveCrudRepository {
- @Query("SELECT COUNT(*) FROM legoset")
+ @Query("SELECT COUNT(*) FROM \"legoset\"")
Mono selectCount();
}
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/MappingR2dbcConverterUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/MappingR2dbcConverterUnitTests.java
index 1dc70a1f48..a749f5ada7 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/MappingR2dbcConverterUnitTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/MappingR2dbcConverterUnitTests.java
@@ -15,11 +15,21 @@
*/
package org.springframework.data.r2dbc.convert;
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
import io.r2dbc.spi.R2dbcType;
import io.r2dbc.spi.Row;
import io.r2dbc.spi.test.MockColumnMetadata;
import io.r2dbc.spi.test.MockRow;
import io.r2dbc.spi.test.MockRowMetadata;
+
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Map;
+
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
@@ -37,19 +47,11 @@
import org.springframework.data.relational.core.sql.SqlIdentifier;
import org.springframework.r2dbc.core.Parameter;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Map;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.Mockito.*;
-
/**
* Unit tests for {@link MappingR2dbcConverter}.
*
* @author Mark Paluch
+ * @author Jens Schauder
*/
public class MappingR2dbcConverterUnitTests {
@@ -78,11 +80,11 @@ void shouldIncludeAllPropertiesInOutboundRow() {
LocalDateTime localDateTime = LocalDateTime.now();
converter.write(new Person("id", "Walter", "White", instant, localDateTime), row);
- assertThat(row).containsEntry(SqlIdentifier.unquoted("id"), Parameter.fromOrEmpty("id", String.class));
- assertThat(row).containsEntry(SqlIdentifier.unquoted("firstname"), Parameter.fromOrEmpty("Walter", String.class));
- assertThat(row).containsEntry(SqlIdentifier.unquoted("lastname"), Parameter.fromOrEmpty("White", String.class));
- assertThat(row).containsEntry(SqlIdentifier.unquoted("instant"), Parameter.from(instant));
- assertThat(row).containsEntry(SqlIdentifier.unquoted("local_date_time"), Parameter.from(localDateTime));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("ID"), Parameter.fromOrEmpty("id", String.class));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("FIRSTNAME"), Parameter.fromOrEmpty("Walter", String.class));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("LASTNAME"), Parameter.fromOrEmpty("White", String.class));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("INSTANT"), Parameter.from(instant));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("LOCAL_DATE_TIME"), Parameter.from(localDateTime));
}
@Test // gh-41
@@ -122,7 +124,7 @@ void shouldConvertMapToString() {
OutboundRow row = new OutboundRow();
converter.write(withMap, row);
- assertThat(row).containsEntry(SqlIdentifier.unquoted("nested"), Parameter.from("map"));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("NESTED"), Parameter.from("map"));
}
@Test // gh-59
@@ -143,7 +145,7 @@ void shouldConvertEnum() {
OutboundRow row = new OutboundRow();
converter.write(withMap, row);
- assertThat(row).containsEntry(SqlIdentifier.unquoted("condition"), Parameter.from("Mint"));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("CONDITION"), Parameter.from("Mint"));
}
@Test // gh-59
@@ -153,7 +155,7 @@ void shouldConvertNullEnum() {
OutboundRow row = new OutboundRow();
converter.write(withMap, row);
- assertThat(row).containsEntry(SqlIdentifier.unquoted("condition"), Parameter.fromOrEmpty(null, String.class));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("CONDITION"), Parameter.fromOrEmpty(null, String.class));
}
@Test // gh-59
@@ -215,7 +217,7 @@ void writeShouldWritePrimitiveIdIfValueIsNonZero() {
OutboundRow row = new OutboundRow();
converter.write(new WithPrimitiveId(1), row);
- assertThat(row).containsEntry(SqlIdentifier.unquoted("id"), Parameter.fromOrEmpty(1L, Long.TYPE));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("ID"), Parameter.fromOrEmpty(1L, Long.TYPE));
}
@Test // gh-59
@@ -257,12 +259,11 @@ void writeShouldObtainIdFromIdentifierAccessor() {
OutboundRow row = new OutboundRow();
converter.write(entity, row);
- assertThat(row).containsEntry(SqlIdentifier.unquoted("id"), Parameter.from(42L));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("ID"), Parameter.from(42L));
}
static class Person {
- @Id
- String id;
+ @Id String id;
String firstname, lastname;
Instant instant;
LocalDateTime localDateTime;
@@ -298,8 +299,7 @@ public void setLastname(String lastname) {
}
static class WithEnum {
- @Id
- String id;
+ @Id String id;
Condition condition;
public WithEnum(String id, Condition condition) {
@@ -313,8 +313,7 @@ enum Condition {
}
static class PersonWithConversions {
- @Id
- String id;
+ @Id String id;
Map nested;
NonMappableEntity unsupported;
@@ -325,8 +324,7 @@ public PersonWithConversions(String id, Map nested, NonMappableE
}
}
- record WithPrimitiveId (
- @Id long id){
+ record WithPrimitiveId(@Id long id) {
}
static class CustomConversionPerson {
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/MySqlMappingR2dbcConverterUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/MySqlMappingR2dbcConverterUnitTests.java
index 19f8ca46a2..8e8b90b001 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/MySqlMappingR2dbcConverterUnitTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/MySqlMappingR2dbcConverterUnitTests.java
@@ -39,6 +39,7 @@
* MySQL-specific unit tests for {@link MappingR2dbcConverter}.
*
* @author Mark Paluch
+ * @author Jens Schauder
*/
class MySqlMappingR2dbcConverterUnitTests {
@@ -68,8 +69,9 @@ void shouldWriteBooleanToByte() {
converter.write(object, row);
- OutboundRowAssert.assertThat(row).containsColumnWithValue("flag1", (byte) 1).containsColumnWithValue("flag2",
- (byte) 0);
+ OutboundRowAssert.assertThat(row) //
+ .containsColumnWithValue("FLAG1", (byte) 1) //
+ .containsColumnWithValue("FLAG2", (byte) 0);
}
@Test // gh-589
@@ -96,7 +98,7 @@ void shouldPreserveByteValue() {
converter.write(object, row);
- OutboundRowAssert.assertThat(row).containsColumnWithValue("state", (byte) 3);
+ OutboundRowAssert.assertThat(row).containsColumnWithValue("STATE", (byte) 3);
}
record BooleanMapping(
@@ -104,10 +106,9 @@ record BooleanMapping(
Integer id, boolean flag1, boolean flag2) {
}
- record WithByte (
+ record WithByte(
- Integer id,
- byte state){
+ Integer id, byte state) {
}
}
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/PostgresMappingR2dbcConverterUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/PostgresMappingR2dbcConverterUnitTests.java
index d29d618933..82888b43a6 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/PostgresMappingR2dbcConverterUnitTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/convert/PostgresMappingR2dbcConverterUnitTests.java
@@ -49,6 +49,7 @@
* Postgres-specific unit tests for {@link MappingR2dbcConverter}.
*
* @author Mark Paluch
+ * @author Jens Schauder
*/
class PostgresMappingR2dbcConverterUnitTests {
@@ -79,7 +80,7 @@ void shouldPassThruJson() {
OutboundRow row = new OutboundRow();
converter.write(person, row);
- assertThat(row).containsEntry(SqlIdentifier.unquoted("json_value"), Parameter.from(person.jsonValue));
+ assertThat(row).containsEntry(SqlIdentifier.quoted("JSON_VALUE"), Parameter.from(person.jsonValue));
}
@Test // gh-453
@@ -127,24 +128,18 @@ void shouldApplyCustomWritingConverter() {
OutboundRow row = new OutboundRow();
converter.write(object, row);
- Parameter parameter = row.get(SqlIdentifier.unquoted("holder"));
+ Parameter parameter = row.get(SqlIdentifier.quoted("HOLDER"));
assertThat(parameter).isNotNull();
assertThat(parameter.getValue()).isInstanceOf(Json.class);
}
- record JsonPerson(
- @Id Long id,
- Json jsonValue) {
+ record JsonPerson(@Id Long id, Json jsonValue) {
}
- record ConvertedJson(
- @Id Long id,
- String jsonString,
- byte[] jsonBytes) {
+ record ConvertedJson(@Id Long id, String jsonString, byte[] jsonBytes) {
}
- record WithJsonHolder(
- JsonHolder holder) {
+ record WithJsonHolder(JsonHolder holder) {
}
@ReadingConverter
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/PostgresReactiveDataAccessStrategyTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/PostgresReactiveDataAccessStrategyTests.java
index add4f1a970..362e71d7dc 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/PostgresReactiveDataAccessStrategyTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/PostgresReactiveDataAccessStrategyTests.java
@@ -45,6 +45,7 @@
* {@link PostgresDialect} specific tests for {@link ReactiveDataAccessStrategy}.
*
* @author Mark Paluch
+ * @author Jens Schauder
*/
public class PostgresReactiveDataAccessStrategyTests extends ReactiveDataAccessStrategyTestSupport {
@@ -61,7 +62,7 @@ void shouldConvertPrimitiveMultidimensionArrayToWrapper() {
OutboundRow row = strategy.getOutboundRow(new WithMultidimensionalArray(new int[][] { { 1, 2, 3 }, { 4, 5 } }));
- assertThat(row).withColumn("myarray").hasValueInstanceOf(Integer[][].class);
+ assertThat(row).withColumn("MYARRAY").hasValueInstanceOf(Integer[][].class);
}
@Test // GH-1593
@@ -83,7 +84,7 @@ void shouldConvertNullArrayToDriverArrayType() {
OutboundRow row = strategy.getOutboundRow(new WithMultidimensionalArray(null));
- assertThat(row).withColumn("myarray").isEmpty().hasType(Integer[].class);
+ assertThat(row).withColumn("MYARRAY").isEmpty().hasType(Integer[].class);
}
@Test // gh-161
@@ -91,8 +92,8 @@ void shouldConvertCollectionToArray() {
OutboundRow row = strategy.getOutboundRow(new WithIntegerCollection(Arrays.asList(1, 2, 3)));
- assertThat(row).withColumn("myarray").hasValueInstanceOf(Integer[].class);
- assertThat((Integer[]) row.get(SqlIdentifier.unquoted("myarray")).getValue()).contains(1, 2, 3);
+ assertThat(row).withColumn("MYARRAY").hasValueInstanceOf(Integer[].class);
+ assertThat((Integer[]) row.get(SqlIdentifier.quoted("MYARRAY")).getValue()).contains(1, 2, 3);
}
@Test // gh-139
@@ -106,8 +107,8 @@ void shouldConvertToArray() {
OutboundRow outboundRow = strategy.getOutboundRow(withArray);
- assertThat(outboundRow).containsColumnWithValue("string_array", new String[] { "hello", "world" })
- .containsColumnWithValue("string_list", new String[] { "hello", "world" });
+ assertThat(outboundRow).containsColumnWithValue("STRING_ARRAY", new String[] { "hello", "world" })
+ .containsColumnWithValue("STRING_LIST", new String[] { "hello", "world" });
}
@Test // gh-139
@@ -121,7 +122,7 @@ void shouldApplyCustomConversion() {
OutboundRow outboundRow = strategy.getOutboundRow(withConversion);
- assertThat(outboundRow).containsColumnWithValue("my_objects", "[one, two]");
+ assertThat(outboundRow).containsColumnWithValue("MY_OBJECTS", "[one, two]");
}
@Test // gh-139
@@ -135,7 +136,7 @@ void shouldApplyCustomConversionForNull() {
OutboundRow outboundRow = strategy.getOutboundRow(withConversion);
- assertThat(outboundRow).containsColumn("my_objects").withColumn("my_objects").isEmpty().hasType(String.class);
+ assertThat(outboundRow).containsColumn("MY_OBJECTS").withColumn("MY_OBJECTS").isEmpty().hasType(String.class);
}
@Test // gh-1379
@@ -146,7 +147,7 @@ void shouldApplyCustomConversionForEmptyList() {
OutboundRow outboundRow = strategy.getOutboundRow(withDuration);
- assertThat(outboundRow).containsColumn("durations").withColumn("durations").hasType(Interval[].class);
+ assertThat(outboundRow).containsColumn("DURATIONS").withColumn("DURATIONS").hasType(Interval[].class);
}
@Test // gh-252, gh-593
@@ -161,10 +162,10 @@ void shouldConvertCollectionOfEnumToString() {
OutboundRow outboundRow = strategy.getOutboundRow(withEnums);
- assertThat(outboundRow).containsColumns("enum_set", "enum_array", "enum_list");
- assertThat(outboundRow).withColumn("enum_set").hasValue(new String[] { "ONE", "TWO" }).hasType(String[].class);
- assertThat(outboundRow).withColumn("enum_array").hasValue(new String[] { "ONE", "TWO" }).hasType(String[].class);
- assertThat(outboundRow).withColumn("enum_list").hasValue(new String[] { "ONE", "TWO" }).hasType(String[].class);
+ assertThat(outboundRow).containsColumns("ENUM_SET", "ENUM_ARRAY", "ENUM_LIST");
+ assertThat(outboundRow).withColumn("ENUM_SET").hasValue(new String[] { "ONE", "TWO" }).hasType(String[].class);
+ assertThat(outboundRow).withColumn("ENUM_ARRAY").hasValue(new String[] { "ONE", "TWO" }).hasType(String[].class);
+ assertThat(outboundRow).withColumn("ENUM_LIST").hasValue(new String[] { "ONE", "TWO" }).hasType(String[].class);
}
@Test // gh-593
@@ -176,10 +177,10 @@ void shouldCorrectlyWriteConvertedEnumNullValues() {
OutboundRow outboundRow = strategy.getOutboundRow(withEnums);
- assertThat(outboundRow).containsColumns("enum_set", "enum_array", "enum_list");
- assertThat(outboundRow).withColumn("enum_set").isEmpty().hasType(String[].class);
- assertThat(outboundRow).withColumn("enum_array").isEmpty().hasType(String[].class);
- assertThat(outboundRow).withColumn("enum_list").isEmpty().hasType(String[].class);
+ assertThat(outboundRow).containsColumns("ENUM_SET", "ENUM_ARRAY", "ENUM_LIST");
+ assertThat(outboundRow).withColumn("ENUM_SET").isEmpty().hasType(String[].class);
+ assertThat(outboundRow).withColumn("ENUM_ARRAY").isEmpty().hasType(String[].class);
+ assertThat(outboundRow).withColumn("ENUM_LIST").isEmpty().hasType(String[].class);
}
@Test // gh-1544
@@ -194,10 +195,10 @@ void shouldCorrectlyWriteConvertedEmptyEnumCollections() {
OutboundRow outboundRow = strategy.getOutboundRow(withEnums);
- assertThat(outboundRow).containsColumns("enum_set", "enum_array", "enum_list");
- assertThat(outboundRow).withColumn("enum_set").hasValueInstanceOf(String[].class).hasType(String[].class);
- assertThat(outboundRow).withColumn("enum_array").hasValueInstanceOf(String[].class).hasType(String[].class);
- assertThat(outboundRow).withColumn("enum_list").hasValueInstanceOf(String[].class).hasType(String[].class);
+ assertThat(outboundRow).containsColumns("ENUM_SET", "ENUM_ARRAY", "ENUM_LIST");
+ assertThat(outboundRow).withColumn("ENUM_SET").hasValueInstanceOf(String[].class).hasType(String[].class);
+ assertThat(outboundRow).withColumn("ENUM_ARRAY").hasValueInstanceOf(String[].class).hasType(String[].class);
+ assertThat(outboundRow).withColumn("ENUM_LIST").hasValueInstanceOf(String[].class).hasType(String[].class);
}
@Test // gh-593
@@ -213,10 +214,10 @@ void shouldConvertCollectionOfEnumNatively() {
OutboundRow outboundRow = strategy.getOutboundRow(withEnums);
- assertThat(outboundRow).containsColumns("enum_set", "enum_array", "enum_list");
- assertThat(outboundRow).withColumn("enum_set").hasValue().hasType(MyEnum[].class);
- assertThat(outboundRow).withColumn("enum_array").hasValue().hasType(MyEnum[].class);
- assertThat(outboundRow).withColumn("enum_list").hasValue().hasType(MyEnum[].class);
+ assertThat(outboundRow).containsColumns("ENUM_SET", "ENUM_ARRAY", "ENUM_LIST");
+ assertThat(outboundRow).withColumn("ENUM_SET").hasValue().hasType(MyEnum[].class);
+ assertThat(outboundRow).withColumn("ENUM_ARRAY").hasValue().hasType(MyEnum[].class);
+ assertThat(outboundRow).withColumn("ENUM_LIST").hasValue().hasType(MyEnum[].class);
}
@Test // gh-593
@@ -229,10 +230,10 @@ void shouldCorrectlyWriteNativeEnumNullValues() {
OutboundRow outboundRow = strategy.getOutboundRow(withEnums);
- assertThat(outboundRow).containsColumns("enum_set", "enum_array", "enum_list");
- assertThat(outboundRow).withColumn("enum_set").isEmpty().hasType(MyEnum[].class);
- assertThat(outboundRow).withColumn("enum_array").isEmpty().hasType(MyEnum[].class);
- assertThat(outboundRow).withColumn("enum_list").isEmpty().hasType(MyEnum[].class);
+ assertThat(outboundRow).containsColumns("ENUM_SET", "ENUM_ARRAY", "ENUM_LIST");
+ assertThat(outboundRow).withColumn("ENUM_SET").isEmpty().hasType(MyEnum[].class);
+ assertThat(outboundRow).withColumn("ENUM_ARRAY").isEmpty().hasType(MyEnum[].class);
+ assertThat(outboundRow).withColumn("ENUM_LIST").isEmpty().hasType(MyEnum[].class);
}
static class WithMultidimensionalArray {
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplateUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplateUnitTests.java
index 8c11f18781..a596fd0384 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplateUnitTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplateUnitTests.java
@@ -113,7 +113,7 @@ void shouldCountBy() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT COUNT(*) FROM person WHERE person.THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo("SELECT COUNT(*) FROM \"person\" WHERE \"person\".\"THE_NAME\" = $1");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Walter"));
}
@@ -136,7 +136,7 @@ void shouldApplyInterfaceProjection() {
.assertNext(actual -> assertThat(actual.getName()).isEqualTo("Walter")).verifyComplete();
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT foo.THE_NAME FROM foo WHERE foo.THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo("SELECT foo.\"THE_NAME\" FROM foo WHERE foo.\"THE_NAME\" = $1");
}
@Test // GH-1690
@@ -161,7 +161,7 @@ void shouldProjectEntityUsingInheritedInterface() {
}).verifyComplete();
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT foo.* FROM foo WHERE foo.THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo("SELECT foo.* FROM foo WHERE foo.\"THE_NAME\" = $1");
}
@Test // GH-469
@@ -217,7 +217,7 @@ void shouldExistsByCriteria() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT 1 FROM person WHERE person.THE_NAME = $1 LIMIT 1");
+ assertThat(statement.getSql()).isEqualTo("SELECT 1 FROM \"person\" WHERE \"person\".\"THE_NAME\" = $1 LIMIT 1");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Walter"));
}
@@ -232,8 +232,8 @@ void shouldSelectByCriteria() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql())
- .isEqualTo("SELECT person.* FROM person WHERE person.THE_NAME = $1 ORDER BY person.THE_NAME ASC");
+ assertThat(statement.getSql()).isEqualTo(
+ "SELECT \"person\".* FROM \"person\" WHERE \"person\".\"THE_NAME\" = $1 ORDER BY \"person\".\"THE_NAME\" ASC");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Walter"));
}
@@ -274,8 +274,8 @@ void shouldSelectOne() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql())
- .isEqualTo("SELECT person.* FROM person WHERE person.THE_NAME = $1 ORDER BY person.THE_NAME ASC LIMIT 2");
+ assertThat(statement.getSql()).isEqualTo(
+ "SELECT \"person\".* FROM \"person\" WHERE \"person\".\"THE_NAME\" = $1 ORDER BY \"person\".\"THE_NAME\" ASC LIMIT 2");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Walter"));
}
@@ -291,8 +291,8 @@ void shouldSelectOneDoNotOverrideExistingLimit() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql())
- .isEqualTo("SELECT person.* FROM person WHERE person.THE_NAME = $1 ORDER BY person.THE_NAME ASC LIMIT 1");
+ assertThat(statement.getSql()).isEqualTo(
+ "SELECT \"person\".* FROM \"person\" WHERE \"person\".\"THE_NAME\" = $1 ORDER BY \"person\".\"THE_NAME\" ASC LIMIT 1");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Walter"));
}
@@ -311,7 +311,8 @@ void shouldUpdateByQuery() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
- assertThat(statement.getSql()).isEqualTo("UPDATE person SET THE_NAME = $1 WHERE person.THE_NAME = $2");
+ assertThat(statement.getSql())
+ .isEqualTo("UPDATE \"person\" SET \"THE_NAME\" = $1 WHERE \"person\".\"THE_NAME\" = $2");
assertThat(statement.getBindings()).hasSize(2).containsEntry(0, Parameter.from("Heisenberg")).containsEntry(1,
Parameter.from("Walter"));
}
@@ -330,7 +331,7 @@ void shouldDeleteByQuery() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("DELETE"));
- assertThat(statement.getSql()).isEqualTo("DELETE FROM person WHERE person.THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo("DELETE FROM \"person\" WHERE \"person\".\"THE_NAME\" = $1");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Walter"));
}
@@ -347,7 +348,7 @@ void shouldDeleteEntity() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("DELETE"));
- assertThat(statement.getSql()).isEqualTo("DELETE FROM person WHERE person.id = $1");
+ assertThat(statement.getSql()).isEqualTo("DELETE FROM \"person\" WHERE \"person\".\"id\" = $1");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Walter"));
}
@@ -367,7 +368,8 @@ void shouldInsertVersioned() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("INSERT"));
- assertThat(statement.getSql()).isEqualTo("INSERT INTO versioned_person (id, version, name) VALUES ($1, $2, $3)");
+ assertThat(statement.getSql())
+ .isEqualTo("INSERT INTO \"versioned_person\" (\"id\", \"version\", \"name\") VALUES ($1, $2, $3)");
assertThat(statement.getBindings()).hasSize(3).containsEntry(0, Parameter.from("id")).containsEntry(1,
Parameter.from(1L));
}
@@ -386,7 +388,7 @@ void shouldSkipDefaultIdValueOnInsert() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("INSERT"));
- assertThat(statement.getSql()).isEqualTo("INSERT INTO person_with_primitive_id (name) VALUES ($1)");
+ assertThat(statement.getSql()).isEqualTo("INSERT INTO \"person_with_primitive_id\" (\"name\") VALUES ($1)");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("bar"));
}
@@ -407,7 +409,7 @@ void shouldSkipDefaultIdValueOnVersionedInsert() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("INSERT"));
assertThat(statement.getSql())
- .isEqualTo("INSERT INTO versioned_person_with_primitive_id (version, name) VALUES ($1, $2)");
+ .isEqualTo("INSERT INTO \"versioned_person_with_primitive_id\" (\"version\", \"name\") VALUES ($1, $2)");
assertThat(statement.getBindings()).hasSize(2).containsEntry(0, Parameter.from(1L)).containsEntry(1,
Parameter.from("bar"));
}
@@ -437,7 +439,7 @@ void shouldInsertCorrectlyVersionedAndAudited() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("INSERT"));
assertThat(statement.getSql()).isEqualTo(
- "INSERT INTO with_auditing_and_optimistic_locking (version, name, created_date, last_modified_date) VALUES ($1, $2, $3, $4)");
+ "INSERT INTO \"with_auditing_and_optimistic_locking\" (\"version\", \"name\", \"created_date\", \"last_modified_date\") VALUES ($1, $2, $3, $4)");
}
@Test // GH-451
@@ -466,7 +468,7 @@ void shouldUpdateCorrectlyVersionedAndAudited() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
assertThat(statement.getSql()).startsWith(
- "UPDATE with_auditing_and_optimistic_locking SET version = $1, name = $2, created_date = $3, last_modified_date = $4");
+ "UPDATE \"with_auditing_and_optimistic_locking\" SET \"version\" = $1, \"name\" = $2, \"created_date\" = $3, \"last_modified_date\" = $4");
}
@Test // GH-215
@@ -492,7 +494,7 @@ void insertShouldInvokeCallback() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("INSERT"));
- assertThat(statement.getSql()).isEqualTo("INSERT INTO person (THE_NAME, description) VALUES ($1, $2)");
+ assertThat(statement.getSql()).isEqualTo("INSERT INTO \"person\" (\"THE_NAME\", \"description\") VALUES ($1, $2)");
assertThat(statement.getBindings()).hasSize(2).containsEntry(0, Parameter.from("before-convert")).containsEntry(1,
Parameter.from("before-save"));
}
@@ -514,7 +516,7 @@ void shouldUpdateVersioned() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
assertThat(statement.getSql()).isEqualTo(
- "UPDATE versioned_person SET version = $1, name = $2 WHERE versioned_person.id = $3 AND (versioned_person.version = $4)");
+ "UPDATE \"versioned_person\" SET \"version\" = $1, \"name\" = $2 WHERE \"versioned_person\".\"id\" = $3 AND (\"versioned_person\".\"version\" = $4)");
assertThat(statement.getBindings()).hasSize(4).containsEntry(0, Parameter.from(2L)).containsEntry(3,
Parameter.from(1L));
}
@@ -547,7 +549,8 @@ void updateShouldInvokeCallback() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
- assertThat(statement.getSql()).isEqualTo("UPDATE person SET THE_NAME = $1, description = $2 WHERE person.id = $3");
+ assertThat(statement.getSql())
+ .isEqualTo("UPDATE \"person\" SET \"THE_NAME\" = $1, \"description\" = $2 WHERE \"person\".\"id\" = $3");
assertThat(statement.getBindings()).hasSize(3).containsEntry(0, Parameter.from("before-convert")).containsEntry(1,
Parameter.from("before-save"));
}
@@ -566,7 +569,8 @@ void insertIncludesInsertOnlyColumns() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("INSERT"));
- assertThat(statement.getSql()).isEqualTo("INSERT INTO with_insert_only (name, insert_only) VALUES ($1, $2)");
+ assertThat(statement.getSql())
+ .isEqualTo("INSERT INTO \"with_insert_only\" (\"name\", \"insert_only\") VALUES ($1, $2)");
assertThat(statement.getBindings()).hasSize(2).containsEntry(0, Parameter.from("Alfred")).containsEntry(1,
Parameter.from("insert this"));
}
@@ -585,7 +589,8 @@ void updateExcludesInsertOnlyColumns() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
- assertThat(statement.getSql()).isEqualTo("UPDATE with_insert_only SET name = $1 WHERE with_insert_only.id = $2");
+ assertThat(statement.getSql())
+ .isEqualTo("UPDATE \"with_insert_only\" SET \"name\" = $1 WHERE \"with_insert_only\".\"id\" = $2");
assertThat(statement.getBindings()).hasSize(2).containsEntry(0, Parameter.from("Alfred")).containsEntry(1,
Parameter.from(23L));
}
@@ -604,7 +609,7 @@ void shouldConsiderParameterConverter() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("INSERT"));
- assertThat(statement.getSql()).isEqualTo("INSERT INTO with_money (money) VALUES ($1)");
+ assertThat(statement.getSql()).isEqualTo("INSERT INTO \"with_money\" (\"money\") VALUES ($1)");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0,
Parameter.from(Parameters.in(R2dbcType.VARCHAR, "$$$")));
}
@@ -875,7 +880,7 @@ static class ValueCapturingBeforeSaveCallback extends ValueCapturingEntityCallba
public Mono onBeforeSave(Person entity, OutboundRow outboundRow, SqlIdentifier table) {
capture(entity);
- outboundRow.put(SqlIdentifier.unquoted("description"), Parameter.from("before-save"));
+ outboundRow.put(SqlIdentifier.quoted("DESCRIPTION"), Parameter.from("before-save"));
return Mono.just(entity);
}
}
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveDataAccessStrategyTestSupport.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveDataAccessStrategyTestSupport.java
index 77b855b6bf..db090f3098 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveDataAccessStrategyTestSupport.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveDataAccessStrategyTestSupport.java
@@ -38,6 +38,7 @@
import org.junit.jupiter.api.Test;
import org.springframework.data.annotation.ReadOnlyProperty;
import org.springframework.data.r2dbc.dialect.R2dbcDialect;
+import org.springframework.data.relational.core.dialect.AnsiDialect;
import org.springframework.data.relational.core.sql.SqlIdentifier;
import org.springframework.r2dbc.core.Parameter;
@@ -46,6 +47,7 @@
*
* @author Mark Paluch
* @author Louis Morgan
+ * @author Jens Schauder
*/
public abstract class ReactiveDataAccessStrategyTestSupport {
@@ -185,7 +187,7 @@ void shouldNotWriteReadOnlyFields() {
toSave.readOnlyField = "readonly";
toSave.readOnlyArrayField = "readonly_array".getBytes();
- assertThat(getStrategy().getOutboundRow(toSave)).containsOnlyKeys(SqlIdentifier.unquoted("writable_field"));
+ assertThat(getStrategy().getOutboundRow(toSave)).containsOnlyKeys(SqlIdentifier.quoted("WRITABLE_FIELD"));
}
private void testType(BiConsumer setter, Function getter, T testValue,
@@ -201,8 +203,9 @@ private void testType(BiConsumer setter, Function s.startsWith("DELETE"));
- assertThat(statement.getSql()).isEqualTo("DELETE FROM person");
+ assertThat(statement.getSql()).isEqualTo("DELETE FROM \"person\"");
}
@Test // gh-410
@@ -104,7 +104,7 @@ void shouldDeleteWithQuery() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("DELETE"));
- assertThat(statement.getSql()).isEqualTo("DELETE FROM person WHERE person.THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo("DELETE FROM \"person\" WHERE \"person\".\"THE_NAME\" = $1");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Walter"));
}
@@ -125,7 +125,7 @@ void shouldDeleteInTable() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("DELETE"));
- assertThat(statement.getSql()).isEqualTo("DELETE FROM other_table WHERE other_table.THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo("DELETE FROM other_table WHERE other_table.\"THE_NAME\" = $1");
}
static class Person {
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveInsertOperationUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveInsertOperationUnitTests.java
index 1b2afe6b4f..66613336e1 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveInsertOperationUnitTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveInsertOperationUnitTests.java
@@ -26,7 +26,6 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-
import org.springframework.data.annotation.Id;
import org.springframework.data.r2dbc.dialect.PostgresDialect;
import org.springframework.data.r2dbc.testing.StatementRecorder;
@@ -38,6 +37,7 @@
* Unit test for {@link ReactiveInsertOperation}.
*
* @author Mark Paluch
+ * @author Jens Schauder
*/
public class ReactiveInsertOperationUnitTests {
@@ -58,8 +58,7 @@ void before() {
void shouldInsert() {
MockRowMetadata metadata = MockRowMetadata.builder()
- .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build())
- .build();
+ .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build()).build();
MockResult result = MockResult.builder()
.row(MockRow.builder().identified("id", Object.class, 42).metadata(metadata).build()).build();
@@ -79,7 +78,7 @@ void shouldInsert() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("INSERT"));
- assertThat(statement.getSql()).isEqualTo("INSERT INTO person (THE_NAME) VALUES ($1)");
+ assertThat(statement.getSql()).isEqualTo("INSERT INTO \"person\" (\"THE_NAME\") VALUES ($1)");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Walter"));
}
@@ -87,8 +86,7 @@ void shouldInsert() {
void shouldUpdateInTable() {
MockRowMetadata metadata = MockRowMetadata.builder()
- .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build())
- .build();
+ .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build()).build();
MockResult result = MockResult.builder()
.row(MockRow.builder().identified("id", Object.class, 42).metadata(metadata).build()).build();
@@ -109,7 +107,7 @@ void shouldUpdateInTable() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("INSERT"));
- assertThat(statement.getSql()).isEqualTo("INSERT INTO the_table (THE_NAME) VALUES ($1)");
+ assertThat(statement.getSql()).isEqualTo("INSERT INTO the_table (\"THE_NAME\") VALUES ($1)");
}
static class Person {
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveSelectOperationUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveSelectOperationUnitTests.java
index e0ec5d4d0a..b310adaaae 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveSelectOperationUnitTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveSelectOperationUnitTests.java
@@ -28,7 +28,6 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-
import org.springframework.data.annotation.Id;
import org.springframework.data.r2dbc.dialect.PostgresDialect;
import org.springframework.data.r2dbc.testing.StatementRecorder;
@@ -40,9 +39,12 @@
*
* @author Mark Paluch
* @author Mikhail Polivakha
+ * @author Jens Schauder
*/
public class ReactiveSelectOperationUnitTests {
+ public static final String FROM_PERSON = "FROM \"person\" ";
+ public static final String WHERE_NAME = "WHERE \"person\".\"THE_NAME\" = $1";
private DatabaseClient client;
private R2dbcEntityTemplate entityTemplate;
private StatementRecorder recorder;
@@ -60,8 +62,7 @@ void before() {
void shouldSelectAll() {
MockRowMetadata metadata = MockRowMetadata.builder()
- .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build())
- .build();
+ .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build()).build();
MockResult result = MockResult.builder()
.row(MockRow.builder().identified("id", Object.class, "Walter").metadata(metadata).build()).build();
@@ -77,15 +78,14 @@ void shouldSelectAll() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
assertThat(statement.getSql())
- .isEqualTo("SELECT person.* FROM person WHERE person.THE_NAME = $1 LIMIT 10 OFFSET 20");
+ .isEqualTo("SELECT \"person\".* " + FROM_PERSON + "WHERE \"person\".\"THE_NAME\" = $1 LIMIT 10 OFFSET 20");
}
@Test // GH-220
void shouldSelectAs() {
MockRowMetadata metadata = MockRowMetadata.builder()
- .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build())
- .build();
+ .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build()).build();
MockResult result = MockResult.builder()
.row(MockRow.builder().identified("id", Object.class, "Walter").metadata(metadata).build()).build();
@@ -101,7 +101,8 @@ void shouldSelectAs() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT person.THE_NAME FROM person WHERE person.THE_NAME = $1");
+ assertThat(statement.getSql())
+ .isEqualTo("SELECT \"person\".\"THE_NAME\" " + FROM_PERSON + WHERE_NAME);
}
@Test // GH-220, GH-1690
@@ -125,15 +126,15 @@ void shouldSelectAsWithColumnName() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT person.id, person.a_different_name FROM person WHERE person.THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo(
+ "SELECT \"person\".\"id\", \"person\".\"a_different_name\" " + FROM_PERSON + WHERE_NAME);
}
@Test // GH-220
void shouldSelectFromTable() {
MockRowMetadata metadata = MockRowMetadata.builder()
- .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build())
- .build();
+ .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build()).build();
MockResult result = MockResult.builder().rowMetadata(metadata)
.row(MockRow.builder().identified("id", Object.class, "Walter").metadata(metadata).build()).build();
@@ -149,15 +150,14 @@ void shouldSelectFromTable() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT the_table.* FROM the_table WHERE the_table.THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo("SELECT the_table.* FROM the_table WHERE the_table.\"THE_NAME\" = $1");
}
@Test // GH-220
void shouldSelectFirst() {
MockRowMetadata metadata = MockRowMetadata.builder()
- .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build())
- .build();
+ .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build()).build();
MockResult result = MockResult.builder().rowMetadata(metadata)
.row(MockRow.builder().identified("id", Object.class, "Walter").metadata(metadata).build()).build();
@@ -172,15 +172,15 @@ void shouldSelectFirst() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT person.* FROM person WHERE person.THE_NAME = $1 LIMIT 1");
+ assertThat(statement.getSql())
+ .isEqualTo("SELECT \"person\".* " + FROM_PERSON + "WHERE \"person\".\"THE_NAME\" = $1 LIMIT 1");
}
@Test // GH-220
void shouldSelectOne() {
MockRowMetadata metadata = MockRowMetadata.builder()
- .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build())
- .build();
+ .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build()).build();
MockResult result = MockResult.builder()
.row(MockRow.builder().identified("id", Object.class, "Walter").metadata(metadata).build()).build();
@@ -195,15 +195,15 @@ void shouldSelectOne() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT person.* FROM person WHERE person.THE_NAME = $1 LIMIT 2");
+ assertThat(statement.getSql())
+ .isEqualTo("SELECT \"person\".* " + FROM_PERSON + "WHERE \"person\".\"THE_NAME\" = $1 LIMIT 2");
}
@Test // GH-220
void shouldSelectExists() {
MockRowMetadata metadata = MockRowMetadata.builder()
- .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build())
- .build();
+ .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build()).build();
MockResult result = MockResult.builder()
.row(MockRow.builder().identified("id", Object.class, "Walter").metadata(metadata).build()).build();
@@ -218,15 +218,14 @@ void shouldSelectExists() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT 1 FROM person WHERE person.THE_NAME = $1 LIMIT 1");
+ assertThat(statement.getSql()).isEqualTo("SELECT 1 " + FROM_PERSON + "WHERE \"person\".\"THE_NAME\" = $1 LIMIT 1");
}
@Test // GH-220
void shouldSelectCount() {
MockRowMetadata metadata = MockRowMetadata.builder()
- .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build())
- .build();
+ .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build()).build();
MockResult result = MockResult.builder()
.row(MockRow.builder().identified(0, Long.class, 1L).metadata(metadata).build()).build();
@@ -241,18 +240,16 @@ void shouldSelectCount() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("SELECT"));
- assertThat(statement.getSql()).isEqualTo("SELECT COUNT(*) FROM person WHERE person.THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo("SELECT COUNT(*) " + FROM_PERSON + WHERE_NAME);
}
@Test // GH-1652
void shouldConsiderFetchSize() {
MockRowMetadata metadata = MockRowMetadata.builder()
- .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build())
- .build();
+ .columnMetadata(MockColumnMetadata.builder().name("id").type(R2dbcType.INTEGER).build()).build();
MockResult result = MockResult.builder()
- .row(MockRow.builder().identified("id", Object.class, "Walter").metadata(metadata).build())
- .build();
+ .row(MockRow.builder().identified("id", Object.class, "Walter").metadata(metadata).build()).build();
recorder.addStubbing(s -> s.startsWith("SELECT"), result);
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveUpdateOperationUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveUpdateOperationUnitTests.java
index 91106b342c..8c0465654c 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveUpdateOperationUnitTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/ReactiveUpdateOperationUnitTests.java
@@ -24,7 +24,6 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-
import org.springframework.data.annotation.Id;
import org.springframework.data.r2dbc.dialect.PostgresDialect;
import org.springframework.data.r2dbc.testing.StatementRecorder;
@@ -37,6 +36,7 @@
* Unit test for {@link ReactiveUpdateOperation}.
*
* @author Mark Paluch
+ * @author Jens Schauder
*/
public class ReactiveUpdateOperationUnitTests {
@@ -68,7 +68,7 @@ void shouldUpdate() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
- assertThat(statement.getSql()).isEqualTo("UPDATE person SET THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo("UPDATE \"person\" SET \"THE_NAME\" = $1");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Heisenberg"));
}
@@ -87,7 +87,7 @@ void shouldUpdateWithTable() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
- assertThat(statement.getSql()).isEqualTo("UPDATE table SET THE_NAME = $1");
+ assertThat(statement.getSql()).isEqualTo("UPDATE table SET \"THE_NAME\" = $1");
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Heisenberg"));
}
@@ -107,7 +107,8 @@ void shouldUpdateWithQuery() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
- assertThat(statement.getSql()).isEqualTo("UPDATE person SET THE_NAME = $1 WHERE person.THE_NAME = $2");
+ assertThat(statement.getSql())
+ .isEqualTo("UPDATE \"person\" SET \"THE_NAME\" = $1 WHERE \"person\".\"THE_NAME\" = $2");
assertThat(statement.getBindings()).hasSize(2).containsEntry(0, Parameter.from("Heisenberg")).containsEntry(1,
Parameter.from("Walter"));
}
@@ -129,7 +130,8 @@ void shouldUpdateInTable() {
StatementRecorder.RecordedStatement statement = recorder.getCreatedStatement(s -> s.startsWith("UPDATE"));
- assertThat(statement.getSql()).isEqualTo("UPDATE the_table SET THE_NAME = $1 WHERE the_table.THE_NAME = $2");
+ assertThat(statement.getSql())
+ .isEqualTo("UPDATE the_table SET \"THE_NAME\" = $1 WHERE the_table.\"THE_NAME\" = $2");
}
static class Person {
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/query/QueryMapperUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/query/QueryMapperUnitTests.java
index 76ceb3b2e5..4bc76f0aec 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/query/QueryMapperUnitTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/query/QueryMapperUnitTests.java
@@ -113,7 +113,7 @@ void shouldMapSomeNestedCriteria() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("((person.name = ?[$1]))");
+ assertThat(bindings.getCondition()).hasToString("((person.\"NAME\" = ?[$1]))");
}
@Test // gh-289
@@ -134,7 +134,7 @@ void shouldMapNestedGroup() {
BoundCondition bindings = map(criteria);
assertThat(bindings.getCondition()).hasToString(
- "(person.name = ?[$1]) AND (person.name = ?[$2] OR person.age < ?[$3] OR (person.name != ?[$4] AND person.age > ?[$5]))");
+ "(person.\"NAME\" = ?[$1]) AND (person.\"NAME\" = ?[$2] OR person.age < ?[$3] OR (person.\"NAME\" != ?[$4] AND person.age > ?[$5]))");
}
@Test // gh-289
@@ -150,7 +150,7 @@ void shouldMapFrom() {
BoundCondition bindings = map(criteria);
assertThat(bindings.getCondition())
- .hasToString("person.name = ?[$1] AND (person.name = ?[$2] OR person.age < ?[$3])");
+ .hasToString("person.\"NAME\" = ?[$1] AND (person.\"NAME\" = ?[$2] OR person.age < ?[$3])");
}
@Test // gh-383
@@ -160,13 +160,13 @@ void shouldMapFromConcat() {
.or("age").lessThan(49));
assertThat(map(criteria).getCondition())
- .hasToString("(person.name = ?[$1] AND (person.name = ?[$2] OR person.age < ?[$3]))");
+ .hasToString("(person.\"NAME\" = ?[$1] AND (person.\"NAME\" = ?[$2] OR person.age < ?[$3]))");
criteria = Criteria.from(Criteria.where("name").is("Foo"), Criteria.where("name").is("Bar") //
.or("age").lessThan(49), Criteria.where("foo").is("bar"));
- assertThat(map(criteria).getCondition())
- .hasToString("(person.name = ?[$1] AND (person.name = ?[$2] OR person.age < ?[$3]) AND (person.foo = ?[$4]))");
+ assertThat(map(criteria).getCondition()).hasToString(
+ "(person.\"NAME\" = ?[$1] AND (person.\"NAME\" = ?[$2] OR person.age < ?[$3]) AND (person.foo = ?[$4]))");
}
@Test // gh-64
@@ -176,7 +176,7 @@ void shouldMapSimpleCriteria() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name = ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" = ?[$1]");
bindings.getBindings().apply(bindTarget);
verify(bindTarget).bind(0, "foo");
@@ -218,7 +218,7 @@ void shouldMapExpression() {
Expression mappedObject = mapper.getMappedObject(table.column("alternative").as("my_aliased_col"),
mapper.getMappingContext().getRequiredPersistentEntity(Person.class));
- assertThat(mappedObject).hasToString("my_aliased_table.another_name AS my_aliased_col");
+ assertThat(mappedObject).hasToString("my_aliased_table.\"another_name\" AS my_aliased_col");
}
@Test // gh-300
@@ -229,7 +229,7 @@ void shouldMapCountFunction() {
Expression mappedObject = mapper.getMappedObject(Functions.count(table.column("alternative")),
mapper.getMappingContext().getRequiredPersistentEntity(Person.class));
- assertThat(mappedObject).hasToString("COUNT(my_aliased_table.another_name)");
+ assertThat(mappedObject).hasToString("COUNT(my_aliased_table.\"another_name\")");
}
@Test // gh-300
@@ -260,7 +260,7 @@ void shouldMapSimpleNullableCriteria() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name = ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" = ?[$1]");
bindings.getBindings().apply(bindTarget);
verify(bindTarget).bindNull(0, Integer.class);
@@ -273,7 +273,7 @@ void shouldConsiderColumnName() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.another_name = ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"another_name\" = ?[$1]");
}
@Test // gh-64
@@ -283,7 +283,7 @@ void shouldMapAndCriteria() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name = ?[$1] AND person.bar = ?[$2]");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" = ?[$1] AND person.bar = ?[$2]");
bindings.getBindings().apply(bindTarget);
verify(bindTarget).bind(0, "foo");
@@ -297,7 +297,7 @@ void shouldMapOrCriteria() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name = ?[$1] OR person.bar = ?[$2]");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" = ?[$1] OR person.bar = ?[$2]");
}
@Test // gh-64
@@ -311,7 +311,7 @@ void shouldMapAndOrCriteria() {
BoundCondition bindings = map(criteria);
assertThat(bindings.getCondition()).hasToString(
- "person.name = ?[$1] AND person.name IS NOT NULL OR person.bar = ?[$2] AND person.anotherOne = ?[$3]");
+ "person.\"NAME\" = ?[$1] AND person.\"NAME\" IS NOT NULL OR person.bar = ?[$2] AND person.anotherOne = ?[$3]");
}
@Test // gh-64
@@ -321,7 +321,7 @@ void shouldMapNeq() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name != ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" != ?[$1]");
}
@Test // gh-64
@@ -331,7 +331,7 @@ void shouldMapIsNull() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name IS NULL");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" IS NULL");
}
@Test // gh-64
@@ -341,7 +341,7 @@ void shouldMapIsNotNull() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name IS NOT NULL");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" IS NOT NULL");
}
@Test // gh-64
@@ -351,7 +351,7 @@ void shouldMapIsIn() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name IN (?[$1], ?[$2], ?[$3])");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" IN (?[$1], ?[$2], ?[$3])");
}
@Test // gh-64, gh-177
@@ -361,7 +361,7 @@ void shouldMapIsNotIn() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name NOT IN (?[$1], ?[$2], ?[$3])");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" NOT IN (?[$1], ?[$2], ?[$3])");
}
@Test
@@ -374,7 +374,7 @@ void shouldMapIsNotInWithCollectionToStringConverter() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name NOT IN (?[$1], ?[$2], ?[$3])");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" NOT IN (?[$1], ?[$2], ?[$3])");
}
@Test // gh-64
@@ -384,7 +384,7 @@ void shouldMapIsGt() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name > ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" > ?[$1]");
}
@Test // gh-64
@@ -394,7 +394,7 @@ void shouldMapIsGte() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name >= ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" >= ?[$1]");
}
@Test // gh-64
@@ -404,7 +404,7 @@ void shouldMapIsLt() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name < ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" < ?[$1]");
}
@Test // gh-64
@@ -414,7 +414,7 @@ void shouldMapIsLte() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name <= ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" <= ?[$1]");
}
@Test // gh-64
@@ -424,7 +424,7 @@ void shouldMapIsLike() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.name LIKE ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"NAME\" LIKE ?[$1]");
}
@Test // GH-1507
@@ -493,7 +493,7 @@ void mapQueryForEnumArrayShouldMapToStringList() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.enum_value IN (?[$1], ?[$2])");
+ assertThat(bindings.getCondition()).hasToString("person.\"ENUM_VALUE\" IN (?[$1], ?[$2])");
}
@Test // gh-733
@@ -503,7 +503,7 @@ void shouldMapBooleanConditionProperly() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.state = ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"STATE\" = ?[$1]");
assertThat(bindings.getBindings().iterator().next().getValue()).isEqualTo(false);
}
@@ -515,7 +515,7 @@ void shouldMapAndConvertBooleanConditionProperly() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.state = ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"STATE\" = ?[$1]");
assertThat(bindings.getBindings().iterator().next().getValue()).isEqualTo((byte) 1);
}
@@ -526,7 +526,7 @@ void shouldMapJsonNodeToString() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.json_node = ?[$1]");
+ assertThat(bindings.getCondition()).hasToString("person.\"JSON_NODE\" = ?[$1]");
assertThat(bindings.getBindings().iterator().next().getValue()).isEqualTo("foo");
}
@@ -537,7 +537,7 @@ void shouldMapJsonNodeListToString() {
BoundCondition bindings = map(criteria);
- assertThat(bindings.getCondition()).hasToString("person.json_node IN (?[$1], ?[$2])");
+ assertThat(bindings.getCondition()).hasToString("person.\"JSON_NODE\" IN (?[$1], ?[$2])");
assertThat(bindings.getBindings().iterator().next().getValue()).isEqualTo("foo");
}
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/query/UpdateMapperUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/query/UpdateMapperUnitTests.java
index 6bb448d4b3..dae40303f6 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/query/UpdateMapperUnitTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/query/UpdateMapperUnitTests.java
@@ -22,7 +22,6 @@
import java.util.stream.Collectors;
import org.junit.jupiter.api.Test;
-
import org.springframework.data.r2dbc.convert.MappingR2dbcConverter;
import org.springframework.data.r2dbc.convert.R2dbcConverter;
import org.springframework.data.r2dbc.dialect.PostgresDialect;
@@ -43,6 +42,7 @@
*
* @author Mark Paluch
* @author Mingyuan Wu
+ * @author Jens Schauder
*/
public class UpdateMapperUnitTests {
@@ -60,7 +60,7 @@ void shouldMapFieldNamesInUpdate() {
Map assignments = mapped.getAssignments().stream().map(it -> (AssignValue) it)
.collect(Collectors.toMap(k -> k.getColumn().getName(), AssignValue::getValue));
- assertThat(assignments).containsEntry(SqlIdentifier.unquoted("another_name"), SQL.bindMarker("$1"));
+ assertThat(assignments).containsEntry(SqlIdentifier.quoted("another_name"), SQL.bindMarker("$1"));
}
@Test // gh-64
@@ -73,7 +73,7 @@ void shouldUpdateToSettableValue() {
Map assignments = mapped.getAssignments().stream().map(it -> (AssignValue) it)
.collect(Collectors.toMap(k -> k.getColumn().getName(), AssignValue::getValue));
- assertThat(assignments).containsEntry(SqlIdentifier.unquoted("another_name"), SQL.bindMarker("$1"));
+ assertThat(assignments).containsEntry(SqlIdentifier.quoted("another_name"), SQL.bindMarker("$1"));
mapped.getBindings().apply(bindTarget);
verify(bindTarget).bindNull(0, String.class);
@@ -87,7 +87,7 @@ void shouldUpdateToNull() {
BoundAssignments mapped = map(update);
assertThat(mapped.getAssignments()).hasSize(1);
- assertThat(mapped.getAssignments().get(0).toString()).isEqualTo("person.another_name = NULL");
+ assertThat(mapped.getAssignments().get(0).toString()).isEqualTo("person.\"another_name\" = NULL");
mapped.getBindings().apply(bindTarget);
verifyNoInteractions(bindTarget);
diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java
index cc4cfa3cf2..2589b305eb 100644
--- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java
+++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java
@@ -57,6 +57,7 @@
* @author Mark Paluch
* @author Manousos Mathioudakis
* @author Diego Krupitza
+ * @author Jens Schauder
*/
public abstract class AbstractR2dbcRepositoryIntegrationTests extends R2dbcIntegrationTestSupport {
@@ -74,12 +75,14 @@ void before() {
this.jdbc = createJdbcTemplate(createDataSource());
try {
- this.jdbc.execute("DROP TABLE legoset");
+ this.jdbc.execute(getDropTableStatement());
} catch (DataAccessException e) {}
this.jdbc.execute(getCreateTableStatement());
}
+ abstract protected String getDropTableStatement();
+
/**
* Creates a {@link DataSource} to be used in this test.
*
@@ -254,10 +257,12 @@ void shouldDeleteUsingQueryMethod() {
.then().as(StepVerifier::create) //
.verifyComplete();
- Map count = jdbc.queryForMap("SELECT count(*) AS count FROM legoset");
- assertThat(getCount(count)).satisfies(numberOf(1));
+ int count = jdbc.queryForObject(getCountQuery(), Integer.class);
+ assertThat(count).isEqualTo(1);
}
+ abstract protected String getCountQuery();
+
@Test // GH-335
void shouldFindByPageable() {
@@ -327,19 +332,17 @@ public void shouldInsertItemsTransactional() {
LegoSet legoSet1 = new LegoSet(null, "SCHAUFELRADBAGGER", 12, true);
LegoSet legoSet2 = new LegoSet(null, "FORSCHUNGSSCHIFF", 13, false);
- Mono