From 324e1b47b03572004b4a448ec037f9cc865f340a Mon Sep 17 00:00:00 2001 From: onderkalaci Date: Wed, 26 Apr 2023 23:23:25 +0300 Subject: [PATCH] Pg now has its own any_value, don't create aggregate if exists Relevant PG commit: https://github.com/postgres/postgres/commit/2ddab010c2777c6a965cea82dc1b809ddc33ecc1 2ddab010c2777c6a965cea82dc1b809ddc33ecc1 --- src/backend/distributed/sql/udfs/any_value/9.1-1.sql | 5 ++++- src/backend/distributed/sql/udfs/any_value/latest.sql | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/backend/distributed/sql/udfs/any_value/9.1-1.sql b/src/backend/distributed/sql/udfs/any_value/9.1-1.sql index 7eb9fdb25..053474968 100644 --- a/src/backend/distributed/sql/udfs/any_value/9.1-1.sql +++ b/src/backend/distributed/sql/udfs/any_value/9.1-1.sql @@ -3,6 +3,7 @@ RETURNS anyelement AS $$ SELECT CASE WHEN $1 IS NULL THEN $2 ELSE $1 END; $$ LANGUAGE SQL STABLE; +DO $$ BEGIN CREATE AGGREGATE pg_catalog.any_value ( sfunc = pg_catalog.any_value_agg, combinefunc = pg_catalog.any_value_agg, @@ -11,4 +12,6 @@ CREATE AGGREGATE pg_catalog.any_value ( ); COMMENT ON AGGREGATE pg_catalog.any_value(anyelement) IS 'Returns the value of any row in the group. It is mostly useful when you know there will be only 1 element.'; - +EXCEPTION + WHEN duplicate_function THEN NULL; +END $$; diff --git a/src/backend/distributed/sql/udfs/any_value/latest.sql b/src/backend/distributed/sql/udfs/any_value/latest.sql index 7eb9fdb25..053474968 100644 --- a/src/backend/distributed/sql/udfs/any_value/latest.sql +++ b/src/backend/distributed/sql/udfs/any_value/latest.sql @@ -3,6 +3,7 @@ RETURNS anyelement AS $$ SELECT CASE WHEN $1 IS NULL THEN $2 ELSE $1 END; $$ LANGUAGE SQL STABLE; +DO $$ BEGIN CREATE AGGREGATE pg_catalog.any_value ( sfunc = pg_catalog.any_value_agg, combinefunc = pg_catalog.any_value_agg, @@ -11,4 +12,6 @@ CREATE AGGREGATE pg_catalog.any_value ( ); COMMENT ON AGGREGATE pg_catalog.any_value(anyelement) IS 'Returns the value of any row in the group. It is mostly useful when you know there will be only 1 element.'; - +EXCEPTION + WHEN duplicate_function THEN NULL; +END $$;