diff --git a/contrib/intagg/Makefile b/contrib/intagg/Makefile index 2cfe9978e2..c1e11bb95a 100644 --- a/contrib/intagg/Makefile +++ b/contrib/intagg/Makefile @@ -1,7 +1,7 @@ # contrib/intagg/Makefile EXTENSION = intagg -DATA = intagg--1.0.sql intagg--unpackaged--1.0.sql +DATA = intagg--1.1.sql intagg--1.0--1.1.sql intagg--unpackaged--1.0.sql ifdef USE_PGXS PG_CONFIG = pg_config diff --git a/contrib/intagg/intagg--1.0--1.1.sql b/contrib/intagg/intagg--1.0--1.1.sql new file mode 100644 index 0000000000..2ec95b6080 --- /dev/null +++ b/contrib/intagg/intagg--1.0--1.1.sql @@ -0,0 +1,11 @@ +/* contrib/intagg/intagg--1.0--1.1.sql */ + +-- complain if script is sourced in psql, rather than via ALTER EXTENSION +\echo Use "ALTER EXTENSION intagg UPDATE TO '1.1'" to load this file. \quit + +ALTER FUNCTION int_agg_state(internal, int4) PARALLEL SAFE; +ALTER FUNCTION int_agg_final_array(internal) PARALLEL SAFE; +ALTER FUNCTION int_array_enum(int4[]) PARALLEL SAFE; + +UPDATE pg_proc SET proparallel = 's' +WHERE oid = 'int_array_aggregate(int4)'::regprocedure; diff --git a/contrib/intagg/intagg--1.0.sql b/contrib/intagg/intagg--1.1.sql similarity index 80% rename from contrib/intagg/intagg--1.0.sql rename to contrib/intagg/intagg--1.1.sql index f96b6e2e9b..3796a2afbd 100644 --- a/contrib/intagg/intagg--1.0.sql +++ b/contrib/intagg/intagg--1.1.sql @@ -1,4 +1,4 @@ -/* contrib/intagg/intagg--1.0.sql */ +/* contrib/intagg/intagg--1.1.sql */ -- complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "CREATE EXTENSION intagg" to load this file. \quit @@ -8,6 +8,7 @@ CREATE FUNCTION int_agg_state (internal, int4) RETURNS internal AS 'array_agg_transfn' +PARALLEL SAFE LANGUAGE INTERNAL; -- Internal function for the aggregate @@ -15,15 +16,16 @@ LANGUAGE INTERNAL; CREATE FUNCTION int_agg_final_array (internal) RETURNS int4[] AS 'array_agg_finalfn' +PARALLEL SAFE LANGUAGE INTERNAL; -- The aggregate function itself -- uses the above functions to create an array of integers from an aggregation. -CREATE AGGREGATE int_array_aggregate ( - BASETYPE = int4, +CREATE AGGREGATE int_array_aggregate(int4) ( SFUNC = int_agg_state, STYPE = internal, - FINALFUNC = int_agg_final_array + FINALFUNC = int_agg_final_array, + PARALLEL = SAFE ); -- The enumeration function @@ -32,4 +34,4 @@ CREATE AGGREGATE int_array_aggregate ( CREATE FUNCTION int_array_enum(int4[]) RETURNS setof integer AS 'array_unnest' -LANGUAGE INTERNAL IMMUTABLE STRICT; +LANGUAGE INTERNAL IMMUTABLE STRICT PARALLEL SAFE; diff --git a/contrib/intagg/intagg.control b/contrib/intagg/intagg.control index f11fb11940..a733bbfc1d 100644 --- a/contrib/intagg/intagg.control +++ b/contrib/intagg/intagg.control @@ -1,4 +1,4 @@ # intagg extension comment = 'integer aggregator and enumerator (obsolete)' -default_version = '1.0' +default_version = '1.1' relocatable = true