]> granicus.if.org Git - postgis/commitdiff
Mark 3D functions and some other missed functions as parallel safe.
authorRegina Obe <lr@pcorp.us>
Fri, 28 Jul 2017 04:09:54 +0000 (04:09 +0000)
committerRegina Obe <lr@pcorp.us>
Fri, 28 Jul 2017 04:09:54 +0000 (04:09 +0000)
Closes #3792 for PostGIS 2.3.4

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

NEWS
doc/xsl/postgis_aggs_mm.xml.xsl
postgis/postgis.sql.in
postgis/sfcgal.sql.in

diff --git a/NEWS b/NEWS
index 97d5468e19c91fc085f874bc7ebadefa2744c5f2..90730292f299904e5e1997f858304a724227fe34 100644 (file)
--- 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
index 331c5f247f5c686f6cb82bf21975526475fa2cad..95cbd13ada53054c541d562fbc668e8e6ee59598 100644 (file)
                        <note><para>PostGIS 2.3.0: PostgreSQL 9.6+ support for parallel queries.</para></note>
                        <note><para>PostGIS 2.3.0: PostgreSQL 9.4+ support for BRIN indexes. Refer to <xref linkend="brin_indexes" />.</para></note>
                        <note><para>PostGIS 2.3.0: Tiger Geocoder upgraded to work with TIGER 2016 data.</para></note>
+                       <note><para>PostGIS 2.3.4: All 3D related including SFCGAL marked as parallel safe.</para></note>
                        <sect2 id="NewFunctions_2_3">
                                <title>PostGIS Functions new or enhanced in 2.3</title>
                                <para>The functions given below are PostGIS functions that were added or enhanced.</para>
index a9067218ced71cb3f26a66834b817247dd1f98cb..528caa0682963e3ee1afeb7ba80ea132e2851b3b 100644 (file)
@@ -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;
index 6f8a100c8a9d087cc55e4c2f24f35a8b199012c3..168318b338d16797b17b00ea9316043007311d57 100644 (file)
@@ -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;