LOXODATA

PostgreSQL 14 Beta 3 et autres correctifs

2021-08-13   1294 mots, 7 minutes de lecture

Le PGDG a publié une mise à jour de toutes les versions du système de gestion de bases de données, incluant les versions 13.4, 12.8, 11.13, 10.18, et 9.6.23. La troisième Beta de PostgreSQL 14 fait partie de cette livraison. Cette publication clôt une vulnérabilité de sécurité et corrige plus de 75 bogues rapportés dans les trois derniers mois.

Pour une liste complète des changements, référez-vous aux notes de publications .

Problèmes de sécurité

CVE-2021-3677 : Divulgation de la mémoire dans certaines requêtes

Versions affectées : 11 - 13

Une requête conçue à cet effet peut lire des octets arbitraires sur le serveur. Dans la configuration par défaut, tout utilisateur authentifié peut conduire cette attaque. L’attaque ne nécessite aucun droit de création d’objets. Si le paramétrage du serveur inclut max_worker_processes=0, les versions connues de l’attaque ne sont pas réalisables. En revanche, des variants inconnus de cette attaque peuvent être indépendants de ce paramètre.

Corrections de bogues et améliorations

Cette publication corrige plus de 75 bogues ayant été rapportés ces derniers mois. Certains de ces bogues ne concernent que la version 13, d’autres concernent les autres versions supportées.

On peut citer :

  • la désactivation totale de la renégociation TLS/SSL. C'était déjà le cas, mais le serveur exécutait toujours les demandes de renégociation client ;
  • la restauration de l’instantané de niveau portail après COMMIT ou ROLLBACK au sein d’une procédure. Cette modification corrige les cas où une tentative de récupération d’une valeur TOASTée immédiatement après COMMIT/ROLLBACK échoue avec un message de type « no known snapshots » ou « missing chunk number 0 for toast value » ;
  • éviter le dysfonctionnement de persistance de la sortie d’un curseur qui lit une requête volatile ;
  • le rejet des cas où une requête dans un WITH n'émet qu’un NOTIFY, ce qui cause un crash ;
  • différents correctifs à la marge pour les types numériques ;
  • ALTER EXTENSION verrouille désormais l’extension lors de l’ajout ou la suppression d’un objet lui appartenant ;
  • le status « enabled » est désormais copié lorsque les déclencheurs d’une table partitionnée sont clonés sur une nouvelle partition ;
  • éviter les conflits d’alias dans les requêtes créées par REFRESH MATERIALIZED VIEW CONCURRENTLY. Cette commande échouait sur les vues matérialisées contenant des colonnes avec certains noms, notamment mv et newdata ;
  • l’interdiction des variables ligne dans les expressions GENERATED ;
  • différents correctifs pour le comportement de DROP OWNED BY en relation avec les politiques sécurité de niveau ligne (RLS) ;
  • ré-autoriser les vieux noms de paramètres locaux Windows dans les commandes CREATE COLLATION ;
  • walsender affiche désormais la dernière commande de réplication dans pg_stat_activity, au lieu de la dernière commande SQL ;
  • pg_settings.pending_restart affiche désormais true lorsqu’une entrée pertinente de postgresql.conf est supprimée ;
  • autoriser, sous MS-Windows 64-bits, la valeur réelle de work_mem * hash_mem_multiplier à dépasser 2GB ;
  • mettre à jour le point de restauration minimal lorsque le rejeu d’un WAL d’une transaction annulée cause la troncature d’un fichier ;
  • avancer proprement l’horizon du plus vieux segment de WAL requis après l’invalidation d’un slot de réplication. Ceci corrige un problème survenant lorsque le stockage des WALs du serveur est plein ;
  • améliorer le rapport de progression de la phase de tri de la construction parallélisée d’un index B-tree ;
  • correction de cas de crash de la réplication logique lors de mises à jour d’une table partitionnée et à l’exécution de déclencheurs AFTER sur des tables partitionnées ;
  • empêcher les boucles infinies lors de l’insertion dans des index SP-GiST ;
  • s’assurer que l’insertion dans un index SP-GiST puisse être terminée par une demande d’annulation de requête ;
  • annuler, dans psql et d’autres programmes clients, le dépassement de fin de chaîne lors de la gestion de données ayant un encodage invalide ;
  • correction de pg_dump pour gérer correctement les déclencheurs sur les tables partitionnées dont le statut activé est différent du statut du déclencheur de la table parente ;
  • éviter les avertissements "invalid creation date in header" à l’exécution de pg_restore sur un fichier créé dans un fuseau horaire différent ;
  • pg_upgrade porte désormais le oldestXID de l’ancienne installation et ne force plus de VACUUM FREEZE ;
  • extension de pg_upgrade pour détecter et avertir des extensions à mettre à jour ;
  • améliorer la gestion par contrib/postgres_fdw des colonnes générées. Une colonne générée dans une table étrangère doit représenter une colonne générée dans la table distante.

