]> granicus.if.org Git - postgis/commitdiff
schema qualify function and operator calls in geometry and geography functions
authorRegina Obe <lr@pcorp.us>
Sat, 6 Aug 2016 13:05:04 +0000 (13:05 +0000)
committerRegina Obe <lr@pcorp.us>
Sat, 6 Aug 2016 13:05:04 +0000 (13:05 +0000)
Closes #3496
Closes #3494
Closes #3486
Closes #3076

git-svn-id: http://svn.osgeo.org/postgis/trunk@15041 b70326c6-7e19-0410-871a-916f4a2858ee

NEWS
extensions/postgis/Makefile.in
postgis/Makefile.in
postgis/geography.sql.in
postgis/postgis.sql.in

diff --git a/NEWS b/NEWS
index 0ade12faf30cb5bd74d244122959b235e40277f1..413b7417e4f37de51912cdaa7afe79182c733766 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -37,6 +37,8 @@ PostGIS 2.3.0
   - #3557, Geometry function costs based on query stats (Paul Norman)
   - #3591, Add support for BRIN indexes 
                  (Giuseppe Broccolo of 2nd Quadrant, Julien Rouhaud and Ronan Dunklau of Dalibo)
+  - #3496 Make postgis non-relocateable (for extension install), schema qualify calls in functions (Regina Obe)
+               Should resolve once and for all for extensions #3494, #3486, #3076 
 
  * Performance Enhancements *
 
index 3b923f11a7815c63b95ce9d89b33ee22da606d17..5e67fd829e108464817f95e730f127b9cb60ae6e 100644 (file)
@@ -61,7 +61,7 @@ sql_bits/spatial_ref_sys.sql: ../../spatial_ref_sys.sql
        $(PERL) -pe 's/BEGIN\;//g ; s/COMMIT\;//g' $< > $@
 
 #strip BEGIN/COMMIT since these are not allowed in extensions
-sql_bits/postgis.sql: ../../postgis/postgis.sql
+sql_bits/postgis.sql: ../../postgis/postgis_for_extension.sql
        mkdir -p sql_bits/
        $(PERL) -pe 's/BEGIN\;//g ; s/COMMIT\;//g' $< > $@
 
@@ -84,7 +84,7 @@ sql_bits/spatial_ref_sys_config_dump.sql: ../../spatial_ref_sys.sql ../../utils/
 sql_bits/rtpostgis_upgrade.sql: ../../raster/rt_pg/rtpostgis_upgrade_for_extension.sql 
        $(PERL) -pe "s/BEGIN\;//g ; s/COMMIT\;//g; s/^(DROP .*)\;/SELECT postgis_extension_drop_if_exists('$(EXTENSION)', '\1');\n\1\;/" $< > $@
 
-sql_bits/postgis_upgrade.sql: ../../postgis/postgis_upgrade.sql
+sql_bits/postgis_upgrade.sql: ../../postgis/postgis_upgrade_for_extension.sql
        $(PERL) -pe "s/BEGIN\;//g ; s/COMMIT\;//g; s/^(DROP .*)\;/SELECT postgis_extension_drop_if_exists('$(EXTENSION)', '\1');\n\1\;/" $< > $@
 
 
index 26dfe3289f4ced5e57a288859cde7959bde9ab31..4fdf058e32c6623ac0c13f793f8844864c851f39 100644 (file)
@@ -27,11 +27,11 @@ MODULE_big=postgis-@POSTGIS_MAJOR_VERSION@.@POSTGIS_MINOR_VERSION@
 MODULEDIR=contrib/$(MODULE_big)
 
 # Files to be copied to the contrib/ directory
-SQL_built=postgis.sql uninstall_postgis.sql postgis_upgrade.sql postgis_proc_set_search_path.sql legacy.sql uninstall_legacy.sql legacy_minimal.sql legacy_gist.sql 
+SQL_built=postgis.sql postgis_for_extension.sql uninstall_postgis.sql postgis_upgrade.sql postgis_upgrade_for_extension.sql postgis_proc_set_search_path.sql legacy.sql uninstall_legacy.sql legacy_minimal.sql legacy_gist.sql 
 DATA=../spatial_ref_sys.sql
 
 # SQL objects (files requiring pre-processing)
-SQL_objs=postgis.sql legacy.sql legacy_minimal.sql
+SQL_objs=postgis.sql postgis_for_extension.sql legacy.sql legacy_minimal.sql
 
 GEOM_BACKEND_OBJ = lwgeom_geos.o
 SFCGAL_BACKEND_OBJ = lwgeom_sfcgal.o
@@ -171,13 +171,26 @@ $(PG_OBJS): ../liblwgeom/.libs/liblwgeom.a ../libpgcommon/libpgcommon.a ../postg
 
 # Borrow the $libdir substitution from PGXS but customise by running the preprocessor
 # and adding the version number
+# replace @extschema@. with nothing, this is only used as placeholder for extension install
 %.sql: %.sql.in
+       $(SQLPP) -I../libpgcommon $< | grep -v '^#' | \
+       $(PERL) -lpe "s'MODULE_PATHNAME'\$$libdir/postgis-@POSTGIS_MAJOR_VERSION@.@POSTGIS_MINOR_VERSION@'g;s'@extschema@\.''g" > $@
+       
+postgis_upgrade_for_extension.sql: postgis_upgrade_for_extension.sql.in
+       $(SQLPP) -I../libpgcommon $< | grep -v '^#' | \
+       $(PERL) -lpe "s'MODULE_PATHNAME'\$$libdir/postgis-@POSTGIS_MAJOR_VERSION@.@POSTGIS_MINOR_VERSION@'g" > $@
+       
+postgis_for_extension.sql: postgis.sql.in
        $(SQLPP) -I../libpgcommon $< | grep -v '^#' | \
        $(PERL) -lpe "s'MODULE_PATHNAME'\$$libdir/postgis-@POSTGIS_MAJOR_VERSION@.@POSTGIS_MINOR_VERSION@'g" > $@
 
+#this is redundant but trying to fold in with extension just hangs
 postgis_upgrade.sql.in: postgis.sql ../utils/postgis_proc_upgrade.pl
        $(PERL) ../utils/postgis_proc_upgrade.pl $< UNUSED > $@
        
+postgis_upgrade_for_extension.sql.in: postgis_for_extension.sql ../utils/postgis_proc_upgrade.pl
+       $(PERL) ../utils/postgis_proc_upgrade.pl $< UNUSED > $@
+       
 postgis_proc_set_search_path.sql: postgis.sql ../utils/postgis_proc_set_search_path.pl
        $(PERL) ../utils/postgis_proc_set_search_path.pl $< UNUSED > $@
 
index f16e74c1aae287ab00956f39b55913c6e179eae0..9caf40d95d8d6a2b2ff326980d4e4c557c0b4d73 100644 (file)
@@ -107,7 +107,7 @@ CREATE OR REPLACE FUNCTION ST_AsText(geography)
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_AsText(text)
        RETURNS text AS
