Descobri como resolver isso.
Eu preciso ativar ON_ERROR_STOP
no topo do arquivo.
Exemplo:
\set ON_ERROR_STOP true
Estou escrevendo um script de shell que faz chamadas para o psql usando 2 forms ... uma é pelo comando (-c), a outra é pelo arquivo (-f).
por exemplo. psql -c "cria tabela foo (barra inteira)"
psql -f foobar.sql
Uma diferença entre esses formulários é que uma chamada por comando (-c) retorna um código de saída diferente de zero se um erro for encontrado, enquanto uma chamada por arquivo (-f) sempre retornará zero.
Eu estou querendo saber se há uma solução alternativa para esse comportamento? (isto é, retorna um valor diferente de zero se ocorrer um erro durante a execução de um arquivo).
Obrigado.
Você pode usar a declaração abaixo.
psql -v ON_ERROR_STOP=1 -f foobar.sql
Isso retornará o código de retorno correto mesmo foobar.sql
arquivo não habilita ON_ERROR_STOP
no topo do arquivo.