O PostgreSQL é um sistema de banco de dados objeto-relacional de código aberto, poderoso, confiável, estável, pronto para a empresa e livre no estilo dos projetos MariaDB, MySQL ou SQLite. É um servidor / mecanismo de banco de dados compatível com ACID (Atomicity, Consistency, Isolation, Durability) que pode ser altamente personalizado e inclui vários recursos atraentes, sendo um excelente substituto para os mecanismos de banco de dados mencionados anteriormente.
Recursos em resumo
Os principais recursos incluem suporte a chaves estrangeiras, visualizações, junções, acionadores e procedimentos armazenados, suporte a vários idiomas, suporte a uma ampla gama de tipos de dados SQL, incluindo BOOLEAN, CHAR, INTEGER, NUMERIC, VARCHAR, INTERVAL, TIMESTAMP e DATA.
Além disso, o software vem com suporte para armazenamento de objetos binários grandes, incluindo todos os tipos de arquivos multimídia (vídeo, áudio e foto), e fornece aos desenvolvedores interfaces de programação nativas para C, C ++, Python, Perl, Ruby, Linguagens de programação Java, .Net, Tcl e ODBC.
Entre outros recursos interessantes, podemos mencionar o MVCC (Multi-Version Concurrency Control), tablespaces, codificações de caracteres multibyte, recuperação point-in-time, um otimizador e planejador de consultas maduro, replicação assíncrona, backups on-line, transações aninhadas (popularmente conhecidas como savepoints), backups a quente, registro antecipado de gravação para tolerância a falhas, suporte a conjuntos de caracteres internacionais e suporte a Unicode.
PostgreSQL em números
No momento, o servidor de banco de dados PostgreSQL suporta tamanho ilimitado para bancos de dados, 32 TB deve ser o tamanho máximo para tabelas, 1,6 TB por linha, 1 GB por campo, linhas ilimitadas por tabela, suporte entre 250 e 1600 colunas por tabela , dependendo dos tipos de coluna, e suporta índices ilimitados por tabela.
Sistemas Operacionais Suportados
O PostgreSQL foi testado com sucesso em todos os principais sistemas operacionais, incluindo GNU / Linux, BSD, Solaris, HP-UX, AIX, SGI IRIX, Solaris, Tru64, Mac OS X e Microsoft Windows. O PostgreSQL está disponível para download como um arquivo fonte universal, bem como pacotes binários pré-compilados para muitas distribuições Linux, suportando arquiteturas de 32 bits e 64 bits.
O que há de novo neste lançamento:
- Esta versão corrige dois problemas de segurança. Esta versão também corrige problemas encontrados com índices VACUUM, GIN e hash, consulta paralela, replicação lógica e outros erros reportados nos últimos três meses. Todos os usuários que usam as versões afetadas do PostgreSQL devem atualizar o mais rápido possível.
O que há de novo na versão 10.4 / 11 Beta 1:
- Esta versão corrige dois problemas de segurança. Esta versão também corrige problemas encontrados com índices VACUUM, GIN e hash, consulta paralela, replicação lógica e outros erros reportados nos últimos três meses. Todos os usuários que usam as versões afetadas do PostgreSQL devem atualizar o mais rápido possível.
O que há de novo na versão:
- Restringir ainda mais a visibilidade do pg_user_mappings.umoptions, para proteger as senhas armazenadas como opções de mapeamento de usuários (Noah Misch)
- A correção para CVE-2017-7486 estava incorreta: permitia que um usuário visualizasse as opções em seu próprio mapeamento de usuário, mesmo que ela não tivesse permissão de USO no servidor externo associado. Essas opções podem incluir uma senha que tenha sido fornecida pelo proprietário do servidor em vez do próprio usuário. Como information_schema.user_mapping_options não mostra as opções em tais casos, pg_user_mappings também não deve. (CVE-2017-7547)
- Por si só, esse patch só consertará o comportamento em bancos de dados recém-iniciados. Se você deseja aplicar essa alteração em um banco de dados existente, será necessário fazer o seguinte:
- Reinicie o postmaster depois de adicionar allow_system_table_mods = true ao postgresql.conf. (Nas versões que suportam o ALTER SYSTEM, você pode usá-lo para fazer a alteração de configuração, mas ainda precisará de uma reinicialização).
- Em cada banco de dados do cluster, execute os seguintes comandos como superusuário:
- SET search_path = pg_catalog;
- CRIAR OU SUBSTITUIR VIEW pg_user_mappings AS
- SELECIONE
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- CASO QUANDO U.umuser = 0 ENTÃO
- 'público'
- ELSE
- A.rolname
- END como nome de usuário,
- CASE WHEN (U.umuser 0 AND A.rolname = current_user
- AND (pg_has_role (S.srvowner, 'USAGE')
- OU has_server_privilege (S.oid, 'USAGE')))
- OR (U.umuser = 0 E pg_has_role (S.srvowner, 'USAGE'))
- OR (SELECIONAR rolsuper FROM pg_authid WHERE nome do usuário = current_user)
- ENTÃO U.umoptions
- ELSE NULL END AS umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid);
- Não se esqueça de incluir os bancos de dados template0 e template1 ou a vulnerabilidade ainda existirá nos bancos de dados criados posteriormente. Para corrigir template0, você precisará temporariamente fazer com que ele aceite conexões. No PostgreSQL 9.5 e posterior, você pode usar
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
- e depois de corrigir template0, desfaça isso com
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS falso;
- Nas versões anteriores, use
- UPDATE pg_database SET datallowconn = true WHERE nomeDados = 'modelo0';
- UPDATE pg_database SET datallowconn = falso WHERE datname = 'template0';
- Finalmente, remova a configuração de configuração allow_system_table_mods e reinicie novamente o postmaster.
- Desativar senhas vazias em todos os métodos de autenticação baseados em senha (Heikki Linnakangas)
- A libpq ignora as especificações de senha vazias e não as transmite ao servidor. Portanto, se a senha de um usuário foi definida para a string vazia, é impossível efetuar login com essa senha via psql ou outros clientes baseados na libpq. Um administrador pode, portanto, acreditar que definir a senha como vazia é equivalente a desabilitar o login de senha. No entanto, com um cliente modificado ou não baseado em libpq, o login pode ser possível, dependendo do método de autenticação configurado. Em particular, o método mais comum, md5, aceitou senhas vazias. Altere o servidor para rejeitar senhas vazias em todos os casos. (CVE-2017-7546)
- Make lo_put () verifica o privilégio UPDATE no objeto grande de destino (Tom Lane, Michael Paquier)
- lo_put () deve certamente requerer as mesmas permissões que lowrite (), mas a verificação está faltando, permitindo que qualquer usuário altere os dados em um objeto grande. (CVE-2017-7548)
- Corrija a documentação sobre o processo de atualização dos servidores em espera com o pg_upgrade (Bruce Momjian)
- A documentação anterior instruiu os usuários a iniciar / interromper o servidor principal após a execução do pg_upgrade, mas antes de sincronizar os servidores em espera. Esta sequência não é segura.
- Corrigir bloqueio simultâneo de cadeias de atualização de tupla (Alvaro Herrera)
- Se várias sessões bloquearem simultaneamente uma cadeia de atualização de tupla com modos de bloqueio não conflitantes usando um instantâneo antigo, e todas tiverem êxito, é possível que algumas delas falhem (e concluam que não há versão de tupla ativa) devido a uma corrida condição. Isso teve conseqüências, como verificações de chaves estrangeiras não conseguindo ver uma tupla que definitivamente existe, mas está sendo atualizada simultaneamente.
- Corrigir corrupção de dados em potencial ao congelar uma tupla cujo XMAX é um multixativo com exatamente um membro ainda interessante (Teodor Sigaev)
- Evite o estouro de números inteiros e a falha subsequente ao classificar mais de um bilhão de tuplas na memória (Sergey Koposov)
- No Windows, tente novamente a criação do processo se não conseguirmos reservar o intervalo de endereços da nossa memória compartilhada no novo processo (Tom Lane, Amit Kapila)
- Espera-se que isso corrija falhas infreqüentes de lançamento de processo filho que provavelmente são causadas por interferência de produtos antivírus.
- Corrige a corrupção de baixa probabilidade da tabela de hash de bloqueio de predicado compartilhado em compilações do Windows (Thomas Munro, Tom Lane)
- Evite registrar o encerramento limpo de uma conexão SSL como se fosse uma reconfiguração de conexão (Michael Paquier)
- Evite enviar tíquetes de sessão SSL para clientes (Tom Lane)
- Esta correção evita falhas de reconexão com código SSL do lado do cliente sensível ao ticket.
- Corrigir código para definir tcp_keepalives_idle no Solaris (Tom Lane)
- Corrija o coletor de estatísticas para honrar as mensagens de consulta emitidas logo após o desligamento do postmaster e reinicialização imediata (Tom Lane)
- As investigações de estatísticas emitidas dentro de meio segundo do encerramento anterior do postmaster foram efetivamente ignoradas.
- Assegure-se de que o tamanho do buffer de recebimento do coletor de estatísticas seja pelo menos 100 KB (Tom Lane)
- Isso reduz o risco de perda de dados estatísticos em plataformas mais antigas cujo tamanho padrão do buffer de recebimento é menor que isso.
- Corrija a possível criação de um segmento WAL inválido quando uma espera é promovida logo após o processamento de um registro WAL de XLOG_SWITCH (Andres Freund)
- Conserte o walsender para sair imediatamente quando o cliente solicitar o desligamento (Tom Lane)
- Corrigir o processamento SIGHUP e SIGUSR1 nos processos walsender (Petr Jelinek, Andres Freund)
- Impedir pânico acionado pelo remetente durante os pontos de verificação de desligamento (Andres Freund, Michael Paquier)
- Corrigir reinicializações desnecessariamente lentas de processos de entrada de marchas devido à condição de corrida no postmaster (Tom Lane)
- Corrige o vazamento de pequenas subtransações derramadas no disco durante a decodificação lógica (Andres Freund)
- Isso resultou em arquivos temporários que consomem espaço em disco excessivo.
- Reduza o trabalho necessário para criar instantâneos durante a criação de slots de decodificação lógica (Andres Freund, Petr Jelinek)
- O algoritmo anterior era dispendioso em um servidor com muitas transações abertas.
- Correção da condição de corrida que poderia atrasar indefinidamente a criação de slots de decodificação lógica (Andres Freund, Petr Jelinek)
- Reduzir a sobrecarga no processamento de eventos de invalidação syscache (Tom Lane)
- Isso é particularmente útil para a decodificação lógica, que aciona a invalidação de cache freqüente.
- Remover a heurística incorreta usada em alguns casos para estimar a seletividade de associação com base na presença de restrições de chave estrangeira (David Rowley)
- Em alguns casos em que existia uma restrição de chave estrangeira de várias colunas, mas que não correspondia exatamente à estrutura de junção de uma consulta, o planejador usou uma heurística de estimativa que acabou não funcionando bem. Reverta esses casos para a maneira como eles foram estimados antes de 9.6.
- Correção de casos em que um INSERT ou UPDATE atribui a mais de um elemento de uma coluna que é do tipo domínio sobre o array (Tom Lane)
- Permitir que funções de janela sejam usadas em sub-SELECTs que estão dentro dos argumentos de uma função agregada (Tom Lane)
- Assegure-se de que a cláusula CHECK OPTIONS de uma visualização seja aplicada corretamente quando a tabela subjacente for uma tabela estrangeira (Etsuro Fujita)
- Anteriormente, a atualização poderia ser totalmente enviada para o servidor externo, mas a necessidade de verificar as condições de visualização foi perdida em caso afirmativo.
- Mova os tipos de matriz gerados automaticamente durante o processo ALTER ... RENAME (Vik Fearing)
- Anteriormente, renomearíamos um tipo de matriz autogerada conflitante para fora durante o comando CREATE; essa correção estende esse comportamento para renomear as operações.
- Corrija o ponteiro pendente em ALTER TABLE quando houver um comentário sobre uma restrição pertencente à tabela (David Rowley)
- Aplicar novamente o comentário à restrição reconstruída pode falhar com uma mensagem de erro estranha ou até travar.
- Assegure-se de que ALTER USER ... SET aceite todas as variantes de sintaxe que ALTER ROLE ... SET faz (Peter Eisentraut)
- Permitir que as restrições CHECK de uma tabela externa sejam inicialmente NÃO VÁLIDAS (Amit Langote)
- CREATE TABLE silenciosamente descarta especificadores NOT VALID para restrições CHECK, argumentando que a tabela deve estar vazia para que a restrição possa ser validada imediatamente. Mas isso está errado para CREATE FOREIGN TABLE, onde não há razão para supor que a tabela subjacente esteja vazia, e mesmo que seja, não é da nossa conta decidir que a restrição pode ser tratada como válida daqui para frente. Ignore esta & quot; otimização & quot; para tabelas estrangeiras.
- Atualizar corretamente as informações de dependência ao alterar o argumento ou o tipo de retorno de uma função de E / S do tipo de dados de opaco para o tipo correto (Heikki Linnakangas)
- CREATE TYPE atualiza as funções de E / S declaradas neste estilo obsoleto, mas esqueceu-se de registrar uma dependência no tipo, permitindo que um DROP TYPE subseqüente deixe as definições de função quebradas para trás.
- Permitir paralelismo no plano de consulta quando o COPY copia do resultado de uma consulta (Andres Freund)
- Reduzir o uso de memória quando ANALYZE processa uma coluna do tsvector (Heikki Linnakangas)
- Corrige a perda de precisão desnecessária e o arredondamento malfeito ao multiplicar ou dividir valores monetários por números inteiros ou flutuantes (Tom Lane)
- Aperte as verificações de espaços em branco em funções que analisam identificadores, como regprocedurein () (Tom Lane)
- Dependendo da localidade predominante, essas funções podem interpretar incorretamente fragmentos de caracteres multibyte como espaço em branco.
- Use símbolos #define relevantes do Perl ao compilar o PL / Perl (Ashutosh Sharma, Tom Lane)
- Isso evita problemas de portabilidade, geralmente se manifestando como um "aperto de mão" incompatibilidade durante o carregamento da biblioteca, ao trabalhar com versões recentes do Perl.
- Na libpq, reconfigure o estado de autenticação GSS / SASL e SSPI corretamente após uma tentativa de conexão com falha (Michael Paquier)
- A falha em fazer isso significa que, ao retornar de conexões SSL para conexões não SSL, uma falha GSS / SASL na tentativa de SSL sempre faria com que a tentativa não-SSL falhasse. O SSPI não falhou, mas vazou memória.
- No psql, corrija a falha quando COPY FROM STDIN for finalizado com um sinal de EOF do teclado e, em seguida, outra tentativa de COPY FROM STDIN for tentada (Thomas Munro)
- Esse mau comportamento foi observado em plataformas derivadas do BSD (incluindo macOS), mas não na maioria das outras.
- Corrija pg_dump e pg_restore para emitir os comandos REFRESH MATERIALIZED VIEW por último (Tom Lane)
- Isso evita erros durante o despejo / restauração quando uma visualização materializada se refere a tabelas de propriedade de um usuário diferente.
- Melhorar o relatório do pg_dump / pg_restore sobre as condições de erro originadas no zlib (Vladimir Kunschikov, Alvaro Herrera)
- Corrija pg_dump com a opção --clean para descartar gatilhos de eventos conforme o esperado (Tom Lane)
- Agora também atribui corretamente a propriedade de acionadores de eventos; antes, eles eram restaurados como pertencentes ao superusuário que estava executando o script de restauração.
- Corrija o pg_dump com a opção --clean para não falhar quando o esquema público não existir (Stephen Frost)
- Corrija pg_dump para não emitir SQL inválido para uma classe de operadores vazia (Daniel Gustafsson)
- Corrigir saída pg_dump para stdout no Windows (Kuntal Ghosh)
- Um dump de texto sem formatação compactado gravado no stdout conterá dados corrompidos devido à falha de colocar o descritor de arquivos no modo binário.
- Corrija pg_get_ruledef () para imprimir a saída correta para a regra ON SELECT de uma view cujas colunas foram renomeadas (Tom Lane)
- Em alguns casos de canto, o pg_dump depende de pg_get_ruledef () para despejar visualizações, para que esse erro possa resultar em falhas de despejo / recarregamento.
- Correção de descarte de junções externas com restrições vazias, como o resultado de um JOIN LEFT NATURAL sem colunas comuns (Tom Lane)
- Correção de descarte de expressões de função na cláusula FROM em casos em que a expressão não é exibida em algo que se parece com uma chamada de função (Tom Lane)
- Corrigir saída do pg_basebackup para stdout no Windows (Haribabu Kommi)
- Um backup gravado no stdout conterá dados corrompidos devido à falha de colocar o descritor de arquivos no modo binário.
- Corrija pg_rewind para manipular corretamente arquivos que excedam 2 GB (Kuntal Ghosh, Michael Paquier)
- Normalmente, esses arquivos não aparecem nos diretórios de dados do PostgreSQL, mas podem estar presentes em alguns casos.
- Corrija pg_upgrade para garantir que o registro final do WAL não tenha wal_level = minimum (Bruce Momjian)
- Esta condição pode impedir a reconexão dos servidores em espera atualizados.
- Corrige o cálculo de pg_xlogdump do comprimento do registro WAL (Andres Freund)
- Em postgres_fdw, restabeleça conexões com servidores remotos após os comandos ALTER SERVER ou ALTER USER MAPPING (Kyotaro Horiguchi)
- Isso garante que as alterações nas opções que afetam os parâmetros de conexão sejam aplicadas imediatamente.
- Em postgres_fdw, permita o cancelamento de comandos remotos de controle de transações (Robert Haas, Rafia Sabih)
- Essa alteração nos permite escapar rapidamente de uma espera por um servidor remoto que não responde em muitos mais casos do que anteriormente.
- Aumenta MAX_SYSCACHE_CALLBACKS para fornecer mais espaço para extensões (Tom Lane)
- Sempre use -fPIC, não -fpic, ao criar bibliotecas compartilhadas com o gcc (Tom Lane)
- Isso dá suporte a bibliotecas de extensão maiores em plataformas nas quais faz diferença.
- Nas compilações do MSVC, manipule o caso em que a biblioteca openssl não está dentro de um subdiretório do VC (Andrew Dunstan)
- Nas compilações do MSVC, adicione o caminho de inclusão adequado para os arquivos de cabeçalho libxml2 (Andrew Dunstan)
- Isso corrige uma necessidade anterior de movimentar as coisas nas instalações padrão do Windows do libxml2.
- Nas compilações do MSVC, reconheça uma biblioteca Tcl chamada tcl86.lib (Noah Misch)
- Nas compilações do MSVC, honre as configurações de PROVE_FLAGS na linha de comando do vcregress.pl (Andrew Dunstan)
O que há de novo na versão 9.6.4:
- Restringir ainda mais a visibilidade de pg_user_mappings.umoptions, para proteger as senhas armazenadas como opções de mapeamento de usuários (Noah Misch)
- A correção para CVE-2017-7486 estava incorreta: permitia que um usuário visualizasse as opções em seu próprio mapeamento de usuário, mesmo que ela não tivesse permissão de USO no servidor externo associado. Essas opções podem incluir uma senha que tenha sido fornecida pelo proprietário do servidor em vez do próprio usuário. Como information_schema.user_mapping_options não mostra as opções em tais casos, pg_user_mappings também não deve. (CVE-2017-7547)
- Por si só, esse patch só consertará o comportamento em bancos de dados recém-iniciados. Se você deseja aplicar essa alteração em um banco de dados existente, será necessário fazer o seguinte:
- Reinicie o postmaster depois de adicionar allow_system_table_mods = true ao postgresql.conf. (Nas versões que suportam o ALTER SYSTEM, você pode usá-lo para fazer a alteração de configuração, mas ainda precisará de uma reinicialização).
- Em cada banco de dados do cluster, execute os seguintes comandos como superusuário:
- SET search_path = pg_catalog;
- CRIAR OU SUBSTITUIR VIEW pg_user_mappings AS
- SELECIONE
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- CASO QUANDO U.umuser = 0 ENTÃO
- 'público'
- ELSE
- A.rolname
- END como nome de usuário,
- CASE WHEN (U.umuser 0 AND A.rolname = current_user
- AND (pg_has_role (S.srvowner, 'USAGE')
- OU has_server_privilege (S.oid, 'USAGE')))
- OR (U.umuser = 0 E pg_has_role (S.srvowner, 'USAGE'))
- OR (SELECIONAR rolsuper FROM pg_authid WHERE nome do usuário = current_user)
- ENTÃO U.umoptions
- ELSE NULL END AS umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid);
- Não se esqueça de incluir os bancos de dados template0 e template1 ou a vulnerabilidade ainda existirá nos bancos de dados criados posteriormente. Para corrigir template0, você precisará temporariamente fazer com que ele aceite conexões. No PostgreSQL 9.5 e posterior, você pode usar
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
- e depois de corrigir template0, desfaça isso com
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS falso;
- Nas versões anteriores, use
- UPDATE pg_database SET datallowconn = true WHERE nomeDados = 'modelo0';
- UPDATE pg_database SET datallowconn = falso WHERE datname = 'template0';
- Finalmente, remova a configuração de configuração allow_system_table_mods e reinicie novamente o postmaster.
- Desativar senhas vazias em todos os métodos de autenticação baseados em senha (Heikki Linnakangas)
- A libpq ignora as especificações de senha vazias e não as transmite ao servidor. Portanto, se a senha de um usuário foi definida para a string vazia, é impossível efetuar login com essa senha via psql ou outros clientes baseados na libpq. Um administrador pode, portanto, acreditar que definir a senha como vazia é equivalente a desabilitar o login de senha. No entanto, com um cliente modificado ou não baseado em libpq, o login pode ser possível, dependendo do método de autenticação configurado. Em particular, o método mais comum, md5, aceitou senhas vazias. Altere o servidor para rejeitar senhas vazias em todos os casos. (CVE-2017-7546)
- Make lo_put () verifica o privilégio UPDATE no objeto grande de destino (Tom Lane, Michael Paquier)
- lo_put () deve certamente requerer as mesmas permissões que lowrite (), mas a verificação está faltando, permitindo que qualquer usuário altere os dados em um objeto grande. (CVE-2017-7548)
- Corrija a documentação sobre o processo de atualização dos servidores em espera com o pg_upgrade (Bruce Momjian)
- A documentação anterior instruiu os usuários a iniciar / interromper o servidor principal após a execução do pg_upgrade, mas antes de sincronizar os servidores em espera. Esta sequência não é segura.
- Corrigir bloqueio simultâneo de cadeias de atualização de tupla (Alvaro Herrera)
- Se várias sessões bloquearem simultaneamente uma cadeia de atualização de tupla com modos de bloqueio não conflitantes usando um instantâneo antigo, e todas tiverem êxito, é possível que algumas delas falhem (e concluam que não há versão de tupla ativa) devido a uma corrida condição. Isso teve conseqüências, como verificações de chaves estrangeiras não conseguindo ver uma tupla que definitivamente existe, mas está sendo atualizada simultaneamente.
- Corrigir corrupção de dados em potencial ao congelar uma tupla cujo XMAX é um multixativo com exatamente um membro ainda interessante (Teodor Sigaev)
- Evite o estouro de números inteiros e a falha subsequente ao classificar mais de um bilhão de tuplas na memória (Sergey Koposov)
- No Windows, tente novamente a criação do processo se não conseguirmos reservar o intervalo de endereços da nossa memória compartilhada no novo processo (Tom Lane, Amit Kapila)
- Espera-se que isso corrija falhas infreqüentes de lançamento de processo filho que provavelmente são causadas por interferência de produtos antivírus.
- Corrige a corrupção de baixa probabilidade da tabela de hash de bloqueio de predicado compartilhado em compilações do Windows (Thomas Munro, Tom Lane)
- Evite registrar o encerramento limpo de uma conexão SSL como se fosse uma reconfiguração de conexão (Michael Paquier)
- Evite enviar tíquetes de sessão SSL para clientes (Tom Lane)
- Esta correção evita falhas de reconexão com código SSL do lado do cliente sensível ao ticket.
- Corrigir código para definir tcp_keepalives_idle no Solaris (Tom Lane)
- Corrija o coletor de estatísticas para honrar as mensagens de consulta emitidas logo após o desligamento do postmaster e reinicialização imediata (Tom Lane)
- As investigações de estatísticas emitidas dentro de meio segundo do encerramento anterior do postmaster foram efetivamente ignoradas.
- Assegure-se de que o tamanho do buffer de recebimento do coletor de estatísticas seja pelo menos 100 KB (Tom Lane)
- Isso reduz o risco de perda de dados estatísticos em plataformas mais antigas cujo tamanho padrão do buffer de recebimento é menor que isso.
- Corrija a possível criação de um segmento WAL inválido quando uma espera é promovida logo após o processamento de um registro WAL de XLOG_SWITCH (Andres Freund)
- Conserte o walsender para sair imediatamente quando o cliente solicitar o desligamento (Tom Lane)
- Corrigir o processamento SIGHUP e SIGUSR1 nos processos walsender (Petr Jelinek, Andres Freund)
- Impedir pânico acionado pelo remetente durante os pontos de verificação de desligamento (Andres Freund, Michael Paquier)
- Corrigir reinicializações desnecessariamente lentas de processos de entrada de marchas devido à condição de corrida no postmaster (Tom Lane)
- Corrige o vazamento de pequenas subtransações derramadas no disco durante a decodificação lógica (Andres Freund)
- Isso resultou em arquivos temporários que consomem espaço em disco excessivo.
- Reduza o trabalho necessário para criar instantâneos durante a criação de slots de decodificação lógica (Andres Freund, Petr Jelinek)
- O algoritmo anterior era dispendioso em um servidor com muitas transações abertas.
- Correção da condição de corrida que poderia atrasar indefinidamente a criação de slots de decodificação lógica (Andres Freund, Petr Jelinek)
- Reduzir a sobrecarga no processamento de eventos de invalidação syscache (Tom Lane)
- Isso é particularmente útil para a decodificação lógica, que aciona a invalidação de cache freqüente.
- Remover a heurística incorreta usada em alguns casos para estimar a seletividade de associação com base na presença de restrições de chave estrangeira (David Rowley)
- Em alguns casos em que existia uma restrição de chave estrangeira de várias colunas, mas que não correspondia exatamente à estrutura de junção de uma consulta, o planejador usou uma heurística de estimativa que acabou não funcionando bem. Reverta esses casos para a maneira como eles foram estimados antes de 9.6.
- Correção de casos em que um INSERT ou UPDATE atribui a mais de um elemento de uma coluna que é do tipo domínio sobre o array (Tom Lane)
- Permitir que funções de janela sejam usadas em sub-SELECTs que estão dentro dos argumentos de uma função agregada (Tom Lane)
- Assegure-se de que a cláusula CHECK OPTIONS de uma visualização seja aplicada corretamente quando a tabela subjacente for uma tabela estrangeira (Etsuro Fujita)
- Anteriormente, a atualização poderia ser totalmente enviada para o servidor externo, mas a necessidade de verificar as condições de visualização foi perdida em caso afirmativo.
- Mova os tipos de matriz gerados automaticamente durante o processo ALTER ... RENAME (Vik Fearing)
- Anteriormente, renomearíamos um tipo de matriz autogerada conflitante para fora durante o comando CREATE; essa correção estende esse comportamento para renomear as operações.
- Corrija o ponteiro pendente em ALTER TABLE quando houver um comentário sobre uma restrição pertencente à tabela (David Rowley)
- Aplicar novamente o comentário à restrição reconstruída pode falhar com uma mensagem de erro estranha ou até travar.
- Assegure-se de que ALTER USER ... SET aceite todas as variantes de sintaxe que ALTER ROLE ... SET faz (Peter Eisentraut)
- Permitir que as restrições CHECK de uma tabela externa sejam inicialmente NÃO VÁLIDAS (Amit Langote)
- CREATE TABLE silenciosamente descarta especificadores NOT VALID para restrições CHECK, argumentando que a tabela deve estar vazia para que a restrição possa ser validada imediatamente. Mas isso está errado para CREATE FOREIGN TABLE, onde não há razão para supor que a tabela subjacente esteja vazia, e mesmo que seja, não é da nossa conta decidir que a restrição pode ser tratada como válida daqui para frente. Ignore esta "otimização" para tabelas estrangeiras.
- Atualizar corretamente as informações de dependência ao alterar o argumento ou o tipo de retorno de uma função de E / S do tipo de dados de opaco para o tipo correto (Heikki Linnakangas)
- CREATE TYPE atualiza as funções de E / S declaradas neste estilo obsoleto, mas esqueceu-se de registrar uma dependência no tipo, permitindo que um DROP TYPE subseqüente deixe as definições de função quebradas para trás.
- Permitir paralelismo no plano de consulta quando o COPY copia do resultado de uma consulta (Andres Freund)
- Reduzir o uso de memória quando ANALYZE processa uma coluna do tsvector (Heikki Linnakangas)
- Corrige a perda de precisão desnecessária e o arredondamento malfeito ao multiplicar ou dividir valores monetários por números inteiros ou flutuantes (Tom Lane)
- Aperte as verificações de espaços em branco em funções que analisam identificadores, como regprocedurein () (Tom Lane)
- Dependendo da localidade predominante, essas funções podem interpretar incorretamente fragmentos de caracteres multibyte como espaço em branco.
- Use símbolos #define relevantes do Perl ao compilar o PL / Perl (Ashutosh Sharma, Tom Lane)
- Isso evita problemas de portabilidade, geralmente se manifestando como uma incompatibilidade de "handshake" durante o carregamento da biblioteca, ao trabalhar com versões recentes do Perl.
- Na libpq, reconfigure o estado de autenticação GSS / SASL e SSPI corretamente após uma tentativa de conexão com falha (Michael Paquier)
- A falha em fazer isso significa que, ao retornar de conexões SSL para conexões não SSL, uma falha GSS / SASL na tentativa de SSL sempre faria com que a tentativa não-SSL falhasse. O SSPI não falhou, mas vazou memória.
- No psql, corrija a falha quando COPY FROM STDIN for finalizado com um sinal de EOF do teclado e, em seguida, outra tentativa de COPY FROM STDIN for tentada (Thomas Munro)
- Esse mau comportamento foi observado em plataformas derivadas do BSD (incluindo macOS), mas não na maioria das outras.
- Corrija pg_dump e pg_restore para emitir os comandos REFRESH MATERIALIZED VIEW por último (Tom Lane)
- Isso evita erros durante o despejo / restauração quando uma visualização materializada se refere a tabelas de propriedade de um usuário diferente.
- Melhorar o relatório do pg_dump / pg_restore sobre as condições de erro originadas no zlib (Vladimir Kunschikov, Alvaro Herrera)
- Corrija pg_dump com a opção --clean para descartar gatilhos de eventos conforme o esperado (Tom Lane)
- Agora também atribui corretamente a propriedade de acionadores de eventos; antes, eles eram restaurados como pertencentes ao superusuário que estava executando o script de restauração.
- Corrija o pg_dump com a opção --clean para não falhar quando o esquema público não existir (Stephen Frost)
- Corrija pg_dump para não emitir SQL inválido para uma classe de operadores vazia (Daniel Gustafsson)
- Corrigir saída pg_dump para stdout no Windows (Kuntal Ghosh)
- Um dump de texto sem formatação compactado gravado no stdout conterá dados corrompidos devido à falha de colocar o descritor de arquivos no modo binário.
- Corrija pg_get_ruledef () para imprimir a saída correta para a regra ON SELECT de uma view cujas colunas foram renomeadas (Tom Lane)
- Em alguns casos de canto, o pg_dump depende de pg_get_ruledef () para despejar visualizações, para que esse erro possa resultar em falhas de despejo / recarregamento.
- Correção de descarte de junções externas com restrições vazias, como o resultado de um JOIN LEFT NATURAL sem colunas comuns (Tom Lane)
- Correção de descarte de expressões de função na cláusula FROM em casos em que a expressão não é exibida em algo que se parece com uma chamada de função (Tom Lane)
- Corrigir saída do pg_basebackup para stdout no Windows (Haribabu Kommi)
- Um backup gravado no stdout conterá dados corrompidos devido à falha de colocar o descritor de arquivos no modo binário.
- Corrija pg_rewind para manipular corretamente arquivos que excedam 2 GB (Kuntal Ghosh, Michael Paquier)
- Normalmente, esses arquivos não aparecem nos diretórios de dados do PostgreSQL, mas podem estar presentes em alguns casos.
- Corrija pg_upgrade para garantir que o registro final do WAL não tenha wal_level = minimum (Bruce Momjian)
- Esta condição pode impedir a reconexão dos servidores em espera atualizados.
- Corrige o cálculo de pg_xlogdump do comprimento do registro WAL (Andres Freund)
- Em postgres_fdw, restabeleça conexões com servidores remotos após os comandos ALTER SERVER ou ALTER USER MAPPING (Kyotaro Horiguchi)
- Isso garante que as alterações nas opções que afetam os parâmetros de conexão sejam aplicadas imediatamente.
- Em postgres_fdw, permita o cancelamento de comandos remotos de controle de transações (Robert Haas, Rafia Sabih)
- Essa alteração nos permite escapar rapidamente de uma espera por um servidor remoto que não responde em muitos mais casos do que anteriormente.
- Aumenta MAX_SYSCACHE_CALLBACKS para fornecer mais espaço para extensões (Tom Lane)
- Sempre use -fPIC, não -fpic, ao criar bibliotecas compartilhadas com o gcc (Tom Lane)
- Isso dá suporte a bibliotecas de extensão maiores em plataformas nas quais faz diferença.
- Nas compilações do MSVC, manipule o caso em que a biblioteca openssl não está dentro de um subdiretório do VC (Andrew Dunstan)
- Nas compilações do MSVC, adicione o caminho de inclusão adequado para os arquivos de cabeçalho libxml2 (Andrew Dunstan)
- Isso corrige uma necessidade anterior de movimentar as coisas nas instalações padrão do Windows do libxml2.
- Nas compilações do MSVC, reconheça uma biblioteca Tcl chamada tcl86.lib (Noah Misch)
- Nas compilações do MSVC, honre as configurações de PROVE_FLAGS na linha de comando do vcregress.pl (Andrew Dunstan)
Comentários não encontrado