我正在研究 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