尝试使用 psql 获取 Postgres 中函数的源代码时,错误 "column p.proisagg does not exist" 是什么意思?
When trying to get the source of a function in Postgres using psql, what does the error "column p.proisagg does not exist" mean?
背景:
在 RDS 上使用 postgres 11,接口是 Centos 7 盒子上的 psql; objective 是为了显示某些存储过程/函数的来源,以便我可以使用它们
问题描述:当我尝试使用 \df+
命令列出/显示给定存储函数的源代码时,我认为该命令对于基于此用途是正确的在[这里的官方文档](https://www.postgresql.org/docs/current/app-psql.html],给出了一个错误,如图所示:
psql=> \df+ schema_foo.proc_bar;
ERROR: column p.proisagg does not exist
LINE 6: WHEN p.proisagg THEN 'agg'
我不知道如何解释这个;有问题的函数不包含错误中显示的逻辑片段,也不包含那里引用的列 p.proisagg
。我已经通过使用 \ef
.
打开 vim 中的函数验证了这一点
我的猜测基于几个不相关的 github 问题,这些问题提到了同样的错误 for example 是它引用了 postgres 内部的一些模式代码。
总结:简而言之,我可以使用\ef
查看功能的来源,所以从实际的角度来看我的工作没有受到影响,但是我希望了解此错误以及为什么我遇到 \df+
.
我遇到了同样的问题,运行这 2 个命令可以修复它
sed -i "s/NOT pp.proisagg/pp.prokind='f'/g" /usr/share/phpPgAdmin/classes/database/Postgres.php
sed -i "s/NOT p.proisagg/p.prokind='f'/g" /usr/share/phpPgAdmin/classes/database/Postgres.php
背景: 在 RDS 上使用 postgres 11,接口是 Centos 7 盒子上的 psql; objective 是为了显示某些存储过程/函数的来源,以便我可以使用它们
问题描述:当我尝试使用 \df+
命令列出/显示给定存储函数的源代码时,我认为该命令对于基于此用途是正确的在[这里的官方文档](https://www.postgresql.org/docs/current/app-psql.html],给出了一个错误,如图所示:
psql=> \df+ schema_foo.proc_bar;
ERROR: column p.proisagg does not exist
LINE 6: WHEN p.proisagg THEN 'agg'
我不知道如何解释这个;有问题的函数不包含错误中显示的逻辑片段,也不包含那里引用的列 p.proisagg
。我已经通过使用 \ef
.
我的猜测基于几个不相关的 github 问题,这些问题提到了同样的错误 for example 是它引用了 postgres 内部的一些模式代码。
总结:简而言之,我可以使用\ef
查看功能的来源,所以从实际的角度来看我的工作没有受到影响,但是我希望了解此错误以及为什么我遇到 \df+
.
我遇到了同样的问题,运行这 2 个命令可以修复它
sed -i "s/NOT pp.proisagg/pp.prokind='f'/g" /usr/share/phpPgAdmin/classes/database/Postgres.php
sed -i "s/NOT p.proisagg/p.prokind='f'/g" /usr/share/phpPgAdmin/classes/database/Postgres.php