Pour une liste complète des changements, référez-vous aux notes de publications.

Mise à jour

Toutes les publications de mises à jour de PostgreSQL sont cumulatives. Comme les autres publications mineures, il n’est pas utile d’extraire et recharger les données ni d’utiliser pg_upgrade pour appliquer cette mise à jour. Il suffit simplement d’arrêter PostgreSQL et de mettre à jour les binaires.

Les utilisateurs ayant omis d’appliquer des mises à jour peuvent avoir à appliquer des étapes additionnelles. Les notes de publication des versions précédentes fournissent les détails.

NOTE : PostgreSQL 9.6 n’aura plus de correctifs après le 11 novembre 2021. Vous pouvez consulter la politique de versionnement pour plus d’information.

PostgreSQL 14 Bêta 3

À propos

Cette mise à jour marque la troisième bêta de PostgreSQL 14, nous rapprochant encore de la disponibilité de la version finale cet automne.

Dans l’esprit de la communauté open source PostgreSQL, vous êtes invités à tester les nouvelles fonctionnalités sur vos systèmes pour nous aider à supprimer les bogues ou problèmes qui existeraient encore. Bien que nous ne vous encouragions pas à faire tourner une bêta en production, nous vous encourageons à tester vos profils de charge habituels.

Vos tests, et vos retours, aideront la communauté à s’assurer que la version 14 respecte les standards de stabilité et de fiabilité des versions du système de gestion de bases de données relationnelles open source le plus avancé.

Notes de version

PostgreSQL 14 Bêta 3 introduit la fonction unnest pour les types multirange et corrige de nombreux bogues.

Pour la liste des changements inclus dans PostgreSQL 14 Bêta 3, on se reportera à la liste des points ouverts :

Installation

Pour passer en PostgreSQL 14 Bêta 3 à partir de la Bêta 2, ou de toute autre version plus ancienne, il est obligatoire d’utiliser une stratégie similaire à celle employée pour changer de version majeure (i.e. pg_upgrade ou pg_dump/pg_restore).

Pour plus d’informations, on se reportera à la section de la documentation concernant les montées de version :

Tests pour le débogage et la compatibilité

La stabilité de chaque publication de PostgreSQL dépend de vous, la communauté. En testant la version à venir avec votre charge et vos outils de tests, vous pourrez nous aider à trouver les bogues et régressions avant la publication de PostgreSQL 14.

Étant donné qu’il s’agit d’une version bêta, des changements mineurs dans le comportement de la base de données, des détails et des APIs sont toujours possibles. Vos retours et tests aideront à déterminer les ajustements finaux des nouvelles fonctionnalités.

La qualité des tests aide à déterminer le moment de la publication finale.

Une liste des problèmes ouverts est publiquement disponible dans le wiki de PostgreSQL. Vous pouvez rapporter des bogues en utilisant le formulaire présent sur le site web de PostgreSQL :

Planning Bêta

Il s’agit de la troisième publication bêta de la version 14. Le projet PostgreSQL publiera autant de bêtas que nécessaire pour tester. Celles-ci seront suivies par une ou plusieurs publications de versions candidates, jusqu'à la publication de la version finale à la fin de l’année.

Pour plus d’information, veuillez consulter la page Beta Testing :

Liens