[postgis-tickets] r17972 - Fix PLPGSQL functions missing the schema qualification

Raul raul at rmr.ninja
Fri Oct 18 09:06:35 PDT 2019


Author: algunenano
Date: 2019-10-18 09:06:34 -0700 (Fri, 18 Oct 2019)
New Revision: 17972

Modified:
   trunk/NEWS
   trunk/postgis/geography.sql.in
   trunk/postgis/postgis.sql.in
   trunk/raster/rt_pg/rtpostgis.sql.in
Log:
Fix PLPGSQL functions missing the schema qualification

References #4546
Closes https://github.com/postgis/postgis/pull/500



Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2019-10-18 15:05:41 UTC (rev 17971)
+++ trunk/NEWS	2019-10-18 16:06:34 UTC (rev 17972)
@@ -11,6 +11,7 @@
   - #4544, Fix leak when parsing a WKT geometry_list (Raúl Marín)
   - #4545, Fix leak in wkt_parser_triangle_new (Raúl Marín)
   - #4549, Fix several functions when the schema isn't the search_path (Raúl Marín)
+  - #4546, Fix PLPGSQL functions missing the schema qualification (Raúl Marín)
 
 
 PostGIS 3.0.0

Modified: trunk/postgis/geography.sql.in
===================================================================
--- trunk/postgis/geography.sql.in	2019-10-18 15:05:41 UTC (rev 17971)
+++ trunk/postgis/geography.sql.in	2019-10-18 16:06:34 UTC (rev 17972)
@@ -583,7 +583,7 @@
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_Length(text)
 	RETURNS float8 AS
-	$$ SELECT ST_Length($1::@extschema at .geometry);  $$
+	$$ SELECT @extschema at .ST_Length($1::@extschema at .geometry);  $$
 	LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.0.0

Modified: trunk/postgis/postgis.sql.in
===================================================================
--- trunk/postgis/postgis.sql.in	2019-10-18 15:05:41 UTC (rev 17971)
+++ trunk/postgis/postgis.sql.in	2019-10-18 16:06:34 UTC (rev 17972)
@@ -2049,7 +2049,7 @@
         IF upper(gc_old.type) = 'GEOMETRY' THEN
         -- This is an unconstrained geometry we need to do something
         -- We need to figure out what to set the type by inspecting the data
-            EXECUTE 'SELECT @extschema at .ST_srid(' || quote_ident(gcs.attname) || ') As srid, GeometryType(' || quote_ident(gcs.attname) || ') As type, @extschema at .ST_NDims(' || quote_ident(gcs.attname) || ') As dims ' ||
+            EXECUTE 'SELECT @extschema at .ST_srid(' || quote_ident(gcs.attname) || ') As srid, @extschema at .GeometryType(' || quote_ident(gcs.attname) || ') As type, @extschema at .ST_NDims(' || quote_ident(gcs.attname) || ') As dims ' ||
                      ' FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) ||
                      ' WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1;'
                 INTO gc;
@@ -5220,7 +5220,7 @@
 	RETURNS geometry
 	AS '
 	SELECT CASE
