diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/catalog/catversion.h | 2 | ||||
-rw-r--r-- | src/include/catalog/pg_aggregate.dat | 13 | ||||
-rw-r--r-- | src/include/catalog/pg_proc.dat | 27 | ||||
-rw-r--r-- | src/include/parser/parse_agg.h | 2 | ||||
-rw-r--r-- | src/include/utils/array.h | 3 |
5 files changed, 44 insertions, 3 deletions
diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 5dd043c6c88..03be537054d 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -57,6 +57,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 202301201 +#define CATALOG_VERSION_NO 202301231 #endif diff --git a/src/include/catalog/pg_aggregate.dat b/src/include/catalog/pg_aggregate.dat index 8c957437ea7..4fea7d8dc19 100644 --- a/src/include/catalog/pg_aggregate.dat +++ b/src/include/catalog/pg_aggregate.dat @@ -537,19 +537,28 @@ # array { aggfnoid => 'array_agg(anynonarray)', aggtransfn => 'array_agg_transfn', - aggfinalfn => 'array_agg_finalfn', aggfinalextra => 't', - aggtranstype => 'internal' }, + aggcombinefn => 'array_agg_combine', aggserialfn => 'array_agg_serialize', + aggdeserialfn => 'array_agg_deserialize', aggfinalfn => 'array_agg_finalfn', + aggfinalextra => 't', aggtranstype => 'internal' }, { aggfnoid => 'array_agg(anyarray)', aggtransfn => 'array_agg_array_transfn', + aggcombinefn => 'array_agg_array_combine', + aggserialfn => 'array_agg_array_serialize', + aggdeserialfn => 'array_agg_array_deserialize', aggfinalfn => 'array_agg_array_finalfn', aggfinalextra => 't', aggtranstype => 'internal' }, # text { aggfnoid => 'string_agg(text,text)', aggtransfn => 'string_agg_transfn', + aggcombinefn => 'string_agg_combine', aggserialfn => 'string_agg_serialize', + aggdeserialfn => 'string_agg_deserialize', aggfinalfn => 'string_agg_finalfn', aggtranstype => 'internal' }, # bytea { aggfnoid => 'string_agg(bytea,bytea)', aggtransfn => 'bytea_string_agg_transfn', + aggcombinefn => 'string_agg_combine', + aggserialfn => 'string_agg_serialize', + aggdeserialfn => 'string_agg_deserialize', aggfinalfn => 'bytea_string_agg_finalfn', aggtranstype => 'internal' }, # range diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index 86eb8e8c58a..c0f2a8a77c8 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -1672,6 +1672,15 @@ { oid => '2333', descr => 'aggregate transition function', proname => 'array_agg_transfn', proisstrict => 'f', prorettype => 'internal', proargtypes => 'internal anynonarray', prosrc => 'array_agg_transfn' }, +{ oid => '9328', descr => 'aggregate combine function', + proname => 'array_agg_combine', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal internal', prosrc => 'array_agg_combine' }, +{ oid => '9329', descr => 'aggregate serial function', + proname => 'array_agg_serialize', prorettype => 'bytea', + proargtypes => 'internal', prosrc => 'array_agg_serialize' }, +{ oid => '9330', descr => 'aggregate deserial function', + proname => 'array_agg_deserialize', prorettype => 'internal', + proargtypes => 'bytea internal', prosrc => 'array_agg_deserialize' }, { oid => '2334', descr => 'aggregate final function', proname => 'array_agg_finalfn', proisstrict => 'f', prorettype => 'anyarray', proargtypes => 'internal anynonarray', prosrc => 'array_agg_finalfn' }, @@ -1683,6 +1692,15 @@ proname => 'array_agg_array_transfn', proisstrict => 'f', prorettype => 'internal', proargtypes => 'internal anyarray', prosrc => 'array_agg_array_transfn' }, +{ oid => '9331', descr => 'aggregate combine function', + proname => 'array_agg_array_combine', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal internal', prosrc => 'array_agg_array_combine' }, +{ oid => '9332', descr => 'aggregate serial function', + proname => 'array_agg_array_serialize', prorettype => 'bytea', + proargtypes => 'internal', prosrc => 'array_agg_array_serialize' }, +{ oid => '9333', descr => 'aggregate deserial function', + proname => 'array_agg_array_deserialize', prorettype => 'internal', + proargtypes => 'bytea internal', prosrc => 'array_agg_array_deserialize' }, { oid => '4052', descr => 'aggregate final function', proname => 'array_agg_array_finalfn', proisstrict => 'f', prorettype => 'anyarray', proargtypes => 'internal anyarray', @@ -4955,6 +4973,15 @@ { oid => '3535', descr => 'aggregate transition function', proname => 'string_agg_transfn', proisstrict => 'f', prorettype => 'internal', proargtypes => 'internal text text', prosrc => 'string_agg_transfn' }, +{ oid => '9334', descr => 'aggregate combine function', + proname => 'string_agg_combine', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal internal', prosrc => 'string_agg_combine' }, +{ oid => '9335', descr => 'aggregate serial function', + proname => 'string_agg_serialize', prorettype => 'bytea', + proargtypes => 'internal', prosrc => 'string_agg_serialize' }, +{ oid => '9336', descr => 'aggregate deserial function', + proname => 'string_agg_deserialize', prorettype => 'internal', + proargtypes => 'bytea internal', prosrc => 'string_agg_deserialize' }, { oid => '3536', descr => 'aggregate final function', proname => 'string_agg_finalfn', proisstrict => 'f', prorettype => 'text', proargtypes => 'internal', prosrc => 'string_agg_finalfn' }, diff --git a/src/include/parser/parse_agg.h b/src/include/parser/parse_agg.h index d07b1621ddf..e9afd99d11f 100644 --- a/src/include/parser/parse_agg.h +++ b/src/include/parser/parse_agg.h @@ -35,6 +35,8 @@ extern Oid resolve_aggregate_transtype(Oid aggfuncid, Oid *inputTypes, int numArguments); +extern bool agg_args_support_sendreceive(Aggref *aggref); + extern void build_aggregate_transfn_expr(Oid *agg_input_types, int agg_num_inputs, int agg_num_direct_inputs, diff --git a/src/include/utils/array.h b/src/include/utils/array.h index 1ad074055ae..b13dfb345ef 100644 --- a/src/include/utils/array.h +++ b/src/include/utils/array.h @@ -409,6 +409,9 @@ extern bool array_contains_nulls(ArrayType *array); extern ArrayBuildState *initArrayResult(Oid element_type, MemoryContext rcontext, bool subcontext); +extern ArrayBuildState *initArrayResultWithSize(Oid element_type, + MemoryContext rcontext, + bool subcontext, int initsize); extern ArrayBuildState *accumArrayResult(ArrayBuildState *astate, Datum dvalue, bool disnull, Oid element_type, |