Skip to content

Commit 4e6abdb

Browse files
committed
[#2012] Add test for '?' PostgreSQL operator
The issue was actually fixed when we removed parameters processing (see #2464). Now the `?` operator can be escaped with `\\?` (instead of `\\\\\\?`).
1 parent b701bc1 commit 4e6abdb

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

hibernate-reactive-core/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ dependencies {
4141
testImplementation(libs.io.vertx.vertx.mssql.client)
4242
testImplementation(libs.io.vertx.vertx.oracle.client)
4343

44+
// Some tests using JSON need a formatter
45+
testRuntimeOnly(libs.com.fasterxml.jackson.core.jackson.databind)
46+
4447
// Metrics
4548
testImplementation(libs.io.vertx.vertx.micrometer.metrics)
4649

hibernate-reactive-core/src/test/java/org/hibernate/reactive/types/JsonTypeTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@
77

88
import java.util.Collection;
99
import java.util.List;
10+
import java.util.Map;
1011
import java.util.Objects;
1112
import java.util.function.Consumer;
1213

14+
import org.hibernate.annotations.JdbcTypeCode;
1315
import org.hibernate.reactive.BaseReactiveTest;
1416
import org.hibernate.reactive.annotations.DisabledFor;
17+
import org.hibernate.reactive.annotations.EnabledFor;
18+
import org.hibernate.type.SqlTypes;
1519

1620
import org.junit.jupiter.api.Test;
1721

@@ -29,6 +33,7 @@
2933
import static org.hibernate.reactive.containers.DatabaseConfiguration.DBType.DB2;
3034
import static org.hibernate.reactive.containers.DatabaseConfiguration.DBType.MARIA;
3135
import static org.hibernate.reactive.containers.DatabaseConfiguration.DBType.ORACLE;
36+
import static org.hibernate.reactive.containers.DatabaseConfiguration.DBType.POSTGRESQL;
3237
import static org.hibernate.reactive.containers.DatabaseConfiguration.DBType.SQLSERVER;
3338
import static org.junit.jupiter.api.Assertions.assertEquals;
3439

@@ -47,6 +52,39 @@ protected Collection<Class<?>> annotatedEntities() {
4752
return List.of( Basic.class );
4853
}
4954

55+
@Test
56+
@EnabledFor(POSTGRESQL)
57+
public void nativeQuestionMarkOperatorForPostgres(VertxTestContext context) {
58+
Basic basic = new Basic();
59+
basic.jsonAsMap = Map.of( "sport", "Cheese Rolling" );
60+
61+
test( context, getMutinySessionFactory()
62+
.withTransaction( s -> s.persist( basic ) )
63+
.chain( () -> getMutinySessionFactory().withTransaction( s -> s
64+
.createNativeQuery( "select id from JsonEntity where jsonAsMap -> 'sport' \\? 'Cheese Rolling'" )
65+
.getSingleResult() )
66+
)
67+
.invoke( result -> assertThat( result ).isEqualTo( basic.id ) )
68+
);
69+
}
70+
71+
@Test
72+
@EnabledFor(POSTGRESQL)
73+
public void nativeQuestionMarkOperatorWithParameterForPostgres(VertxTestContext context) {
74+
Basic basic = new Basic();
75+
basic.jsonAsMap = Map.of( "sport", "Chess boxing" );
76+
77+
test( context, getMutinySessionFactory()
78+
.withTransaction( s -> s.persist( basic ) )
79+
.chain( () -> getMutinySessionFactory().withTransaction( s -> s
80+
.createNativeQuery( "select id from JsonEntity where jsonAsMap -> 'sport' \\? ?" )
81+
.setParameter( 1, "Chess boxing" )
82+
.getSingleResult() )
83+
)
84+
.invoke( result -> assertThat( result ).isEqualTo( basic.id ) )
85+
);
86+
}
87+
5088
@Test
5189
public void testJsonType(VertxTestContext context) {
5290
Basic basic = new Basic();
@@ -92,6 +130,9 @@ private static class Basic {
92130

93131
private JsonObject jsonObj;
94132

133+
@JdbcTypeCode(SqlTypes.JSON)
134+
Map<String, Object> jsonAsMap;
135+
95136
public Basic() {
96137
}
97138

0 commit comments

Comments
 (0)