mirror of https://github.com/citusdata/citus.git
Changes array_cat argument type from anyarray to anycompatiblearray
Relevant PG commit: 9e38c2bb5093ceb0c04d6315ccd8975bd17add66pg14_support_3
parent
f339d6e264
commit
4216ef38f9
|
@ -1847,7 +1847,11 @@ MasterAggregateExpression(Aggref *originalAggregate,
|
||||||
{
|
{
|
||||||
/* array_cat_agg() takes anyarray as input */
|
/* array_cat_agg() takes anyarray as input */
|
||||||
catAggregateName = ARRAY_CAT_AGGREGATE_NAME;
|
catAggregateName = ARRAY_CAT_AGGREGATE_NAME;
|
||||||
|
#if PG_VERSION_NUM >= PG_VERSION_14
|
||||||
|
catInputType = ANYCOMPATIBLEARRAYOID;
|
||||||
|
#else
|
||||||
catInputType = ANYARRAYOID;
|
catInputType = ANYARRAYOID;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if (aggregateType == AGGREGATE_JSONB_AGG ||
|
else if (aggregateType == AGGREGATE_JSONB_AGG ||
|
||||||
aggregateType == AGGREGATE_JSONB_OBJECT_AGG)
|
aggregateType == AGGREGATE_JSONB_OBJECT_AGG)
|
||||||
|
@ -1882,7 +1886,19 @@ MasterAggregateExpression(Aggref *originalAggregate,
|
||||||
newMasterAggregate->args = list_make1(catAggArgument);
|
newMasterAggregate->args = list_make1(catAggArgument);
|
||||||
newMasterAggregate->aggfilter = NULL;
|
newMasterAggregate->aggfilter = NULL;
|
||||||
newMasterAggregate->aggtranstype = InvalidOid;
|
newMasterAggregate->aggtranstype = InvalidOid;
|
||||||
|
|
||||||
|
if (aggregateType == AGGREGATE_ARRAY_AGG)
|
||||||
|
{
|
||||||
|
#if PG_VERSION_NUM >= PG_VERSION_14
|
||||||
|
newMasterAggregate->aggargtypes = list_make1_oid(workerReturnType);
|
||||||
|
#else
|
||||||
newMasterAggregate->aggargtypes = list_make1_oid(ANYARRAYOID);
|
newMasterAggregate->aggargtypes = list_make1_oid(ANYARRAYOID);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newMasterAggregate->aggargtypes = list_make1_oid(ANYARRAYOID);
|
||||||
|
}
|
||||||
newMasterAggregate->aggsplit = AGGSPLIT_SIMPLE;
|
newMasterAggregate->aggsplit = AGGSPLIT_SIMPLE;
|
||||||
|
|
||||||
newMasterExpression = (Expr *) newMasterAggregate;
|
newMasterExpression = (Expr *) newMasterAggregate;
|
||||||
|
|
|
@ -320,9 +320,23 @@ CREATE TRIGGER dist_shard_cache_invalidate
|
||||||
|
|
||||||
|
|
||||||
-- Citus aggregates
|
-- Citus aggregates
|
||||||
|
|
||||||
|
DO $proc$
|
||||||
|
BEGIN
|
||||||
|
IF substring(current_Setting('server_version'), '\d+')::int >= 14 THEN
|
||||||
|
EXECUTE $$
|
||||||
|
CREATE AGGREGATE array_cat_agg(anycompatiblearray) (SFUNC = array_cat, STYPE = anycompatiblearray);
|
||||||
|
COMMENT ON AGGREGATE array_cat_agg(anycompatiblearray)
|
||||||
|
IS 'concatenate input arrays into a single array';
|
||||||
|
$$;
|
||||||
|
ELSE
|
||||||
|
EXECUTE $$
|
||||||
CREATE AGGREGATE array_cat_agg(anyarray) (SFUNC = array_cat, STYPE = anyarray);
|
CREATE AGGREGATE array_cat_agg(anyarray) (SFUNC = array_cat, STYPE = anyarray);
|
||||||
COMMENT ON AGGREGATE array_cat_agg(anyarray)
|
COMMENT ON AGGREGATE array_cat_agg(anyarray)
|
||||||
IS 'concatenate input arrays into a single array';
|
IS 'concatenate input arrays into a single array';
|
||||||
|
$$;
|
||||||
|
END IF;
|
||||||
|
END$proc$;
|
||||||
|
|
||||||
GRANT SELECT ON pg_catalog.pg_dist_partition TO public;
|
GRANT SELECT ON pg_catalog.pg_dist_partition TO public;
|
||||||
GRANT SELECT ON pg_catalog.pg_dist_shard TO public;
|
GRANT SELECT ON pg_catalog.pg_dist_shard TO public;
|
||||||
|
|
Loading…
Reference in New Issue