【发布时间】:2015-06-11 11:36:12
【问题描述】:
我正在努力 PostgreSQL 8.2.15(Greenplum 数据库 4.2.0 build 1)(HAWQ 1.2.1.0 build 10335)。
我写了一个类似的函数
create or replace function my_function (
...
select exists(select 1 from my_table1 where condition) into result;
我测试过
select my_function(params);
完全可以!
这就是问题所在,如果我像这样调用函数
select my_function(params) from my_table2;
Postgres 告诉我你错了!
错误:关系“my_table1”不存在(segXX sliceX xx.xx.xx:40003 pid=570406)
- 这些表和函数在同一架构中。
- 我可以访问它们。
- 两个名称都是小写的。
所以,请帮帮我。
我尝试了什么
- 将这些表从 my_schema 移至 public
- 将函数公开
- 添加架构前缀,例如 my_schema.my_table1。
2015/04/19 编辑
Postgre -> Postgres
我试过了
select my_function(params) from pg_stat_activity;
没关系。
如果像这样编辑该函数
create or replace function my_function (
...
select true into result;
它可以在任何情况下工作。
【问题讨论】:
-
如果您需要这个问题的答案,您可以通过提供完整的函数定义、表定义、每个对象的架构以及您从
SHOW search_path获得的内容来帮助它。另外:您是否在同一会话中使用相同的设置运行了所有测试?顺便说一句,"Postgre" is not an accepted name for Postgres. -
@Cixy:不知道是不是你的情况,但你是在创建“my_table1”作为临时表吗? AFAIK,Postgres 8.2 上有一个错误,当您尝试选择一个由函数创建并由另一个函数选择的临时表时,该错误会引发......解决方法是使用“执行”语句“选择”临时表。看看这个:stackoverflow.com/questions/19353438/…
-
@Christian B. Almeida。不,不是临时表。正常的
-
'exists' 运算符不适用于使用 8.2 postgres 的 greenplum
标签: postgresql greenplum hawq