Em 04-05-2012 11:00, Vinicius Santos escreveu:
> Pessoal bom dia,
>
> Tenho a seguinte situação, faço um COPY de uma função SETOF, assim:
>
> COPY( funcao_que_retorna_varias_linhas() ) to '/caminho/arquivo'
>
> Até ai, tudo bem, o problema é que usuários "comuns" não conseguer dar
> COPY dessa maneira. O postgres diz que somente super-usuários conseguem.

É verdade.

> Já tentei dar GRANT ALL ON FUNCTION funcao_que_retorna_varias_linhas()
> TO dilma_rousseff, mas não adianta.

O erro de permissão é do COPY, não de sua função.

> Claro que posso mudar a arquitetura e passar para view que o problema
> estaria resolvido, mas essa permissão deveria existir IMHO.

Não, não estaria resolvido. O COPY para um arquivo precisa de 
superusuário, pois é o usuário de sistema operacional do servidor, 
normalmente "postgres", é quem faz a escrita e ele pode escrever 
diretamente inclusive nos diretórios de dados do cluster.

> Estou na versão 8.4.
>
> Alguma luz?

Use COPY (SELECT sua_funcao(argumentos)) TO STDOUT;
Isso pode ser usado por usuários ordinários.
Capture a saída padrão pela sua aplicação e redirecione para arquivo 
usando funcionalidades que sua linguagem de programação permitir.
No psql é só redirecionar com > para o arquivo desejado.

[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a