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