1) Porque ./psql ao invés de psql ? Tem que estar no mesmo diretório do
psql?
2) A partir de que versão funciona?

Em 18 de julho de 2012 11:22, Matheus de Oliveira <matioli.math...@gmail.com
> escreveu:

>
> --
> Matheus de Oliveira
>
> Bacharelado em Ciências de Computação
> Laboratório de Computação de Alto Desempenho - 
> LCAD<http://www.lcad.icmc.usp.br/>
> Instituto de Ciências Matemáticas e de Computação - 
> ICMC<http://www.icmc.usp.br/>
> Universidade de São Paulo - USP <http://www.sc.usp.br/>
>
>
>
>
> 2012/7/18 Matheus de Oliveira <matioli.math...@gmail.com>
>
>>
>>
>> 2012/7/18 Alexsander Rosa <alexsander.r...@gmail.com>
>>
>>> Hoje eu coloco no SVN um "pg_dump" com a estrutura do BD
>>> (--schema-only). Cada vez que preciso mexer numa procedure tenho que
>>> selecionar a procedure desejada, copiar e colar em algum editor,
>>> acrescentar o "OR REPLACE" depois do CREATE e só então começar a fazer
>>> alguma coisa. E depois de pronta, a procedure só entra no SVN via o
>>> "pg_dump" seguinte.
>>
>>
>> Para isso você pode usar o "\ef" do psql, que já faz isso pra você, é só
>> selecionar o editor (e.g. "export EDITOR=vim") e executar:
>>
>> \ef <nome da função>
>>
>>
>>> Eu gostaria que houvesse uma opção no "pg_dump" tipo
>>> "--procedures-in-separate-files" que gerasse o DUMP sem as procedures;
>>> estas, por sua vez, seriam gravadas em arquivos individuais chamados
>>> "nome-da-procedure.sql" já com o "OR REPLACE" adicionado. Existe alguma
>>> ferramenta que faça isso?
>>>
>>>
>> Não sei se tem algo assim pronto, mas não é difícil fazer se você aliar a
>> tabela pg_proc e a função pg_get_functiondef.
>> Exemplo:
>>
>> SELECT pg_get_functiondef(oid) FROM pg_proc WHERE proname = '<nome da
>> função>'
>>
>> Veja que o retorno será mais de uma linha se a função estiver
>> sobrecarregada.
>>
>>
> Fiz um pequeno shell script pra isso. Vai ser útil pra mim também:
>
> #!/bin/bash
>
> ./psql $@ -A -t -F '|' -c "
> SELECT quote_ident(n.nspname) || '.' || quote_ident(p.proname) || '.' ||
> ROW_NUMBER() OVER(PARTITION BY n.nspname,p.proname) || '.sql', p.oid FROM
> pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE NOT
> p.proisagg AND n.nspname NOT LIKE 'pg_%' AND n.nspname <>
> 'information_schema' ORDER BY n.nspname, p.proname, p.oid;
> " | while read LN; do
>     ./psql $@ -A -t -c "SELECT pg_get_functiondef(`echo $LN | cut -d '|'
> -f 2`)" > `echo $LN | cut -d '|' -f 1`
> done
>
> Uso:
>
>    - salvar o texto acima num arquivo chamado "get_functions.sh" (ou
>    qualquer outro nome).
>    - executar:
>    chmod a+x get_functions.sh
>    - chamar o script da mesma forma como chamaria o psql. Exemplo:
>    /path/to/get_functions.sh -h <host> -p <porta> -U <usuário> <banco>
>    - serão gerados arquivos seguindo o modelo <schema>.<func
>    name>.<id>.sql no diretório corrente (id é um identificador simples e
>    sequencial, um para cada função sobrecarregada, se não tiver sobrecarga
>    será só 1).
>
>
> Mais fácil que isso impossível...=P
>
>
> Atenciosamente,
> --
> Matheus de Oliveira
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Atenciosamente,
Alexsander da Rosa
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a