[SCM] PostGIS branch master updated. 3.6.0rc2-630-g6c7ab193e

git at osgeo.org git at osgeo.org
Sat Jun 20 05:47:35 PDT 2026


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".

The branch, master has been updated
       via  6c7ab193ea99ea6dabd5fb05dac9a995f4aa6be4 (commit)
      from  7a62d652e3a3ed1402e633a198f8871464c27c35 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 6c7ab193ea99ea6dabd5fb05dac9a995f4aa6be4
Author: Darafei Praliaskouski <me at komzpa.net>
Date:   Sat Jun 20 16:45:34 2026 +0400

    raster2pgsql: avoid padding single-tile overviews
    
    Trim overview edge tiles whenever padding is disabled, including the case where the overview fits in one tile. Compute overview tile counts independently for each axis so one matching dimension does not suppress tiling on the other.
    
    Add a loader regression that builds a single-tile overview with a larger requested tile size and verifies the generated overview keeps the unpadded dimensions and extent.
    
    Closes #2832
    
    Closes https://github.com/postgis/postgis/pull/995

diff --git a/NEWS b/NEWS
index a8b25af45..42f7dbaa8 100644
--- a/NEWS
+++ b/NEWS
@@ -68,6 +68,8 @@ To take advantage of all postgis_sfcgal extension features SFCGAL 2.3+ is needed
 
 * Bug Fixes *
 
+ - #2832, [raster] Avoid padding single-tile raster2pgsql overviews
+          when padding is not requested (Darafei Praliaskouski)
  - Fix WKB and TWKB parser resource exhaustion on malformed input
           (Darafei Praliaskouski)
  - #6083, Pass configured dependency include paths to fuzzer smoke builds
