Skip to content

Commit af72584

Browse files
authored
Merge pull request #16 from sqlcj-dev/feature/postgresql-integration-null-parameter-binding
feat: bind null query parameters and verify generation on PostgreSQL
2 parents 8ef4eab + 57c75a2 commit af72584

6 files changed

Lines changed: 503 additions & 18 deletions

File tree

‎pom.xml‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,20 @@
1818
<spotless.eclipse.version>4.40</spotless.eclipse.version>
1919
</properties>
2020

21+
<dependencyManagement>
22+
<dependencies>
23+
<!--
24+
Testcontainers pulls commons-compress 1.24.0, which carries
25+
CVE-2024-25710 and CVE-2024-26308. Both are fixed in 1.26.0.
26+
-->
27+
<dependency>
28+
<groupId>org.apache.commons</groupId>
29+
<artifactId>commons-compress</artifactId>
30+
<version>1.28.0</version>
31+
</dependency>
32+
</dependencies>
33+
</dependencyManagement>
34+
2135
<dependencies>
2236
<dependency>
2337
<groupId>info.picocli</groupId>
@@ -46,6 +60,18 @@
4660
<version>2.4.240</version>
4761
<scope>test</scope>
4862
</dependency>
63+
<dependency>
64+
<groupId>org.testcontainers</groupId>
65+
<artifactId>postgresql</artifactId>
66+
<version>1.21.4</version>
67+
<scope>test</scope>
68+
</dependency>
69+
<dependency>
70+
<groupId>org.postgresql</groupId>
71+
<artifactId>postgresql</artifactId>
72+
<version>42.7.13</version>
73+
<scope>test</scope>
74+
</dependency>
4975
</dependencies>
5076

5177
<build>

‎src/main/java/dev/sqlcj/generator/JavaCodeGenerator.java‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,13 +352,16 @@ private boolean isLineEnd(String sql, int index) {
352352
/**
353353
* Renders the executor arguments in the textual order of the JDBC
354354
* {@code ?} positions, using the logically ordered method parameter names.
355+
*
356+
* <p>The argument list is built with {@code java.util.Arrays.asList} rather
357+
* than {@code List.of} so that a null argument can be bound.
355358
*/
356359
private String generateParameterList(QueryModel query, JavaNames names) {
357360
Map<Integer, String> namesByIndex = generateParameterNamesByIndex(query, names);
358361

359362
return query.bindingParameterIndexes().stream()
360363
.map(namesByIndex::get)
361-
.collect(Collectors.joining(", ", "List.of(", ")"));
364+
.collect(Collectors.joining(", ", "java.util.Arrays.asList(", ")"));
362365
}
363366

364367
private Map<Integer, String> generateParameterNamesByIndex(QueryModel query, JavaNames names) {

0 commit comments

Comments
 (0)