-	WHEN geometrytype(@extschema at .ST_GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
+	WHEN @extschema at .geometrytype(@extschema at .ST_GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
 	THEN @extschema at .ST_GeomFromText($1,$2)
 	ELSE NULL END
 	'
@@ -5558,8 +5558,8 @@
 DECLARE
 	geomtext alias for $1;
 	srid alias for $2;
-	mline geometry;
-	geom geometry;
+	mline @extschema at .geometry;
+	geom @extschema at .geometry;
 BEGIN
 	mline := @extschema at .ST_MultiLineStringFromText(geomtext, srid);
 
@@ -5570,7 +5570,7 @@
 
 	geom := @extschema at .ST_BuildArea(mline);
 
-	IF GeometryType(geom) != 'POLYGON'
+	IF @extschema at .GeometryType(geom) != 'POLYGON'
 	THEN
 		RAISE EXCEPTION 'Input returns more then a single polygon, try using BdMPolyFromText instead';
 	END IF;
@@ -5600,8 +5600,8 @@
 DECLARE
 	geomtext alias for $1;
 	srid alias for $2;
-	mline geometry;
-	geom geometry;
+	mline @extschema at .geometry;
+	geom @extschema at .geometry;
 BEGIN
 	mline := @extschema at .ST_MultiLineStringFromText(geomtext, srid);
 
@@ -6001,14 +6001,14 @@
   RETURNS geometry AS
 $$
 	DECLARE
-	vexhull GEOMETRY;
-	var_resultgeom geometry;
-	var_inputgeom geometry;
-	vexring GEOMETRY;
-	cavering GEOMETRY;
-	cavept geometry[];
+	vexhull @extschema at .geometry;
+	var_resultgeom @extschema at .geometry;
+	var_inputgeom @extschema at .geometry;
+	vexring @extschema at .geometry;
+	cavering @extschema at .geometry;
+	cavept @extschema at .geometry[];
 	seglength double precision;
-	var_tempgeom geometry;
+	var_tempgeom @extschema at .geometry;
 	scale_factor float := 1;
 	i integer;
 	BEGIN
@@ -6065,7 +6065,7 @@
 		-- make sure result covers original (#3638)
 		-- Using ST_UnaryUnion since SFCGAL doesn't replace with its own implementation
 		-- and SFCGAL one chokes for some reason
-		var_resultgeom := @extschema at .ST_UnaryUnion(ST_Collect(param_inputgeom, var_resultgeom) );
+		var_resultgeom := @extschema at .ST_UnaryUnion(@extschema at .ST_Collect(param_inputgeom, var_resultgeom) );
 		RETURN var_resultgeom;
 
 	END;
@@ -6077,18 +6077,18 @@
 CREATE OR REPLACE FUNCTION ST_ConcaveHull(param_geom geometry, param_pctconvex float, param_allow_holes boolean DEFAULT false) RETURNS geometry AS
 $$
 	DECLARE
-		var_convhull geometry := @extschema at .ST_ForceSFS(@extschema at .ST_ConvexHull(param_geom));
-		var_param_geom geometry := @extschema at .ST_ForceSFS(param_geom);
+		var_convhull @extschema at .geometry := @extschema at .ST_ForceSFS(@extschema at .ST_ConvexHull(param_geom));
+		var_param_geom @extschema at .geometry := @extschema at .ST_ForceSFS(param_geom);
 		var_initarea float := @extschema at .ST_Area(var_convhull);
 		var_newarea float := var_initarea;
 		var_div integer := 6; /** this is the 1/var_div is the percent increase we will allow per geometry to keep speed decent **/
-		var_tempgeom geometry;
-		var_tempgeom2 geometry;
-		var_cent geometry;
-		var_geoms geometry[4]; /** We will cut the current geometry into 4 triangular quadrants along the centroid/extent **/
-		var_enline geometry;
-		var_resultgeom geometry;
-		var_atempgeoms geometry[];
+		var_tempgeom @extschema at .geometry;
+		var_tempgeom2 @extschema at .geometry;
+		var_cent @extschema at .geometry;
+		var_geoms @extschema at .geometry[4]; /** We will cut the current geometry into 4 triangular quadrants along the centroid/extent **/
+		var_enline @extschema at .geometry;
+		var_resultgeom @extschema at .geometry;
+		var_atempgeoms @extschema at .geometry[];
 		var_buf float := 1; /** tolerance so that geometries that are right on the extent don't get accidentally clipped off **/
 	BEGIN
 		-- We start with convex hull as our base

Modified: trunk/raster/rt_pg/rtpostgis.sql.in
===================================================================
--- trunk/raster/rt_pg/rtpostgis.sql.in	2019-10-18 15:05:41 UTC (rev 17971)
+++ trunk/raster/rt_pg/rtpostgis.sql.in	2019-10-18 16:06:34 UTC (rev 17972)
@@ -2093,7 +2093,7 @@
 	RETURNS bytea
 	AS $$
 	DECLARE
-		rast2 raster;
+		rast2 @extschema at .raster;
 		num_bands int;
 		i int;
 	BEGIN
@@ -2171,7 +2171,7 @@
 	RETURNS bytea
 	AS $$
 	DECLARE
-		rast2 raster;
+		rast2 @extschema at .raster;
 		num_bands int;
 		i int;
 		pt text;
@@ -2385,7 +2385,7 @@
 	RETURNS raster
 	AS $$
 	DECLARE
-		g geometry;
+		g @extschema at .geometry;
 		g_srid integer;
 
 		ul_x double precision;
@@ -3900,7 +3900,7 @@
 	RETURNS raster
 	AS $$
 	DECLARE
-		_rast raster;
+		_rast @extschema at .raster;
 		_nband integer;
 		_pixtype text;
 		_pixwidth double precision;
@@ -3907,7 +3907,7 @@
 		_pixheight double precision;
 		_width integer;
 		_height integer;
-		_customextent raster;
+		_customextent @extschema at .raster;
 		_extenttype text;
 	BEGIN
 		_customextent := customextent;
@@ -3957,7 +3957,7 @@
 	scale double precision DEFAULT 1.0,	interpolate_nodata boolean DEFAULT FALSE
 )
 	RETURNS raster
-	AS $$ SELECT @extschema at .ST_slope($1, $2, NULL::raster, $3, $4, $5, $6) $$
+	AS $$ SELECT @extschema at .ST_slope($1, $2, NULL::@extschema at .raster, $3, $4, $5, $6) $$
 	LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -----------------------------------------------------------------------
@@ -4083,12 +4083,12 @@
 	RETURNS raster
 	AS $$
 	DECLARE
-		_rast raster;
+		_rast @extschema at .raster;
 		_nband integer;
 		_pixtype text;
 		_width integer;
 		_height integer;
-		_customextent raster;
+		_customextent @extschema at .raster;
 		_extenttype text;
 	BEGIN
 		_customextent := customextent;
@@ -4135,7 +4135,7 @@
 	interpolate_nodata boolean DEFAULT FALSE
 )
 	RETURNS raster
-	AS $$ SELECT @extschema at .ST_aspect($1, $2, NULL::raster, $3, $4, $5) $$
+	AS $$ SELECT @extschema at .ST_aspect($1, $2, NULL::@extschema at .raster, $3, $4, $5) $$
 	LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -----------------------------------------------------------------------
@@ -4289,7 +4289,7 @@
 	RETURNS RASTER
 	AS $$
 	DECLARE
-		_rast raster;
+		_rast @extschema at .raster;
 		_nband integer;
 		_pixtype text;
 		_pixwidth double precision;
@@ -4296,7 +4296,7 @@
 		_pixheight double precision;
 		_width integer;
 		_height integer;
-		_customextent raster;
+		_customextent @extschema at .raster;
 		_extenttype text;
 	BEGIN
 		_customextent := customextent;
@@ -4349,7 +4349,7 @@
 	interpolate_nodata boolean DEFAULT FALSE
 )
 	RETURNS RASTER
