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