-       $$ SELECT ST_AsText($1::geometry);  $$
+       $$ SELECT ST_AsText($1::@extschema@.geometry);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0
@@ -319,7 +319,7 @@ CREATE OPERATOR && (
 CREATE OR REPLACE FUNCTION overlaps_geog(geography, gidx)
 RETURNS boolean
 AS $$
-  SELECT $2 && $1;
+  SELECT $2 OPERATOR(@extschema@.&&) $1;
 $$ LANGUAGE SQL IMMUTABLE STRICT;
 
 -- Availability: 2.3.0
@@ -484,7 +484,7 @@ CREATE OR REPLACE FUNCTION ST_AsSVG(geog geography,rel int4 DEFAULT 0,maxdecimal
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_AsSVG(text)
        RETURNS text AS
-       $$ SELECT ST_AsSVG($1::geometry,0,15);  $$
+       $$ SELECT ST_AsSVG($1::@extschema@.geometry,0,15);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 --
@@ -501,7 +501,7 @@ CREATE OR REPLACE FUNCTION _ST_AsGML(int4, geography, int4, int4, text, text)
 -- Change 2.0.0 to use base function
 CREATE OR REPLACE FUNCTION ST_AsGML(text)
        RETURNS text AS
-       $$ SELECT _ST_AsGML(2,$1::geometry,15,0, NULL, NULL);  $$
+       $$ SELECT @extschema@._ST_AsGML(2,$1::@extschema@.geometry,15,0, NULL, NULL);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- ST_AsGML (geography, precision, option) / version=2
@@ -509,7 +509,7 @@ CREATE OR REPLACE FUNCTION ST_AsGML(text)
 -- Changed: 2.0.0 to use default args
 CREATE OR REPLACE FUNCTION ST_AsGML(geog geography, maxdecimaldigits int4 DEFAULT 15, options int4 DEFAULT 0)
        RETURNS text
-       AS 'SELECT _ST_AsGML(2, $1, $2, $3, null, null)'
+       AS 'SELECT @extschema@._ST_AsGML(2, $1, $2, $3, null, null)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- ST_AsGML(version, geography, precision, option, prefix)
@@ -518,7 +518,7 @@ CREATE OR REPLACE FUNCTION ST_AsGML(geog geography, maxdecimaldigits int4 DEFAUL
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_AsGML(version int4, geog geography, maxdecimaldigits int4 DEFAULT 15, options int4 DEFAULT 0, nprefix text DEFAULT NULL, id text DEFAULT NULL)
        RETURNS text
-       AS $$ SELECT _ST_AsGML($1, $2, $3, $4, $5, $6);$$
+       AS $$ SELECT @extschema@._ST_AsGML($1, $2, $3, $4, $5, $6);$$
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 --
@@ -535,14 +535,14 @@ CREATE OR REPLACE FUNCTION _ST_AsKML(int4, geography, int4, text)
 -- Changed: 2.0.0 to use default args and named args
 CREATE OR REPLACE FUNCTION ST_AsKML(geog geography, maxdecimaldigits int4 DEFAULT 15)
        RETURNS text
-       AS 'SELECT _ST_AsKML(2, $1, $2, null)'
+       AS 'SELECT @extschema@._ST_AsKML(2, $1, $2, null)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 -- Deprecated 2.0.0
 CREATE OR REPLACE FUNCTION ST_AsKML(text)
        RETURNS text AS
-       $$ SELECT _ST_AsKML(2, $1::geometry, 15, null);  $$
+       $$ SELECT @extschema@._ST_AsKML(2, $1::@extschema@.geometry, 15, null);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- ST_AsKML(version, geography, precision, prefix)
@@ -550,7 +550,7 @@ CREATE OR REPLACE FUNCTION ST_AsKML(text)
 -- Changed: 2.0.0 to use default args and named args
 CREATE OR REPLACE FUNCTION ST_AsKML(version int4, geog geography, maxdecimaldigits int4 DEFAULT 15, nprefix text DEFAULT null)
        RETURNS text
-       AS 'SELECT _ST_AsKML($1, $2, $3, $4)'
+       AS 'SELECT @extschema@._ST_AsKML($1, $2, $3, $4)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 --
@@ -566,21 +566,21 @@ CREATE OR REPLACE FUNCTION _ST_AsGeoJson(int4, geography, int4, int4)
 -- Deprecated in 2.0.0
 CREATE OR REPLACE FUNCTION ST_AsGeoJson(text)
        RETURNS text AS
-       $$ SELECT _ST_AsGeoJson(1, $1::geometry,15,0);  $$
+       $$ SELECT @extschema@._ST_AsGeoJson(1, $1::@extschema@.geometry,15,0);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- ST_AsGeoJson(geography, precision, options) / version=1
 -- Changed: 2.0.0 to use default args and named args
 CREATE OR REPLACE FUNCTION ST_AsGeoJson(geog geography, maxdecimaldigits int4 DEFAULT 15, options int4 DEFAULT 0)
        RETURNS text
-       AS $$ SELECT _ST_AsGeoJson(1, $1, $2, $3); $$
+       AS $$ SELECT @extschema@._ST_AsGeoJson(1, $1, $2, $3); $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- ST_AsGeoJson(version, geography, precision,options)
 -- Changed: 2.0.0 to use default args and named args
 CREATE OR REPLACE FUNCTION ST_AsGeoJson(gj_version int4, geog geography, maxdecimaldigits int4 DEFAULT 15, options int4 DEFAULT 0)
        RETURNS text
-       AS $$ SELECT _ST_AsGeoJson($1, $2, $3, $4); $$
+       AS $$ SELECT @extschema@._ST_AsGeoJson($1, $2, $3, $4); $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
@@ -607,20 +607,20 @@ CREATE OR REPLACE FUNCTION _ST_DWithin(geography, geography, float8, boolean)
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_Distance(geography, geography, boolean)
        RETURNS float8
-       AS 'SELECT _ST_Distance($1, $2, 0.0, $3)'
+       AS 'SELECT @extschema@._ST_Distance($1, $2, 0.0, $3)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Currently defaulting to spheroid calculations
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_Distance(geography, geography)
        RETURNS float8
-       AS 'SELECT _ST_Distance($1, $2, 0.0, true)'
+       AS 'SELECT @extschema@._ST_Distance($1, $2, 0.0, true)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
        
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_Distance(text, text)
        RETURNS float8 AS
-       $$ SELECT ST_Distance($1::geometry, $2::geometry);  $$
+       $$ SELECT ST_Distance($1::@extschema@.geometry, $2::@extschema@.geometry);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Only expands the bounding box, the actual geometry will remain unchanged, use with care.
@@ -634,20 +634,20 @@ CREATE OR REPLACE FUNCTION _ST_Expand(geography, float8)
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_DWithin(geography, geography, float8, boolean)
        RETURNS boolean
-       AS 'SELECT $1 && _ST_Expand($2,$3) AND $2 && _ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3, $4)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@._ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@._ST_Expand($1,$3) AND @extschema@._ST_DWithin($1, $2, $3, $4)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Currently defaulting to spheroid calculations
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_DWithin(geography, geography, float8)
        RETURNS boolean
-       AS 'SELECT $1 && _ST_Expand($2,$3) AND $2 && _ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3, true)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@._ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@._ST_Expand($1,$3) AND @extschema@._ST_DWithin($1, $2, $3, true)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_DWithin(text, text, float8)
        RETURNS boolean AS
-       $$ SELECT ST_DWithin($1::geometry, $2::geometry, $3);  $$
+       $$ SELECT ST_DWithin($1::@extschema@.geometry, $2::@extschema@.geometry, $3);  $$
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 
@@ -666,13 +666,13 @@ CREATE OR REPLACE FUNCTION _ST_DistanceUnCached(geography, geography, float8, bo
 -- Calculate the distance in geographics *without* using the caching code line or tree code
 CREATE OR REPLACE FUNCTION _ST_DistanceUnCached(geography, geography, boolean)
        RETURNS float8
-       AS 'SELECT _ST_DistanceUnCached($1, $2, 0.0, $3)'
+       AS 'SELECT @extschema@._ST_DistanceUnCached($1, $2, 0.0, $3)'
        LANGUAGE 'sql' IMMUTABLE STRICT;
 
 -- Calculate the distance in geographics *without* using the caching code line or tree code
 CREATE OR REPLACE FUNCTION _ST_DistanceUnCached(geography, geography)
        RETURNS float8
-       AS 'SELECT _ST_DistanceUnCached($1, $2, 0.0, true)'
+       AS 'SELECT @extschema@._ST_DistanceUnCached($1, $2, 0.0, true)'
        LANGUAGE 'sql' IMMUTABLE STRICT;
 
 -- Calculate the distance in geographics using the circular tree code, but 
@@ -687,7 +687,7 @@ CREATE OR REPLACE FUNCTION _ST_DistanceTree(geography, geography, float8, boolea
 -- *without* using the caching code line
 CREATE OR REPLACE FUNCTION _ST_DistanceTree(geography, geography)
        RETURNS float8
-       AS 'SELECT _ST_DistanceTree($1, $2, 0.0, true)'
+       AS 'SELECT @extschema@._ST_DistanceTree($1, $2, 0.0, true)'
        LANGUAGE 'sql' IMMUTABLE STRICT;
 
 -- Calculate the dwithin relation *without* using the caching code line or tree code
@@ -700,7 +700,7 @@ CREATE OR REPLACE FUNCTION _ST_DWithinUnCached(geography, geography, float8, boo
 -- Calculate the dwithin relation *without* using the caching code line or tree code
 CREATE OR REPLACE FUNCTION _ST_DWithinUnCached(geography, geography, float8)
        RETURNS boolean
-       AS 'SELECT $1 && _ST_Expand($2,$3) AND $2 && _ST_Expand($1,$3) AND _ST_DWithinUnCached($1, $2, $3, true)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@._ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@._ST_Expand($1,$3) AND @extschema@._ST_DWithinUnCached($1, $2, $3, true)'
        LANGUAGE 'sql' IMMUTABLE;
        
 -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
@@ -715,7 +715,7 @@ CREATE OR REPLACE FUNCTION ST_Area(geog geography, use_spheroid boolean DEFAULT
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_Area(text)
        RETURNS float8 AS
-       $$ SELECT ST_Area($1::geometry);  $$
+       $$ SELECT ST_Area($1::@extschema@.geometry);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0
@@ -728,7 +728,7 @@ CREATE OR REPLACE FUNCTION ST_Length(geog geography, use_spheroid boolean DEFAUL
 -- 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::geometry);  $$
+       $$ SELECT ST_Length($1::@extschema@.geometry);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.0.0
@@ -770,26 +770,26 @@ CREATE OR REPLACE FUNCTION _ST_Covers(geography, geography)
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_Covers(geography, geography)
        RETURNS boolean
-       AS 'SELECT $1 && $2 AND _ST_Covers($1, $2)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Covers($1, $2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_Covers(text, text)
        RETURNS boolean AS
-       $$ SELECT ST_Covers($1::geometry, $2::geometry);  $$
+       $$ SELECT ST_Covers($1::@extschema@.geometry, $2::@extschema@.geometry);  $$
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Only implemented for polygon-over-point
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_CoveredBy(geography, geography)
        RETURNS boolean
-       AS 'SELECT $1 && $2 AND _ST_Covers($2, $1)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Covers($2, $1)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_CoveredBy(text, text)
        RETURNS boolean AS
-       $$ SELECT ST_CoveredBy($1::geometry, $2::geometry);  $$
+       $$ SELECT ST_CoveredBy($1::@extschema@.geometry, $2::@extschema@.geometry);  $$
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 2.1.0
@@ -802,13 +802,13 @@ CREATE OR REPLACE FUNCTION ST_Segmentize(geog geography, max_segment_length floa
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_Intersects(geography, geography)
        RETURNS boolean
-       AS 'SELECT $1 && $2 AND _ST_Distance($1, $2, 0.0, false) < 0.00001'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Distance($1, $2, 0.0, false) < 0.00001'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_Intersects(text, text)
        RETURNS boolean AS
-       $$ SELECT ST_Intersects($1::geometry, $2::geometry);  $$
+       $$ SELECT ST_Intersects($1::@extschema@.geometry, $2::@extschema@.geometry);  $$
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.5.0
@@ -820,55 +820,55 @@ CREATE OR REPLACE FUNCTION _ST_BestSRID(geography, geography)
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION _ST_BestSRID(geography)
        RETURNS integer
-       AS 'SELECT _ST_BestSRID($1,$1)'
+       AS 'SELECT @extschema@._ST_BestSRID($1,$1)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_Buffer(geography, float8)
        RETURNS geography
-       AS 'SELECT geography(ST_Transform(ST_Buffer(ST_Transform(geometry($1), _ST_BestSRID($1)), $2), 4326))'
+       AS 'SELECT geography(ST_Transform(ST_Buffer(ST_Transform(geometry($1), @extschema@._ST_BestSRID($1)), $2), 4326))'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.3.x
 CREATE OR REPLACE FUNCTION ST_Buffer(geography, float8, integer)
        RETURNS geography
-       AS 'SELECT geography(ST_Transform(ST_Buffer(ST_Transform(geometry($1), _ST_BestSRID($1)), $2, $3), 4326))'
+       AS 'SELECT geography(ST_Transform(ST_Buffer(ST_Transform(geometry($1), @extschema@._ST_BestSRID($1)), $2, $3), 4326))'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.3.x
 CREATE OR REPLACE FUNCTION ST_Buffer(geography, float8, text)
        RETURNS geography
-       AS 'SELECT geography(ST_Transform(ST_Buffer(ST_Transform(geometry($1), _ST_BestSRID($1)), $2, $3), 4326))'
+       AS 'SELECT geography(ST_Transform(ST_Buffer(ST_Transform(geometry($1), @extschema@._ST_BestSRID($1)), $2, $3), 4326))'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_Buffer(text, float8)
        RETURNS geometry AS
-       $$ SELECT ST_Buffer($1::geometry, $2);  $$
+       $$ SELECT ST_Buffer($1::@extschema@.geometry, $2);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.3.x
 CREATE OR REPLACE FUNCTION ST_Buffer(text, float8, integer)
        RETURNS geometry AS
-       $$ SELECT ST_Buffer($1::geometry, $2, $3);  $$
+       $$ SELECT ST_Buffer($1::@extschema@.geometry, $2, $3);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.3.x
 CREATE OR REPLACE FUNCTION ST_Buffer(text, float8, text)
        RETURNS geometry AS
-       $$ SELECT ST_Buffer($1::geometry, $2, $3);  $$
+       $$ SELECT ST_Buffer($1::@extschema@.geometry, $2, $3);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_Intersection(geography, geography)
        RETURNS geography
-       AS 'SELECT geography(ST_Transform(ST_Intersection(ST_Transform(geometry($1), _ST_BestSRID($1, $2)), ST_Transform(geometry($2), _ST_BestSRID($1, $2))), 4326))'
+       AS 'SELECT geography(ST_Transform(ST_Intersection(ST_Transform(geometry($1), @extschema@._ST_BestSRID($1, $2)), ST_Transform(geometry($2), @extschema@._ST_BestSRID($1, $2))), 4326))'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_Intersection(text, text)
        RETURNS geometry AS
-       $$ SELECT ST_Intersection($1::geometry, $2::geometry);  $$
+       $$ SELECT @extschema@.ST_Intersection($1::@extschema@.geometry, $2::@extschema@.geometry);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0
@@ -880,7 +880,7 @@ CREATE OR REPLACE FUNCTION ST_AsBinary(geography)
 -- Availability: 2.0.0
 CREATE OR REPLACE FUNCTION ST_AsBinary(geography,text)
        RETURNS bytea AS
-       $$ SELECT ST_AsBinary($1::geometry, $2);  $$
+       $$ SELECT @extschema@.ST_AsBinary($1::@extschema@.geometry, $2);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.0.0
@@ -892,7 +892,7 @@ CREATE OR REPLACE FUNCTION ST_AsEWKT(geography)
 -- Availability: 2.0.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
 CREATE OR REPLACE FUNCTION ST_AsEWKT(text)
        RETURNS text AS
-       $$ SELECT ST_AsEWKT($1::geometry);  $$
+       $$ SELECT @extschema@.ST_AsEWKT($1::@extschema@.geometry);  $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.0.0
index 235d688bc6b68f3005a138697b51b2bd0fb26120..708a46fbe5bf678691288d2854ae8f2e92db4c47 100644 (file)
@@ -896,8 +896,8 @@ CREATE OR REPLACE FUNCTION ST_WrapX(geom geometry, wrap float8, move float8)
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_Shift_Longitude(geometry)
        RETURNS geometry AS
-  $$ SELECT _postgis_deprecate('ST_Shift_Longitude', 'ST_ShiftLongitude', '2.2.0');
-    SELECT ST_ShiftLongitude($1);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Shift_Longitude', 'ST_ShiftLongitude', '2.2.0');
+    SELECT @extschema@.ST_ShiftLongitude($1);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -986,10 +986,10 @@ CREATE OR REPLACE FUNCTION ST_EstimatedExtent(text,text,text) RETURNS box2d AS
 -- Availability: 1.2.2
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_estimated_extent(text,text,text) RETURNS box2d AS
-  $$ SELECT _postgis_deprecate('ST_Estimated_Extent', 'ST_EstimatedExtent', '2.1.0');
+  $$ SELECT @extschema@._postgis_deprecate('ST_Estimated_Extent', 'ST_EstimatedExtent', '2.1.0');
     -- We use security invoker instead of security definer
     -- to prevent malicious injection of a different same named function
-    SELECT ST_EstimatedExtent($1, $2, $3);
+    SELECT @extschema@.ST_EstimatedExtent($1, $2, $3);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT SECURITY INVOKER;
 
@@ -1005,11 +1005,11 @@ CREATE OR REPLACE FUNCTION ST_EstimatedExtent(text,text) RETURNS box2d AS
 -- Availability: 1.2.2
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_estimated_extent(text,text) RETURNS box2d AS
-  $$ SELECT _postgis_deprecate('ST_Estimated_Extent', 'ST_EstimatedExtent', '2.1.0');
+  $$ SELECT @extschema@._postgis_deprecate('ST_Estimated_Extent', 'ST_EstimatedExtent', '2.1.0');
     -- We use security invoker instead of security definer
     -- to prevent malicious injection of a same named different function
     -- that would be run under elevated permissions
-    SELECT ST_EstimatedExtent($1, $2);
+    SELECT @extschema@.ST_EstimatedExtent($1, $2);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT SECURITY INVOKER;
 
@@ -1026,7 +1026,7 @@ DECLARE
        columnname alias for $3;
        myrec RECORD;
 BEGIN
-       FOR myrec IN EXECUTE 'SELECT ST_Extent("' || columnname || '") As extent FROM "' || schemaname || '"."' || tablename || '"' LOOP
+       FOR myrec IN EXECUTE 'SELECT @extschema@.ST_Extent("' || columnname || '") As extent FROM "' || schemaname || '"."' || tablename || '"' LOOP
                return myrec.extent;
        END LOOP;
 END;
@@ -1036,8 +1036,8 @@ LANGUAGE 'plpgsql' IMMUTABLE STRICT _PARALLEL;
 -- Availability: 1.2.2
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_find_extent(text,text,text) RETURNS box2d AS
-  $$ SELECT _postgis_deprecate('ST_Find_Extent', 'ST_FindExtent', '2.2.0');
-    SELECT ST_FindExtent($1,$2,$3);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Find_Extent', 'ST_FindExtent', '2.2.0');
+    SELECT @extschema@.ST_FindExtent($1,$2,$3);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1054,7 +1054,7 @@ DECLARE
        myrec RECORD;
 
 BEGIN
-       FOR myrec IN EXECUTE 'SELECT ST_Extent("' || columnname || '") As extent FROM "' || tablename || '"' LOOP
+       FOR myrec IN EXECUTE 'SELECT @extschema@.ST_Extent("' || columnname || '") As extent FROM "' || tablename || '"' LOOP
                return myrec.extent;
        END LOOP;
 END;
@@ -1064,8 +1064,8 @@ LANGUAGE 'plpgsql' IMMUTABLE STRICT _PARALLEL;
 -- Availability: 1.2.2
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_find_extent(text,text) RETURNS box2d AS
-  $$ SELECT _postgis_deprecate('ST_Find_Extent', 'ST_FindExtent', '2.2.0');
-    SELECT ST_FindExtent($1,$2);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Find_Extent', 'ST_FindExtent', '2.2.0');
+    SELECT @extschema@.ST_FindExtent($1,$2);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1106,8 +1106,8 @@ CREATE OR REPLACE FUNCTION ST_MemSize(geometry)
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_mem_size(geometry)
        RETURNS int4 AS
-  $$ SELECT _postgis_deprecate('ST_Mem_Size', 'ST_MemSize', '2.2.0');
-    SELECT ST_MemSize($1);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Mem_Size', 'ST_MemSize', '2.2.0');
+    SELECT @extschema@.ST_MemSize($1);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT SECURITY INVOKER;
 
@@ -1168,8 +1168,8 @@ CREATE OR REPLACE FUNCTION ST_LengthSpheroid(geometry, spheroid)
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_3DLength_spheroid(geometry, spheroid)
        RETURNS FLOAT8 AS
-  $$ SELECT _postgis_deprecate('ST_3DLength_Spheroid', 'ST_LengthSpheroid', '2.2.0');
-    SELECT ST_LengthSpheroid($1,$2);
+  $$ SELECT @extschema@._postgis_deprecate('ST_3DLength_Spheroid', 'ST_LengthSpheroid', '2.2.0');
+    SELECT @extschema@.ST_LengthSpheroid($1,$2);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT
        COST 100;
@@ -1179,8 +1179,8 @@ CREATE OR REPLACE FUNCTION ST_3DLength_spheroid(geometry, spheroid)
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_length_spheroid(geometry, spheroid)
        RETURNS FLOAT8 AS
-  $$ SELECT _postgis_deprecate('ST_Length_Spheroid', 'ST_LengthSpheroid', '2.2.0');
-    SELECT ST_LengthSpheroid($1,$2);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Length_Spheroid', 'ST_LengthSpheroid', '2.2.0');
+    SELECT @extschema@.ST_LengthSpheroid($1,$2);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1195,8 +1195,8 @@ CREATE OR REPLACE FUNCTION ST_Length2DSpheroid(geometry, spheroid)
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_length2d_spheroid(geometry, spheroid)
        RETURNS FLOAT8 AS
-  $$ SELECT _postgis_deprecate('ST_Length2D_Spheroid', 'ST_Length2DSpheroid', '2.2.0');
-    SELECT ST_Length2DSpheroid($1,$2);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Length2D_Spheroid', 'ST_Length2DSpheroid', '2.2.0');
+    SELECT @extschema@.ST_Length2DSpheroid($1,$2);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1247,8 +1247,8 @@ CREATE OR REPLACE FUNCTION ST_DistanceSpheroid(geom1 geometry, geom2 geometry,sp
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_distance_spheroid(geom1 geometry, geom2 geometry,spheroid)
        RETURNS FLOAT8 AS
-  $$ SELECT _postgis_deprecate('ST_Distance_Spheroid', 'ST_DistanceSpheroid', '2.2.0');
-    SELECT ST_DistanceSpheroid($1,$2,$3);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Distance_Spheroid', 'ST_DistanceSpheroid', '2.2.0');
+    SELECT @extschema@.ST_DistanceSpheroid($1,$2,$3);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1271,8 +1271,8 @@ CREATE OR REPLACE FUNCTION ST_PointInsideCircle(geometry,float8,float8,float8)
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_point_inside_circle(geometry,float8,float8,float8)
        RETURNS bool AS
-  $$ SELECT _postgis_deprecate('ST_Point_Inside_Circle', 'ST_PointInsideCircle', '2.2.0');
-    SELECT ST_PointInsideCircle($1,$2,$3,$4);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Point_Inside_Circle', 'ST_PointInsideCircle', '2.2.0');
+    SELECT @extschema@.ST_PointInsideCircle($1,$2,$3,$4);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1297,8 +1297,8 @@ CREATE OR REPLACE FUNCTION ST_Force2D(geometry)
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_force_2d(geometry)
        RETURNS geometry AS
-  $$ SELECT _postgis_deprecate('ST_Force_2d', 'ST_Force2D', '2.1.0');
-    SELECT ST_Force2D($1);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Force_2d', 'ST_Force2D', '2.1.0');
+    SELECT @extschema@.ST_Force2D($1);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1313,8 +1313,8 @@ CREATE OR REPLACE FUNCTION ST_Force3DZ(geometry)
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_force_3dz(geometry)
        RETURNS geometry AS
-  $$ SELECT _postgis_deprecate('ST_Force_3dz', 'ST_Force3DZ', '2.1.0');
-    SELECT ST_Force3DZ($1);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Force_3dz', 'ST_Force3DZ', '2.1.0');
+    SELECT @extschema@.ST_Force3DZ($1);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1329,8 +1329,8 @@ CREATE OR REPLACE FUNCTION ST_Force3D(geometry)
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_force_3d(geometry)
        RETURNS geometry AS
-  $$ SELECT _postgis_deprecate('ST_Force_3d', 'ST_Force3D', '2.1.0');
-    SELECT ST_Force3D($1);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Force_3d', 'ST_Force3D', '2.1.0');
+    SELECT @extschema@.ST_Force3D($1);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1345,8 +1345,8 @@ CREATE OR REPLACE FUNCTION ST_Force3DM(geometry)
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_force_3dm(geometry)
        RETURNS geometry AS
-  $$ SELECT _postgis_deprecate('ST_Force_3dm', 'ST_Force3DM', '2.1.0');
-    SELECT ST_Force3DM($1);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Force_3dm', 'ST_Force3DM', '2.1.0');
+    SELECT @extschema@.ST_Force3DM($1);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1361,8 +1361,8 @@ CREATE OR REPLACE FUNCTION ST_Force4D(geometry)
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_force_4d(geometry)
        RETURNS geometry AS
-  $$ SELECT _postgis_deprecate('ST_Force_4d', 'ST_Force4D', '2.1.0');
-    SELECT ST_Force4D($1);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Force_4d', 'ST_Force4D', '2.1.0');
+    SELECT @extschema@.ST_Force4D($1);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1377,8 +1377,8 @@ CREATE OR REPLACE FUNCTION ST_ForceCollection(geometry)
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_force_collection(geometry)
        RETURNS geometry AS
-  $$ SELECT _postgis_deprecate('ST_Force_Collection', 'ST_ForceCollection', '2.1.0');
-    SELECT ST_ForceCollection($1);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Force_Collection', 'ST_ForceCollection', '2.1.0');
+    SELECT @extschema@.ST_ForceCollection($1);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1740,55 +1740,55 @@ CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8)
        RETURNS geometry
-       AS 'SELECT ST_Affine($1,  $2, $3, 0,  $4, $5, 0,  0, 0, 1,  $6, $7, 0)'
+       AS 'SELECT @extschema@.ST_Affine($1,  $2, $3, 0,  $4, $5, 0,  0, 0, 1,  $6, $7, 0)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_Rotate(geometry,float8)
        RETURNS geometry
-       AS 'SELECT ST_Affine($1,  cos($2), -sin($2), 0,  sin($2), cos($2), 0,  0, 0, 1,  0, 0, 0)'
+       AS 'SELECT @extschema@.ST_Affine($1,  cos($2), -sin($2), 0,  sin($2), cos($2), 0,  0, 0, 1,  0, 0, 0)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.0.0
 CREATE OR REPLACE FUNCTION ST_Rotate(geometry,float8,float8,float8)
        RETURNS geometry
-       AS 'SELECT ST_Affine($1,  cos($2), -sin($2), 0,  sin($2),  cos($2), 0, 0, 0, 1, $3 - cos($2) * $3 + sin($2) * $4, $4 - sin($2) * $3 - cos($2) * $4, 0)'
+       AS 'SELECT @extschema@.ST_Affine($1,  cos($2), -sin($2), 0,  sin($2),  cos($2), 0, 0, 0, 1,     $3 - cos($2) * $3 + sin($2) * $4, $4 - sin($2) * $3 - cos($2) * $4, 0)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.0.0
 CREATE OR REPLACE FUNCTION ST_Rotate(geometry,float8,geometry)
        RETURNS geometry
-       AS 'SELECT ST_Affine($1,  cos($2), -sin($2), 0,  sin($2),  cos($2), 0, 0, 0, 1, ST_X($3) - cos($2) * ST_X($3) + sin($2) * ST_Y($3), ST_Y($3) - sin($2) * ST_X($3) - cos($2) * ST_Y($3), 0)'
+       AS 'SELECT @extschema@.ST_Affine($1,  cos($2), -sin($2), 0,  sin($2),  cos($2), 0, 0, 0, 1, @extschema@.ST_X($3) - cos($2) * @extschema@.ST_X($3) + sin($2) * @extschema@.ST_Y($3), @extschema@.ST_Y($3) - sin($2) * @extschema@.ST_X($3) - cos($2) * @extschema@.ST_Y($3), 0)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_RotateZ(geometry,float8)
        RETURNS geometry
-       AS 'SELECT ST_Rotate($1, $2)'
+       AS 'SELECT @extschema@.ST_Rotate($1, $2)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_RotateX(geometry,float8)
        RETURNS geometry
-       AS 'SELECT ST_Affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)'
+       AS 'SELECT @extschema@.ST_Affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_RotateY(geometry,float8)
        RETURNS geometry
-       AS 'SELECT ST_Affine($1,  cos($2), 0, sin($2),  0, 1, 0,  -sin($2), 0, cos($2), 0,  0, 0)'
+       AS 'SELECT @extschema@.ST_Affine($1,  cos($2), 0, sin($2),  0, 1, 0,  -sin($2), 0, cos($2), 0,  0, 0)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8,float8)
        RETURNS geometry
-       AS 'SELECT ST_Affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)'
+       AS 'SELECT @extschema@.ST_Affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8)
        RETURNS geometry
-       AS 'SELECT ST_Translate($1, $2, $3, 0)'
+       AS 'SELECT @extschema@.ST_Translate($1, $2, $3, 0)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.2.0
@@ -1801,19 +1801,19 @@ CREATE OR REPLACE FUNCTION ST_Scale(geometry,geometry)
 CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8,float8)
        RETURNS geometry
        --AS 'SELECT ST_Affine($1,  $2, 0, 0,  0, $3, 0,  0, 0, $4,  0, 0, 0)'
-       AS 'SELECT ST_Scale($1, ST_MakePoint($2, $3, $4))'
+       AS 'SELECT @extschema@.ST_Scale($1, @extschema@.ST_MakePoint($2, $3, $4))'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8)
        RETURNS geometry
-       AS 'SELECT ST_Scale($1, $2, $3, 1)'
+       AS 'SELECT @extschema@.ST_Scale($1, $2, $3, 1)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_Transscale(geometry,float8,float8,float8,float8)
        RETURNS geometry
-       AS 'SELECT ST_Affine($1,  $4, 0, 0,  0, $5, 0,
+       AS 'SELECT @extschema@.ST_Affine($1,  $4, 0, 0,  0, $5, 0,
                0, 0, 1,  $2 * $4, $3 * $5, 0)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -1856,16 +1856,16 @@ DECLARE
 
 BEGIN
 
-  -- RAISE DEBUG '%,%', cur_path, ST_GeometryType(the_geom);
+  -- RAISE DEBUG '%,%', cur_path, @extschema@.ST_GeometryType(the_geom);
 
   -- Special case collections : iterate and return the DumpPoints of the geometries
 
-  IF (ST_IsCollection(the_geom)) THEN
+  IF (@extschema@.ST_IsCollection(the_geom)) THEN
 
     i = 1;
-    FOR tmp2 IN SELECT (ST_Dump(the_geom)).* LOOP
+    FOR tmp2 IN SELECT (@extschema@.ST_Dump(the_geom)).* LOOP
 
-      FOR tmp IN SELECT * FROM _ST_DumpPoints(tmp2.geom, cur_path || tmp2.path) LOOP
+      FOR tmp IN SELECT * FROM @extschema@._ST_DumpPoints(tmp2.geom, cur_path || tmp2.path) LOOP
            RETURN NEXT tmp;
       END LOOP;
       i = i + 1;
@@ -1877,15 +1877,15 @@ BEGIN
 
 
   -- Special case (POLYGON) : return the points of the rings of a polygon
-  IF (ST_GeometryType(the_geom) = 'ST_Polygon') THEN
+  IF (@extschema@.ST_GeometryType(the_geom) = 'ST_Polygon') THEN
 
-    FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_ExteriorRing(the_geom), cur_path || ARRAY[1]) LOOP
+    FOR tmp IN SELECT * FROM @extschema@._ST_DumpPoints(@extschema@.ST_ExteriorRing(the_geom), cur_path || ARRAY[1]) LOOP
       RETURN NEXT tmp;
     END LOOP;
 
-    j := ST_NumInteriorRings(the_geom);
+    j := @extschema@.ST_NumInteriorRings(the_geom);
     FOR i IN 1..j LOOP
-        FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_InteriorRingN(the_geom, i), cur_path || ARRAY[i+1]) LOOP
+        FOR tmp IN SELECT * FROM @extschema@._ST_DumpPoints(@extschema@.ST_InteriorRingN(the_geom, i), cur_path || ARRAY[i+1]) LOOP
           RETURN NEXT tmp;
         END LOOP;
     END LOOP;
@@ -1894,9 +1894,9 @@ BEGIN
   END IF;
 
   -- Special case (TRIANGLE) : return the points of the external rings of a TRIANGLE
-  IF (ST_GeometryType(the_geom) = 'ST_Triangle') THEN
+  IF (@extschema@.ST_GeometryType(the_geom) = 'ST_Triangle') THEN
 
-    FOR tmp IN SELECT * FROM _ST_DumpPoints(ST_ExteriorRing(the_geom), cur_path || ARRAY[1]) LOOP
+    FOR tmp IN SELECT * FROM @extschema@._ST_DumpPoints(@extschema@.ST_ExteriorRing(the_geom), cur_path || ARRAY[1]) LOOP
       RETURN NEXT tmp;
     END LOOP;
 
@@ -1905,7 +1905,7 @@ BEGIN
 
 
   -- Special case (POINT) : return the point
-  IF (ST_GeometryType(the_geom) = 'ST_Point') THEN
+  IF (@extschema@.ST_GeometryType(the_geom) = 'ST_Point') THEN
 
     tmp.path = cur_path || ARRAY[1];
     tmp.geom = the_geom;
@@ -1918,16 +1918,16 @@ BEGIN
 
   -- Use ST_NumPoints rather than ST_NPoints to have a NULL value if the_geom isn't
   -- a LINESTRING, CIRCULARSTRING.
-  SELECT ST_NumPoints(the_geom) INTO nb_points;
+  SELECT @extschema@.ST_NumPoints(the_geom) INTO nb_points;
 
   -- This should never happen
   IF (nb_points IS NULL) THEN
-    RAISE EXCEPTION 'Unexpected error while dumping geometry %', ST_AsText(the_geom);
+    RAISE EXCEPTION 'Unexpected error while dumping geometry %', @extschema@.ST_AsText(the_geom);
   END IF;
 
   FOR i IN 1..nb_points LOOP
     tmp.path = cur_path || ARRAY[i];
-    tmp.geom := ST_PointN(the_geom, i);
+    tmp.geom := @extschema@.ST_PointN(the_geom, i);
     RETURN NEXT tmp;
   END LOOP;
 
@@ -2112,7 +2112,7 @@ BEGIN
         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 st_srid(' || quote_ident(gcs.attname) || ') As srid, GeometryType(' || quote_ident(gcs.attname) || ') As type, ST_NDims(' || quote_ident(gcs.attname) || ') As dims ' ||
+            EXECUTE 'SELECT @extschema@.ST_srid(' || quote_ident(gcs.attname) || ') As srid, GeometryType(' || quote_ident(gcs.attname) || ') As type, @extschema@.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;
@@ -2140,7 +2140,7 @@ BEGIN
                     BEGIN
                         EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) ||
                                  ' ADD CONSTRAINT ' || quote_ident('enforce_srid_' || gcs.attname) ||
-                                 ' CHECK (st_srid(' || quote_ident(gcs.attname) || ') = ' || gsrid || ')';
+                                 ' CHECK (ST_srid(' || quote_ident(gcs.attname) || ') = ' || gsrid || ')';
                         constraint_successful := true;
                     EXCEPTION
                         WHEN check_violation THEN
@@ -2265,7 +2265,7 @@ BEGIN
                        RETURN 'fail';
                END IF;
        ELSE
-               new_srid := ST_SRID('POINT EMPTY'::geometry);
+               new_srid := @extschema@.ST_SRID('POINT EMPTY'::@extschema@.geometry);
                IF ( new_srid_in != new_srid ) THEN
                        RAISE NOTICE 'SRID value % converted to the officially unknown SRID value %', new_srid_in, new_srid;
                END IF;
@@ -2625,7 +2625,7 @@ BEGIN
                        RETURN false;
                END IF;
        ELSE
-               unknown_srid := ST_SRID('POINT EMPTY'::geometry);
+               unknown_srid := @extschema@.ST_SRID('POINT EMPTY'::@extschema@.geometry);
                IF ( new_srid != unknown_srid ) THEN
                        new_srid := unknown_srid;
                        RAISE NOTICE 'SRID value % converted to the officially unknown SRID value %', new_srid_in, new_srid;
@@ -2646,7 +2646,7 @@ BEGIN
         EXECUTE 'UPDATE ' || quote_ident(real_schema) ||
             '.' || quote_ident(table_name) ||
             ' SET ' || quote_ident(column_name) ||
-            ' = ST_SetSRID(' || quote_ident(column_name) ||
+            ' = @extschema@.ST_SetSRID(' || quote_ident(column_name) ||
             ', ' || new_srid::text || ')';
 
         -- Reset enforce_srid constraint
@@ -2660,7 +2660,7 @@ BEGIN
         -- We are using postgis_type_name to lookup the new name
         -- (in case Paul changes his mind and flips geometry_columns to return old upper case name)
         EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || '.' || quote_ident(table_name) ||
-        ' ALTER COLUMN ' || quote_ident(column_name) || ' TYPE  geometry(' || postgis_type_name(myrec.type, myrec.coord_dimension, true) || ', ' || new_srid::text || ') USING ST_SetSRID(' || quote_ident(column_name) || ',' || new_srid::text || ');' ;
+        ' ALTER COLUMN ' || quote_ident(column_name) || ' TYPE  geometry(' || postgis_type_name(myrec.type, myrec.coord_dimension, true) || ', ' || new_srid::text || ') USING @extschema@.ST_SetSRID(' || quote_ident(column_name) || ',' || new_srid::text || ');' ;
     END IF;
 
        RETURN real_schema || '.' || table_name || '.' || column_name ||' SRID changed to ' || new_srid::text;
@@ -2770,7 +2770,7 @@ CREATE OR REPLACE FUNCTION ST_Transform(geometry,integer)
 CREATE OR REPLACE FUNCTION ST_Transform(geom geometry, to_proj text)
   RETURNS geometry AS
 'SELECT postgis_transform_geometry($1, proj4text, $2, 0)
-FROM spatial_ref_sys WHERE srid=ST_SRID($1);'
+FROM spatial_ref_sys WHERE srid=@extschema@.ST_SRID($1);'
   LANGUAGE sql IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.3.0
@@ -3130,7 +3130,7 @@ CREATE OR REPLACE FUNCTION ST_SnapToGrid(geometry, float8, float8, float8, float
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_SnapToGrid(geometry, float8, float8)
        RETURNS geometry
-       AS 'SELECT ST_SnapToGrid($1, 0, 0, $2, $3)'
+       AS 'SELECT @extschema@.ST_SnapToGrid($1, 0, 0, $2, $3)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL
        COST 25;
 
@@ -3138,7 +3138,7 @@ CREATE OR REPLACE FUNCTION ST_SnapToGrid(geometry, float8, float8)
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_SnapToGrid(geometry, float8)
        RETURNS geometry
-       AS 'SELECT ST_SnapToGrid($1, 0, 0, $2, $2)'
+       AS 'SELECT @extschema@.ST_SnapToGrid($1, 0, 0, $2, $2)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- ST_SnapToGrid(input, point_offsets, xsize, ysize, zsize, msize)
@@ -3170,8 +3170,8 @@ CREATE OR REPLACE FUNCTION ST_LineInterpolatePoint(geometry, float8)
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_line_interpolate_point(geometry, float8)
        RETURNS geometry AS
-  $$ SELECT _postgis_deprecate('ST_Line_Interpolate_Point', 'ST_LineInterpolatePoint', '2.1.0');
-    SELECT ST_LineInterpolatePoint($1, $2);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Line_Interpolate_Point', 'ST_LineInterpolatePoint', '2.1.0');
+    SELECT @extschema@.ST_LineInterpolatePoint($1, $2);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -3185,8 +3185,8 @@ CREATE OR REPLACE FUNCTION ST_LineSubstring(geometry, float8, float8)
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_line_substring(geometry, float8, float8)
        RETURNS geometry AS
-  $$ SELECT _postgis_deprecate('ST_Line_Substring', 'ST_LineSubstring', '2.1.0');
-     SELECT ST_LineSubstring($1, $2, $3);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Line_Substring', 'ST_LineSubstring', '2.1.0');
+     SELECT @extschema@.ST_LineSubstring($1, $2, $3);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -3200,8 +3200,8 @@ CREATE OR REPLACE FUNCTION ST_LineLocatePoint(geom1 geometry, geom2 geometry)
 -- Deprecation in 2.1.0
 CREATE OR REPLACE FUNCTION ST_line_locate_point(geom1 geometry, geom2 geometry)
        RETURNS float8 AS
-  $$ SELECT _postgis_deprecate('ST_Line_Locate_Point', 'ST_LineLocatePoint', '2.1.0');
-     SELECT ST_LineLocatePoint($1, $2);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Line_Locate_Point', 'ST_LineLocatePoint', '2.1.0');
+     SELECT @extschema@.ST_LineLocatePoint($1, $2);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -3218,7 +3218,7 @@ CREATE OR REPLACE FUNCTION ST_locate_between_measures(geometry, float8, float8)
 -- TODO: switch to use of _postgis_deprecate() in 2.3.0 (or drop)
 CREATE OR REPLACE FUNCTION ST_locate_along_measure(geometry, float8)
        RETURNS geometry
-       AS $$ SELECT ST_locate_between_measures($1, $2, $2) $$
+       AS $$ SELECT @extschema@.ST_locate_between_measures($1, $2, $2) $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0
@@ -3283,7 +3283,7 @@ CREATE OR REPLACE FUNCTION _ST_Buffer(geometry,float8,cstring)
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_Buffer(geometry,float8,integer)
        RETURNS geometry
-       AS $$ SELECT _ST_Buffer($1, $2,
+       AS $$ SELECT @extschema@._ST_Buffer($1, $2,
                CAST('quad_segs='||CAST($3 AS text) as cstring))
           $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -3291,7 +3291,7 @@ CREATE OR REPLACE FUNCTION ST_Buffer(geometry,float8,integer)
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_Buffer(geometry,float8,text)
        RETURNS geometry
-       AS $$ SELECT _ST_Buffer($1, $2,
+       AS $$ SELECT @extschema@._ST_Buffer($1, $2,
                CAST( regexp_replace($3, '^[0123456789]+$',
                        'quad_segs='||$3) AS cstring)
                )
@@ -3306,7 +3306,7 @@ CREATE OR REPLACE FUNCTION ST_MinimumBoundingRadius(geometry, OUT center geometr
 -- Availability: 1.4.0
 CREATE OR REPLACE FUNCTION ST_MinimumBoundingCircle(inputgeom geometry, segs_per_quarter integer DEFAULT 48)
        RETURNS geometry
-    AS $$ SELECT ST_Buffer(center, radius, segs_per_quarter) FROM ST_MinimumBoundingRadius($1) sq $$
+    AS $$ SELECT @extschema@.ST_Buffer(center, radius, segs_per_quarter) FROM @extschema@.ST_MinimumBoundingRadius($1) sq $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.0.0 - requires GEOS-3.2 or higher
@@ -3341,7 +3341,7 @@ CREATE OR REPLACE FUNCTION _ST_LineCrossingDirection(geom1 geometry, geom2 geome
 -- Availability: 1.4.0
 CREATE OR REPLACE FUNCTION ST_LineCrossingDirection(geom1 geometry, geom2 geometry)
        RETURNS integer AS
-       $$ SELECT CASE WHEN NOT $1 && $2 THEN 0 ELSE _ST_LineCrossingDirection($1,$2) END $$
+       $$ SELECT CASE WHEN NOT $1 OPERATOR(@extschema@.&&) $2 THEN 0 ELSE @extschema@._ST_LineCrossingDirection($1,$2) END $$
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Requires GEOS >= 3.0.0
@@ -3389,7 +3389,7 @@ CREATE OR REPLACE FUNCTION ST_IsValidReason(geometry, int4)
        RETURNS text
        AS $$
 SELECT CASE WHEN valid THEN 'Valid Geometry' ELSE reason END FROM (
-       SELECT (ST_isValidDetail($1, $2)).*
+       SELECT (@extschema@.ST_isValidDetail($1, $2)).*
 ) foo
        $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL
@@ -3399,7 +3399,7 @@ SELECT CASE WHEN valid THEN 'Valid Geometry' ELSE reason END FROM (
 -- Availability: 2.0.0
 CREATE OR REPLACE FUNCTION ST_IsValid(geometry, int4)
        RETURNS boolean
-       AS 'SELECT (ST_isValidDetail($1, $2)).valid'
+       AS 'SELECT (@extschema@.ST_isValidDetail($1, $2)).valid'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 
@@ -3706,8 +3706,8 @@ CREATE OR REPLACE FUNCTION ST_CombineBBox(box3d,box3d)
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_Combine_BBox(box3d,geometry)
        RETURNS box3d AS
-  $$ SELECT _postgis_deprecate('ST_Combine_BBox', 'ST_CombineBbox', '2.2.0');
-    SELECT ST_CombineBbox($1,$2);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Combine_BBox', 'ST_CombineBbox', '2.2.0');
+    SELECT @extschema@.ST_CombineBbox($1,$2);
   $$
        LANGUAGE 'sql' IMMUTABLE;
 
@@ -3721,8 +3721,8 @@ CREATE OR REPLACE FUNCTION ST_CombineBbox(box2d,geometry)
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_Combine_BBox(box2d,geometry)
        RETURNS box2d AS
-  $$ SELECT _postgis_deprecate('ST_Combine_BBox', 'ST_CombineBbox', '2.2.0');
-    SELECT ST_CombineBbox($1,$2);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Combine_BBox', 'ST_CombineBbox', '2.2.0');
+    SELECT @extschema@.ST_CombineBbox($1,$2);
   $$
        LANGUAGE 'sql' IMMUTABLE;
 
@@ -3969,7 +3969,7 @@ CREATE OR REPLACE FUNCTION _ST_Touches(geom1 geometry, geom2 geometry)
 -- Inlines index magic
 CREATE OR REPLACE FUNCTION ST_Touches(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $1 && $2 AND _ST_Touches($1,$2)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Touches($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.3.4
@@ -3982,7 +3982,7 @@ CREATE OR REPLACE FUNCTION _ST_DWithin(geom1 geometry, geom2 geometry,float8)
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_DWithin(geom1 geometry, geom2 geometry, float8)
        RETURNS boolean
-       AS 'SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_DWithin($1, $2, $3)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($1,$3) AND @extschema@._ST_DWithin($1, $2, $3)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- PostGIS equivalent function: intersects(geom1 geometry, geom2 geometry)
@@ -3996,7 +3996,7 @@ CREATE OR REPLACE FUNCTION _ST_Intersects(geom1 geometry, geom2 geometry)
 -- Inlines index magic
 CREATE OR REPLACE FUNCTION ST_Intersects(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $1 && $2 AND _ST_Intersects($1,$2)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Intersects($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- PostGIS equivalent function: crosses(geom1 geometry, geom2 geometry)
@@ -4010,7 +4010,7 @@ CREATE OR REPLACE FUNCTION _ST_Crosses(geom1 geometry, geom2 geometry)
 -- Inlines index magic
 CREATE OR REPLACE FUNCTION ST_Crosses(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $1 && $2 AND _ST_Crosses($1,$2)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Crosses($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- PostGIS equivalent function: contains(geom1 geometry, geom2 geometry)
@@ -4024,7 +4024,7 @@ CREATE OR REPLACE FUNCTION _ST_Contains(geom1 geometry, geom2 geometry)
 -- Inlines index magic
 CREATE OR REPLACE FUNCTION ST_Contains(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $1 ~ $2 AND _ST_Contains($1,$2)'
+       AS 'SELECT $1 OPERATOR(@extschema@.~) $2 AND @extschema@._ST_Contains($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.2.2
@@ -4037,7 +4037,7 @@ CREATE OR REPLACE FUNCTION _ST_CoveredBy(geom1 geometry, geom2 geometry)
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_CoveredBy(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $1 @ $2 AND _ST_CoveredBy($1,$2)'
+       AS 'SELECT $1 @ $2 AND @extschema@._ST_CoveredBy($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.2.2
@@ -4051,7 +4051,7 @@ CREATE OR REPLACE FUNCTION _ST_Covers(geom1 geometry, geom2 geometry)
 -- Inlines index magic
 CREATE OR REPLACE FUNCTION ST_Covers(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $1 ~ $2 AND _ST_Covers($1,$2)'
+       AS 'SELECT $1 OPERATOR(@extschema@.~) $2 AND @extschema@._ST_Covers($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.4.0
@@ -4065,7 +4065,7 @@ CREATE OR REPLACE FUNCTION _ST_ContainsProperly(geom1 geometry, geom2 geometry)
 -- Inlines index magic
 CREATE OR REPLACE FUNCTION ST_ContainsProperly(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $1 ~ $2 AND _ST_ContainsProperly($1,$2)'
+       AS 'SELECT $1 OPERATOR(@extschema@.~) $2 AND @extschema@._ST_ContainsProperly($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- PostGIS equivalent function: overlaps(geom1 geometry, geom2 geometry)
@@ -4078,21 +4078,21 @@ CREATE OR REPLACE FUNCTION _ST_Overlaps(geom1 geometry, geom2 geometry)
 -- PostGIS equivalent function: within(geom1 geometry, geom2 geometry)
 CREATE OR REPLACE FUNCTION _ST_Within(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT _ST_Contains($2,$1)'
+       AS 'SELECT @extschema@._ST_Contains($2,$1)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.2.2
 -- Inlines index magic
 CREATE OR REPLACE FUNCTION ST_Within(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $2 ~ $1 AND _ST_Contains($2,$1)'
+       AS 'SELECT $2 OPERATOR(@extschema@.~) $1 AND @extschema@._ST_Contains($2,$1)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Availability: 1.2.2
 -- Inlines index magic
 CREATE OR REPLACE FUNCTION ST_Overlaps(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $1 && $2 AND _ST_Overlaps($1,$2)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Overlaps($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- PostGIS equivalent function: IsValid(geometry)
@@ -4166,7 +4166,7 @@ CREATE OR REPLACE FUNCTION _ST_Equals(geom1 geometry, geom2 geometry)
 -- Availability: 1.2.1
 CREATE OR REPLACE FUNCTION ST_Equals(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $1 ~= $2 AND _ST_Equals($1,$2)'
+       AS 'SELECT $1 OPERATOR(@extschema@.~=) $2 AND @extschema@._ST_Equals($1,$2)'
        LANGUAGE 'sql' IMMUTABLE _PARALLEL;
 
 -- Deprecation in 1.2.3
@@ -4193,13 +4193,13 @@ CREATE OR REPLACE FUNCTION ST_GeomFromGML(text, int4)
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_GeomFromGML(text)
         RETURNS geometry
-        AS 'SELECT _ST_GeomFromGML($1, 0)'
+        AS 'SELECT @extschema@._ST_GeomFromGML($1, 0)'
         LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_GMLToSQL(text)
         RETURNS geometry
-        AS 'SELECT _ST_GeomFromGML($1, 0)'
+        AS 'SELECT @extschema@._ST_GeomFromGML($1, 0)'
         LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 2.0.0
@@ -4284,7 +4284,7 @@ CREATE OR REPLACE FUNCTION _ST_AsGML(int4, geometry, int4, int4, text, text)
 -- Changed: 2.0.0 to have default args
 CREATE OR REPLACE FUNCTION ST_AsGML(geom geometry, maxdecimaldigits int4 DEFAULT 15, options int4 DEFAULT 0)
        RETURNS TEXT
-       AS $$ SELECT _ST_AsGML(2, $1, $2, $3, null, null); $$
+       AS $$ SELECT @extschema@._ST_AsGML(2, $1, $2, $3, null, null); $$
        LANGUAGE 'sql' IMMUTABLE STRICT  _PARALLEL;
 
 -- ST_AsGML(version, geom, precision, option)
@@ -4296,7 +4296,7 @@ CREATE OR REPLACE FUNCTION ST_AsGML(geom geometry, maxdecimaldigits int4 DEFAULT
 -- Availability: 2.1.0
 CREATE OR REPLACE FUNCTION ST_AsGML(version int4, geom geometry, maxdecimaldigits int4 DEFAULT 15, options int4 DEFAULT 0, nprefix text DEFAULT null, id text DEFAULT null)
        RETURNS TEXT
-       AS $$ SELECT _ST_AsGML($1, $2, $3, $4, $5, $6); $$
+       AS $$ SELECT @extschema@._ST_AsGML($1, $2, $3, $4, $5, $6); $$
        LANGUAGE 'sql' IMMUTABLE  _PARALLEL;
 
 -----------------------------------------------------------------------
@@ -4313,7 +4313,7 @@ CREATE OR REPLACE FUNCTION _ST_AsKML(int4,geometry, int4, text)
 -- Changed: 2.0.0 to use default args and allow named args
 CREATE OR REPLACE FUNCTION ST_AsKML(geom geometry, maxdecimaldigits int4 DEFAULT 15)
        RETURNS TEXT
-       AS $$ SELECT _ST_AsKML(2, ST_Transform($1,4326), $2, null); $$
+       AS $$ SELECT @extschema@._ST_AsKML(2, ST_Transform($1,4326), $2, null); $$
        LANGUAGE 'sql' IMMUTABLE STRICT  _PARALLEL;
 
 -- ST_AsKML(version, geom, precision, text)
@@ -4321,7 +4321,7 @@ CREATE OR REPLACE FUNCTION ST_AsKML(geom geometry, maxdecimaldigits int4 DEFAULT
 -- Changed: 2.0.0 allows default args and got rid of other permutations
 CREATE OR REPLACE FUNCTION ST_AsKML(version int4, geom geometry, maxdecimaldigits int4 DEFAULT 15, nprefix text DEFAULT null)
        RETURNS TEXT
-       AS $$ SELECT _ST_AsKML($1, ST_Transform($2,4326), $3, $4); $$
+       AS $$ SELECT @extschema@._ST_AsKML($1, @extschema@.ST_Transform($2,4326), $3, $4); $$
        LANGUAGE 'sql' IMMUTABLE  _PARALLEL;
 
 
@@ -4341,14 +4341,14 @@ CREATE OR REPLACE FUNCTION ST_AsGeoJson(geom geometry, maxdecimaldigits int4 DEF
 -- _ST_AsGeoJson(version, geom, precision, options)
 CREATE OR REPLACE FUNCTION _ST_AsGeoJson(int4, geometry, int4, int4)
        RETURNS TEXT
-       AS $$ SELECT ST_AsGeoJson($2::geometry, $3::int4, $4::int4); $$
+       AS $$ SELECT @extschema@.ST_AsGeoJson($2::@extschema@.geometry, $3::int4, $4::int4); $$
        LANGUAGE 'sql' IMMUTABLE STRICT  _PARALLEL;
 
 -- ST_AsGeoJson(version, geom, precision,options)
 -- Changed 2.0.0 to use default args and named args
 CREATE OR REPLACE FUNCTION ST_AsGeoJson(gj_version int4, geom geometry, maxdecimaldigits int4 DEFAULT 15, options int4 DEFAULT 0)
        RETURNS TEXT
-       AS $$ SELECT ST_AsGeoJson($2::geometry, $3::int4, $4::int4); $$
+       AS $$ SELECT @extschema@.ST_AsGeoJson($2::@extschema@.geometry, $3::int4, $4::int4); $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 ------------------------------------------------------------------------
@@ -4381,7 +4381,7 @@ CREATE OR REPLACE FUNCTION ST_PointFromGeoHash(text, int4 DEFAULT NULL)
 -- ST_GeomFromGeoHash(geohash text, precision int4)
 CREATE OR REPLACE FUNCTION ST_GeomFromGeoHash(text, int4 DEFAULT NULL)
        RETURNS geometry
-       AS $$ SELECT CAST(ST_Box2dFromGeoHash($1, $2) AS geometry); $$
+       AS $$ SELECT CAST(@extschema@.ST_Box2dFromGeoHash($1, $2) AS geometry); $$
        LANGUAGE 'sql' IMMUTABLE  _PARALLEL;
 
 ------------------------------------------------------------------------
@@ -4460,8 +4460,8 @@ CREATE OR REPLACE FUNCTION ST_PointN(geometry,integer)
 CREATE OR REPLACE FUNCTION ST_NumPatches(geometry)
        RETURNS int4
        AS '
-       SELECT CASE WHEN ST_GeometryType($1) = ''ST_PolyhedralSurface''
-       THEN ST_NumGeometries($1)
+       SELECT CASE WHEN @extschema@.ST_GeometryType($1) = ''ST_PolyhedralSurface''
+       THEN @extschema@.ST_NumGeometries($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4470,8 +4470,8 @@ CREATE OR REPLACE FUNCTION ST_NumPatches(geometry)
 CREATE OR REPLACE FUNCTION ST_PatchN(geometry, integer)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN ST_GeometryType($1) = ''ST_PolyhedralSurface''
-       THEN ST_GeometryN($1, $2)
+       SELECT CASE WHEN @extschema@.ST_GeometryType($1) = ''ST_PolyhedralSurface''
+       THEN @extschema@.ST_GeometryN($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4558,8 +4558,8 @@ CREATE OR REPLACE FUNCTION ST_WKTToSQL(text)
 CREATE OR REPLACE FUNCTION ST_PointFromText(text)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = ''POINT''
-       THEN ST_GeomFromText($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''POINT''
+       THEN @extschema@.ST_GeomFromText($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4570,8 +4570,8 @@ CREATE OR REPLACE FUNCTION ST_PointFromText(text)
 CREATE OR REPLACE FUNCTION ST_PointFromText(text, int4)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = ''POINT''
-       THEN ST_GeomFromText($1, $2)
+       SELECT CASE WHEN geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''POINT''
+       THEN @extschema@.ST_GeomFromText($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4580,8 +4580,8 @@ CREATE OR REPLACE FUNCTION ST_PointFromText(text, int4)
 CREATE OR REPLACE FUNCTION ST_LineFromText(text)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = ''LINESTRING''
-       THEN ST_GeomFromText($1)
+       SELECT CASE WHEN geometrytype(@extschema@.ST_GeomFromText($1)) = ''LINESTRING''
+       THEN @extschema@.ST_GeomFromText($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4590,8 +4590,8 @@ CREATE OR REPLACE FUNCTION ST_LineFromText(text)
 CREATE OR REPLACE FUNCTION ST_LineFromText(text, int4)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = ''LINESTRING''
-       THEN ST_GeomFromText($1,$2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''LINESTRING''
+       THEN @extschema@.ST_GeomFromText($1,$2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4600,8 +4600,8 @@ CREATE OR REPLACE FUNCTION ST_LineFromText(text, int4)
 CREATE OR REPLACE FUNCTION ST_PolyFromText(text)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = ''POLYGON''
-       THEN ST_GeomFromText($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''POLYGON''
+       THEN @extschema@.ST_GeomFromText($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4610,8 +4610,8 @@ CREATE OR REPLACE FUNCTION ST_PolyFromText(text)
 CREATE OR REPLACE FUNCTION ST_PolyFromText(text, int4)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = ''POLYGON''
-       THEN ST_GeomFromText($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''POLYGON''
+       THEN @extschema@.ST_GeomFromText($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4619,13 +4619,13 @@ CREATE OR REPLACE FUNCTION ST_PolyFromText(text, int4)
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_PolygonFromText(text, int4)
        RETURNS geometry
-       AS 'SELECT ST_PolyFromText($1, $2)'
+       AS 'SELECT @extschema@.ST_PolyFromText($1, $2)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_PolygonFromText(text)
        RETURNS geometry
-       AS 'SELECT ST_PolyFromText($1)'
+       AS 'SELECT @extschema@.ST_PolyFromText($1)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- PostGIS equivalent function: MLineFromText(text, int4)
@@ -4633,8 +4633,8 @@ CREATE OR REPLACE FUNCTION ST_MLineFromText(text, int4)
        RETURNS geometry
        AS '
        SELECT CASE
-       WHEN geometrytype(ST_GeomFromText($1, $2)) = ''MULTILINESTRING''
-       THEN ST_GeomFromText($1,$2)
+       WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''MULTILINESTRING''
+       THEN @extschema@.ST_GeomFromText($1,$2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4643,8 +4643,8 @@ CREATE OR REPLACE FUNCTION ST_MLineFromText(text, int4)
 CREATE OR REPLACE FUNCTION ST_MLineFromText(text)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = ''MULTILINESTRING''
-       THEN ST_GeomFromText($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''MULTILINESTRING''
+       THEN @extschema@.ST_GeomFromText($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4653,20 +4653,20 @@ CREATE OR REPLACE FUNCTION ST_MLineFromText(text)
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_MultiLineStringFromText(text)
        RETURNS geometry
-       AS 'SELECT ST_MLineFromText($1)'
+       AS 'SELECT @extschema@.ST_MLineFromText($1)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_MultiLineStringFromText(text, int4)
        RETURNS geometry
-       AS 'SELECT ST_MLineFromText($1, $2)'
+       AS 'SELECT @extschema@.ST_MLineFromText($1, $2)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- PostGIS equivalent function: MPointFromText(text, int4)
 CREATE OR REPLACE FUNCTION ST_MPointFromText(text, int4)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = ''MULTIPOINT''
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''MULTIPOINT''
        THEN ST_GeomFromText($1, $2)
        ELSE NULL END
        '
@@ -4676,8 +4676,8 @@ CREATE OR REPLACE FUNCTION ST_MPointFromText(text, int4)
 CREATE OR REPLACE FUNCTION ST_MPointFromText(text)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = ''MULTIPOINT''
-       THEN ST_GeomFromText($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''MULTIPOINT''
+       THEN @extschema@.ST_GeomFromText($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4685,15 +4685,15 @@ CREATE OR REPLACE FUNCTION ST_MPointFromText(text)
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_MultiPointFromText(text)
        RETURNS geometry
-       AS 'SELECT ST_MPointFromText($1)'
+       AS 'SELECT @extschema@.ST_MPointFromText($1)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- PostGIS equivalent function: MPolyFromText(text, int4)
 CREATE OR REPLACE FUNCTION ST_MPolyFromText(text, int4)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1, $2)) = ''MULTIPOLYGON''
-       THEN ST_GeomFromText($1,$2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''MULTIPOLYGON''
+       THEN @extschema@.ST_GeomFromText($1,$2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4702,8 +4702,8 @@ CREATE OR REPLACE FUNCTION ST_MPolyFromText(text, int4)
 CREATE OR REPLACE FUNCTION ST_MPolyFromText(text)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromText($1)) = ''MULTIPOLYGON''
-       THEN ST_GeomFromText($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''MULTIPOLYGON''
+       THEN @extschema@.ST_GeomFromText($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4711,13 +4711,13 @@ CREATE OR REPLACE FUNCTION ST_MPolyFromText(text)
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_MultiPolygonFromText(text, int4)
        RETURNS geometry
-       AS 'SELECT ST_MPolyFromText($1, $2)'
+       AS 'SELECT @extschema@.ST_MPolyFromText($1, $2)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
 CREATE OR REPLACE FUNCTION ST_MultiPolygonFromText(text)
        RETURNS geometry
-       AS 'SELECT ST_MPolyFromText($1)'
+       AS 'SELECT @extschema@.ST_MPolyFromText($1)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- Availability: 1.2.2
@@ -4725,8 +4725,8 @@ CREATE OR REPLACE FUNCTION ST_GeomCollFromText(text, int4)
        RETURNS geometry
        AS '
        SELECT CASE
-       WHEN geometrytype(ST_GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
-       THEN ST_GeomFromText($1,$2)
+       WHEN geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
+       THEN @extschema@.ST_GeomFromText($1,$2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4736,8 +4736,8 @@ CREATE OR REPLACE FUNCTION ST_GeomCollFromText(text)
        RETURNS geometry
        AS '
        SELECT CASE
-       WHEN geometrytype(ST_GeomFromText($1)) = ''GEOMETRYCOLLECTION''
-       THEN ST_GeomFromText($1)
+       WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''GEOMETRYCOLLECTION''
+       THEN @extschema@.ST_GeomFromText($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4751,15 +4751,15 @@ CREATE OR REPLACE FUNCTION ST_GeomFromWKB(bytea)
 -- PostGIS equivalent function: GeomFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_GeomFromWKB(bytea, int)
        RETURNS geometry
-       AS 'SELECT ST_SetSRID(ST_GeomFromWKB($1), $2)'
+       AS 'SELECT @extschema@.ST_SetSRID(@extschema@.ST_GeomFromWKB($1), $2)'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 -- PostGIS equivalent function: PointFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_PointFromWKB(bytea, int)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = ''POINT''
-       THEN ST_GeomFromWKB($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''POINT''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4768,8 +4768,8 @@ CREATE OR REPLACE FUNCTION ST_PointFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_PointFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''POINT''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''POINT''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4778,8 +4778,8 @@ CREATE OR REPLACE FUNCTION ST_PointFromWKB(bytea)
 CREATE OR REPLACE FUNCTION ST_LineFromWKB(bytea, int)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = ''LINESTRING''
-       THEN ST_GeomFromWKB($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''LINESTRING''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4788,8 +4788,8 @@ CREATE OR REPLACE FUNCTION ST_LineFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_LineFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''LINESTRING''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''LINESTRING''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4798,8 +4798,8 @@ CREATE OR REPLACE FUNCTION ST_LineFromWKB(bytea)
 CREATE OR REPLACE FUNCTION ST_LinestringFromWKB(bytea, int)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = ''LINESTRING''
-       THEN ST_GeomFromWKB($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''LINESTRING''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4808,8 +4808,8 @@ CREATE OR REPLACE FUNCTION ST_LinestringFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_LinestringFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''LINESTRING''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''LINESTRING''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4818,8 +4818,8 @@ CREATE OR REPLACE FUNCTION ST_LinestringFromWKB(bytea)
 CREATE OR REPLACE FUNCTION ST_PolyFromWKB(bytea, int)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = ''POLYGON''
-       THEN ST_GeomFromWKB($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''POLYGON''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4828,8 +4828,8 @@ CREATE OR REPLACE FUNCTION ST_PolyFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_PolyFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''POLYGON''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''POLYGON''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4838,8 +4838,8 @@ CREATE OR REPLACE FUNCTION ST_PolyFromWKB(bytea)
 CREATE OR REPLACE FUNCTION ST_PolygonFromWKB(bytea, int)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1,$2)) = ''POLYGON''
-       THEN ST_GeomFromWKB($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1,$2)) = ''POLYGON''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4848,8 +4848,8 @@ CREATE OR REPLACE FUNCTION ST_PolygonFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_PolygonFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''POLYGON''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''POLYGON''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4858,8 +4858,8 @@ CREATE OR REPLACE FUNCTION ST_PolygonFromWKB(bytea)
 CREATE OR REPLACE FUNCTION ST_MPointFromWKB(bytea, int)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = ''MULTIPOINT''
-       THEN ST_GeomFromWKB($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''MULTIPOINT''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4869,8 +4869,8 @@ CREATE OR REPLACE FUNCTION ST_MPointFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_MPointFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''MULTIPOINT''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTIPOINT''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4879,8 +4879,8 @@ CREATE OR REPLACE FUNCTION ST_MPointFromWKB(bytea)
 CREATE OR REPLACE FUNCTION ST_MultiPointFromWKB(bytea, int)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1,$2)) = ''MULTIPOINT''
-       THEN ST_GeomFromWKB($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1,$2)) = ''MULTIPOINT''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4889,8 +4889,8 @@ CREATE OR REPLACE FUNCTION ST_MultiPointFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_MultiPointFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''MULTIPOINT''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTIPOINT''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4899,8 +4899,8 @@ CREATE OR REPLACE FUNCTION ST_MultiPointFromWKB(bytea)
 CREATE OR REPLACE FUNCTION ST_MultiLineFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''MULTILINESTRING''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTILINESTRING''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4909,8 +4909,8 @@ CREATE OR REPLACE FUNCTION ST_MultiLineFromWKB(bytea)
 CREATE OR REPLACE FUNCTION ST_MLineFromWKB(bytea, int)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = ''MULTILINESTRING''
-       THEN ST_GeomFromWKB($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''MULTILINESTRING''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4919,8 +4919,8 @@ CREATE OR REPLACE FUNCTION ST_MLineFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_MLineFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''MULTILINESTRING''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTILINESTRING''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4930,8 +4930,8 @@ CREATE OR REPLACE FUNCTION ST_MLineFromWKB(bytea)
 CREATE OR REPLACE FUNCTION ST_MPolyFromWKB(bytea, int)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
-       THEN ST_GeomFromWKB($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4940,8 +4940,8 @@ CREATE OR REPLACE FUNCTION ST_MPolyFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_MPolyFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''MULTIPOLYGON''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTIPOLYGON''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4950,8 +4950,8 @@ CREATE OR REPLACE FUNCTION ST_MPolyFromWKB(bytea)
 CREATE OR REPLACE FUNCTION ST_MultiPolyFromWKB(bytea, int)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
-       THEN ST_GeomFromWKB($1, $2)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4961,8 +4961,8 @@ CREATE OR REPLACE FUNCTION ST_MultiPolyFromWKB(bytea, int)
 CREATE OR REPLACE FUNCTION ST_MultiPolyFromWKB(bytea)
        RETURNS geometry
        AS '
-       SELECT CASE WHEN geometrytype(ST_GeomFromWKB($1)) = ''MULTIPOLYGON''
-       THEN ST_GeomFromWKB($1)
+       SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTIPOLYGON''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4972,8 +4972,8 @@ CREATE OR REPLACE FUNCTION ST_GeomCollFromWKB(bytea, int)
        RETURNS geometry
        AS '
        SELECT CASE
-       WHEN geometrytype(ST_GeomFromWKB($1, $2)) = ''GEOMETRYCOLLECTION''
-       THEN ST_GeomFromWKB($1, $2)
+       WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''GEOMETRYCOLLECTION''
+       THEN @extschema@.ST_GeomFromWKB($1, $2)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -4984,8 +4984,8 @@ CREATE OR REPLACE FUNCTION ST_GeomCollFromWKB(bytea)
        RETURNS geometry
        AS '
        SELECT CASE
-       WHEN geometrytype(ST_GeomFromWKB($1)) = ''GEOMETRYCOLLECTION''
-       THEN ST_GeomFromWKB($1)
+       WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''GEOMETRYCOLLECTION''
+       THEN @extschema@.ST_GeomFromWKB($1)
        ELSE NULL END
        '
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
@@ -5003,7 +5003,7 @@ CREATE OR REPLACE FUNCTION _ST_MaxDistance(geom1 geometry, geom2 geometry)
 -- Availability: 1.5.0
 CREATE OR REPLACE FUNCTION ST_MaxDistance(geom1 geometry, geom2 geometry)
        RETURNS float8
-       AS 'SELECT _ST_MaxDistance(ST_ConvexHull($1), ST_ConvexHull($2))'
+       AS 'SELECT @extschema@._ST_MaxDistance(@extschema@.ST_ConvexHull($1), @extschema@.ST_ConvexHull($2))'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 CREATE OR REPLACE FUNCTION ST_ClosestPoint(geom1 geometry, geom2 geometry)
@@ -5023,7 +5023,7 @@ CREATE OR REPLACE FUNCTION _ST_LongestLine(geom1 geometry, geom2 geometry)
 
 CREATE OR REPLACE FUNCTION ST_LongestLine(geom1 geometry, geom2 geometry)
        RETURNS geometry
-       AS 'SELECT _ST_LongestLine(ST_ConvexHull($1), ST_ConvexHull($2))'
+       AS 'SELECT @extschema@._ST_LongestLine(@extschema@.ST_ConvexHull($1), @extschema@.ST_ConvexHull($2))'
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
 CREATE OR REPLACE FUNCTION _ST_DFullyWithin(geom1 geometry, geom2 geometry,float8)
@@ -5033,7 +5033,7 @@ CREATE OR REPLACE FUNCTION _ST_DFullyWithin(geom1 geometry, geom2 geometry,float
 
 CREATE OR REPLACE FUNCTION ST_DFullyWithin(geom1 geometry, geom2 geometry, float8)
        RETURNS boolean
-       AS 'SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_DFullyWithin(ST_ConvexHull($1), ST_ConvexHull($2), $3)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($1,$3) AND @extschema@._ST_DFullyWithin(@extschema@.ST_ConvexHull($1), @extschema@.ST_ConvexHull($2), $3)'
        LANGUAGE 'sql' IMMUTABLE;
 
 -- Availability: 2.2.0
@@ -5077,14 +5077,14 @@ DECLARE
        mline geometry;
        geom geometry;
 BEGIN
-       mline := ST_MultiLineStringFromText(geomtext, srid);
+       mline := @extschema@.ST_MultiLineStringFromText(geomtext, srid);
 
        IF mline IS NULL
        THEN
                RAISE EXCEPTION 'Input is not a MultiLinestring';
        END IF;
 
-       geom := ST_BuildArea(mline);
+       geom := @extschema@.ST_BuildArea(mline);
 
        IF GeometryType(geom) != 'POLYGON'
        THEN
@@ -5119,14 +5119,14 @@ DECLARE
        mline geometry;
        geom geometry;
 BEGIN
-       mline := ST_MultiLineStringFromText(geomtext, srid);
+       mline := @extschema@.ST_MultiLineStringFromText(geomtext, srid);
 
        IF mline IS NULL
        THEN
                RAISE EXCEPTION 'Input is not a MultiLinestring';
        END IF;
 
-       geom := ST_Multi(ST_BuildArea(mline));
+       geom := @extschema@.ST_Multi(@extschema@.ST_BuildArea(mline));
 
        RETURN geom;
 END;
@@ -5142,7 +5142,7 @@ LANGUAGE 'plpgsql' IMMUTABLE STRICT _PARALLEL;
 CREATE OR REPLACE FUNCTION ST_DistanceSphere(geom1 geometry, geom2 geometry)
        RETURNS FLOAT8
        AS $$
-       select st_distance(geography($1),geography($2),false)
+       select @extschema@.ST_distance( @extschema@.geography($1), @extschema@.geography($2),false)
        $$
        LANGUAGE 'sql' IMMUTABLE STRICT
        COST 300;
@@ -5151,8 +5151,8 @@ CREATE OR REPLACE FUNCTION ST_DistanceSphere(geom1 geometry, geom2 geometry)
 -- Deprecation in 2.2.0
 CREATE OR REPLACE FUNCTION ST_distance_sphere(geom1 geometry, geom2 geometry)
        RETURNS FLOAT8 AS
-  $$ SELECT _postgis_deprecate('ST_Distance_Sphere', 'ST_DistanceSphere', '2.2.0');
-    SELECT ST_DistanceSphere($1,$2);
+  $$ SELECT @extschema@._postgis_deprecate('ST_Distance_Sphere', 'ST_DistanceSphere', '2.2.0');
+    SELECT @extschema@.ST_DistanceSphere($1,$2);
   $$
        LANGUAGE 'sql' IMMUTABLE STRICT
        COST 300;
@@ -5405,7 +5405,7 @@ CREATE OR REPLACE FUNCTION _ST_3DDWithin(geom1 geometry, geom2 geometry,float8)
 
 CREATE OR REPLACE FUNCTION ST_3DDWithin(geom1 geometry, geom2 geometry,float8)
        RETURNS boolean
-       AS 'SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_3DDWithin($1, $2, $3)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($1,$3) AND @extschema@._ST_3DDWithin($1, $2, $3)'
        LANGUAGE 'sql' IMMUTABLE
        COST 100;
 
@@ -5417,7 +5417,7 @@ CREATE OR REPLACE FUNCTION _ST_3DDFullyWithin(geom1 geometry, geom2 geometry,flo
 
 CREATE OR REPLACE FUNCTION ST_3DDFullyWithin(geom1 geometry, geom2 geometry,float8)
        RETURNS boolean
-       AS 'SELECT $1 && ST_Expand($2,$3) AND $2 && ST_Expand($1,$3) AND _ST_3DDFullyWithin($1, $2, $3)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($1,$3) AND @extschema@._ST_3DDFullyWithin($1, $2, $3)'
        LANGUAGE 'sql' IMMUTABLE
        COST 100;
 
@@ -5429,7 +5429,7 @@ CREATE OR REPLACE FUNCTION _ST_3DIntersects(geom1 geometry, geom2 geometry)
 
 CREATE OR REPLACE FUNCTION ST_3DIntersects(geom1 geometry, geom2 geometry)
        RETURNS boolean
-       AS 'SELECT $1 && $2 AND _ST_3DIntersects($1, $2)'
+       AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_3DIntersects($1, $2)'
        LANGUAGE 'sql' IMMUTABLE
        COST 100;
 
@@ -5488,7 +5488,7 @@ CREATE OR REPLACE FUNCTION _ST_OrderingEquals(GeometryA geometry, GeometryB geom
 CREATE OR REPLACE FUNCTION ST_OrderingEquals(GeometryA geometry, GeometryB geometry)
        RETURNS boolean
        AS $$
-       SELECT $1 ~= $2 AND _ST_OrderingEquals($1, $2)
+       SELECT $1 OPERATOR(@extschema@.~=) $2 AND @extschema@._ST_OrderingEquals($1, $2)
        $$
        LANGUAGE 'sql' IMMUTABLE;
 
@@ -5506,7 +5506,7 @@ CREATE OR REPLACE FUNCTION ST_Point(float8, float8)
 CREATE OR REPLACE FUNCTION ST_Polygon(geometry, int)
        RETURNS geometry
        AS $$
-       SELECT ST_SetSRID(ST_MakePolygon($1), $2)
+       SELECT @extschema@.ST_SetSRID(@extschema@.ST_MakePolygon($1), $2)
        $$
        LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
 
@@ -5632,7 +5632,7 @@ $$ LANGUAGE SQL IMMUTABLE STRICT;
 CREATE OR REPLACE FUNCTION overlaps_2d(geometry, box2df)
 RETURNS boolean
 AS $$
-  SELECT $2 && $1;
+  SELECT $2 OPERATOR(@extschema@.&&) $1;
 $$ LANGUAGE SQL IMMUTABLE STRICT;
 
 -- Availability: 2.3.0
@@ -5711,7 +5711,7 @@ CREATE OPERATOR &&& (
 CREATE OR REPLACE FUNCTION overlaps_nd(geometry, gidx)
 RETURNS boolean
 AS $$
-  SELECT $2 &&& $1;
+  SELECT $2 OPERATOR(@extschema@.&&&) $1;
 $$ LANGUAGE SQL IMMUTABLE STRICT;
 
 -- Availability: 2.3.0
@@ -5867,34 +5867,34 @@ $$
        BEGIN
 
                -- First compute the ConvexHull of the geometry
-               vexhull := ST_ConvexHull(param_inputgeom);
+               vexhull := @extschema@.ST_ConvexHull(param_inputgeom);
                var_inputgeom := param_inputgeom;
                --A point really has no concave hull
-               IF ST_GeometryType(vexhull) = 'ST_Point' OR ST_GeometryType(vexHull) = 'ST_LineString' THEN
+               IF @extschema@.ST_GeometryType(vexhull) = 'ST_Point' OR @extschema@.ST_GeometryType(vexHull) = 'ST_LineString' THEN
                        RETURN vexhull;
                END IF;
 
                -- convert the hull perimeter to a linestring so we can manipulate individual points
-               vexring := CASE WHEN ST_GeometryType(vexhull) = 'ST_LineString' THEN vexhull ELSE ST_ExteriorRing(vexhull) END;
-               IF abs(ST_X(ST_PointN(vexring,1))) < 1 THEN --scale the geometry to prevent stupid precision errors - not sure it works so make low for now
+               vexring := CASE WHEN @extschema@.ST_GeometryType(vexhull) = 'ST_LineString' THEN vexhull ELSE @extschema@.ST_ExteriorRing(vexhull) END;
+               IF abs(@extschema@.ST_X(@extschema@.ST_PointN(vexring,1))) < 1 THEN --scale the geometry to prevent stupid precision errors - not sure it works so make low for now
                        scale_factor := 100;
-                       vexring := ST_Scale(vexring, scale_factor,scale_factor);
-                       var_inputgeom := ST_Scale(var_inputgeom, scale_factor, scale_factor);
+                       vexring := @extschema@.ST_Scale(vexring, scale_factor,scale_factor);
+                       var_inputgeom := @extschema@.ST_Scale(var_inputgeom, scale_factor, scale_factor);
                        --RAISE NOTICE 'Scaling';
                END IF;
-               seglength := ST_Length(vexring)/least(ST_NPoints(vexring)*2,1000) ;
+               seglength := @extschema@.ST_Length(vexring)/least(@extschema@.ST_NPoints(vexring)*2,1000) ;
 
-               vexring := ST_Segmentize(vexring, seglength);
+               vexring := @extschema@.ST_Segmentize(vexring, seglength);
                -- find the point on the original geom that is closest to each point of the convex hull and make a new linestring out of it.
-               cavering := ST_Collect(
+               cavering := @extschema@.ST_Collect(
                        ARRAY(
 
                                SELECT
-                                       ST_ClosestPoint(var_inputgeom, pt ) As the_geom
+                                       @extschema@.ST_ClosestPoint(var_inputgeom, pt ) As the_geom
                                        FROM (
-                                               SELECT  ST_PointN(vexring, n ) As pt, n
+                                               SELECT  @extschema@.ST_PointN(vexring, n ) As pt, n
                                                        FROM
-                                                       generate_series(1, ST_NPoints(vexring) ) As n
+                                                       generate_series(1, @extschema@.ST_NPoints(vexring) ) As n
                                                ) As pt
 
                                )
@@ -5902,19 +5902,19 @@ $$
                ;
 
 
-               var_resultgeom := ST_MakeLine(geom)
-                       FROM ST_Dump(cavering) As foo;
+               var_resultgeom := @extschema@.ST_MakeLine(geom)
+                       FROM @extschema@.ST_Dump(cavering) As foo;
 
-               IF ST_IsSimple(var_resultgeom) THEN
-                       var_resultgeom := ST_MakePolygon(var_resultgeom);
+               IF @extschema@.ST_IsSimple(var_resultgeom) THEN
+                       var_resultgeom := @extschema@.ST_MakePolygon(var_resultgeom);
                        --RAISE NOTICE 'is Simple: %', var_resultgeom;
                ELSE /** will not result in a valid polygon -- just return convex hull **/
                        --RAISE NOTICE 'is not Simple: %', var_resultgeom;
-                       var_resultgeom := ST_ConvexHull(var_resultgeom);
+                       var_resultgeom := @extschema@.ST_ConvexHull(var_resultgeom);
                END IF;
 
                IF scale_factor > 1 THEN -- scale the result back
-                       var_resultgeom := ST_Scale(var_resultgeom, 1/scale_factor, 1/scale_factor);
+                       var_resultgeom := @extschema@.ST_Scale(var_resultgeom, 1/scale_factor, 1/scale_factor);
                END IF;
                RETURN var_resultgeom;
 
@@ -5925,9 +5925,9 @@ $$
 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 := ST_ConvexHull(param_geom);
+               var_convhull geometry := @extschema@.ST_ConvexHull(param_geom);
                var_param_geom geometry := param_geom;
-               var_initarea float := ST_Area(var_convhull);
+               var_initarea float := @extschema@.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 triangle to keep speed decent **/
                var_tempgeom geometry;
 
                IF param_pctconvex = 1 THEN
                        return var_resultgeom;
-               ELSIF ST_GeometryType(var_param_geom) = 'ST_Polygon' THEN -- it is as concave as it is going to get
+               ELSIF @extschema@.ST_GeometryType(var_param_geom) = 'ST_Polygon' THEN -- it is as concave as it is going to get
                        IF param_allow_holes THEN -- leave the holes
                                RETURN var_param_geom;
                        ELSE -- remove the holes
-                               var_resultgeom := ST_MakePolygon(ST_ExteriorRing(var_param_geom));
+                               var_resultgeom := @extschema@.ST_MakePolygon(@extschema@.ST_ExteriorRing(var_param_geom));
                                RETURN var_resultgeom;
                        END IF;
                END IF;
-               IF ST_Dimension(var_resultgeom) > 1 AND param_pctconvex BETWEEN 0 and 0.98 THEN
+               IF @extschema@.ST_Dimension(var_resultgeom) > 1 AND param_pctconvex BETWEEN 0 and 0.98 THEN
                -- get linestring that forms envelope of geometry
-                       var_enline := ST_Boundary(ST_Envelope(var_param_geom));
-                       var_buf := ST_Length(var_enline)/1000.0;
-                       IF ST_GeometryType(var_param_geom) = 'ST_MultiPoint' AND ST_NumGeometries(var_param_geom) BETWEEN 4 and 200 THEN
+                       var_enline := @extschema@.ST_Boundary(@extschema@.ST_Envelope(var_param_geom));
+                       var_buf := @extschema@.ST_Length(var_enline)/1000.0;
+                       IF @extschema@.ST_GeometryType(var_param_geom) = 'ST_MultiPoint' AND @extschema@.ST_NumGeometries(var_param_geom) BETWEEN 4 and 200 THEN
                        -- we make polygons out of points since they are easier to cave in.
                        -- Note we limit to between 4 and 200 points because this process is slow and gets quadratically slow
-                               var_buf := sqrt(ST_Area(var_convhull)*0.8/(ST_NumGeometries(var_param_geom)*ST_NumGeometries(var_param_geom)));
-                               var_atempgeoms := ARRAY(SELECT geom FROM ST_DumpPoints(var_param_geom));
+                               var_buf := sqrt(@extschema@.ST_Area(var_convhull)*0.8/(@extschema@.ST_NumGeometries(var_param_geom)*@extschema@.ST_NumGeometries(var_param_geom)));
+                               var_atempgeoms := ARRAY(SELECT geom FROM @extschema@.ST_DumpPoints(var_param_geom));
                                -- 5 and 10 and just fudge factors
-                               var_tempgeom := ST_Union(ARRAY(SELECT geom
+                               var_tempgeom := @extschema@.ST_Union(ARRAY(SELECT geom
                                                FROM (
                                                -- fuse near neighbors together
-                                               SELECT DISTINCT ON (i) i,  ST_Distance(var_atempgeoms[i],var_atempgeoms[j]), ST_Buffer(ST_MakeLine(var_atempgeoms[i], var_atempgeoms[j]) , var_buf*5, 'quad_segs=3') As geom
+                                               SELECT DISTINCT ON (i) i,  @extschema@.ST_Distance(var_atempgeoms[i],var_atempgeoms[j]), @extschema@.ST_Buffer(@extschema@.ST_MakeLine(var_atempgeoms[i], var_atempgeoms[j]) , var_buf*5, 'quad_segs=3') As geom
                                                                FROM generate_series(1,array_upper(var_atempgeoms, 1)) As i
                                                                        INNER JOIN generate_series(1,array_upper(var_atempgeoms, 1)) As j
                                                                                ON (
-                                                                NOT ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])
-                                                                       AND ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
+                                                                NOT @extschema@.ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])
+                                                                       AND @extschema@.ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
                                                                        )
                                                                UNION ALL
                                                -- catch the ones with no near neighbors
-                                                               SELECT i, 0, ST_Buffer(var_atempgeoms[i] , var_buf*10, 'quad_segs=3') As geom
+                                                               SELECT i, 0, @extschema@.ST_Buffer(var_atempgeoms[i] , var_buf*10, 'quad_segs=3') As geom
                                                                FROM generate_series(1,array_upper(var_atempgeoms, 1)) As i
                                                                        LEFT JOIN generate_series(ceiling(array_upper(var_atempgeoms,1)/2)::integer,array_upper(var_atempgeoms, 1)) As j
                                                                                ON (
-                                                                NOT ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])
-                                                                       AND ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
+                                                                NOT @extschema@.ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])
+                                                                       AND @extschema@.ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
                                                                        )
                                                                        WHERE j IS NULL
                                                                ORDER BY 1, 2
                                                        ) As foo        ) );
-                               IF ST_IsValid(var_tempgeom) AND ST_GeometryType(var_tempgeom) = 'ST_Polygon' THEN
-                                       var_tempgeom := ST_ForceSFS(ST_Intersection(var_tempgeom, var_convhull));
+                               IF @extschema@.ST_IsValid(var_tempgeom) AND @extschema@.ST_GeometryType(var_tempgeom) = 'ST_Polygon' THEN
+                                       var_tempgeom := @extschema@.ST_ForceSFS(@extschema@.ST_Intersection(var_tempgeom, var_convhull));
                                        IF param_allow_holes THEN
                                                var_param_geom := var_tempgeom;
                                        ELSE
-                                               var_param_geom := ST_MakePolygon(ST_ExteriorRing(var_tempgeom));
+                                               var_param_geom := @extschema@.ST_MakePolygon(@extschema@.ST_ExteriorRing(var_tempgeom));
                                        END IF;
                                        return var_param_geom;
-                               ELSIF ST_IsValid(var_tempgeom) THEN
-                                       var_param_geom := ST_ForceSFS(ST_Intersection(var_tempgeom, var_convhull));
+                               ELSIF @extschema@.ST_IsValid(var_tempgeom) THEN
+                                       var_param_geom := @extschema@.ST_ForceSFS(@extschema@.ST_Intersection(var_tempgeom, var_convhull));
                                END IF;
                        END IF;
 
-                       IF ST_GeometryType(var_param_geom) = 'ST_Polygon' THEN
+                       IF @extschema@.ST_GeometryType(var_param_geom) = 'ST_Polygon' THEN
                                IF NOT param_allow_holes THEN
-                                       var_param_geom := ST_MakePolygon(ST_ExteriorRing(var_param_geom));
+                                       var_param_geom := @extschema@.ST_MakePolygon(@extschema@.ST_ExteriorRing(var_param_geom));
                                END IF;
                                return var_param_geom;
                        END IF;
-            var_cent := ST_Centroid(var_param_geom);
-            IF (ST_XMax(var_enline) - ST_XMin(var_enline) ) > var_buf AND (ST_YMax(var_enline) - ST_YMin(var_enline) ) > var_buf THEN
-                    IF ST_Dwithin(ST_Centroid(var_convhull) , ST_Centroid(ST_Envelope(var_param_geom)), var_buf/2) THEN
+            var_cent := @extschema@.ST_Centroid(var_param_geom);
+            IF (@extschema@.ST_XMax(var_enline) - @extschema@.ST_XMin(var_enline) ) > var_buf AND (@extschema@.ST_YMax(var_enline) - @extschema@.ST_YMin(var_enline) ) > var_buf THEN
+                    IF @extschema@.ST_Dwithin(@extschema@.ST_Centroid(var_convhull) , @extschema@.ST_Centroid(@extschema@.ST_Envelope(var_param_geom)), var_buf/2) THEN
                 -- If the geometric dimension is > 1 and the object is symettric (cutting at centroid will not work -- offset a bit)
-                        var_cent := ST_Translate(var_cent, (ST_XMax(var_enline) - ST_XMin(var_enline))/1000,  (ST_YMAX(var_enline) - ST_YMin(var_enline))/1000);
+                        var_cent := @extschema@.ST_Translate(var_cent, (@extschema@.ST_XMax(var_enline) - @extschema@.ST_XMin(var_enline))/1000,  (@extschema@.ST_YMAX(var_enline) - @extschema@.ST_YMin(var_enline))/1000);
                     ELSE
                         -- uses closest point on geometry to centroid. I can't explain why we are doing this
-                        var_cent := ST_ClosestPoint(var_param_geom,var_cent);
+                        var_cent := @extschema@.ST_ClosestPoint(var_param_geom,var_cent);
                     END IF;
-                    IF ST_DWithin(var_cent, var_enline,var_buf) THEN
-                        var_cent := ST_centroid(ST_Envelope(var_param_geom));
+                    IF @extschema@.ST_DWithin(var_cent, var_enline,var_buf) THEN
+                        var_cent := @extschema@.ST_centroid(@extschema@.ST_Envelope(var_param_geom));
                     END IF;
                     -- break envelope into 4 triangles about the centroid of the geometry and returned the clipped geometry in each quadrant
                     FOR i in 1 .. 4 LOOP
-                       var_geoms[i] := ST_MakePolygon(ST_MakeLine(ARRAY[ST_PointN(var_enline,i), ST_PointN(var_enline,i+1), var_cent, ST_PointN(var_enline,i)]));
-                       var_geoms[i] := ST_ForceSFS(ST_Intersection(var_param_geom, ST_Buffer(var_geoms[i],var_buf)));
-                       IF ST_IsValid(var_geoms[i]) THEN
+                       var_geoms[i] := @extschema@.ST_MakePolygon(@extschema@.ST_MakeLine(ARRAY[@extschema@.ST_PointN(var_enline,i), @extschema@.ST_PointN(var_enline,i+1), var_cent, @extschema@.ST_PointN(var_enline,i)]));
+                       var_geoms[i] := @extschema@.ST_ForceSFS(@extschema@.ST_Intersection(var_param_geom, @extschema@.ST_Buffer(var_geoms[i],var_buf)));
+                       IF @extschema@.ST_IsValid(var_geoms[i]) THEN
 
                        ELSE
-                            var_geoms[i] := ST_BuildArea(ST_MakeLine(ARRAY[ST_PointN(var_enline,i), ST_PointN(var_enline,i+1), var_cent, ST_PointN(var_enline,i)]));
+                            var_geoms[i] := @extschema@.ST_BuildArea(@extschema@.ST_MakeLine(ARRAY[@extschema@.ST_PointN(var_enline,i), @extschema@.ST_PointN(var_enline,i+1), var_cent, @extschema@.ST_PointN(var_enline,i)]));
                        END IF;
                     END LOOP;
-                    var_tempgeom := ST_Union(ARRAY[ST_ConvexHull(var_geoms[1]), ST_ConvexHull(var_geoms[2]) , ST_ConvexHull(var_geoms[3]), ST_ConvexHull(var_geoms[4])]);
-                    --RAISE NOTICE 'Curr vex % ', ST_AsText(var_tempgeom);
-                    IF ST_Area(var_tempgeom) <= var_newarea AND ST_IsValid(var_tempgeom)  THEN --AND ST_GeometryType(var_tempgeom) ILIKE '%Polygon'
+                    var_tempgeom := @extschema@.ST_Union(ARRAY[@extschema@.ST_ConvexHull(var_geoms[1]), @extschema@.ST_ConvexHull(var_geoms[2]) , @extschema@.ST_ConvexHull(var_geoms[3]), @extschema@.ST_ConvexHull(var_geoms[4])]);
+                    --RAISE NOTICE 'Curr vex % ', @extschema@.ST_AsText(var_tempgeom);
+                    IF @extschema@.ST_Area(var_tempgeom) <= var_newarea AND @extschema@.ST_IsValid(var_tempgeom)  THEN --AND @extschema@.ST_GeometryType(var_tempgeom) ILIKE '%Polygon'
 
-                        var_tempgeom := ST_Buffer(ST_ConcaveHull(var_geoms[1],least(param_pctconvex + param_pctconvex/var_div),true),var_buf, 'quad_segs=2');
+                        var_tempgeom := @extschema@.ST_Buffer(@extschema@.ST_ConcaveHull(var_geoms[1],least(param_pctconvex + param_pctconvex/var_div),true),var_buf, 'quad_segs=2');
                         FOR i IN 1 .. 4 LOOP
-                            var_geoms[i] := ST_Buffer(ST_ConcaveHull(var_geoms[i],least(param_pctconvex + param_pctconvex/var_div),true), var_buf, 'quad_segs=2');
-                            IF ST_IsValid(var_geoms[i]) Then
-                                var_tempgeom := ST_Union(var_tempgeom, var_geoms[i]);
+                            var_geoms[i] := @extschema@.ST_Buffer(@extschema@.ST_ConcaveHull(var_geoms[i],least(param_pctconvex + param_pctconvex/var_div),true), var_buf, 'quad_segs=2');
+                            IF @extschema@.ST_IsValid(var_geoms[i]) Then
+                                var_tempgeom := @extschema@.ST_Union(var_tempgeom, var_geoms[i]);
                             ELSE
-                                RAISE NOTICE 'Not valid % %', i, ST_AsText(var_tempgeom);
-                                var_tempgeom := ST_Union(var_tempgeom, ST_ConvexHull(var_geoms[i]));
+                                RAISE NOTICE 'Not valid % %', i, @extschema@.ST_AsText(var_tempgeom);
+                                var_tempgeom := @extschema@.ST_Union(var_tempgeom, @extschema@.ST_ConvexHull(var_geoms[i]));
                             END IF;
                         END LOOP;
 
-                        --RAISE NOTICE 'Curr concave % ', ST_AsText(var_tempgeom);
-                        IF ST_IsValid(var_tempgeom) THEN
+                        --RAISE NOTICE 'Curr concave % ', @extschema@.ST_AsText(var_tempgeom);
+                        IF @extschema@.ST_IsValid(var_tempgeom) THEN
                             var_resultgeom := var_tempgeom;
                         END IF;
-                        var_newarea := ST_Area(var_resultgeom);
-                    ELSIF ST_IsValid(var_tempgeom) THEN
+                        var_newarea := @extschema@.ST_Area(var_resultgeom);
+                    ELSIF @extschema@.ST_IsValid(var_tempgeom) THEN
                         var_resultgeom := var_tempgeom;
                     END IF;
 
-                    IF ST_NumGeometries(var_resultgeom) > 1  THEN
-                        var_tempgeom := _ST_ConcaveHull(var_resultgeom);
-                        IF ST_IsValid(var_tempgeom) AND ST_GeometryType(var_tempgeom) ILIKE 'ST_Polygon' THEN
+                    IF @extschema@.ST_NumGeometries(var_resultgeom) > 1  THEN
+                        var_tempgeom := @extschema@._ST_ConcaveHull(var_resultgeom);
+                        IF @extschema@.ST_IsValid(var_tempgeom) AND @extschema@.ST_GeometryType(var_tempgeom) ILIKE 'ST_Polygon' THEN
                             var_resultgeom := var_tempgeom;
                         ELSE
-                            var_resultgeom := ST_Buffer(var_tempgeom,var_buf, 'quad_segs=2');
+                            var_resultgeom := @extschema@.ST_Buffer(var_tempgeom,var_buf, 'quad_segs=2');
                         END IF;
                     END IF;
                     IF param_allow_holes = false THEN
                     -- only keep exterior ring since we do not want holes
-                        var_resultgeom := ST_MakePolygon(ST_ExteriorRing(var_resultgeom));
+                        var_resultgeom := @extschema@.ST_MakePolygon(@extschema@.ST_ExteriorRing(var_resultgeom));
                     END IF;
                 ELSE
-                    var_resultgeom := ST_Buffer(var_resultgeom,var_buf);
+                    var_resultgeom := @extschema@.ST_Buffer(var_resultgeom,var_buf);
                 END IF;
-                var_resultgeom := ST_ForceSFS(ST_Intersection(var_resultgeom, ST_ConvexHull(var_param_geom)));
+                var_resultgeom := @extschema@.ST_ForceSFS(@extschema@.ST_Intersection(var_resultgeom, @extschema@.ST_ConvexHull(var_param_geom)));
             ELSE
                 -- dimensions are too small to cut
-                var_resultgeom := _ST_ConcaveHull(var_param_geom);
+                var_resultgeom := @extschema@._ST_ConcaveHull(var_param_geom);
             END IF;
             RETURN var_resultgeom;
        END;
@@ -6087,7 +6087,7 @@ CREATE OR REPLACE FUNCTION _ST_AsX3D(int4, geometry, int4, int4, text)
 -- ST_AsX3D(geom, precision, options)
 CREATE OR REPLACE FUNCTION ST_AsX3D(geom geometry, maxdecimaldigits integer DEFAULT 15, options integer DEFAULT 0)
        RETURNS TEXT
-       AS $$SELECT _ST_AsX3D(3,$1,$2,$3,'');$$
+       AS $$SELECT @extschema@._ST_AsX3D(3,$1,$2,$3,'');$$
        LANGUAGE 'sql' IMMUTABLE;
 
 -- make views and spatial_ref_sys public viewable --