Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/catalog/catversion.h2
-rw-r--r--src/include/catalog/pg_aggregate.dat13
-rw-r--r--src/include/catalog/pg_proc.dat27
-rw-r--r--src/include/parser/parse_agg.h2
-rw-r--r--src/include/utils/array.h3
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,