2009/9/4 Mauro Sérgio da Silva <[email protected]>: > > Até ai tudo bem. O problema é que a base de dados em questão possui mais de > 80000 tabelas. A função retorna > o erro: > > PL/pgSQL function "f_addcolumn_isaftermarket" line 20 at EXECUTE statement > ERROR: out of shared memory > HINT: You might need to increase max_locks_per_transaction.
Eu acho que o problema é que como funções rodam em uma única transação, cada alteração de tabela está criando uma trava (lock) que consome memória compartilhada (pois todos os backends precisam saber), e consequentemente exaurindo sua memória compartilhada. A solução é não criara tantas locks, fazendo as alterações em pedaços, ou fazer fora do PL/pgSQL, como através de um arquivo texto com a DDL. Seria bem simples fazer com o psql e depois com um shell gerar essa DDL. Nem precisa de uma linguagem. Roberto _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
