我正在研究 PostgreSQL 8.2.15(Greenplum数据库4.2.0构建1)(HAWQ 1.2.1.0构建10335)。错误:关系不存在,关于greenplum数据库
我写了一个函数一样
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的告诉我说你错了!
ERROR: relation "my_table1" does not exist (segXX sliceX xx.xx.xx:40003 pid=570406)
- 那些表和功能都在同一个模式。
- 我可以访问它们。
- 这两个名字都是小写。
所以,请帮助我。
我试过
- 移动从my_schema这些表公共
- 移动功能的公共
- 添加模式前缀像my_schema.my_table1。
编辑由2015年4月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”不是Postgres的公认名称](https://wiki.postgresql.org/wiki/Identity_Guidelines)。 –
@Cixy:不知道你的情况,但是你是否将“my_table1”创建为临时表? AFAIK,Postgres 8.2有一个错误,当你尝试选择一个由函数创建并由另一个选择的临时表时会引发一个错误...解决方法是使用“execute”语句“选择”临时表。检查了这一点:http://stackoverflow.com/questions/19353438/postgres-doesnt-recognize-temp-table-in-function – Christian
@Christian B. Almeida。不,不是临时桌子。正常 – Clxy