]> granicus.if.org Git - postgis/commitdiff
Remove the pgis_abs dummy type and replace with use of 'internal' type.
authorPaul Ramsey <pramsey@cleverelephant.ca>
Mon, 5 Mar 2018 14:14:49 +0000 (14:14 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Mon, 5 Mar 2018 14:14:49 +0000 (14:14 +0000)
Closes #4035

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

postgis/legacy.sql.in
postgis/lwgeom_accum.c
postgis/postgis.sql.in

index ce8f49c96dcb975bf487988baf085310b43ff802..4c66ab9737691485cfcc9bb2a63eab285d8b06ec 100644 (file)
@@ -1273,7 +1273,7 @@ CREATE OR REPLACE FUNCTION makeline_garray (geometry[])
 CREATE AGGREGATE makeline (
        BASETYPE = geometry,
        SFUNC = pgis_geometry_accum_transfn,
-       STYPE = pgis_abs,
+       STYPE = internal,
        FINALFUNC = pgis_geometry_makeline_finalfn
        );
 
@@ -1904,7 +1904,7 @@ CREATE OR REPLACE FUNCTION zmflag(geometry)
 CREATE AGGREGATE accum (
        sfunc = pgis_geometry_accum_transfn,
        basetype = geometry,
-       stype = pgis_abs,
+       stype = internal,
        finalfunc = pgis_geometry_accum_finalfn
        );
 -- Deprecation in 1.2.3
index 8b5fe6332975999c45a448df8da5e24d83e9adb0..9eee89c2c2da60612adc5d492fb924e98b2eabe6 100644 (file)
@@ -49,8 +49,6 @@ Datum pgis_geometry_polygonize_finalfn(PG_FUNCTION_ARGS);
 Datum pgis_geometry_makeline_finalfn(PG_FUNCTION_ARGS);
 Datum pgis_geometry_clusterintersecting_finalfn(PG_FUNCTION_ARGS);
 Datum pgis_geometry_clusterwithin_finalfn(PG_FUNCTION_ARGS);
-Datum pgis_abs_in(PG_FUNCTION_ARGS);
-Datum pgis_abs_out(PG_FUNCTION_ARGS);
 
 /* External prototypes */
 Datum pgis_union_geometry_array(PG_FUNCTION_ARGS);
@@ -88,28 +86,6 @@ typedef struct
 pgis_abs;
 
 
-
-/**
-** We're never going to use this type externally so the in/out
-** functions are dummies.
-*/
-PG_FUNCTION_INFO_V1(pgis_abs_in);
-Datum
-pgis_abs_in(PG_FUNCTION_ARGS)
-{
-       ereport(ERROR,(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                      errmsg("function %s not implemented", __func__)));
-       PG_RETURN_POINTER(NULL);
-}
-PG_FUNCTION_INFO_V1(pgis_abs_out);
-Datum
-pgis_abs_out(PG_FUNCTION_ARGS)
-{
-       ereport(ERROR,(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                      errmsg("function %s not implemented", __func__)));
-       PG_RETURN_POINTER(NULL);
-}
-
 /**
 ** The transfer function hooks into the PostgreSQL accumArrayResult()
 ** function (present since 8.0) to build an array in a side memory
@@ -139,6 +115,7 @@ pgis_geometry_accum_transfn(PG_FUNCTION_ARGS)
 
        if ( PG_ARGISNULL(0) )
        {
+               MemoryContext old = MemoryContextSwitchTo(aggcontext);
                p = (pgis_abs*) palloc(sizeof(pgis_abs));
                p->a = NULL;
                p->data = (Datum) NULL;
@@ -147,12 +124,11 @@ pgis_geometry_accum_transfn(PG_FUNCTION_ARGS)
                {
                        Datum argument = PG_GETARG_DATUM(2);
                        Oid dataOid = get_fn_expr_argtype(fcinfo->flinfo, 2);
-                       MemoryContext old = MemoryContextSwitchTo(aggcontext);
 
                        p->data = datumCopy(argument, get_typbyval(dataOid), get_typlen(dataOid));
 
-                       MemoryContextSwitchTo(old);
                }
+               MemoryContextSwitchTo(old);
        }
        else
        {
index 65f0b62038f67bccc90274284e3fb73b20d311d4..017b15be519d860f096b6a7ebd8efbc6e1ec4d56 100644 (file)
@@ -3839,85 +3839,63 @@ CREATE AGGREGATE ST_MemUnion(geometry) (
        stype = geometry
        );
 
---
--- pgis_abs
--- Container type to hold the ArrayBuildState pointer as it passes through
--- the geometry array accumulation aggregate.
---
-CREATE OR REPLACE FUNCTION pgis_abs_in(cstring)
-       RETURNS pgis_abs
-       AS 'MODULE_PATHNAME'
-       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
-
-CREATE OR REPLACE FUNCTION pgis_abs_out(pgis_abs)
-       RETURNS cstring
-       AS 'MODULE_PATHNAME'
-       LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
-
--- Availability: 1.4.0
-CREATE TYPE pgis_abs (
-       internallength = 16,
-       input = pgis_abs_in,
-       output = pgis_abs_out,
-       alignment = double
-);
 
 -- Availability: 1.4.0
-CREATE OR REPLACE FUNCTION pgis_geometry_accum_transfn(pgis_abs, geometry)
-       RETURNS pgis_abs
+CREATE OR REPLACE FUNCTION pgis_geometry_accum_transfn(internal, geometry)
+       RETURNS internal
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c' _PARALLEL;
 
 -- Availability: 2.2
-CREATE OR REPLACE FUNCTION pgis_geometry_accum_transfn(pgis_abs, geometry, float8)
-       RETURNS pgis_abs
+CREATE OR REPLACE FUNCTION pgis_geometry_accum_transfn(internal, geometry, float8)
+       RETURNS internal
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c' _PARALLEL;
 
 -- Availability: 2.3
-CREATE OR REPLACE FUNCTION pgis_geometry_accum_transfn(pgis_abs, geometry, float8, int)
-       RETURNS pgis_abs
+CREATE OR REPLACE FUNCTION pgis_geometry_accum_transfn(internal, geometry, float8, int)
+       RETURNS internal
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c' _PARALLEL;
 
 -- Availability: 1.4.0
-CREATE OR REPLACE FUNCTION pgis_geometry_accum_finalfn(pgis_abs)
+CREATE OR REPLACE FUNCTION pgis_geometry_accum_finalfn(internal)
        RETURNS geometry[]
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c' _PARALLEL;
 
 -- Availability: 1.4.0
-CREATE OR REPLACE FUNCTION pgis_geometry_union_finalfn(pgis_abs)
+CREATE OR REPLACE FUNCTION pgis_geometry_union_finalfn(internal)
        RETURNS geometry
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c' _PARALLEL;
 
 -- Availability: 1.4.0
-CREATE OR REPLACE FUNCTION pgis_geometry_collect_finalfn(pgis_abs)
+CREATE OR REPLACE FUNCTION pgis_geometry_collect_finalfn(internal)
        RETURNS geometry
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c' _PARALLEL;
 
 -- Availability: 1.4.0
-CREATE OR REPLACE FUNCTION pgis_geometry_polygonize_finalfn(pgis_abs)
+CREATE OR REPLACE FUNCTION pgis_geometry_polygonize_finalfn(internal)
        RETURNS geometry
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c' _PARALLEL;
 
 -- Availability: 2.2
-CREATE OR REPLACE FUNCTION pgis_geometry_clusterintersecting_finalfn(pgis_abs)
+CREATE OR REPLACE FUNCTION pgis_geometry_clusterintersecting_finalfn(internal)
        RETURNS geometry[]
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c' _PARALLEL;
 
 -- Availability: 2.2
-CREATE OR REPLACE FUNCTION pgis_geometry_clusterwithin_finalfn(pgis_abs)
+CREATE OR REPLACE FUNCTION pgis_geometry_clusterwithin_finalfn(internal)
        RETURNS geometry[]
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c' _PARALLEL;
 
 -- Availability: 1.4.0
-CREATE OR REPLACE FUNCTION pgis_geometry_makeline_finalfn(pgis_abs)
+CREATE OR REPLACE FUNCTION pgis_geometry_makeline_finalfn(internal)
        RETURNS geometry
        AS 'MODULE_PATHNAME'
        LANGUAGE 'c' _PARALLEL;
@@ -3926,7 +3904,7 @@ CREATE OR REPLACE FUNCTION pgis_geometry_makeline_finalfn(pgis_abs)
 -- Changed: 2.4.0 marked parallel safe
 CREATE AGGREGATE ST_Accum (geometry) (
        sfunc = pgis_geometry_accum_transfn,
-       stype = pgis_abs,
+       stype = internal,
 #if POSTGIS_PGSQL_VERSION >= 96
        parallel = safe,
 #endif
@@ -3945,7 +3923,7 @@ CREATE OR REPLACE FUNCTION ST_Union (geometry[])
 -- parallel handling dealt with in postgis_drop_after.sql
 CREATE AGGREGATE ST_Union (geometry) (
        sfunc = pgis_geometry_accum_transfn,
-       stype = pgis_abs,
+       stype = internal,
 #if POSTGIS_PGSQL_VERSION >= 96
        parallel = safe,
 #endif
@@ -3956,7 +3934,7 @@ CREATE AGGREGATE ST_Union (geometry) (
 -- Changed: 2.4.0: marked parallel safe
 CREATE AGGREGATE ST_Collect (geometry) (
        SFUNC = pgis_geometry_accum_transfn,
-       STYPE = pgis_abs,
+       STYPE = internal,
 #if POSTGIS_PGSQL_VERSION >= 96
        parallel = safe,
 #endif
@@ -3967,7 +3945,7 @@ CREATE AGGREGATE ST_Collect (geometry) (
 -- Changed: 2.4.0: marked parallel safe
 CREATE AGGREGATE ST_ClusterIntersecting (geometry) (
        SFUNC = pgis_geometry_accum_transfn,
-       STYPE = pgis_abs,
+       STYPE = internal,
 #if POSTGIS_PGSQL_VERSION >= 96
        parallel = safe,
 #endif
@@ -3978,7 +3956,7 @@ CREATE AGGREGATE ST_ClusterIntersecting (geometry) (
 -- Changed: 2.4.0 marked parallel safe
 CREATE AGGREGATE ST_ClusterWithin (geometry, float8) (
        SFUNC = pgis_geometry_accum_transfn,
-       STYPE = pgis_abs,
+       STYPE = internal,
 #if POSTGIS_PGSQL_VERSION >= 96
        parallel = safe,
 #endif
@@ -3989,7 +3967,7 @@ CREATE AGGREGATE ST_ClusterWithin (geometry, float8) (
 -- Changed: 2.4.0 marked parallel safe
 CREATE AGGREGATE ST_Polygonize (geometry) (
        SFUNC = pgis_geometry_accum_transfn,
-       STYPE = pgis_abs,
+       STYPE = internal,
 #if POSTGIS_PGSQL_VERSION >= 96
        parallel = safe,
 #endif
@@ -4000,7 +3978,7 @@ CREATE AGGREGATE ST_Polygonize (geometry) (
 -- Changed: 2.4.0 marked parallel safe
 CREATE AGGREGATE ST_MakeLine (geometry) (
        SFUNC = pgis_geometry_accum_transfn,
-       STYPE = pgis_abs,
+       STYPE = internal,
 #if POSTGIS_PGSQL_VERSION >= 96
        parallel = safe,
 #endif