[SCM] PostGIS branch master updated. 3.6.0rc2-640-gc94f62361
git at osgeo.org
git at osgeo.org
Sun Jun 21 06:34:29 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 c94f62361826e4dc14b660b31e6614727db8deb3 (commit)
via f82a1015b8772b570e05ad552eed4029ff718dd5 (commit)
from 0482d073a2d174a544428664fa7cebcd36b7d96a (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 c94f62361826e4dc14b660b31e6614727db8deb3
Author: Darafei Praliaskouski <me at komzpa.net>
Date: Sun Jun 21 17:33:10 2026 +0400
Use escape strings for version regexes
Make the PostGIS script-version comparison helper and its regression checks independent of standard_conforming_strings. This avoids warnings during install when standard_conforming_strings is off, which the regression harness treats as load failure.\n\nCloses #2808
diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in
index 8abfd90a2..027170b68 100644
--- a/postgis/postgis.sql.in
+++ b/postgis/postgis.sql.in
@@ -3161,7 +3161,7 @@ CREATE OR REPLACE FUNCTION _postgis_scripts_version_cmp_key(ver text)
BEGIN
ver_match := pg_catalog.regexp_match(
pg_catalog.lower(ver),
- '^([0-9]+)\.([0-9]+)\.([0-9]+)(dev|alpha|beta|rc)?([0-9]*)([^0-9a-z].*)?$'
+ E'^([0-9]+)\\.([0-9]+)\\.([0-9]+)(dev|alpha|beta|rc)?([0-9]*)([^0-9a-z].*)?$'
);
IF ver_match IS NULL THEN
RETURN NULL;
diff --git a/regress/core/postgis_full_version.sql b/regress/core/postgis_full_version.sql
index 88e9a3c62..5cbc5d9ed 100644
--- a/regress/core/postgis_full_version.sql
+++ b/regress/core/postgis_full_version.sql
@@ -25,7 +25,7 @@ LANGUAGE 'sql' IMMUTABLE;
-- Older component script versions still mean the installed procs need upgrade.
SELECT 'topology_old_scripts',
postgis_full_version() ~
- 'TOPOLOGY \(topology procs from "1\.0\.0" need upgrade\)';
+ E'TOPOLOGY \\(topology procs from "1\\.0\\.0" need upgrade\\)';
CREATE OR REPLACE FUNCTION topology.postgis_topology_scripts_installed()
RETURNS text
@@ -52,17 +52,17 @@ LANGUAGE 'sql' IMMUTABLE;
-- includes final releases newer than release candidates and later RCs.
SELECT 'topology_newer_scripts',
postgis_full_version() ~
- 'TOPOLOGY \(topology procs from "3\.7\.0" are newer than core procs from "3\.7\.0rc1"\)';
+ E'TOPOLOGY \\(topology procs from "3\\.7\\.0" are newer than core procs from "3\\.7\\.0rc1"\\)';
SELECT 'raster_newer_scripts',
postgis_full_version() ~
- '\(raster procs from "3\.7\.0rc2" are newer than core procs from "3\.7\.0rc1"\)';
+ E'\\(raster procs from "3\\.7\\.0rc2" are newer than core procs from "3\\.7\\.0rc1"\\)';
-- A prerelease older than the core prerelease is still reported as needing
-- upgrade, even when its numeric major/minor/micro components match.
SELECT 'sfcgal_older_prerelease',
postgis_full_version() ~
- '\(sfcgal procs from "3\.7\.0beta1" need upgrade\)';
+ E'\\(sfcgal procs from "3\\.7\\.0beta1" need upgrade\\)';
CREATE OR REPLACE FUNCTION postgis_sfcgal_scripts_installed()
RETURNS text
@@ -71,6 +71,6 @@ LANGUAGE 'sql' IMMUTABLE;
SELECT 'sfcgal_newer_scripts',
postgis_full_version() ~
- '\(sfcgal procs from "3\.7\.0" are newer than core procs from "3\.7\.0rc1"\)';
+ E'\\(sfcgal procs from "3\\.7\\.0" are newer than core procs from "3\\.7\\.0rc1"\\)';
ROLLBACK;
commit f82a1015b8772b570e05ad552eed4029ff718dd5
Author: Darafei Praliaskouski <me at komzpa.net>
Date: Sun Jun 21 17:26:13 2026 +0400
Fix red main CI failures
diff --git a/raster/rt_core/rt_warp.c b/raster/rt_core/rt_warp.c
index 2cdda3c1e..8058529ba 100644
--- a/raster/rt_core/rt_warp.c
+++ b/raster/rt_core/rt_warp.c
@@ -163,6 +163,12 @@ rt_raster rt_raster_gdal_warp(
) {
CPLErr cplerr;
char *dst_options[] = {"SUBCLASS=VRTWarpedDataset", NULL};
+ const char *init_dest_nodata_option = "INIT_DEST=NO_DATA";
+#if POSTGIS_GDAL_VERSION >= 30302
+ const char *unified_src_nodata_option = "UNIFIED_SRC_NODATA=PARTIAL";
+#else
+ const char *unified_src_nodata_option = "UNIFIED_SRC_NODATA=NO";
+#endif
_rti_warp_arg arg = NULL;
int nodata_count = 0;
@@ -197,6 +203,7 @@ rt_raster rt_raster_gdal_warp(
int numBands = 0;
int nodata_pos = 0;
int data_pos = 0;
+ int use_init_dest_nodata = 0;
int subspatial = 0;
@@ -865,17 +872,21 @@ rt_raster rt_raster_gdal_warp(
arg->wopts->hDstDS = arg->dst.ds;
arg->wopts->pfnTransformer = arg->transform.func;
arg->wopts->pTransformerArg = arg->transform.arg.transform;
- arg->wopts->papszWarpOptions = (char **) CPLMalloc(sizeof(char *) * 3);
- arg->wopts->papszWarpOptions[0] = (char *) CPLMalloc(sizeof(char) * (strlen("INIT_DEST=NO_DATA") + 1));
- strcpy(arg->wopts->papszWarpOptions[0], "INIT_DEST=NO_DATA");
-#if POSTGIS_GDAL_VERSION >= 30302
- arg->wopts->papszWarpOptions[1] = (char *) CPLMalloc(sizeof(char) * (strlen("UNIFIED_SRC_NODATA=PARTIAL") + 1));
- strcpy(arg->wopts->papszWarpOptions[1], "UNIFIED_SRC_NODATA=PARTIAL");
-#else
- arg->wopts->papszWarpOptions[1] = (char *) CPLMalloc(sizeof(char) * (strlen("UNIFIED_SRC_NODATA=NO") + 1));
- strcpy(arg->wopts->papszWarpOptions[1], "UNIFIED_SRC_NODATA=NO");
-#endif
- arg->wopts->papszWarpOptions[2] = NULL;
+ /*
+ * GDAL 3.11 warns, and later treats as an error, when INIT_DEST=NO_DATA
+ * is requested without destination nodata values for every band.
+ */
+ use_init_dest_nodata = numBands > 0 && nodata_count == numBands;
+ arg->wopts->papszWarpOptions =
+ (char **) CPLMalloc(sizeof(char *) * (use_init_dest_nodata ? 3 : 2));
+ i = 0;
+ if (use_init_dest_nodata) {
+ arg->wopts->papszWarpOptions[i] = (char *) CPLMalloc(sizeof(char) * (strlen(init_dest_nodata_option) + 1));
+ strcpy(arg->wopts->papszWarpOptions[i++], init_dest_nodata_option);
+ }
+ arg->wopts->papszWarpOptions[i] = (char *) CPLMalloc(sizeof(char) * (strlen(unified_src_nodata_option) + 1));
+ strcpy(arg->wopts->papszWarpOptions[i++], unified_src_nodata_option);
+ arg->wopts->papszWarpOptions[i] = NULL;
/* band mapping */
arg->wopts->nBandCount = numBands;
diff --git a/raster/test/regress/loader/LongMaintenance.opts b/raster/test/regress/loader/LongMaintenance.opts
index 0320409c5..e63937728 100644
--- a/raster/test/regress/loader/LongMaintenance.opts
+++ b/raster/test/regress/loader/LongMaintenance.opts
@@ -1,2 +1 @@
-# Exercise raster-only long maintenance actions and constraint creation.
--add-constraints --vacuum --analyze
diff --git a/regress/loader/LongOptions.opts b/regress/loader/LongOptions.opts
index 098600e4b..dc46a9b2d 100644
--- a/regress/loader/LongOptions.opts
+++ b/regress/loader/LongOptions.opts
@@ -1,3 +1 @@
-# Exercise the public long action names as one loader invocation:
-# drop, create-if-missing, load, idempotent index, no transaction, and analyze.
---drop-table --create-table --load-data --create-index --if-not-exists --no-transaction --no-analyze --analyze
+--drop-table --create-table --load-data --create-index --if-not-exists --no-transaction --analyze
-----------------------------------------------------------------------
Summary of changes:
postgis/postgis.sql.in | 2 +-
raster/rt_core/rt_warp.c | 33 ++++++++++++++++---------
raster/test/regress/loader/LongMaintenance.opts | 1 -
regress/core/postgis_full_version.sql | 10 ++++----
regress/loader/LongOptions.opts | 4 +--
5 files changed, 29 insertions(+), 21 deletions(-)
hooks/post-receive
--
PostGIS
More information about the postgis-tickets
mailing list