[SCM] PostGIS branch master updated. 3.5.0-30-gf8b6beb84

git at osgeo.org git at osgeo.org
Tue Oct 22 14:29:07 PDT 2024


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  f8b6beb840c6beefd8d61d5d6ff7574d0ae2e63f (commit)
       via  db1750887985f849c1fbffbb8cfcd040307f38da (commit)
       via  8939d501c9a22a5cfe9add9acb3a0e4d729a0d1b (commit)
       via  6bd6cf8e34e4c118d8633b0ee6f16e23d619a2c8 (commit)
       via  d2860f337cea095b01346307cdaa026460d525ad (commit)
      from  b5fbbdd742effd92bca5f235c22c4fcc39d99c34 (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 f8b6beb840c6beefd8d61d5d6ff7574d0ae2e63f
Merge: b5fbbdd74 db1750887
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Tue Oct 22 14:29:03 2024 -0700

    Merge branch 'justsml-docs/fix-kmeans-args'


commit db1750887985f849c1fbffbb8cfcd040307f38da
Author: Regina Obe <lr at pcorp.us>
Date:   Tue Oct 22 12:01:58 2024 -0400

    MISSING SCHEMA qualifications
    
     - Schema qualify all uses of spatial_ref_sys
       and postgis functions in postgis.sql.in script
     - Schema qualify postgis and raster functions
        and types in rtpostgis.sql.in
    References #5790 for PostGIS 3.6.0

diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in
index b45ac89ae..6b492a2d7 100644
--- a/postgis/postgis.sql.in
+++ b/postgis/postgis.sql.in
@@ -2404,7 +2404,7 @@ BEGIN
 			RAISE EXCEPTION 'AddGeometryColumn() - SRID must be <= %', SRID_USR_MAX;
 		END IF;
 		new_srid := new_srid_in;
-		SELECT SRID INTO sr FROM spatial_ref_sys WHERE SRID = new_srid;
+		SELECT SRID INTO sr FROM @extschema at .spatial_ref_sys WHERE SRID = new_srid;
 		IF NOT FOUND THEN
 			RAISE EXCEPTION 'AddGeometryColumn() - invalid SRID';
 			RETURN 'fail';
@@ -2761,7 +2761,7 @@ BEGIN
 
 	-- Ensure that new_srid is valid
 	IF ( new_srid > 0 ) THEN
-		IF ( SELECT count(*) = 0 from spatial_ref_sys where srid = new_srid ) THEN
+		IF ( SELECT count(*) = 0 from @extschema at .spatial_ref_sys where srid = new_srid ) THEN
 			RAISE EXCEPTION 'invalid SRID: % not found in spatial_ref_sys', new_srid;
 			RETURN false;
 		END IF;
@@ -2971,7 +2971,7 @@ CREATE OR REPLACE FUNCTION ST_Transform(geometry,integer)
 CREATE OR REPLACE FUNCTION ST_Transform(geom geometry, to_proj text)
 	RETURNS geometry AS
 	'SELECT @extschema at .postgis_transform_geometry($1, proj4text, $2, 0)
-	FROM spatial_ref_sys WHERE srid=@extschema at .ST_SRID($1);'
+	FROM @extschema at .spatial_ref_sys WHERE srid=@extschema at .ST_SRID($1);'
 	LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE
 	_COST_HIGH;
 
@@ -2986,7 +2986,7 @@ CREATE OR REPLACE FUNCTION ST_Transform(geom geometry, from_proj text, to_proj t
 CREATE OR REPLACE FUNCTION ST_Transform(geom geometry, from_proj text, to_srid integer)
 	RETURNS geometry AS
 	'SELECT @extschema at .postgis_transform_geometry($1, $2, proj4text, $3)
-	FROM spatial_ref_sys WHERE srid=$3;'
+	FROM @extschema at .spatial_ref_sys WHERE srid=$3;'
 	LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE
 	_COST_HIGH;
 
@@ -3875,7 +3875,7 @@ CREATE OR REPLACE FUNCTION ST_SymDifference(geom1 geometry, geom2 geometry, grid
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_SymmetricDifference(geom1 geometry, geom2 geometry)
 	RETURNS geometry
-	AS 'SELECT ST_SymDifference(geom1, geom2, -1.0);'
+	AS 'SELECT @extschema at .ST_SymDifference(geom1, geom2, -1.0);'
 	LANGUAGE 'sql';
 
 CREATE OR REPLACE FUNCTION ST_Union(geom1 geometry, geom2 geometry)
@@ -6958,7 +6958,7 @@ CREATE OR REPLACE FUNCTION ST_AsX3D(geom geometry, maxdecimaldigits integer DEFA
 -- Availability: 2.3.0
 -- has to be here because need ST_StartPoint
 CREATE OR REPLACE FUNCTION ST_Angle(line1 geometry, line2 geometry)
-	RETURNS float8 AS 'SELECT ST_Angle(St_StartPoint($1), ST_EndPoint($1), St_StartPoint($2), ST_EndPoint($2))'
+	RETURNS float8 AS 'SELECT @extschema at .ST_Angle(@extschema at .St_StartPoint($1), @extschema at .ST_EndPoint($1), @extschema at .ST_StartPoint($2), @extschema at .ST_EndPoint($2))'
 	LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE
 	_COST_LOW;
 
diff --git a/raster/rt_pg/rtpostgis.sql.in b/raster/rt_pg/rtpostgis.sql.in
index 9546fcbfc..c5e66c7a3 100644
--- a/raster/rt_pg/rtpostgis.sql.in
+++ b/raster/rt_pg/rtpostgis.sql.in
@@ -341,7 +341,7 @@ CREATE OR REPLACE FUNCTION st_makeemptyraster(width int, height int, upperleftx
 
 CREATE OR REPLACE FUNCTION st_makeemptyraster(width int, height int, upperleftx float8, upperlefty float8, pixelsize float8)
     RETURNS raster
-    AS $$ SELECT  @extschema at .ST_makeemptyraster($1, $2, $3, $4, $5, -($5), 0, 0, @extschema at .ST_SRID('POINT(0 0)'::geometry)) $$
+    AS $$ SELECT  @extschema at .ST_makeemptyraster($1, $2, $3, $4, $5, -($5), 0, 0, @extschema at .ST_SRID('POINT(0 0)'::@extschema at .geometry)) $$
     LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_makeemptyraster(rast raster)
@@ -389,7 +389,7 @@ CREATE OR REPLACE FUNCTION st_addband(
 	nodataval float8 DEFAULT NULL
 )
 	RETURNS raster
-	AS $$ SELECT  @extschema at .ST_addband($1, ARRAY[ROW($2, $3, $4, $5)]::addbandarg[]) $$
+	AS $$ SELECT  @extschema at .ST_addband($1, ARRAY[ROW($2, $3, $4, $5)]::@extschema at .addbandarg[]) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 -- This function can not be STRICT, because nodataval can be NULL indicating that no nodata value should be set
@@ -400,7 +400,7 @@ CREATE OR REPLACE FUNCTION st_addband(
 	nodataval float8 DEFAULT NULL
 )
 	RETURNS raster
-	AS $$ SELECT  @extschema at .ST_addband($1, ARRAY[ROW(NULL, $2, $3, $4)]::addbandarg[]) $$
+	AS $$ SELECT  @extschema at .ST_addband($1, ARRAY[ROW(NULL, $2, $3, $4)]::@extschema at .addbandarg[]) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 -- This function can not be STRICT, because torastindex can not be determined (could be st_numbands(raster) though)
@@ -458,7 +458,7 @@ CREATE OR REPLACE FUNCTION st_band(rast raster, nband int)
 
 CREATE OR REPLACE FUNCTION st_band(rast raster, nbands text, delimiter char DEFAULT ',')
 	RETURNS RASTER
-	AS $$ SELECT  @extschema at .ST_band($1, regexp_split_to_array(regexp_replace($2, '[[:space:]]', '', 'g'), E'\\' || array_to_string(regexp_split_to_array($3, ''), E'\\'))::int[]) $$
+	AS $$ SELECT  @extschema at .ST_band($1, pg_catalog.regexp_split_to_array(pg_catalog.regexp_replace($2, '[[:space:]]', '', 'g'), E'\\' || pg_catalog.array_to_string(pg_catalog.regexp_split_to_array($3, ''), E'\\'))::int[]) $$
 	LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
 
 -----------------------------------------------------------------------
@@ -1347,12 +1347,12 @@ CREATE OR REPLACE FUNCTION st_reclass(rast raster, VARIADIC reclassargset reclas
 -- Cannot be strict as "nodataval" can be NULL
 CREATE OR REPLACE FUNCTION st_reclass(rast raster, nband int, reclassexpr text, pixeltype text, nodataval double precision DEFAULT NULL)
 	RETURNS raster
-	AS $$ SELECT st_reclass($1, ROW($2, $3, $4, $5)) $$
+	AS $$ SELECT @extschema at .st_reclass($1, ROW($2, $3, $4, $5)) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_reclass(rast raster, reclassexpr text, pixeltype text)
 	RETURNS raster
-	AS $$ SELECT st_reclass($1, ROW(1, $2, $3, NULL)) $$
+	AS $$ SELECT @extschema at .st_reclass($1, ROW(1, $2, $3, NULL)) $$
 	LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
 
 -----------------------------------------------------------------------
@@ -1565,7 +1565,7 @@ CREATE OR REPLACE FUNCTION st_astiff(rast raster, options text[] DEFAULT NULL, s
 -- Cannot be strict as "options" and "srid" can be NULL
 CREATE OR REPLACE FUNCTION st_astiff(rast raster, nbands int[], options text[] DEFAULT NULL, srid integer DEFAULT NULL)
 	RETURNS bytea
-	AS $$ SELECT st_astiff(st_band($1, $2), $3, $4) $$
+	AS $$ SELECT @extschema at .st_astiff(@extschema at .st_band($1, $2), $3, $4) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 -- Cannot be strict as "srid" can be NULL
@@ -1656,7 +1656,7 @@ CREATE OR REPLACE FUNCTION st_astiff(rast raster, compression text, srid integer
 -- Cannot be strict as "srid" can be NULL
 CREATE OR REPLACE FUNCTION st_astiff(rast raster, nbands int[], compression text, srid integer DEFAULT NULL)
 	RETURNS bytea
-	AS $$ SELECT st_astiff(st_band($1, $2), $3, $4) $$
+	AS $$ SELECT @extschema at .st_astiff(@extschema at .st_band($1, $2), $3, $4) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 -----------------------------------------------------------------------
@@ -1675,13 +1675,13 @@ CREATE OR REPLACE FUNCTION st_asjpeg(rast raster, options text[] DEFAULT NULL)
 			RETURN NULL;
 		END IF;
 
-		num_bands := st_numbands($1);
+		num_bands := @extschema at .st_numbands($1);
 
 		-- JPEG allows 1 or 3 bands
 		IF num_bands <> 1 AND num_bands <> 3 THEN
 			RAISE NOTICE 'The JPEG format only permits one or three bands.  The first band will be used.';
-			rast2 := st_band(rast, ARRAY[1]);
-			num_bands := st_numbands(rast);
+			rast2 := @extschema at .st_band(rast, ARRAY[1]);
+			num_bands := @extschema at .st_numbands(rast);
 		ELSE
 			rast2 := rast;
 		END IF;
@@ -1693,14 +1693,14 @@ CREATE OR REPLACE FUNCTION st_asjpeg(rast raster, options text[] DEFAULT NULL)
 			END IF;
 		END LOOP;
 
-		RETURN st_asgdalraster(rast2, 'JPEG', $2, NULL);
+		RETURN @extschema at .st_asgdalraster(rast2, 'JPEG', $2, NULL);
 	END;
 	$$ LANGUAGE 'plpgsql' IMMUTABLE PARALLEL SAFE;
 
 -- Cannot be strict as "options" can be NULL
 CREATE OR REPLACE FUNCTION st_asjpeg(rast raster, nbands int[], options text[] DEFAULT NULL)
 	RETURNS bytea
-	AS $$ SELECT st_asjpeg(st_band($1, $2), $3) $$
+	AS $$ SELECT @extschema at .st_asjpeg(@extschema at .st_band($1, $2), $3) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_asjpeg(rast raster, nbands int[], quality int)
@@ -1722,7 +1722,7 @@ CREATE OR REPLACE FUNCTION st_asjpeg(rast raster, nbands int[], quality int)
 			options := array_append(options, 'QUALITY=' || quality2);
 		END IF;
 
-		RETURN @extschema at .st_asjpeg(st_band($1, $2), options);
+		RETURN @extschema at .st_asjpeg(@extschema at .st_band($1, $2), options);
 	END;
 	$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT PARALLEL SAFE;
 
@@ -1802,13 +1802,13 @@ CREATE OR REPLACE FUNCTION st_aspng(rast raster, nbands int[], compression int)
 			options := array_append(options, 'ZLEVEL=' || compression2);
 		END IF;
 
-		RETURN @extschema at .st_aspng(st_band($1, $2), options);
+		RETURN @extschema at .st_aspng(@extschema at .st_band($1, $2), options);
 	END;
 	$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_aspng(rast raster, nband int, options text[] DEFAULT NULL)
 	RETURNS bytea
-	AS $$ SELECT @extschema at .st_aspng(st_band($1, $2), $3) $$
+	AS $$ SELECT @extschema at .st_aspng(@extschema at .st_band($1, $2), $3) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_aspng(rast raster, nband int, compression int)
@@ -2713,7 +2713,7 @@ CREATE OR REPLACE FUNCTION st_mapalgebra(
 	VARIADIC userargs text[] DEFAULT NULL
 )
 	RETURNS raster
-	AS $$ SELECT @extschema at ._ST_MapAlgebra(ARRAY[ROW($1, $2)]::rastbandarg[], $3, $4, $7, $8, $5, $6,NULL::double precision [],NULL::boolean, VARIADIC $9) $$
+	AS $$ SELECT @extschema at ._ST_MapAlgebra(ARRAY[ROW($1, $2)]::@extschema at .rastbandarg[], $3, $4, $7, $8, $5, $6,NULL::double precision [],NULL::boolean, VARIADIC $9) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_mapalgebra(
@@ -2726,7 +2726,7 @@ CREATE OR REPLACE FUNCTION st_mapalgebra(
 	VARIADIC userargs text[] DEFAULT NULL
 )
 	RETURNS raster
-	AS $$ SELECT @extschema at ._ST_MapAlgebra(ARRAY[ROW($1, $2), ROW($3, $4)]::rastbandarg[], $5, $6, $9, $10, $7, $8,NULL::double precision [],NULL::boolean, VARIADIC $11) $$
+	AS $$ SELECT @extschema at ._ST_MapAlgebra(ARRAY[ROW($1, $2), ROW($3, $4)]::@extschema at .rastbandarg[], $5, $6, $9, $10, $7, $8,NULL::double precision [],NULL::boolean, VARIADIC $11) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_mapalgebra(
@@ -2739,7 +2739,7 @@ CREATE OR REPLACE FUNCTION st_mapalgebra(
 )
 	RETURNS raster
 	AS $$
-	select @extschema at ._ST_mapalgebra(ARRAY[ROW($1,$2)]::rastbandarg[],$3,$6,NULL::integer,NULL::integer,$7,$8,$4,$5,VARIADIC $9)
+	select @extschema at ._ST_mapalgebra(ARRAY[ROW($1,$2)]::@extschema at .rastbandarg[],$3,$6,NULL::integer,NULL::integer,$7,$8,$4,$5,VARIADIC $9)
 	$$ LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 -----------------------------------------------------------------------
@@ -2763,7 +2763,7 @@ CREATE OR REPLACE FUNCTION st_mapalgebra(
 	expression text, nodataval double precision DEFAULT NULL
 )
 	RETURNS raster
-	AS $$ SELECT @extschema at ._ST_mapalgebra(ARRAY[ROW($1, $2)]::rastbandarg[], $4, $3, 'FIRST', $5::text) $$
+	AS $$ SELECT @extschema at ._ST_mapalgebra(ARRAY[ROW($1, $2)]::@extschema at .rastbandarg[], $4, $3, 'FIRST', $5::text) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_mapalgebra(
@@ -2784,7 +2784,7 @@ CREATE OR REPLACE FUNCTION st_mapalgebra(
 	nodatanodataval double precision DEFAULT NULL
 )
 	RETURNS raster
-	AS $$ SELECT @extschema at ._ST_mapalgebra(ARRAY[ROW($1, $2), ROW($3, $4)]::rastbandarg[], $5, $6, $7, $8, $9, $10) $$
+	AS $$ SELECT @extschema at ._ST_mapalgebra(ARRAY[ROW($1, $2), ROW($3, $4)]::@extschema at .rastbandarg[], $5, $6, $7, $8, $9, $10) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_mapalgebra(
@@ -3717,7 +3717,7 @@ CREATE OR REPLACE FUNCTION st_aspect(
 		SELECT width, height INTO _width, _height FROM @extschema at .ST_Metadata(_rast);
 
 		RETURN @extschema at .ST_MapAlgebra(
-			ARRAY[ROW(_rast, _nband)]::rastbandarg[],
+			ARRAY[ROW(_rast, _nband)]::@extschema at .rastbandarg[],
 			' @extschema at ._ST_aspect4ma(double precision[][][], integer[][], text[])'::regprocedure,
 			_pixtype,
 			_extenttype, _customextent,
@@ -3912,7 +3912,7 @@ CREATE OR REPLACE FUNCTION st_hillshade(
 
 		IF interpolate_nodata IS TRUE THEN
 			_rast := @extschema at .ST_MapAlgebra(
-				ARRAY[ROW(rast, nband)]::rastbandarg[],
+				ARRAY[ROW(rast, nband)]::@extschema at .rastbandarg[],
 				'@extschema at .st_invdistweight4ma(double precision[][][], integer[][], text[])'::regprocedure,
 				pixeltype,
 				'FIRST', NULL,
@@ -3932,7 +3932,7 @@ CREATE OR REPLACE FUNCTION st_hillshade(
 		SELECT width, height, scalex INTO _width, _height FROM @extschema at .ST_Metadata(_rast);
 
 		RETURN @extschema at .ST_MapAlgebra(
-			ARRAY[ROW(_rast, _nband)]::rastbandarg[],
+			ARRAY[ROW(_rast, _nband)]::@extschema at .rastbandarg[],
 			' @extschema at ._ST_hillshade4ma(double precision[][][], integer[][], text[])'::regprocedure,
 			_pixtype,
 			_extenttype, _customextent,
@@ -4223,7 +4223,7 @@ CREATE OR REPLACE FUNCTION st_roughness(
 		END IF;
 
 		RETURN @extschema at .ST_MapAlgebra(
-			ARRAY[ROW(_rast, _nband)]::rastbandarg[],
+			ARRAY[ROW(_rast, _nband)]::@extschema at .rastbandarg[],
 			' @extschema at ._ST_roughness4ma(double precision[][][], integer[][], text[])'::regprocedure,
 			_pixtype,
 			_extenttype, _customextent,
@@ -4443,14 +4443,14 @@ CREATE OR REPLACE FUNCTION st_grayscale(
 		_NODATA integer DEFAULT 255;
 		_PIXTYPE text DEFAULT '8BUI';
 
-		_set rastbandarg[];
+		_set @extschema at .rastbandarg[];
 
 		nrast integer;
 		idx integer;
 		rast @extschema at .raster;
 		nband integer;
 
-		stats summarystats;
+		stats @extschema at .summarystats;
 		nodata double precision;
 		nodataval integer;
 		reclassexpr text;
@@ -4649,7 +4649,7 @@ CREATE OR REPLACE FUNCTION st_value(rast raster, band integer, pt geometry, excl
 
 CREATE OR REPLACE FUNCTION st_value(rast raster, x integer, y integer, exclude_nodata_value boolean DEFAULT TRUE)
     RETURNS float8
-    AS $$ SELECT st_value($1, 1::integer, $2, $3, $4) $$
+    AS $$ SELECT @extschema at .st_value($1, 1::integer, $2, $3, $4) $$
     LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE _COST_MEDIUM;
 
 -- Availability: 2.0.0
@@ -5197,7 +5197,7 @@ CREATE OR REPLACE FUNCTION st_pixelaspoints(
 
 CREATE OR REPLACE FUNCTION st_pixelaspoint(rast raster, x integer, y integer)
 	RETURNS geometry
-	AS $$ SELECT ST_PointN(ST_ExteriorRing(geom), 1) FROM @extschema at ._ST_pixelaspolygons($1, NULL, $2, $3) $$
+	AS $$ SELECT @extschema at .ST_PointN(@extschema at .ST_ExteriorRing(geom), 1) FROM @extschema at ._ST_pixelaspolygons($1, NULL, $2, $3) $$
 	LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
 
 -----------------------------------------------------------------------
@@ -6344,7 +6344,7 @@ CREATE OR REPLACE FUNCTION ST_Intersection(geomin geometry, rast raster, band in
 				SELECT
 					emptygeom,
 					NULL::float8
-				FROM ST_GeomCollFromText('GEOMETRYCOLLECTION EMPTY', ST_SRID($1)) emptygeom;
+				FROM @extschema at .ST_GeomCollFromText('GEOMETRYCOLLECTION EMPTY', @extschema at .ST_SRID($1)) emptygeom;
 		END IF;
 	END;
 	$$
@@ -6381,8 +6381,8 @@ CREATE OR REPLACE FUNCTION ST_Intersection(
 			RAISE EXCEPTION 'The two rasters do not have the same SRID';
 		END IF;
 
-		newnodata1 := coalesce(nodataval[1], ST_BandNodataValue(rast1, band1), ST_MinPossibleValue(@extschema at .ST_BandPixelType(rast1, band1)));
-		newnodata2 := coalesce(nodataval[2], ST_BandNodataValue(rast2, band2), ST_MinPossibleValue(@extschema at .ST_BandPixelType(rast2, band2)));
+		newnodata1 := coalesce(nodataval[1], @extschema at .ST_BandNodataValue(rast1, band1), @extschema at .ST_MinPossibleValue(@extschema at .ST_BandPixelType(rast1, band1)));
+		newnodata2 := coalesce(nodataval[2], @extschema at .ST_BandNodataValue(rast2, band2), @extschema at .ST_MinPossibleValue(@extschema at .ST_BandPixelType(rast2, band2)));
 
 		_returnband := upper(returnband);
 
@@ -6396,9 +6396,9 @@ CREATE OR REPLACE FUNCTION ST_Intersection(
 				rtn := @extschema at .ST_SetBandNodataValue(rtn, 1, newnodata2);
 			WHEN _returnband = 'BOTH' THEN
 				rtn := @extschema at .ST_MapAlgebraExpr(rast1, band1, rast2, band2, '[rast1.val]', @extschema at .ST_BandPixelType(rast1, band1), 'INTERSECTION', newnodata1::text, newnodata1::text, newnodata1);
-				rtn := ST_SetBandNodataValue(rtn, 1, newnodata1);
-				rtn := ST_AddBand(rtn, ST_MapAlgebraExpr(rast1, band1, rast2, band2, '[rast2.val]', @extschema at .ST_BandPixelType(rast2, band2), 'INTERSECTION', newnodata2::text, newnodata2::text, newnodata2));
-				rtn := ST_SetBandNodataValue(rtn, 2, newnodata2);
+				rtn := @extschema at .ST_SetBandNodataValue(rtn, 1, newnodata1);
+				rtn := @extschema at .ST_AddBand(rtn, @extschema at .ST_MapAlgebraExpr(rast1, band1, rast2, band2, '[rast2.val]', @extschema at .ST_BandPixelType(rast2, band2), 'INTERSECTION', newnodata2::text, newnodata2::text, newnodata2));
+				rtn := @extschema at .ST_SetBandNodataValue(rtn, 2, newnodata2);
 			ELSE
 				RAISE EXCEPTION 'Unknown value provided for returnband: %', returnband;
 				RETURN NULL;
@@ -6415,7 +6415,7 @@ CREATE OR REPLACE FUNCTION st_intersection(
 	nodataval double precision
 )
 	RETURNS raster AS
-	$$ SELECT st_intersection($1, $2, $3, $4, $5, ARRAY[$6, $6]) $$
+	$$ SELECT @extschema at .st_intersection($1, $2, $3, $4, $5, ARRAY[$6, $6]) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_intersection(
@@ -6424,7 +6424,7 @@ CREATE OR REPLACE FUNCTION st_intersection(
 	nodataval double precision[]
 )
 	RETURNS raster AS
-	$$ SELECT st_intersection($1, $2, $3, $4, 'BOTH', $5) $$
+	$$ SELECT @extschema at .st_intersection($1, $2, $3, $4, 'BOTH', $5) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_intersection(
@@ -6433,7 +6433,7 @@ CREATE OR REPLACE FUNCTION st_intersection(
 	nodataval double precision
 )
 	RETURNS raster AS
-	$$ SELECT st_intersection($1, $2, $3, $4, 'BOTH', ARRAY[$5, $5]) $$
+	$$ SELECT @extschema at .st_intersection($1, $2, $3, $4, 'BOTH', ARRAY[$5, $5]) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 -- Variants without band number
@@ -6444,7 +6444,7 @@ CREATE OR REPLACE FUNCTION st_intersection(
 	nodataval double precision[] DEFAULT NULL
 )
 	RETURNS raster AS
-	$$ SELECT st_intersection($1, 1, $2, 1, $3, $4) $$
+	$$ SELECT @extschema at .st_intersection($1, 1, $2, 1, $3, $4) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_intersection(
@@ -6454,7 +6454,7 @@ CREATE OR REPLACE FUNCTION st_intersection(
 	nodataval double precision
 )
 	RETURNS raster AS
-	$$ SELECT st_intersection($1, 1, $2, 1, $3, ARRAY[$4, $4]) $$
+	$$ SELECT @extschema at .st_intersection($1, 1, $2, 1, $3, ARRAY[$4, $4]) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_intersection(
@@ -6463,7 +6463,7 @@ CREATE OR REPLACE FUNCTION st_intersection(
 	nodataval double precision[]
 )
 	RETURNS raster AS
-	$$ SELECT st_intersection($1, 1, $2, 1, 'BOTH', $3) $$
+	$$ SELECT @extschema at .st_intersection($1, 1, $2, 1, 'BOTH', $3) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_intersection(
@@ -6472,7 +6472,7 @@ CREATE OR REPLACE FUNCTION st_intersection(
 	nodataval double precision
 )
 	RETURNS raster AS
-	$$ SELECT st_intersection($1, 1, $2, 1, 'BOTH', ARRAY[$3, $3]) $$
+	$$ SELECT @extschema at .st_intersection($1, 1, $2, 1, 'BOTH', ARRAY[$3, $3]) $$
 	LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
 
 -----------------------------------------------------------------------
@@ -6691,7 +6691,7 @@ CREATE OR REPLACE FUNCTION st_nearestvalue(
 	exclude_nodata_value boolean DEFAULT TRUE
 )
 	RETURNS double precision
-	AS $$ SELECT st_nearestvalue($1, 1, $2, $3) $$
+	AS $$ SELECT @extschema at .st_nearestvalue($1, 1, $2, $3) $$
 	LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_nearestvalue(
@@ -6700,7 +6700,7 @@ CREATE OR REPLACE FUNCTION st_nearestvalue(
 	exclude_nodata_value boolean DEFAULT TRUE
 )
 	RETURNS double precision
-	AS $$ SELECT st_nearestvalue($1, $2, st_setsrid(st_makepoint(st_rastertoworldcoordx($1, $3, $4), st_rastertoworldcoordy($1, $3, $4)), st_srid($1)), $5) $$
+	AS $$ SELECT @extschema at .st_nearestvalue($1, $2, @extschema at .st_setsrid(@extschema at .st_makepoint(@extschema at .st_rastertoworldcoordx($1, $3, $4), @extschema at .st_rastertoworldcoordy($1, $3, $4)), @extschema at .st_srid($1)), $5) $$
 	LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
 
 CREATE OR REPLACE FUNCTION st_nearestvalue(
@@ -6709,7 +6709,7 @@ CREATE OR REPLACE FUNCTION st_nearestvalue(
 	exclude_nodata_value boolean DEFAULT TRUE
 )
 	RETURNS double precision
-	AS $$ SELECT st_nearestvalue($1, 1, st_setsrid(st_makepoint(st_rastertoworldcoordx($1, $2, $3), st_rastertoworldcoordy($1, $2, $3)), st_srid($1)), $4) $$
+	AS $$ SELECT @extschema at .st_nearestvalue($1, 1, @extschema at .st_setsrid(@extschema at .st_makepoint(@extschema at .st_rastertoworldcoordx($1, $2, $3), @extschema at .st_rastertoworldcoordy($1, $2, $3)), @extschema at .st_srid($1)), $4) $$
 	LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
 
 -----------------------------------------------------------------------
@@ -6759,21 +6759,21 @@ CREATE OR REPLACE FUNCTION st_neighborhood(
 		wy double precision;
 		rtn double precision[][];
 	BEGIN
-		IF (st_geometrytype($3) != 'ST_Point') THEN
+		IF (@extschema at .st_geometrytype($3) != 'ST_Point') THEN
 			RAISE EXCEPTION 'Attempting to get the neighbor of a pixel with a non-point geometry';
 		END IF;
 
-		IF ST_SRID(rast) != ST_SRID(pt) THEN
+		IF @extschema at .ST_SRID(rast) != @extschema at .ST_SRID(pt) THEN
 			RAISE EXCEPTION 'Raster and geometry do not have the same SRID';
 		END IF;
 
-		wx := st_x($3);
-		wy := st_y($3);
+		wx := @extschema at .st_x($3);
+		wy := @extschema at .st_y($3);
 
 		SELECT @extschema at ._ST_neighborhood(
 			$1, $2,
-			st_worldtorastercoordx(rast, wx, wy),
-			st_worldtorastercoordy(rast, wx, wy),
+			@extschema at .st_worldtorastercoordx(rast, wx, wy),
+			@extschema at .st_worldtorastercoordy(rast, wx, wy),
 			$4, $5,
 			$6
 		) INTO rtn;
@@ -6788,7 +6788,7 @@ CREATE OR REPLACE FUNCTION st_neighborhood(
 	exclude_nodata_value boolean DEFAULT TRUE
 )
 	RETURNS double precision[][]
-	AS $$ SELECT st_neighborhood($1, 1, $2, $3, $4, $5) $$
+	AS $$ SELECT @extschema at .st_neighborhood($1, 1, $2, $3, $4, $5) $$
 	LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
 
 ------------------------------------------------------------------------------
@@ -6883,7 +6883,7 @@ CREATE OR REPLACE FUNCTION _add_raster_constraint_srid(rastschema name, rasttabl
 
 		cn := 'enforce_srid_' || $3;
 
-		sql := 'SELECT st_srid('
+		sql := 'SELECT @extschema at .st_srid('
 			|| quote_ident($3)
 			|| ') FROM ' || fqtn
 			|| ' WHERE '
@@ -7053,7 +7053,7 @@ CREATE OR REPLACE FUNCTION _add_raster_constraint_blocksize(rastschema name, ras
 
 		cn := 'enforce_' || $4 || '_' || $3;
 
-		sql := 'SELECT st_' || $4 || '('
+		sql := 'SELECT @extschema at .st_' || $4 || '('
 			|| quote_ident($3)
 			|| ') FROM ' || fqtn
 			|| ' GROUP BY 1 ORDER BY count(*) DESC';
@@ -7545,7 +7545,7 @@ CREATE OR REPLACE FUNCTION _add_raster_constraint_pixel_types(rastschema name, r
 
 		sql := 'ALTER TABLE ' || fqtn
 			|| ' ADD CONSTRAINT ' || quote_ident(cn)
-			|| ' CHECK (_raster_constraint_pixel_types(' || quote_ident($3)
+			|| ' CHECK (@extschema at ._raster_constraint_pixel_types(' || quote_ident($3)
 			|| ') = ''{';
 		FOR x in 1..max LOOP
 			sql := sql || '"' || attr[x] || '"';
@@ -7633,7 +7633,7 @@ CREATE OR REPLACE FUNCTION _add_raster_constraint_nodata_values(rastschema name,
 
 		sql := 'ALTER TABLE ' || fqtn
 			|| ' ADD CONSTRAINT ' || quote_ident(cn)
-			|| ' CHECK (_raster_constraint_nodata_values(' || quote_ident($3)
+			|| ' CHECK (@extschema at ._raster_constraint_nodata_values(' || quote_ident($3)
 			|| ')::numeric[] = ''{';
 		FOR x in 1..max LOOP
 			IF attr[x] IS NULL THEN
@@ -8251,7 +8251,7 @@ CREATE OR REPLACE FUNCTION DropRasterConstraints (
 	extent boolean DEFAULT TRUE
 )
 	RETURNS boolean AS
-	$$ SELECT DropRasterConstraints('', $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) $$
+	$$ SELECT @extschema at .DropRasterConstraints('', $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) $$
 	LANGUAGE 'sql' VOLATILE STRICT;
 
 ------------------------------------------------------------------------------
@@ -8701,23 +8701,23 @@ BEGIN
 
   -- 2. Loop over each target tile and build it from source tiles
   ipx := st_xmin(ext);
-  ncols := ceil((st_xmax(ext)-ipx)/sfx/tw);
+  ncols := ceil((@extschema at .st_xmax(ext)-ipx)/sfx/tw);
   IF sfy < 0 THEN
-    ipy := st_ymax(ext);
-    nlins := ceil((st_ymin(ext)-ipy)/sfy/th);
+    ipy := @extschema at .st_ymax(ext);
+    nlins := ceil((@extschema at .st_ymin(ext)-ipy)/sfy/th);
   ELSE
-    ipy := st_ymin(ext);
-    nlins := ceil((st_ymax(ext)-ipy)/sfy/th);
+    ipy := @extschema at .st_ymin(ext);
+    nlins := ceil((@extschema at .st_ymax(ext)-ipy)/sfy/th);
   END IF;
 
-  srid := ST_Srid(ext);
+  srid := @extschema at .ST_Srid(ext);
 
   RAISE DEBUG 'Target coverage will have % x % tiles, each of approx size % x %', ncols, nlins, tw, th;
   RAISE DEBUG 'Target coverage will cover extent %', ext::box2d;
 
   FOR tx IN 0..ncols-1 LOOP
     FOR ty IN 0..nlins-1 LOOP
-      te := ST_MakeEnvelope(ipx + tx     *  tw  * sfx,
+      te := @extschema at .ST_MakeEnvelope(ipx + tx     *  tw  * sfx,
                              ipy + ty     *  th  * sfy,
                              ipx + (tx+1) *  tw  * sfx,
                              ipy + (ty+1) *  th  * sfy,
@@ -8729,12 +8729,12 @@ BEGIN
           || ' WHERE  @extschema at .ST_Intersects(' || quote_ident(col) || ', $3)';
       --RAISE DEBUG 'SQL: %', sql;
       FOR rec IN EXECUTE sql USING sfx, sfy, te, ipx, ipy, algo LOOP
-        --RAISE DEBUG '% source tiles intersect target tile %,% with extent %', rec.count, tx, ty, te::box2d;
+        --RAISE DEBUG '% source tiles intersect target tile %,% with extent %', rec.count, tx, ty, te::@extschema at .box2d;
         IF rec.g IS NULL THEN
           RAISE WARNING 'No source tiles cover target tile %,% with extent %',
-            tx, ty, te::box2d;
+            tx, ty, te::@extschema at .box2d;
         ELSE
-          --RAISE DEBUG 'Tile for extent % has size % x %', te::box2d, st_width(rec.g), st_height(rec.g);
+          --RAISE DEBUG 'Tile for extent % has size % x %', te::@extschema at .box2d, @extschema at .st_width(rec.g), @extschema at .st_height(rec.g);
           RETURN NEXT rec.g;
         END IF;
       END LOOP;
@@ -8791,7 +8791,7 @@ BEGIN
   ttab := 'o_' || factor || '_' || sinfo.tab;
   sql := 'CREATE TABLE ' || quote_ident(sinfo.sch)
       || '.' || quote_ident(ttab)
-      || ' AS SELECT ST_Retile($1, $2, $3, $4, $5, $6, $7) '
+      || ' AS SELECT @extschema at .ST_Retile($1, $2, $3, $4, $5, $6, $7) '
       || quote_ident(col);
   EXECUTE sql USING tab, col, sinfo.ext,
                     sinfo.sfx * factor, sinfo.sfy * factor,

commit 8939d501c9a22a5cfe9add9acb3a0e4d729a0d1b
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Mon Oct 21 11:48:27 2024 -0700

    ST_TileEnvelope with margin is not clipped fully to WM extent, references #5799

diff --git a/NEWS b/NEWS
index e035f6c71..7040644c3 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ PostGIS 3.6.0
 
 * Breaking Changes *
 
+#5799, make ST_TileEnvelope clips envelopes to tile plane extent (Paul Ramsey)
 
 * Deprecated signatures *
 
diff --git a/postgis/lwgeom_functions_basic.c b/postgis/lwgeom_functions_basic.c
index c2892ce7e..1f9348c1b 100644
--- a/postgis/lwgeom_functions_basic.c
+++ b/postgis/lwgeom_functions_basic.c
@@ -2143,9 +2143,11 @@ Datum ST_TileEnvelope(PG_FUNCTION_ARGS)
 	y1 = bbox.ymax - tileGeoSizeY * (y + 1 + margin);
 	y2 = bbox.ymax - tileGeoSizeY * (y - margin);
 
-	/* Clip y-axis to the given bounds */
+	/* Clip the final tile bounds to the bounds of the tile plane */
 	if (y1 < bbox.ymin) y1 = bbox.ymin;
 	if (y2 > bbox.ymax) y2 = bbox.ymax;
+	if (x1 < bbox.xmin) x1 = bbox.xmin;
+	if (x2 > bbox.xmax) x2 = bbox.xmax;
 
 	PG_RETURN_POINTER(
 		geometry_serialize(
diff --git a/regress/core/regress_expected b/regress/core/regress_expected
index bd34c236a..42a03aaaf 100644
--- a/regress/core/regress_expected
+++ b/regress/core/regress_expected
@@ -204,7 +204,7 @@ ERROR:  ST_TileEnvelope: Invalid tile y value, 1
 234|POLYGON((-100 87.5,-100 100,-87.5 100,-87.5 87.5,-100 87.5))
 235|POLYGON((0 -12.5,0 0,25 0,25 -12.5,0 -12.5))
 236|POLYGON((-20037508.34 -20037508.34,-20037508.34 20037508.34,20037508.34 20037508.34,20037508.34 -20037508.34,-20037508.34 -20037508.34))
-237|POLYGON((-22041259.18 -2003750.83,-22041259.18 20037508.34,2003750.83 20037508.34,2003750.83 -2003750.83,-22041259.18 -2003750.83))
+237|POLYGON((-20037508.34 -2003750.83,-20037508.34 20037508.34,2003750.83 20037508.34,2003750.83 -2003750.83,-20037508.34 -2003750.83))
 238|POLYGON((-15028131.26 -20037508.34,-15028131.26 -5009377.09,5009377.09 -5009377.09,5009377.09 -20037508.34,-15028131.26 -20037508.34))
 239|POLYGON((0 0,0 0,0 0,0 0,0 0))
 ERROR:  ST_TileEnvelope: Margin must not be less than -50%, margin=-0.510000

commit 6bd6cf8e34e4c118d8633b0ee6f16e23d619a2c8
Author: Regina Obe <lr at pcorp.us>
Date:   Sun Oct 20 22:57:33 2024 -0400

    FIX copy paste error
     in postgis_proj_compiled_version
    
    References #5800 for PostGIS 3.6.0

diff --git a/postgis/lwgeom_transform.c b/postgis/lwgeom_transform.c
index 4786474b2..df9cf4e4d 100644
--- a/postgis/lwgeom_transform.c
+++ b/postgis/lwgeom_transform.c
@@ -237,8 +237,8 @@ Datum postgis_proj_compiled_version(PG_FUNCTION_ARGS)
     ver,
     "%d.%d.%d",
     (POSTGIS_PROJ_VERSION/10000),
-    ((POSTGIS_GEOS_VERSION%10000)/100),
-    ((POSTGIS_GEOS_VERSION)%100)
+    ((POSTGIS_PROJ_VERSION%10000)/100),
+    ((POSTGIS_PROJ_VERSION)%100)
   );
 
   result = cstring_to_text(ver);

commit d2860f337cea095b01346307cdaa026460d525ad
Author: Dan Levy <397632+justsml at users.noreply.github.com>
Date:   Thu Oct 17 20:42:27 2024 -0600

    fix parameter name

diff --git a/doc/reference_cluster.xml b/doc/reference_cluster.xml
index cb4b4b8e8..21da74650 100644
--- a/doc/reference_cluster.xml
+++ b/doc/reference_cluster.xml
@@ -291,16 +291,22 @@ FROM testdata;
 	  <refsynopsisdiv>
 		<funcsynopsis>
 		  <funcprototype>
-			<funcdef>integer <function>ST_ClusterKMeans</function></funcdef>
-
-			<paramdef><type>geometry winset </type>
-			<parameter>geom</parameter></paramdef>
-
-			<paramdef><type>integer </type>
-			<parameter>number_of_clusters</parameter></paramdef>
-
-            <paramdef><type>float </type>
-			<parameter>max_radius</parameter></paramdef>
+            <funcdef>integer <function>ST_ClusterKMeans</function></funcdef>
+    
+            <paramdef>
+              <type>geometry winset </type>
+              <parameter>geom</parameter>
+            </paramdef>
+    
+            <paramdef>
+              <type>integer </type>
+              <parameter>k</parameter>
+            </paramdef>
+    
+            <paramdef>
+              <type>float8 </type>
+              <parameter>max_radius</parameter>
+            </paramdef>
 		  </funcprototype>
 		</funcsynopsis>
 	  </refsynopsisdiv>

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

Summary of changes:
 doc/reference_cluster.xml | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list