Вызов функции записи атрибутов приводит к ошибке, если текущая схема отличается от схемы функции.
Я создал функцию
CREATE FUNCTION pub.FullName(pub.reps)
RETURNS text AS
$func$
select ($1.fname || ' ' || $1.lname)
$func$ LANGUAGE SQL;
Я пытаюсь вызвать функцию с обозначением атрибута, как описано в docs а>):
select r.fullname from pub.reps r;
Но получите сообщение об ошибке:
ERROR: column "fullname" does not exist
Запрос с функциональной нотацией работает нормально:
select pub.fullname(r.*) from pub.reps r;
База данных была перенесена из PostgreSQL 10 с резервным копированием/восстановлением.
Select version()
дает: PostgreSQL 11.3, compiled by Visual C++ build 1914, 64-bit
UPD. Выяснил, что если установить схему pub
по умолчанию, то select r.fullname from pub.reps r
работает без ошибок.
select r.FullName from pub.reps r
будет работать. В противном случае я получаю ошибку. - person Leo   schedule 29.06.2019search_path
: вы всегда можете создать функцию в уже существующей схеме,pg_catalog
в крайнем случае. (Хотя я бы предпочел не помещать туда пользовательские объекты.) - person Erwin Brandstetter   schedule 01.07.2019