我正在尝试编写一个SELECT
从中pg_catalog
提取函数名称、其架构名称和创建该函数的扩展名的函数。
拉取我使用的函数列表(简化版本)
SELECT pg_proc.proname, pg_namespace.nspname AS proschema
FROM pg_proc
INNER JOIN pg_namespace ON (pg_namespace.oid = pg_proc.pronamespace)
Run Code Online (Sandbox Code Playgroud)
要选择我可以运行的扩展
SELECT pg_extension.extname, pg_namespace.nspname as extschema
FROM pg_catalog.pg_extension
INNER JOIN pg_catalog.pg_namespace ON (pg_namespace.oid = pg_extension.extnamespace)
Run Code Online (Sandbox Code Playgroud)
现在我正在寻找它们在“”时创建的扩展和函数之间的链接CREATE EXTENSION
。理想情况下,SELECT 应该生成 extension_name、extension_schema、foo_name、foo_schema 的列表
我运行一个如下所示的查询
WITH src AS (
...
)
SELECT MAX(field1), array_agg(field2)
FROM src
Run Code Online (Sandbox Code Playgroud)
我知道field1
从 src 返回的所有行中都是相同的,所以我真的不在乎与它一起使用的聚合函数是MAX
还是MIN
. 在我的情况下field1
是一个数组,所以我很好奇是否有更有效的方法来获取任何field1
不包括将其与之前保存的 MIN/MAX 进行比较的开销的方法。如果有一个函数来获取第一个/保留最后一个值field1
将是理想的。