-	AS $$ SELECT @extschema at .ST_hillshade($1, $2, NULL::raster, $3, $4, $5, $6, $7, $8) $$
+	AS $$ SELECT @extschema at .ST_hillshade($1, $2, NULL::@extschema at .raster, $3, $4, $5, $6, $7, $8) $$
 	LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -----------------------------------------------------------------------
@@ -4449,7 +4449,7 @@
 	RETURNS raster
 	AS $$
 	DECLARE
-		_rast raster;
+		_rast @extschema at .raster;
 		_nband integer;
 		_pixtype text;
 		_pixwidth double precision;
@@ -4456,7 +4456,7 @@
 		_pixheight double precision;
 		_width integer;
 		_height integer;
-		_customextent raster;
+		_customextent @extschema at .raster;
 		_extenttype text;
 	BEGIN
 		_customextent := customextent;
@@ -4501,7 +4501,7 @@
 	pixeltype text DEFAULT '32BF', interpolate_nodata boolean DEFAULT FALSE
 )
 	RETURNS RASTER
-	AS $$ SELECT @extschema at .ST_tpi($1, $2, NULL::raster, $3, $4) $$
+	AS $$ SELECT @extschema at .ST_tpi($1, $2, NULL::@extschema at .raster, $3, $4) $$
 	LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -----------------------------------------------------------------------
