RAISE DEBUG '% signature was deprecated in %. Please use %', oldname, version, newname;
END IF;
END;
-$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;
+$$ LANGUAGE 'plpgsql' IMMUTABLE STRICT
+ COST 100;
-------------------------------------------------------------------
-- SPHEROID TYPE
CREATE OR REPLACE FUNCTION ST_MemSize(geometry)
RETURNS int4
AS 'MODULE_PATHNAME', 'LWGEOM_mem_size'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 5;
-- Availability: 1.2.2
-- Deprecation in 2.2.0
CREATE OR REPLACE FUNCTION ST_summary(geometry)
RETURNS text
AS 'MODULE_PATHNAME', 'LWGEOM_summary'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_Npoints(geometry)
RETURNS int4
AS 'MODULE_PATHNAME', 'LWGEOM_npoints'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_nrings(geometry)
CREATE OR REPLACE FUNCTION ST_3DLength(geometry)
RETURNS FLOAT8
AS 'MODULE_PATHNAME', 'LWGEOM_length_linestring'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 20;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_Length2d(geometry)
RETURNS FLOAT8
AS 'MODULE_PATHNAME', 'LWGEOM_length2d_linestring'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- PostGIS equivalent function: length2d(geometry)
CREATE OR REPLACE FUNCTION ST_Length(geometry)
RETURNS FLOAT8
AS 'MODULE_PATHNAME', 'LWGEOM_length2d_linestring'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability in 2.2.0
CREATE OR REPLACE FUNCTION ST_LengthSpheroid(geometry, spheroid)
RETURNS FLOAT8
AS 'MODULE_PATHNAME','LWGEOM_length_ellipsoid_linestring'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 500;
-- this is a fake (for back-compatibility)
-- uses 3d if 3d is available, 2d otherwise
RETURNS FLOAT8
AS 'MODULE_PATHNAME','LWGEOM_length2d_ellipsoid'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 500;
-- Availability: 1.2.2
-- Deprecation in 2.2.0
CREATE OR REPLACE FUNCTION ST_3DPerimeter(geometry)
RETURNS FLOAT8
AS 'MODULE_PATHNAME', 'LWGEOM_perimeter_poly'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_perimeter2d(geometry)
RETURNS FLOAT8
AS 'MODULE_PATHNAME', 'LWGEOM_perimeter2d_poly'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- PostGIS equivalent function: perimeter2d(geometry)
CREATE OR REPLACE FUNCTION ST_Perimeter(geometry)
RETURNS FLOAT8
AS 'MODULE_PATHNAME', 'LWGEOM_perimeter2d_poly'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability: 1.2.2
-- Deprecation in 1.3.4
CREATE OR REPLACE FUNCTION ST_area2d(geometry)
RETURNS FLOAT8
AS 'MODULE_PATHNAME', 'LWGEOM_area_polygon'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- PostGIS equivalent function: area(geometry)
CREATE OR REPLACE FUNCTION ST_Area(geometry)
RETURNS FLOAT8
AS 'MODULE_PATHNAME','area'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION ST_DistanceSpheroid(geom1 geometry, geom2 geometry,spheroid)
RETURNS FLOAT8
AS 'MODULE_PATHNAME','LWGEOM_distance_ellipsoid'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 200; --upped this
-- Availability: 1.2.2
-- Deprecation in 2.2.0
RETURNS float8
AS 'MODULE_PATHNAME', 'distance'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 25; --changed from 100 should be 1/5th to 1/10 spheroid
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION ST_PointInsideCircle(geometry,float8,float8,float8)
CREATE OR REPLACE FUNCTION ST_Force2D(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_force_2d'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 5;
-- Availability: 1.2.2
-- Deprecation in 2.1.0
CREATE OR REPLACE FUNCTION ST_Force3DZ(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_force_3dz'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 1.2.2
-- Deprecation in 2.1.0
CREATE OR REPLACE FUNCTION ST_Force3D(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_force_3dz'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 1.2.2
-- Deprecation in 2.1.0
CREATE OR REPLACE FUNCTION ST_Force3DM(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_force_3dm'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 1.2.2
-- Deprecation in 2.1.0
CREATE OR REPLACE FUNCTION ST_Force4D(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_force_4d'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 1.2.2
-- Deprecation in 2.1.0
CREATE OR REPLACE FUNCTION ST_ForceCollection(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_force_collection'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability: 1.2.2
-- Deprecation in 2.1.0
CREATE OR REPLACE FUNCTION ST_Multi(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_force_multi'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION ST_ForceCurve(geometry)
CREATE OR REPLACE FUNCTION ST_ForceSFS(geometry, version text)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_force_sfs'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_Expand(box3d,float8)
RETURNS box3d
AS 'MODULE_PATHNAME', 'BOX3D_expand'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_Expand(geometry,float8)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_expand'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- PostGIS equivalent function: envelope(geometry)
CREATE OR REPLACE FUNCTION ST_Envelope(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_envelope'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION ST_BoundingDiagonal(geom geometry, fits boolean DEFAULT false)
CREATE OR REPLACE FUNCTION ST_Reverse(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_reverse'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_ForceRHR(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_force_clockwise_poly'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 15;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION postgis_noop(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_noop'
- LANGUAGE 'c' VOLATILE STRICT _PARALLEL;
+ LANGUAGE 'c' VOLATILE STRICT _PARALLEL
+ COST 10;
-- Deprecation in 1.5.0
CREATE OR REPLACE FUNCTION ST_zmflag(geometry)
RETURNS smallint
AS 'MODULE_PATHNAME', 'LWGEOM_zmflag'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 5;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_NDims(geometry)
RETURNS smallint
AS 'MODULE_PATHNAME', 'LWGEOM_ndims'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 5;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_AsEWKT(geometry)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asEWKT'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 750; --this looks suspicious, requires recheck
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION ST_AsTWKB(geom geometry, prec int4 default NULL, prec_z int4 default NULL, prec_m int4 default NULL, with_sizes boolean default NULL, with_boxes boolean default NULL)
CREATE OR REPLACE FUNCTION ST_AsEWKB(geometry)
RETURNS BYTEA
AS 'MODULE_PATHNAME','WKBFromLWGEOM'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_AsHEXEWKB(geometry)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asHEXEWKB'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_AsHEXEWKB(geometry, text)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asHEXEWKB'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_AsEWKB(geometry,text)
RETURNS bytea
AS 'MODULE_PATHNAME','WKBFromLWGEOM'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION ST_AsLatLonText(geom geometry, tmpl text DEFAULT '')
CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_affine'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8)
CREATE OR REPLACE FUNCTION ST_Dump(geometry)
RETURNS SETOF geometry_dump
AS 'MODULE_PATHNAME', 'LWGEOM_dump'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 100;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_DumpRings(geometry)
CREATE OR REPLACE FUNCTION ST_DumpPoints(geometry)
RETURNS SETOF geometry_dump
AS 'MODULE_PATHNAME', 'LWGEOM_dumppoints'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 100;
-------------------------------------------------------------------
CREATE OR REPLACE FUNCTION ST_SetSRID(geometry,int4)
RETURNS geometry
AS 'MODULE_PATHNAME','LWGEOM_set_srid'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
CREATE OR REPLACE FUNCTION ST_SRID(geometry)
RETURNS int4
AS 'MODULE_PATHNAME','LWGEOM_get_srid'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 5;
CREATE OR REPLACE FUNCTION postgis_transform_geometry(geometry,text,text,int)
RETURNS geometry
CREATE OR REPLACE FUNCTION ST_Transform(geometry,integer)
RETURNS geometry
AS 'MODULE_PATHNAME','transform'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 100;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION ST_Transform(geom geometry, to_proj text)
CREATE OR REPLACE FUNCTION box2d(geometry)
RETURNS box2d
AS 'MODULE_PATHNAME','LWGEOM_to_BOX2D'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
CREATE OR REPLACE FUNCTION box3d(geometry)
RETURNS box3d
AS 'MODULE_PATHNAME','LWGEOM_to_BOX3D'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
CREATE OR REPLACE FUNCTION box(geometry)
RETURNS box
AS 'MODULE_PATHNAME','LWGEOM_to_BOX'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
CREATE OR REPLACE FUNCTION box2d(box3d)
RETURNS box2d
CREATE OR REPLACE FUNCTION text(geometry)
RETURNS text
AS 'MODULE_PATHNAME','LWGEOM_to_text'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- this is kept for backward-compatibility
-- Deprecation in 1.2.3
CREATE OR REPLACE FUNCTION bytea(geometry)
RETURNS bytea
AS 'MODULE_PATHNAME','LWGEOM_to_bytea'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 10;
-- 7.3+ explicit casting definitions
CREATE CAST (geometry AS box2d) WITH FUNCTION box2d(geometry) AS IMPLICIT;
CREATE OR REPLACE FUNCTION ST_Simplify(geometry, float8)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_simplify2d'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 50;
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION ST_Simplify(geometry, float8, boolean)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_simplify2d'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 50; -- COST guessed from ST_Simplify(geometry, float8)
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION ST_SimplifyVW(geometry, float8)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_SetEffectiveArea'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 50; -- COST guessed from ST_Simplify(geometry, float8)
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION ST_SetEffectiveArea(geometry, float8 default -1, integer default 1)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_SetEffectiveArea'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 50; -- COST guessed from ST_Simplify(geometry, float8)
-- ST_SnapToGrid(input, xoff, yoff, xsize, ysize)
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_SnapToGrid(geometry, float8, float8, float8, float8)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_snaptogrid'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- ST_SnapToGrid(input, xsize, ysize) # offsets=0
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_SnapToGrid(geometry, float8, float8)
RETURNS geometry
AS 'SELECT ST_SnapToGrid($1, 0, 0, $2, $3)'
- LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- ST_SnapToGrid(input, size) # xsize=ysize=size, offsets=0
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_SnapToGrid(geom1 geometry, geom2 geometry, float8, float8, float8, float8)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_snaptogrid_pointoff'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25; -- COST from ST_SnapToGrid(input, xoff, yoff, xsize, ysize)
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_Segmentize(geometry, float8)
RETURNS geometry
AS 'MODULE_PATHNAME', 'LWGEOM_segmentize2d'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
---------------------------------------------------------------
-- LRS
RETURNS geometry
AS 'MODULE_PATHNAME','intersection'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- PostGIS equivalent function: buffer(geometry,float8)
CREATE OR REPLACE FUNCTION ST_Buffer(geometry,float8)
RETURNS geometry
AS 'MODULE_PATHNAME','buffer'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 5000;
-- Availability: 1.5.0 - requires GEOS-3.2 or higher
CREATE OR REPLACE FUNCTION _ST_Buffer(geometry,float8,cstring)
RETURNS geometry
AS 'MODULE_PATHNAME','buffer'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 5000;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_Buffer(geometry,float8,integer)
RETURNS geometry
AS 'MODULE_PATHNAME','ST_OffsetCurve'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION ST_GeneratePoints(area geometry, npoints numeric)
RETURNS geometry
AS 'MODULE_PATHNAME','ST_GeneratePoints'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 400;
+ COST 400; -- Guessed cost
-- PostGIS equivalent function: convexhull(geometry)
CREATE OR REPLACE FUNCTION ST_ConvexHull(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME','convexhull'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 250;
-- Only accepts LINESTRING as parameters.
-- Availability: 1.4.0
RETURNS integer
AS 'MODULE_PATHNAME', 'ST_LineCrossingDirection'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Availability: 1.4.0
CREATE OR REPLACE FUNCTION ST_LineCrossingDirection(geom1 geometry, geom2 geometry)
RETURNS geometry
AS 'MODULE_PATHNAME','topologypreservesimplify'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 2000;
-- Requires GEOS >= 3.1.0
-- Availability: 1.4.0
RETURNS text
AS 'MODULE_PATHNAME', 'isvalidreason'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 1000;
-- Availability: 2.0.0
CREATE TYPE valid_detail AS (
RETURNS valid_detail
AS 'MODULE_PATHNAME', 'isvaliddetail'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 1000;
-- Requires GEOS >= 3.3.0
-- Availability: 2.0.0
RETURNS valid_detail
AS 'MODULE_PATHNAME', 'isvaliddetail'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 1000;
-- Requires GEOS >= 3.3.0
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION ST_IsValid(geometry, int4)
RETURNS boolean
AS 'SELECT (ST_isValidDetail($1, $2)).valid'
- LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
-- Requires GEOS >= 3.2.0
RETURNS FLOAT8
AS 'MODULE_PATHNAME', 'hausdorffdistance'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Requires GEOS >= 3.2.0
-- Availability: 1.5.0
RETURNS FLOAT8
AS 'MODULE_PATHNAME', 'hausdorffdistancedensify'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- PostGIS equivalent function: difference(geom1 geometry, geom2 geometry)
CREATE OR REPLACE FUNCTION ST_Difference(geom1 geometry, geom2 geometry)
RETURNS geometry
AS 'MODULE_PATHNAME','difference'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 100; --guessed based on ST_Intersection
-- PostGIS equivalent function: boundary(geometry)
CREATE OR REPLACE FUNCTION ST_Boundary(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_RemoveRepeatedPoints'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 25;
-- Requires GEOS >= 3.5.0
-- Availability: 2.2.0
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_ClipByBox2d'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 50;
+ COST 50; -- Guessed cost
-- Requires GEOS >= 3.5.0
-- Availability: 2.2.0
RETURNS setof geometry
AS 'MODULE_PATHNAME', 'ST_Subdivide'
LANGUAGE 'c' IMMUTABLE STRICT
- COST 100;
+ COST 100; -- Guessed cost
--------------------------------------------------------------------------------
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_MakeValid'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 1000;
-- ST_CleanGeometry(in geometry)
--
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_CleanGeometry'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 1000;
--------------------------------------------------------------------------------
-- ST_Split
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_Split'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
--------------------------------------------------------------------------------
-- ST_SharedPaths
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_SharedPaths'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
--------------------------------------------------------------------------------
-- ST_Snap
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_Snap'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
--------------------------------------------------------------------------------
-- ST_RelateMatch
RETURNS bool
AS 'MODULE_PATHNAME', 'ST_RelateMatch'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
--------------------------------------------------------------------------------
-- ST_Node
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_Node'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
--------------------------------------------------------------------------------
-- ST_DelaunayTriangles
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_DelaunayTriangles'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 25000;
--------------------------------------------------------------------------------
-- ST_Voronoi
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_Voronoi'
LANGUAGE 'c' IMMUTABLE _PARALLEL
- COST 100;
+ COST 25000; -- Guessed cost
--------------------------------------------------------------------------------
RETURNS boolean
AS 'MODULE_PATHNAME','touches'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Availability: 1.2.2
-- Inlines index magic
RETURNS boolean
AS 'MODULE_PATHNAME', 'LWGEOM_dwithin'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_DWithin(geom1 geometry, geom2 geometry, float8)
RETURNS boolean
AS 'MODULE_PATHNAME','intersects'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Availability: 1.2.2
-- Inlines index magic
RETURNS boolean
AS 'MODULE_PATHNAME','crosses'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Availability: 1.2.2
-- Inlines index magic
RETURNS boolean
AS 'MODULE_PATHNAME','contains'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Availability: 1.2.2
-- Inlines index magic
RETURNS boolean
AS 'MODULE_PATHNAME', 'coveredby'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_CoveredBy(geom1 geometry, geom2 geometry)
RETURNS boolean
AS 'MODULE_PATHNAME', 'covers'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Availability: 1.2.2
-- Inlines index magic
RETURNS boolean
AS 'MODULE_PATHNAME','containsproperly'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- Availability: 1.4.0
-- Inlines index magic
RETURNS boolean
AS 'MODULE_PATHNAME','overlaps'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; -- Guessed cost
-- PostGIS equivalent function: within(geom1 geometry, geom2 geometry)
CREATE OR REPLACE FUNCTION _ST_Within(geom1 geometry, geom2 geometry)
RETURNS boolean
AS 'MODULE_PATHNAME', 'isvalid'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 1000;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION ST_MinimumClearance(geometry)
CREATE OR REPLACE FUNCTION ST_Centroid(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'centroid'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 100;
-- Availability: 2.3.0
RETURNS geometry
AS 'MODULE_PATHNAME', 'pointonsurface'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 2500; --this looks suspicious, should not be this high
-- PostGIS equivalent function: IsSimple(geometry)
CREATE OR REPLACE FUNCTION ST_IsSimple(geometry)
RETURNS boolean
AS 'MODULE_PATHNAME', 'issimple'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION ST_IsCollection(geometry)
RETURNS boolean
AS 'MODULE_PATHNAME', 'ST_IsCollection'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 5;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION _ST_Equals(geom1 geometry, geom2 geometry)
RETURNS boolean
AS 'MODULE_PATHNAME','ST_Equals'
LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
- COST 100;
+ COST 100; --Guessed cost
-- Availability: 1.2.1
CREATE OR REPLACE FUNCTION ST_Equals(geom1 geometry, geom2 geometry)
CREATE OR REPLACE FUNCTION ST_AsSVG(geom geometry,rel int4 DEFAULT 0,maxdecimaldigits int4 DEFAULT 15)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asSVG'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 1000;
-----------------------------------------------------------------------
-- GML OUTPUT
CREATE OR REPLACE FUNCTION _ST_AsGML(int4, geometry, int4, int4, text, text)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asGML'
- LANGUAGE 'c' IMMUTABLE _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE _PARALLEL
+ COST 2500;
-- ST_AsGML(version, geom) / precision=15
-- Availability: 1.3.2
CREATE OR REPLACE FUNCTION _ST_AsKML(int4,geometry, int4, text)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asKML'
- LANGUAGE 'c' IMMUTABLE;
+ LANGUAGE 'c' IMMUTABLE
+ COST 5000;
-- Availability: 1.2.2
-- Changed: 2.0.0 to use default args and allow named args
CREATE OR REPLACE FUNCTION ST_AsGeoJson(geom geometry, maxdecimaldigits int4 DEFAULT 15, options int4 DEFAULT 0)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asGeoJson'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 1000;
-- _ST_AsGeoJson(version, geom, precision, options)
CREATE OR REPLACE FUNCTION _ST_AsGeoJson(int4, geometry, int4, int4)
CREATE OR REPLACE FUNCTION ST_Dimension(geometry)
RETURNS int4
AS 'MODULE_PATHNAME', 'LWGEOM_dimension'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 10;
-- PostGIS equivalent function: ExteriorRing(geometry)
CREATE OR REPLACE FUNCTION ST_ExteriorRing(geometry)
CREATE OR REPLACE FUNCTION GeometryType(geometry)
RETURNS text
AS 'MODULE_PATHNAME', 'LWGEOM_getTYPE'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 10; -- COST guessed from ST_GeometryType(geometry)
-- Not quite equivalent to GeometryType
CREATE OR REPLACE FUNCTION ST_GeometryType(geometry)
RETURNS text
AS 'MODULE_PATHNAME', 'geometry_geometrytype'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 10;
-- PostGIS equivalent function: PointN(geometry,integer)
CREATE OR REPLACE FUNCTION ST_PointN(geometry,integer)
CREATE OR REPLACE FUNCTION ST_IsClosed(geometry)
RETURNS boolean
AS 'MODULE_PATHNAME', 'LWGEOM_isclosed'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 10;
-- PostGIS equivalent function: IsEmpty(geometry)
CREATE OR REPLACE FUNCTION ST_IsEmpty(geometry)
RETURNS boolean
AS 'MODULE_PATHNAME', 'LWGEOM_isempty'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 10;
-- Availability: 1.2.2
CREATE OR REPLACE FUNCTION ST_AsBinary(geometry,text)
RETURNS bytea
AS 'MODULE_PATHNAME','LWGEOM_asBinary'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 10;
-- PostGIS equivalent of old function: AsBinary(geometry)
CREATE OR REPLACE FUNCTION ST_AsBinary(geometry)
RETURNS bytea
AS 'MODULE_PATHNAME','LWGEOM_asBinary'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 10;
-- PostGIS equivalent function: AsText(geometry)
CREATE OR REPLACE FUNCTION ST_AsText(geometry)
CREATE OR REPLACE FUNCTION ST_SwapOrdinates(geom geometry, ords cstring)
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_SwapOrdinates'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25; -- COST guessed from ST_FlipCoordinates(geometry)
-- NOTE: same as ST_SwapOrdinates(geometry, 'xy')
-- but slightly faster in that it doesn't need to parse ordinate
CREATE OR REPLACE FUNCTION ST_FlipCoordinates(geometry)
RETURNS geometry
AS 'MODULE_PATHNAME', 'ST_FlipCoordinates'
- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
+ LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
+ COST 25;
--
-- SFSQL 1.1
CREATE OR REPLACE FUNCTION ST_CoordDim(Geometry geometry)
RETURNS smallint
AS 'MODULE_PATHNAME', 'LWGEOM_ndims'
- LANGUAGE 'c' IMMUTABLE STRICT;
+ LANGUAGE 'c' IMMUTABLE STRICT
+ COST 5;
--
-- SQL-MM
--