O futuro da computação ainda está nas nuvens
7 de fevereiro de 2019A Pirâmide de Automação de Testes
1 de março de 2019O Grupo de Desenvolvimento Global do PostgreSQL lançou uma atualização no dia 14/02/2019 para todas as versões suportadas do nosso sistema de banco de dados, incluindo 11.2, 10.7, 9.6.12, 9.5.16 e 9.4.21. Esta versão altera o comportamento de como o PostgreSQL faz interface com o fsync() e inclui correções para particionamento e mais de 70 outros bugs que foram reportados nos últimos três meses.
Destaque: Mudança no comportamento do fsync()
Quando disponível em um sistema operacional e ativado no arquivo de configuração (que é por padrão), o PostgreSQL usa a função do kernel fsync() para garantir que os dados sejam gravados em disco. Em alguns sistemas operacionais que fornecem fsync(), quando o kernel não consegue gravar os dados, ele retorna uma falha e libera os dados que deveriam ser gravados de seus buffers de dados.
Esta operação de descarga tem um efeito colateral para o PostgreSQL: se o PostgreSQL tentar gravar novamente os dados no disco chamando novamente o fsync() , o fsync() reportará que foi bem-sucedido, mas os dados que o PostgreSQL acreditava terem sido salvos no disco não foram realmente escritos. Isso apresenta um possível cenário de corrupção de dados.
Esta atualização modifica como o PostgreSQL lida com uma falha de fsync() : O PostgreSQL não tentará mais chamar novamente o fsync(), mas emitirá uma mensagem do tipo PANIC. Nesse caso, o PostgreSQL pode aplicar os dados do log write-ahead (WAL) para ajudar a garantir que os dados sejam gravados. Embora isso possa parecer uma solução de baixo nível, existem atualmente poucas alternativas e, com base em relatórios, o caso-problema ocorre com extrema raridade.
Um novo parâmetro de servidor data_sync_retry foi adicionado para gerenciar esse comportamento. Se você tiver certeza de que seu kernel não descarta buffers de dados sujos nesses cenários, você pode definir data_sync_retry como on para restaurar o comportamento antigo.
Correções de bugs e melhorias
Esta atualização introduz uma alteração em como as notas de versão serão lançadas. A partir desta atualização, todas as versões atualmente suportadas do PostgreSQL conterão apenas as principais notas de versão específicas da versão. Por exemplo, o PostgreSQL 11 apenas conterá as notas de versão da versão 11.2, 11.1 e 11.0. As notas de versão para versões não suportadas (PostgreSQL 9.3 e anterior) estarão disponíveis em versões mais antigas e de um arquivo que será lançado em breve no site do PostgreSQL.
Esta atualização também corrige mais de 70 bugs relatados nos últimos meses. Alguns desses problemas afetam apenas a versão 11, mas muitos afetam todas as versões compatíveis.
Algumas dessas correções incluem:
-
Corrige a manipulação de índices exclusivos com colunas INCLUDE em tabelas particionadas
-
Assegure-se de que as restrições NOT NULL de uma tabela particionada sejam respeitadas em suas partições
-
Várias correções para restrições em tabelas particionadas
-
Corrige problemas com a aplicação ON COMMIT DROP e ON COMMIT DELETE ROWS para tabelas e tabelas particionadas
-
Não permite o COPY FREEZE em tabelas particionadas
-
Várias correções para o ALTER TABLE .. ADD COLUMN com um recurso padrão não anulável, incluindo um possível caso de corrupção do índice
-
Várias correções nos índices GIN, incluindo evitar um impasse com o vacuum e inserções de índice concorrentes (o que reverte parcialmente uma melhoria de desempenho introduzida no PostgreSQL 10)
-
Correção de possíveis falhas na replicação lógica quando expressões ou predicados de índice estão em uso
-
Várias correções para o log write-ahead (WAL)
-
Corrige possível falha no UPDATE com uma cláusula SET múltipla usando um sub- SELECT
-
Corrige falha quando nenhuma linha é fornecida para json[b]_populate_recordset() ou json[b]_to_recordset()
-
Várias correções relacionadas ao tratamento de agrupamento, incluindo a análise de expressões sensíveis ao agrupamento nos argumentos de uma instrução CALL
-
Várias correções para o planejador de consulta, incluindo uma melhoria na velocidade de planejamento para grandes grupos de tabelas de herança ou particionamento
-
Várias correções para TRUNCATE
-
Assegure-se de que ALTER TABLE ONLY ADD COLUMN IF NOT EXISTS seja processada corretamente
-
Permite UNLISTEN no modo hot-standby (réplica)
-
Corrige a análise de listas separadas por espaços de nomes de host no parâmetro ldapserver das entradas de autenticação LDAP no pg_hba.conf
-
Várias correções para o ecpg
-
Várias correções para o psql, incluindo que o g target funcione com o COPY TO STDOUT
-
A geração de números aleatórios para o pgbench agora é totalmente determinista e independente de plataforma quando –random-seed=N é especificado
-
Corrige pg_basebackup e pg_verify_checksums para ignorar arquivos temporários adequadamente
-
Várias correções para o pg_dump , incluindo os comandos ALTER INDEX SET STATISTICS
-
Evita que erros falsos de corrupção de índice de contrib / amcheck causados por dados compactados em linha
-
Suporta novas variáveis Makefile para ajudar na construção de extensões
Esta atualização também contém a versão 2018i do tzdata para mudanças na lei do DST no Cazaquistão, Metlakatla e São Tomé e Príncipe. A zona Qyzylorda, do Cazaquistão, é dividida em duas partes, criando uma nova zona Ásia / Qostanay, já que algumas áreas não alteraram a compensação UTC. Correcções históricas para Hong Kong e numerosas ilhas do Pacífico.
Atualizando
Todas as versões de atualização do PostgreSQL são cumulativas. Tal como acontece com outras versões menores, os usuários não são obrigados a despejar e recarregar seu banco de dados ou usar o pg_upgrade para aplicar esta versão de atualização; você pode simplesmente desligar o PostgreSQL e atualizar seus binários.
Os usuários que ignoraram uma ou mais versões de atualização podem precisar executar etapas adicionais após a atualização; por favor veja as notas de lançamento para versões anteriores para detalhes.
O PostgreSQL 9.4 deixará de receber correções em 13 de fevereiro de 2020. Consulte nossa política de versão para mais informações.
Fonte: https://www.postgresql.org/about/news/1920/