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);
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
if ( PG_ARGISNULL(0) )
{
+ MemoryContext old = MemoryContextSwitchTo(aggcontext);
p = (pgis_abs*) palloc(sizeof(pgis_abs));
p->a = NULL;
p->data = (Datum) NULL;
{
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
{
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;
-- 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
-- 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
-- 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
-- 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
-- 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
-- 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
-- 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