diff --git a/raster/loader/raster2pgsql.c b/raster/loader/raster2pgsql.c
index 68f68b526..e8ddcc478 100644
--- a/raster/loader/raster2pgsql.c
+++ b/raster/loader/raster2pgsql.c
@@ -1424,13 +1424,10 @@ build_overview(int idx, RTLOADERCFG *config, RASTERINFO *info, uint32_t ovx, STR
 		tile_size[1] = config->tile_size[1];
 
 	/* number of tiles */
-	if (
-		tile_size[0] != dimOv[0] &&
-		tile_size[1] != dimOv[1]
-	) {
+	if (tile_size[0] != dimOv[0])
 		ntiles[0] = (dimOv[0] + tile_size[0] -  1) / tile_size[0];
-		ntiles[1] = (dimOv[1] + tile_size[1]  - 1) / tile_size[1];
-	}
+	if (tile_size[1] != dimOv[1])
+		ntiles[1] = (dimOv[1] + tile_size[1] - 1) / tile_size[1];
 
 	/* working copy of geotransform matrix */
 	memcpy(gt, gtOv, sizeof(double) * 6);
@@ -1440,7 +1437,7 @@ build_overview(int idx, RTLOADERCFG *config, RASTERINFO *info, uint32_t ovx, STR
 	for (ytile = 0; ytile < ntiles[1]; ytile++) {
 
 		/* edge y tile */
-		if (!config->pad_tile && ntiles[1] > 1 && (ytile + 1) == ntiles[1])
+		if (!config->pad_tile && (ytile + 1) == ntiles[1])
 			_tile_size[1] = dimOv[1] - (ytile * tile_size[1]);
 		else
 			_tile_size[1] = tile_size[1];
@@ -1452,7 +1449,7 @@ build_overview(int idx, RTLOADERCFG *config, RASTERINFO *info, uint32_t ovx, STR
 			*/
 
 			/* edge x tile */
-			if (!config->pad_tile && ntiles[0] > 1 && (xtile + 1) == ntiles[0])
+			if (!config->pad_tile && (xtile + 1) == ntiles[0])
 				_tile_size[0] = dimOv[0] - (xtile * tile_size[0]);
 			else
 				_tile_size[0] = tile_size[0];
diff --git a/raster/test/regress/loader/OverviewNoPadding-post.sql b/raster/test/regress/loader/OverviewNoPadding-post.sql
new file mode 100644
index 000000000..5739609f6
--- /dev/null
+++ b/raster/test/regress/loader/OverviewNoPadding-post.sql
@@ -0,0 +1,2 @@
+-- "loadedrast" is removed automatically !
+DROP TABLE o_16_loadedrast;
diff --git a/raster/test/regress/loader/OverviewNoPadding.opts b/raster/test/regress/loader/OverviewNoPadding.opts
new file mode 100644
index 000000000..e8044640c
--- /dev/null
+++ b/raster/test/regress/loader/OverviewNoPadding.opts
@@ -0,0 +1 @@
+-l 16 -t 256x256
diff --git a/raster/test/regress/loader/OverviewNoPadding.select.expected b/raster/test/regress/loader/OverviewNoPadding.select.expected
new file mode 100644
index 000000000..ebb6336f3
--- /dev/null
+++ b/raster/test/regress/loader/OverviewNoPadding.select.expected
@@ -0,0 +1,3 @@
+1
+6|3
+POLYGON((0 0,96 0,96 -48,0 -48,0 0))
diff --git a/raster/test/regress/loader/OverviewNoPadding.select.sql b/raster/test/regress/loader/OverviewNoPadding.select.sql
new file mode 100644
index 000000000..1ba47a441
--- /dev/null
+++ b/raster/test/regress/loader/OverviewNoPadding.select.sql
@@ -0,0 +1,3 @@
+SELECT count(*) FROM o_16_loadedrast;
+SELECT ST_Width(rast), ST_Height(rast) FROM o_16_loadedrast;
+SELECT ST_AsText(ST_Envelope(rast)) FROM o_16_loadedrast;
diff --git a/raster/test/regress/loader/OverviewNoPadding.tif.ref b/raster/test/regress/loader/OverviewNoPadding.tif.ref
new file mode 100644
index 000000000..1e1cc0fc8
--- /dev/null
+++ b/raster/test/regress/loader/OverviewNoPadding.tif.ref
@@ -0,0 +1 @@
+testraster.tif
diff --git a/raster/test/regress/tests.mk.in b/raster/test/regress/tests.mk.in
index 111be04e7..996f26583 100644
--- a/raster/test/regress/tests.mk.in
+++ b/raster/test/regress/tests.mk.in
@@ -130,6 +130,7 @@ RASTER_TEST_BUGS = \
 RASTER_TEST_LOADER = \
 	$(top_srcdir)/raster/test/regress/loader/Basic \
 	$(top_srcdir)/raster/test/regress/loader/Projected \
+	$(top_srcdir)/raster/test/regress/loader/OverviewNoPadding \
 	$(top_srcdir)/raster/test/regress/loader/BasicCopy \
 	$(top_srcdir)/raster/test/regress/loader/BasicFilename \
 	$(top_srcdir)/raster/test/regress/loader/BasicOutDB \

-----------------------------------------------------------------------

Summary of changes:
 NEWS                                                        |  2 ++
 raster/loader/raster2pgsql.c                                | 13 +++++--------
 .../{Projected-post.sql => OverviewNoPadding-post.sql}      |  2 +-
 raster/test/regress/loader/OverviewNoPadding.opts           |  1 +
 .../test/regress/loader/OverviewNoPadding.select.expected   |  3 +++
 raster/test/regress/loader/OverviewNoPadding.select.sql     |  3 +++
 .../loader/{Basic.tif.ref => OverviewNoPadding.tif.ref}     |  0
 raster/test/regress/tests.mk.in                             |  1 +
 8 files changed, 16 insertions(+), 9 deletions(-)
 copy raster/test/regress/loader/{Projected-post.sql => OverviewNoPadding-post.sql} (60%)
 create mode 100644 raster/test/regress/loader/OverviewNoPadding.opts
 create mode 100644 raster/test/regress/loader/OverviewNoPadding.select.expected
 create mode 100644 raster/test/regress/loader/OverviewNoPadding.select.sql
 copy raster/test/regress/loader/{Basic.tif.ref => OverviewNoPadding.tif.ref} (100%)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list