@@ -4585,7 +4585,7 @@
 	RETURNS raster
 	AS $$
 	DECLARE
-		_rast raster;
+		_rast @extschema at .raster;
 		_nband integer;
 		_pixtype text;
 		_pixwidth double precision;
@@ -4592,7 +4592,7 @@
 		_pixheight double precision;
 		_width integer;
 		_height integer;
-		_customextent raster;
+		_customextent @extschema at .raster;
 		_extenttype text;
 	BEGIN
 		_customextent := customextent;
@@ -4632,7 +4632,7 @@
 	pixeltype text DEFAULT '32BF', interpolate_nodata boolean DEFAULT FALSE
 )
 	RETURNS RASTER
-	AS $$ SELECT @extschema at .ST_roughness($1, $2, NULL::raster, $3, $4) $$
+	AS $$ SELECT @extschema at .ST_roughness($1, $2, NULL::@extschema at .raster, $3, $4) $$
 	LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -----------------------------------------------------------------------
@@ -4731,7 +4731,7 @@
 	RETURNS raster
 	AS $$
 	DECLARE
-		_rast raster;
+		_rast @extschema at .raster;
 		_nband integer;
 		_pixtype text;
 		_pixwidth double precision;
@@ -4738,7 +4738,7 @@
 		_pixheight double precision;
 		_width integer;
 		_height integer;
-		_customextent raster;
+		_customextent @extschema at .raster;
 		_extenttype text;
 	BEGIN
 		_customextent := customextent;
@@ -4783,7 +4783,7 @@
 	pixeltype text DEFAULT '32BF', interpolate_nodata boolean DEFAULT FALSE
 )
 	RETURNS RASTER
-	AS $$ SELECT @extschema at .ST_tri($1, $2, NULL::raster, $3, $4) $$
+	AS $$ SELECT @extschema at .ST_tri($1, $2, NULL::@extschema at .raster, $3, $4) $$
 	LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -----------------------------------------------------------------------
@@ -4843,7 +4843,7 @@
 
 		nrast integer;
 		idx integer;
-		rast raster;
+		rast @extschema at .raster;
 		nband integer;
 
 		stats summarystats;
@@ -5232,7 +5232,7 @@
     $$
     DECLARE
         params text[];
-        rastout raster;
+        rastout @extschema at .raster;
     BEGIN
         IF rast IS NULL THEN
             RAISE WARNING 'Cannot set georeferencing on a null raster in st_setgeoreference.';
@@ -6738,7 +6738,7 @@
 	RETURNS raster
 	AS $$
 	DECLARE
-		rtn raster;
+		rtn @extschema at .raster;
 		_returnband text;
 		newnodata1 float8;
 		newnodata2 float8;
@@ -7691,8 +7691,8 @@
 		_tileheight integer;
 		_alignment boolean;
 
-		_covextent geometry;
-		_covrast raster;
+		_covextent @extschema at .geometry;
+		_covrast @extschema at .raster;
 	BEGIN
 		fqtn := '';
 		IF length($1) > 0 THEN
@@ -8992,7 +8992,7 @@
 		sql := 'UPDATE ' || fqtn ||
 			' SET ' || quote_ident($3) ||
 			' =  @extschema at .ST_SetSRID(' || quote_ident($3) ||
-			'::raster, ' || srid || ')';
+			'::@extschema at .raster, ' || srid || ')';
 		RAISE NOTICE 'sql = %', sql;
 		EXECUTE sql;
 
@@ -9044,7 +9044,7 @@
   ipy FLOAT8;
   tx int;
   ty int;
-  te GEOMETRY; -- tile extent
+  te @extschema at .GEOMETRY; -- tile extent
   ncols int;
   nlins int;
   srid int;
@@ -9173,7 +9173,7 @@
         rh int;                -- raster height (may change at edges)
         x int;                 -- x index of coverage
         y int;                 -- y index of coverage
-        template raster;       -- an empty template raster, where each cell
+        template @extschema at .raster;       -- an empty template raster, where each cell
                                -- represents a tile in the coverage
         minY double precision;
         maxX double precision;



More information about the postgis-tickets mailing list