Saudações a todos,

Estamos fazendo a migração do nosso banco de dados da versão 7.4 para 
8.2. Depois de muito brigar com a gerencia conseguimos a autorização 
para fazê-lo.
A migração foi feita corretamente, mas deparamos com o seguinte problema:

A nossa aplicação tem um modulo responsável por atualizar 
automaticamente a base de dados do cliente sempre que uma nova versão é 
lançado, funciona da seguinte maneira.
O DBA poe os scripts de alteração na estrutura ou dados em vários 
arquivos .sql e envia para os clientes, quando a aplicação identifica 
uma nova versão, esses arquivos são executados através de uma SP. A 
aplicação lê o arquivo inteiro e passa seu conteudo como parametro para 
a SP.
A SP basicamente dá um EXECUTE no parametro referente ao conteudo do 
arquivo.
Resumo da SP:

CREATE OR REPLACE FUNCTION public.sp_executescript (varchar) RETURNS 
varchar AS
$BODY$
/* Executa Script */
DECLARE
  pScript ALIAS FOR $1;
BEGIN
    EXECUTE pSQL;
    RETURN 'Ok';
END; $BODY$
LANGUAGE 'plpgsql';

Isso funciona perfeitamente na versão 7.4, mas na versão 8.2 não.
A questão é o seguinte, costumamos enviar varias alterações de banco em 
um unico arquivo.
Por exemplo:
    1 Criação de coluna
    2 Update na coluna
    3 altera coluna para not null.

Todo o conteudo do exemplo acima é executado de uma unica vez pela sp. O 
que acontece com a versão 8.2 é que ao executar o update na coluna é 
emitido uma mensagem de erro dizendo que a coluna não existe.
Por causa disso estamos pensando em mandar cada item em um arquivo 
separado, mas isso irá gerar uma quantidade bem maior de scripts em cada 
versão (só o exemplo anterior seria 3 scripts diferentes).

Conclusão: gostaria de saber se existe alguma configuração na versão 8.2 
para que eu possa manter o comportamento que tinha na versão 7.4, ou se 
existe alguma coisa que eu possa colocar na SP para que não seja emitido 
o erro.

PS: solucionamos o problema parcialmente fazendo um loop e executando 
linha por linha do arquivo, mas essa solução está bem longe do ideal 
para o nosso caso.

Não sei se fui claro o suficiente, se alguem não entender pode perguntar.

Agradeço a ajuda desde já.

SDS

Evandro


_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a