From 5cdee207d332586c8456e04eb1ac97fefb03625b Mon Sep 17 00:00:00 2001 From: Yurii Rashkovskii Date: Fri, 18 Apr 2025 17:54:58 -0700 Subject: [PATCH] pg_creating_extension() to inspect if an extension is being created. This allows for much better control of what data is subject to `pg_extension_config_dump` as such data provenance can be established using this function. --- src/backend/commands/extension.c | 10 ++++++++++ src/include/catalog/pg_proc.dat | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index 93ef1ad106fd..45209b66f8d8 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -3928,3 +3928,13 @@ find_in_paths(const char *basename, List *paths) return NULL; } + +Datum +pg_creating_extension(PG_FUNCTION_ARGS) +{ + if (creating_extension) + { + PG_RETURN_OID(CurrentExtensionObject); + } + PG_RETURN_NULL(); +} diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index 01eba3b5a190..af06d47cc7d8 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -10757,6 +10757,11 @@ proname => 'pg_extension_config_dump', provolatile => 'v', proparallel => 'u', prorettype => 'void', proargtypes => 'regclass text', prosrc => 'pg_extension_config_dump' }, +{ oid => '3814', + descr => 'determine if an extension is currently being created', + proname => 'pg_creating_extension', provolatile => 'v', proparallel => 'u', + prorettype => 'oid', proargtypes => '', + prosrc => 'pg_creating_extension' }, # SQL-spec window functions { oid => '3100', descr => 'row number within partition',