Recentemente realizamos no servidor de banco, a atualização para a versão 15.6 do PostgreSQL.
Essa versão traz mais estabilidade, melhorias no processamento de consultas e novos recursos para gerenciar o modelo de dados do seu banco.
Saiba mais sobre a versão 15.6 em https://www.postgresql.org/docs/release/15.6/
Pontos de atenção em sua base de dados
Nesta migração manteremos a configuração atual do Encondig e Collate do(s) Banco de Dados. Porém, é recomendado fazer a atualização desta configuração de linguagem para esta versão do PostgreSQL.
Outro ponto. Caso utilize o oid como chave PK em sua(s) tabela(s) é altamente recomendado que faça a atualização para removê-lo. Desde a versão 12 do PostgreSQL este objeto não está mais acessível e as novas versões não o aceitam como constrain de chave primária.
Segue abaixo um pequeno resumo sobre o assunto:
Removendo colunas com OIDS no POSTGRESQL
A partir da versão 12, o PostgreSQL deixa de suportar o uso da coluna oculta “OID” ou “Object Identifier”, que até então era opcional em tabelas normais, e torna-se uma coluna explícita nas tabelas do catálogo do sistema.
Se você nem sabe que a coluna está, ou não o utiliza e já tem sua própria chave primária (PK), então você só precisa remover a coluna OID com um simples comando como:
ALTER TABLE minha_tabela SET WITHOUT OIDS;
Agora, se utiliza esta coluna em sua(s) tabela(s) como uma chave artificial é recomendado criar uma nova coluna com nome de sua preferência.
Neste caso é necessário seguir o passo-a-passo abaixo. Você pode utilizar estes comandos, ou buscar outra maneira para esta atualização:
- Criar a coluna ID;
- Ajustar a coluna para que novas linhas recebam um novo número automaticamente a partir do último número da coluna OID;
- Popular a coluna ID com os valores da coluna OID;
SELECT coalesce(max(oid)::integer,0) + 1 FROM minha_tabela; ALTER TABLE minha_tabela ADD COLUMN id integer GENERATED BY DEFAULT AS IDENTITY (START WITH 12345);
- Alterar a tabela para que a coluna ID se torne uma chave primária (PK);
UPDATE minha_tabela SET id = OID; ALTER TABLE minha_tabela ADD PRIMARY KEY (id);
- Por fim remover a coluna OID.
ALTER TABLE minha_tabela SET WITHOUT OIDS;