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

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

commit f7cc1b56ee32417b6a24a19264a487f58a282872
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sun Nov 26 11:50:54 2023 +0100

    Replace CTE with subquery in PostgresTileStore and do some cleaning
---
 .run/basemap-dev.run.xml                                      |  7 ++++++-
 .run/basemap-export-mbtiles.run.xml                           | 11 -----------
 .run/basemap-export-pmtiles.run.xml                           | 11 -----------
 .run/basemap-workflow.run.xml                                 |  5 -----
 .../java/org/apache/baremaps/tilestore/pmtiles/PMTiles.java   |  4 ++--
 .../org/apache/baremaps/tilestore/pmtiles/PMTilesReader.java  |  5 ++---
 .../apache/baremaps/tilestore/postgres/PostgresTileStore.java |  9 ++++-----
 .../org/apache/baremaps/tilestore/pmtiles/PMTilesTest.java    |  2 --
 .../baremaps/tilestore/postgres/PostgresTileStoreTest.java    |  2 +-
 9 files changed, 15 insertions(+), 41 deletions(-)

diff --git a/.run/basemap-dev.run.xml b/.run/basemap-dev.run.xml
index 4b61bfcd..af9438a4 100644
--- a/.run/basemap-dev.run.xml
+++ b/.run/basemap-dev.run.xml
@@ -2,8 +2,13 @@
   <configuration default="false" name="basemap-dev" type="Application" 
factoryName="Application">
     <option name="MAIN_CLASS_NAME" value="org.apache.baremaps.cli.Baremaps" />
     <module name="baremaps-cli" />
-    <option name="PROGRAM_PARAMETERS" value="map dev --tileset tileset.js 
--style style.js" />
+    <option name="PROGRAM_PARAMETERS" value="map dev --tileset tileset.js 
--style style.js --log-level DEBUG" />
     <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/basemap" />
+    <extension 
name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">
+      <option name="credential" />
+      <option name="region" />
+      <option name="useCurrentConnection" value="false" />
+    </extension>
     <method v="2">
       <option name="Make" enabled="true" />
     </method>
diff --git a/.run/basemap-export-mbtiles.run.xml 
b/.run/basemap-export-mbtiles.run.xml
index e71796a8..d04d8a2a 100644
--- a/.run/basemap-export-mbtiles.run.xml
+++ b/.run/basemap-export-mbtiles.run.xml
@@ -4,17 +4,6 @@
     <module name="baremaps-cli" />
     <option name="PROGRAM_PARAMETERS" value="map export --tileset tileset.js 
--repository tiles.mbtiles --format mbtiles" />
     <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/basemap" />
-    <extension name="coverage">
-      <pattern>
-        <option name="PATTERN" value="org.apache.baremaps.server.ogcapi.*" />
-        <option name="ENABLED" value="true" />
-      </pattern>
-    </extension>
-    <extension 
name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">
-      <option name="credential" />
-      <option name="region" />
-      <option name="useCurrentConnection" value="false" />
-    </extension>
     <method v="2">
       <option name="Make" enabled="true" />
     </method>
diff --git a/.run/basemap-export-pmtiles.run.xml 
b/.run/basemap-export-pmtiles.run.xml
index 5b612240..840a4774 100644
--- a/.run/basemap-export-pmtiles.run.xml
+++ b/.run/basemap-export-pmtiles.run.xml
@@ -4,17 +4,6 @@
     <module name="baremaps-cli" />
     <option name="PROGRAM_PARAMETERS" value="map export --tileset tileset.js 
--repository tiles.mbtiles --format pmtiles" />
     <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/basemap" />
-    <extension name="coverage">
-      <pattern>
-        <option name="PATTERN" value="org.apache.baremaps.server.ogcapi.*" />
-        <option name="ENABLED" value="true" />
-      </pattern>
-    </extension>
-    <extension 
name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">
-      <option name="credential" />
-      <option name="region" />
-      <option name="useCurrentConnection" value="false" />
-    </extension>
     <method v="2">
       <option name="Make" enabled="true" />
     </method>
diff --git a/.run/basemap-workflow.run.xml b/.run/basemap-workflow.run.xml
index c10d068a..663c874a 100644
--- a/.run/basemap-workflow.run.xml
+++ b/.run/basemap-workflow.run.xml
@@ -4,11 +4,6 @@
     <module name="baremaps-cli" />
     <option name="PROGRAM_PARAMETERS" value="workflow execute --file 
import.js" />
     <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/basemap" />
