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);
