Quando não é superusuário, mas recebe a função pg_read_server_files,
com declaração
select * from pg_read_file('E:\PG_VERSION');
O PostgreSQL 15 recebeu um erro " caminho absoluto não permitido " enquanto 14 está ok.
Como o não-superusuário pode ler o arquivo do servidor usando o caminho absoluto? Não quero colocar o arquivo no diretório PGDATA .
O fato de pg_read_server_files priv (na v15) não ser mais herdado por uma função declarada como noinherit parece ser uma mudança intencional, feita em 6198420a . Isso era para tornar o comportamento das funções predefinidas mais consistente (sob NOINHERIT) com o das funções regulares.
Então, se você quiser manter NOINHERIT, na v15 você precisará conceder pg_read_server_files diretamente para myuser, assim como você já (na v14) fez
grant execute on function pg_read_file
diretamente para myuser. Alternativamente, você pode simplesmente executarset role = parent_role
onde parent_role é aquele que possui diretamente as duas concessões antes de fazer o que precisa desses privilégios.Percebo que essa mudança de comportamento não foi mencionada nas notas de lançamento do 15.0, não sei se isso foi um descuido ou não.