-    <extension 
name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">
-      <option name="credential" />
-      <option name="region" />
-      <option name="useCurrentConnection" value="false" />
-    </extension>
     <method v="2">
       <option name="Make" enabled="true" />
     </method>
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTiles.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTiles.java
index 0e83c018..e8bf2f30 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTiles.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTiles.java
@@ -332,8 +332,8 @@ public class PMTiles {
   public static Directories buildRootLeaves(List<Entry> entries, int leafSize) 
throws IOException {
     var rootEntries = new ArrayList<Entry>();
     var numLeaves = 0;
-    byte[] leavesBytes = null;
-    byte[] rootBytes = null;
+    byte[] leavesBytes;
+    byte[] rootBytes;
 
     try (var leavesOutput = new ByteArrayOutputStream();
         var leavesDataOutput = new LittleEndianDataOutputStream(leavesOutput)) 
{
diff --git 
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTilesReader.java
 
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTilesReader.java
index 24992e38..42a43af4 100644
--- 
a/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTilesReader.java
+++ 
b/baremaps-core/src/main/java/org/apache/baremaps/tilestore/pmtiles/PMTilesReader.java
@@ -52,13 +52,12 @@ public class PMTilesReader {
   public List<Entry> getRootDirectory() {
     if (rootEntries == null) {
       var header = getHeader();
-      rootEntries =
-          getDirectory(header.getRootDirectoryOffset(), (int) 
header.getRootDirectoryLength());
+      rootEntries = getDirectory(header.getRootDirectoryOffset());
     }
     return rootEntries;
   }
 
-  public List<Entry> getDirectory(long offset, int length) {
+  public List<Entry> getDirectory(long offset) {
     var header = getHeader();
     try (var input = Files.newInputStream(path)) {
       input.skip(offset);
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 dd640a74..382adb98 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
@@ -128,7 +128,7 @@ public class PostgresTileStore implements TileStore {
   protected static Query prepareQuery(Tileset tileset, int zoom) {
     // Initialize a builder for the tile sql
     var tileSql = new StringBuilder();
-    tileSql.append("SELECT (");
+    tileSql.append("SELECT ");
 
     // Iterate over the layers and keep track of the number of layers and 
parameters included in the
     // final sql
@@ -139,7 +139,7 @@ public class PostgresTileStore implements TileStore {
 
       // Initialize a builder for the layer sql
       var layerSql = new StringBuilder();
-      var layerHead = "(WITH mvtGeom AS (";
+      var layerHead = String.format("(SELECT ST_AsMVT(mvtGeom.*, '%s') FROM 
(", layer.getId());
       layerSql.append(layerHead);
 
       // Iterate over the queries and keep track of the number of queries 
included in the final
@@ -175,8 +175,7 @@ public class PostgresTileStore implements TileStore {
       }
 
       // Add the tail of the layer sql
-      var layerQueryTail =
-          String.format(") SELECT ST_AsMVT(mvtGeom.*, '%s') FROM mvtGeom)", 
layer.getId());
+      var layerQueryTail = ") AS mvtGeom)";
       layerSql.append(layerQueryTail);
 
       // Only include the layer sql if queries were included for this layer
@@ -196,7 +195,7 @@ public class PostgresTileStore implements TileStore {
     }
 
     // Add the tail of the tile sql
-    var tileQueryTail = ") mvtTile";
+    var tileQueryTail = " mvtTile";
     tileSql.append(tileQueryTail);
 
     // Format the sql query
diff --git 
a/baremaps-core/src/test/java/org/apache/baremaps/tilestore/pmtiles/PMTilesTest.java
 
b/baremaps-core/src/test/java/org/apache/baremaps/tilestore/pmtiles/PMTilesTest.java
index fd60b197..e078d1d5 100644
--- 
a/baremaps-core/src/test/java/org/apache/baremaps/tilestore/pmtiles/PMTilesTest.java
+++ 
b/baremaps-core/src/test/java/org/apache/baremaps/tilestore/pmtiles/PMTilesTest.java
@@ -194,8 +194,6 @@ class PMTilesTest {
     var output = new LittleEndianDataOutputStream(array);
     PMTiles.serializeHeader(output, header);
 
-    var array2 = array.toByteArray();
-
     var input = new LittleEndianDataInputStream(new 
ByteArrayInputStream(array.toByteArray()));
     var header2 = PMTiles.deserializeHeader(input);
 
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 f146a2cf..24892ac1 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
@@ -40,7 +40,7 @@ class PostgresTileStoreTest {
             List.of(new TilesetQuery(0, 20, "SELECT id, tags, geom FROM 
table")))));
     var query = PostgresTileStore.prepareQuery(tileset, 10);
     assertEquals(
-        "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 [...]
+        "SELECT (SELECT ST_AsMVT(mvtGeom.*, 'a') FROM (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))) AS mvtGeom) || (SELECT ST_AsMVT(mvtGeom.*, 'b') FROM 
(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))) AS mvtGeom) [...]
         query.sql());
   }
 }

Reply via email to