From 3d73c10b37d091b244d2ca0668306373b50aa8ae Mon Sep 17 00:00:00 2001 From: Paul Ramsey Date: Mon, 5 Mar 2018 14:14:49 +0000 Subject: [PATCH] Remove the pgis_abs dummy type and replace with use of 'internal' type. Closes #4035 git-svn-id: http://svn.osgeo.org/postgis/trunk@16443 b70326c6-7e19-0410-871a-916f4a2858ee --- postgis/legacy.sql.in | 4 +-- postgis/lwgeom_accum.c | 28 ++----------------- postgis/postgis.sql.in | 62 ++++++++++++++---------------------------- 3 files changed, 24 insertions(+), 70 deletions(-) diff --git a/postgis/legacy.sql.in b/postgis/legacy.sql.in index ce8f49c96..4c66ab973 100644 --- a/postgis/legacy.sql.in +++ b/postgis/legacy.sql.in @@ -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 diff --git a/postgis/lwgeom_accum.c b/postgis/lwgeom_accum.c index 8b5fe6332..9eee89c2c 100644 --- a/postgis/lwgeom_accum.c +++ b/postgis/lwgeom_accum.c @@ -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 { diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in index 65f0b6203..017b15be5 100644 --- a/postgis/postgis.sql.in +++ b/postgis/postgis.sql.in @@ -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 -- 2.40.0