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

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


The following commit(s) were added to refs/heads/optimize-postgres-tilestore by 
this push:
     new aaf81d19 Cleanup tests
aaf81d19 is described below

commit aaf81d192613a72501db6cdd1efbefd31fa458b8
Author: Bertil Chapuis <[email protected]>
AuthorDate: Wed Oct 25 13:38:23 2023 +0200

    Cleanup tests
---
 .../tilestore/postgres/PostgresTileStore.java      | 20 ++----
 .../tilestore/postgres/PostgresTileStoreTest.java  | 79 ++--------------------
 2 files changed, 9 insertions(+), 90 deletions(-)

diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresTileStore.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresTileStore.java
index e254e7e1..e57bd51e 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresTileStore.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/postgres/PostgresTileStore.java
@@ -81,7 +81,7 @@ public class PostgresTileStore implements TileStore {
   }
 
 
-  public static TileQuery prepareQuery(Tileset tileset, int zoom) {
+  protected static TileQuery prepareQuery(Tileset tileset, int zoom) {
     // Initialize a builder for the tile query
     var tileQuery = new StringBuilder();
     tileQuery.append("SELECT (");
@@ -117,11 +117,8 @@ public class PostgresTileStore implements TileStore {
               .replace(";", "")
               .replace("?", "??")
               .replace("$zoom", String.valueOf(zoom));
-          var queryWithParams = String.format("""
-              SELECT ST_AsMVTGeom(t.geom, ST_TileEnvelope(?, ?, ?)) AS geom, 
t.tags, t.id
-              FROM (%s) AS t
-              WHERE t.geom && ST_TileEnvelope(?, ?, ?, margin => (64.0/4096))
-              """, sql);
+          var queryWithParams = String.format("SELECT ST_AsMVTGeom(t.geom, 
ST_TileEnvelope(?, ?, ?)) AS geom, t.tags, t.id " +
+                  "FROM (%s) AS t WHERE t.geom && ST_TileEnvelope(?, ?, ?, 
margin => (64.0/4096))", sql);
           layerQuery.append(queryWithParams);
 
           // Increase the parameter count (e.g. ?) and query count
@@ -162,16 +159,7 @@ public class PostgresTileStore implements TileStore {
     return new TileQuery(query, paramCount);
   }
 
-  public static class TileQuery {
-
-    private final String query;
-
-    private final int paramCount;
-
-    public TileQuery(String query, int paramCount) {
-      this.query = query;
-      this.paramCount = paramCount;
-    }
+  public record TileQuery(String query, int paramCount) {
 
     public ByteBuffer execute(Connection connection, TileCoord tileCoord)
         throws SQLException, IOException {
diff --git 
a/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresTileStoreTest.java
 
b/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresTileStoreTest.java
index 0e01747f..2539d17a 100644
--- 
a/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresTileStoreTest.java
+++ 
b/baremaps-core/src/test/java/org/apache/baremaps/tilestore/postgres/PostgresTileStoreTest.java
@@ -21,7 +21,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.util.List;
 import java.util.Map;
-import org.apache.baremaps.tilestore.TileCoord;
 import org.apache.baremaps.vectortile.tileset.Tileset;
 import org.apache.baremaps.vectortile.tileset.TilesetLayer;
 import org.apache.baremaps.vectortile.tileset.TilesetQuery;
@@ -30,8 +29,8 @@ import org.junit.jupiter.api.Test;
 class PostgresTileStoreTest {
 
   @Test
-  void sameQueries() {
-    Tileset tileset = new Tileset();
+  void prepareQuery() {
+    var tileset = new Tileset();
     tileset.setMinzoom(0);
     tileset.setMaxzoom(20);
     tileset.setVectorLayers(List.of(
@@ -39,77 +38,9 @@ class PostgresTileStoreTest {
             List.of(new TilesetQuery(0, 20, "SELECT id, tags, geom FROM 
table"))),
         new TilesetLayer("b", Map.of(), "", 0, 20,
             List.of(new TilesetQuery(0, 20, "SELECT id, tags, geom FROM 
table")))));
-    PostgresTileStore tileStore = new PostgresTileStore(null, tileset);
-    String query = tileStore.withQuery(new TileCoord(0, 0, 10));
+    var query = PostgresTileStore.prepareQuery(tileset, 10);
     assertEquals(
-        """
-            SELECT ((WITH mvtgeom AS (
-            SELECT ST_AsMVTGeom(t.geom, ST_TileEnvelope(10, 0, 0)) AS geom, 
t.tags, t.id
-            FROM (SELECT id, tags, geom FROM table) AS t
-            WHERE t.geom && ST_TileEnvelope(10, 0, 0, margin => (64.0/4096))
-            ) SELECT ST_AsMVT(mvtgeom.*, 'a') FROM mvtgeom
-            ) || (WITH mvtgeom AS (
-            SELECT ST_AsMVTGeom(t.geom, ST_TileEnvelope(10, 0, 0)) AS geom, 
t.tags, t.id
-            FROM (SELECT id, tags, geom FROM table) AS t
-            WHERE t.geom && ST_TileEnvelope(10, 0, 0, margin => (64.0/4096))
-            ) SELECT ST_AsMVT(mvtgeom.*, 'b') FROM mvtgeom
-            )) mvtTile""",
-        query);
-  }
-
-  @Test
-  void differentConditions1() {
-    Tileset tileset = new Tileset();
-    tileset.setMinzoom(0);
-    tileset.setMaxzoom(20);
-    tileset.setVectorLayers(List.of(
-        new TilesetLayer("a", Map.of(), "", 0, 20,
-            List.of(new TilesetQuery(0, 20, "SELECT id, tags, geom FROM 
table"))),
-        new TilesetLayer("b", Map.of(), "", 0, 20, List
-            .of(new TilesetQuery(0, 20, "SELECT id, tags, geom FROM table 
WHERE condition = 1")))));
-    PostgresTileStore tileStore = new PostgresTileStore(null, tileset);
-    String query = tileStore.withQuery(new TileCoord(0, 0, 10));
-    assertEquals("""
-        SELECT ((WITH mvtgeom AS (
-        SELECT ST_AsMVTGeom(t.geom, ST_TileEnvelope(10, 0, 0)) AS geom, 
t.tags, t.id
-        FROM (SELECT id, tags, geom FROM table) AS t
-        WHERE t.geom && ST_TileEnvelope(10, 0, 0, margin => (64.0/4096))
-        ) SELECT ST_AsMVT(mvtgeom.*, 'a') FROM mvtgeom
-        ) || (WITH mvtgeom AS (
-        SELECT ST_AsMVTGeom(t.geom, ST_TileEnvelope(10, 0, 0)) AS geom, 
t.tags, t.id
-        FROM (SELECT id, tags, geom FROM table WHERE condition = 1) AS t
-        WHERE t.geom && ST_TileEnvelope(10, 0, 0, margin => (64.0/4096))
-        ) SELECT ST_AsMVT(mvtgeom.*, 'b') FROM mvtgeom
-        )) mvtTile""",
-        query);
-  }
-
-  @Test
-  void differentConditions2() {
-    Tileset tileset = new Tileset();
-    tileset.setMinzoom(0);
-    tileset.setMaxzoom(20);
-    tileset.setVectorLayers(List.of(
-        new TilesetLayer("a", Map.of(), "", 0, 20,
-            List.of(
-                new TilesetQuery(0, 20, "SELECT id, tags, geom FROM table 
WHERE condition = 1"))),
-        new TilesetLayer("b", Map.of(), "", 0, 20, List
-            .of(new TilesetQuery(0, 20, "SELECT id, tags, geom FROM table 
WHERE condition = 2")))));
-    PostgresTileStore tileStore = new PostgresTileStore(null, tileset);
-    String query = tileStore.withQuery(new TileCoord(0, 0, 10));
-    assertEquals(
-        """
-            SELECT ((WITH mvtgeom AS (
-            SELECT ST_AsMVTGeom(t.geom, ST_TileEnvelope(10, 0, 0)) AS geom, 
t.tags, t.id
-            FROM (SELECT id, tags, geom FROM table WHERE condition = 1) AS t
-            WHERE t.geom && ST_TileEnvelope(10, 0, 0, margin => (64.0/4096))
-            ) SELECT ST_AsMVT(mvtgeom.*, 'a') FROM mvtgeom
-            ) || (WITH mvtgeom AS (
-            SELECT ST_AsMVTGeom(t.geom, ST_TileEnvelope(10, 0, 0)) AS geom, 
t.tags, t.id
-            FROM (SELECT id, tags, geom FROM table WHERE condition = 2) AS t
-            WHERE t.geom && ST_TileEnvelope(10, 0, 0, margin => (64.0/4096))
-            ) SELECT ST_AsMVT(mvtgeom.*, 'b') FROM mvtgeom
-            )) mvtTile""",
-        query);
+        "SELECT ((WITH mvtGeom AS (SELECT ST_AsMVTGeom(t.geom, 
ST_TileEnvelope(?, ?, ?)) AS geom, t.tags, t.id FROM (SELECT id, tags, geom 
FROM table) AS t WHERE t.geom && ST_TileEnvelope(?, ?, ?, margin => 
(64.0/4096))) SELECT ST_AsMVT(mvtGeom.*, 'a') FROM mvtGeom) || (WITH mvtGeom AS 
(SELECT ST_AsMVTGeom(t.geom, ST_TileEnvelope(?, ?, ?)) AS geom, t.tags, t.id 
FROM (SELECT id, tags, geom FROM table) AS t WHERE t.geom && ST_TileEnvelope(?, 
?, ?, margin => (64.0/4096))) SELECT ST_AsMVT(mv [...]
+        query.query());
   }
 }

Reply via email to