This is an automated email from the ASF dual-hosted git repository.

bchapuis pushed a commit to branch 745-daylight
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git

commit 17578ec270c4d2918efead7c50e370fd24bca45b
Author: Bertil Chapuis <[email protected]>
AuthorDate: Tue Aug 29 08:16:34 2023 +0200

    Replace ANY by IN in delete query
---
 .../openstreetmap/postgres/PostgresNodeRepository.java        |  2 +-
 .../openstreetmap/postgres/PostgresRelationRepository.java    | 11 +++++------
 .../openstreetmap/postgres/PostgresWayRepository.java         | 11 +++++------
 3 files changed, 11 insertions(+), 13 deletions(-)

diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresNodeRepository.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresNodeRepository.java
index 27ecdc2f..59ca5a02 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresNodeRepository.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresNodeRepository.java
@@ -121,7 +121,7 @@ public class PostgresNodeRepository implements 
NodeRepository {
         tableName, idColumn, versionColumn, uidColumn, timestampColumn, 
changesetColumn, tagsColumn,
         longitudeColumn, latitudeColumn, geometryColumn);
     this.delete = String.format("DELETE FROM %1$s WHERE %2$s = ?", tableName, 
idColumn);
-    this.deleteIn = String.format("DELETE FROM %1$s WHERE %2$s = ANY (?)", 
tableName, idColumn);
+    this.deleteIn = String.format("DELETE FROM %1$s WHERE %2$s IN (?)", 
tableName, idColumn);
     this.copy = String.format(
         "COPY %1$s (%2$s, %3$s, %4$s, %5$s, %6$s, %7$s, %8$s, %9$s, %10$s) 
FROM STDIN BINARY",
         tableName, idColumn, versionColumn, uidColumn, timestampColumn, 
changesetColumn, tagsColumn,
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresRelationRepository.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresRelationRepository.java
index 6211f091..edbaef23 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresRelationRepository.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresRelationRepository.java
@@ -53,6 +53,8 @@ public class PostgresRelationRepository implements 
RelationRepository {
 
   private final String delete;
 
+  private final String deleteIn;
+
   private final String copy;
 
   /**
@@ -125,6 +127,7 @@ public class PostgresRelationRepository implements 
RelationRepository {
         %11$s = excluded.%11$s""", tableName, idColumn, versionColumn, 
uidColumn, timestampColumn,
         changesetColumn, tagsColumn, memberRefs, memberTypes, memberRoles, 
geometryColumn);
     this.delete = String.format("DELETE FROM %1$s WHERE %2$s = ?", tableName, 
idColumn);
+    this.deleteIn = String.format("DELETE FROM %1$s WHERE %2$s IN (?)", 
tableName, idColumn);
     this.copy = String.format(
         "COPY %1$s (%2$s, %3$s, %4$s, %5$s, %6$s, %7$s, %8$s, %9$s, %10$s, 
%11$s) FROM STDIN BINARY",
         tableName, idColumn, versionColumn, uidColumn, timestampColumn, 
changesetColumn, tagsColumn,
@@ -254,12 +257,8 @@ public class PostgresRelationRepository implements 
RelationRepository {
       return;
     }
     try (Connection connection = dataSource.getConnection();
-        PreparedStatement statement = connection.prepareStatement(delete)) {
-      for (Long key : keys) {
-        statement.clearParameters();
-        statement.setObject(1, key);
-        statement.addBatch();
-      }
+        PreparedStatement statement = connection.prepareStatement(deleteIn)) {
+      statement.setArray(1, connection.createArrayOf("int8", keys.toArray()));
       statement.executeBatch();
     } catch (SQLException e) {
       throw new RepositoryException(e);
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresWayRepository.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresWayRepository.java
index cb419700..72eab84e 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresWayRepository.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresWayRepository.java
@@ -57,6 +57,8 @@ public class PostgresWayRepository implements WayRepository {
 
   private final String delete;
 
+  private final String deleteIn;
+
   private final String copy;
 
   /**
@@ -122,6 +124,7 @@ public class PostgresWayRepository implements WayRepository 
{
         %9$s = excluded.%9$s""", tableName, idColumn, versionColumn, 
uidColumn, timestampColumn,
         changesetColumn, tagsColumn, nodesColumn, geometryColumn);
     this.delete = String.format("DELETE FROM %1$s WHERE %2$s = ?", tableName, 
idColumn);
+    this.deleteIn = String.format("DELETE FROM %1$s WHERE %2$s IN (?)", 
tableName, idColumn);
     this.copy = String.format(
         "COPY %1$s (%2$s, %3$s, %4$s, %5$s, %6$s, %7$s, %8$s, %9$s) FROM STDIN 
BINARY", tableName,
         idColumn, versionColumn, uidColumn, timestampColumn, changesetColumn, 
tagsColumn,
@@ -251,12 +254,8 @@ public class PostgresWayRepository implements 
WayRepository {
       return;
     }
     try (Connection connection = dataSource.getConnection();
-        PreparedStatement statement = connection.prepareStatement(delete)) {
-      for (Long key : keys) {
-        statement.clearParameters();
-        statement.setObject(1, key);
-        statement.execute();
-      }
+        PreparedStatement statement = connection.prepareStatement(deleteIn)) {
+      statement.setArray(1, connection.createArrayOf("int8", keys.toArray()));
       statement.executeBatch();
     } catch (SQLException e) {
       throw new RepositoryException(e);

Reply via email to