From: Regina Obe Date: Fri, 28 Jul 2017 04:09:54 +0000 (+0000) Subject: Mark 3D functions and some other missed functions as parallel safe. X-Git-Tag: 2.3.4~48 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c2b30978430fe932a72b42860ca77de66e84f98a;p=postgis Mark 3D functions and some other missed functions as parallel safe. Closes #3792 for PostGIS 2.3.4 git-svn-id: http://svn.osgeo.org/postgis/branches/2.3@15514 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/NEWS b/NEWS index 97d5468e1..90730292f 100644 --- a/NEWS +++ b/NEWS @@ -1,13 +1,14 @@ PostGIS 2.3.4 2017/xx/xx - * Bug Fixes + * Bug Fixes and Enhancements - #3782, Memory leak in lwline_from_wkb_state (Even Rouault) - #3101, Fix buffer overflow in pgsql2shp (Sandro Santilli) - #3786, ptarray null and heap issues on is_closed - #3795, Solaris build issues due to missing isfinite define (Julian Schauder) + - #3792, mark all 3D related including SFCGAL as parallel safe PostGIS 2.3.3 diff --git a/doc/xsl/postgis_aggs_mm.xml.xsl b/doc/xsl/postgis_aggs_mm.xml.xsl index 331c5f247..95cbd13ad 100644 --- a/doc/xsl/postgis_aggs_mm.xml.xsl +++ b/doc/xsl/postgis_aggs_mm.xml.xsl @@ -484,6 +484,7 @@ PostGIS 2.3.0: PostgreSQL 9.6+ support for parallel queries. PostGIS 2.3.0: PostgreSQL 9.4+ support for BRIN indexes. Refer to . PostGIS 2.3.0: Tiger Geocoder upgraded to work with TIGER 2016 data. + PostGIS 2.3.4: All 3D related including SFCGAL marked as parallel safe. PostGIS Functions new or enhanced in 2.3 The functions given below are PostGIS functions that were added or enhanced. diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in index a9067218c..528caa068 100644 --- a/postgis/postgis.sql.in +++ b/postgis/postgis.sql.in @@ -5394,49 +5394,49 @@ CREATE OR REPLACE RULE geometry_columns_delete AS CREATE OR REPLACE FUNCTION ST_3DDistance(geom1 geometry, geom2 geometry) RETURNS float8 AS 'MODULE_PATHNAME', 'distance3d' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; CREATE OR REPLACE FUNCTION ST_3DMaxDistance(geom1 geometry, geom2 geometry) RETURNS float8 AS 'MODULE_PATHNAME', 'LWGEOM_maxdistance3d' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; CREATE OR REPLACE FUNCTION ST_3DClosestPoint(geom1 geometry, geom2 geometry) RETURNS geometry AS 'MODULE_PATHNAME', 'LWGEOM_closestpoint3d' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 1; -- reset cost, see #3675 CREATE OR REPLACE FUNCTION ST_3DShortestLine(geom1 geometry, geom2 geometry) RETURNS geometry AS 'MODULE_PATHNAME', 'LWGEOM_shortestline3d' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 1; -- reset cost, see #3675 CREATE OR REPLACE FUNCTION ST_3DLongestLine(geom1 geometry, geom2 geometry) RETURNS geometry AS 'MODULE_PATHNAME', 'LWGEOM_longestline3d' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 1; -- reset cost, see #3675 CREATE OR REPLACE FUNCTION _ST_3DDWithin(geom1 geometry, geom2 geometry,float8) RETURNS boolean AS 'MODULE_PATHNAME', 'LWGEOM_dwithin3d' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; CREATE OR REPLACE FUNCTION ST_3DDWithin(geom1 geometry, geom2 geometry,float8) RETURNS boolean 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 + LANGUAGE 'sql' IMMUTABLE _PARALLEL COST 100; CREATE OR REPLACE FUNCTION _ST_3DDFullyWithin(geom1 geometry, geom2 geometry,float8) RETURNS boolean AS 'MODULE_PATHNAME', 'LWGEOM_dfullywithin3d' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; CREATE OR REPLACE FUNCTION ST_3DDFullyWithin(geom1 geometry, geom2 geometry,float8) @@ -5448,13 +5448,13 @@ CREATE OR REPLACE FUNCTION ST_3DDFullyWithin(geom1 geometry, geom2 geometry,floa CREATE OR REPLACE FUNCTION _ST_3DIntersects(geom1 geometry, geom2 geometry) RETURNS boolean AS 'MODULE_PATHNAME','intersects3d' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; CREATE OR REPLACE FUNCTION ST_3DIntersects(geom1 geometry, geom2 geometry) RETURNS boolean AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_3DIntersects($1, $2)' - LANGUAGE 'sql' IMMUTABLE + LANGUAGE 'sql' IMMUTABLE _PARALLEL COST 100; @@ -5465,7 +5465,7 @@ CREATE OR REPLACE FUNCTION ST_3DIntersects(geom1 geometry, geom2 geometry) CREATE OR REPLACE FUNCTION ST_CoordDim(Geometry geometry) RETURNS smallint AS 'MODULE_PATHNAME', 'LWGEOM_ndims' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 5; -- -- SQL-MM @@ -5505,7 +5505,7 @@ CREATE OR REPLACE FUNCTION ST_LineToCurve(Geometry geometry) CREATE OR REPLACE FUNCTION _ST_OrderingEquals(GeometryA geometry, GeometryB geometry) RETURNS boolean AS 'MODULE_PATHNAME', 'LWGEOM_same' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 1.3.0 @@ -5514,7 +5514,7 @@ CREATE OR REPLACE FUNCTION ST_OrderingEquals(GeometryA geometry, GeometryB geome AS $$ SELECT $1 OPERATOR(@extschema@.~=) $2 AND @extschema@._ST_OrderingEquals($1, $2) $$ - LANGUAGE 'sql' IMMUTABLE; + LANGUAGE 'sql' IMMUTABLE _PARALLEL; ------------------------------------------------------------------------------- -- SQL/MM - SQL Functions on type ST_Point @@ -5814,13 +5814,13 @@ LANGUAGE 'plpgsql' IMMUTABLE STRICT _PARALLEL; CREATE OR REPLACE FUNCTION _ST_AsX3D(int4, geometry, int4, int4, text) RETURNS TEXT AS 'MODULE_PATHNAME','LWGEOM_asX3D' - LANGUAGE 'c' IMMUTABLE; + LANGUAGE 'c' IMMUTABLE _PARALLEL; -- 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 @extschema@._ST_AsX3D(3,$1,$2,$3,'');$$ - LANGUAGE 'sql' IMMUTABLE; + LANGUAGE 'sql' IMMUTABLE _PARALLEL; -- make views and spatial_ref_sys public viewable -- GRANT SELECT ON TABLE geography_columns TO public; diff --git a/postgis/sfcgal.sql.in b/postgis/sfcgal.sql.in index 6f8a100c8..168318b33 100644 --- a/postgis/sfcgal.sql.in +++ b/postgis/sfcgal.sql.in @@ -32,70 +32,70 @@ CREATE OR REPLACE FUNCTION postgis_sfcgal_version() RETURNS text CREATE OR REPLACE FUNCTION ST_3DIntersection(geom1 geometry, geom2 geometry) RETURNS geometry AS 'MODULE_PATHNAME','sfcgal_intersection3D' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.2 CREATE OR REPLACE FUNCTION ST_3DDifference(geom1 geometry, geom2 geometry) RETURNS geometry AS 'MODULE_PATHNAME','sfcgal_difference3D' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.2 CREATE OR REPLACE FUNCTION ST_3DUnion(geom1 geometry, geom2 geometry) RETURNS geometry AS 'MODULE_PATHNAME','sfcgal_union3D' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.1.0 CREATE OR REPLACE FUNCTION ST_Tesselate(geometry) RETURNS geometry AS 'MODULE_PATHNAME','sfcgal_tesselate' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.1.0 CREATE OR REPLACE FUNCTION ST_3DArea(geometry) RETURNS FLOAT8 AS 'MODULE_PATHNAME','sfcgal_area3D' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.1.0 CREATE OR REPLACE FUNCTION ST_Extrude(geometry, float8, float8, float8) RETURNS geometry AS 'MODULE_PATHNAME','sfcgal_extrude' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.1.0 CREATE OR REPLACE FUNCTION ST_ForceLHR(geometry) RETURNS geometry AS 'MODULE_PATHNAME','sfcgal_force_lhr' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.1.0 CREATE OR REPLACE FUNCTION ST_Orientation(geometry) RETURNS INT4 AS 'MODULE_PATHNAME','sfcgal_orientation' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.1.0 CREATE OR REPLACE FUNCTION ST_MinkowskiSum(geometry, geometry) RETURNS geometry AS 'MODULE_PATHNAME','sfcgal_minkowski_sum' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.1.0 CREATE OR REPLACE FUNCTION ST_StraightSkeleton(geometry) RETURNS geometry AS 'MODULE_PATHNAME','sfcgal_straight_skeleton' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.2.0 @@ -126,34 +126,35 @@ CREATE OR REPLACE FUNCTION ST_ApproximateMedialAxis(geometry) AS 'MODULE_PATHNAME','sfcgal_approximate_medial_axis' LANGUAGE 'c' #endif // POSTGIS_SFCGAL_VERSION >= 12 - IMMUTABLE STRICT COST 100; + IMMUTABLE STRICT _PARALLEL + COST 100; -- Availability: 2.2.0 CREATE OR REPLACE FUNCTION ST_IsPlanar(geometry) RETURNS boolean AS 'MODULE_PATHNAME','sfcgal_is_planar' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.2 CREATE OR REPLACE FUNCTION ST_Volume(geometry) RETURNS FLOAT8 AS 'MODULE_PATHNAME','sfcgal_volume' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.2 CREATE OR REPLACE FUNCTION ST_MakeSolid(geometry) RETURNS geometry AS 'MODULE_PATHNAME','sfcgal_make_solid' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; -- Availability: 2.2 CREATE OR REPLACE FUNCTION ST_IsSolid(geometry) RETURNS boolean AS 'MODULE_PATHNAME','sfcgal_is_solid' - LANGUAGE 'c' IMMUTABLE STRICT + LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL COST 100; COMMIT;