Я работаю над PostgreSQL 8.2.15 (база данных Greenplum 4.2.0, сборка 1) (HAWQ 1.2.1.0, сборка 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 в общедоступные
- переместить функцию в общедоступную
- добавьте префикс схемы, например my_schema.my_table1.
Отредактировано 19.04.2015
Постгрес -> Постгрес
И я попробовал это как
select my_function(params) from pg_stat_activity;
It's OK.
Если отредактировать эту функцию, например
create or replace function my_function (
...
select true into result;
Он может работать в любом случае.
SHOW search_path
. Также: вы запускали все тесты в одном сеансе с одинаковыми настройками? Кстати, Postgre не является общепринятым названием Postgres. - person Erwin Brandstetter   schedule 17.04.2015