Paris, le 13 août 2021

Le PostgreSQL Global Development Group a publié le jeudi 12 août 2021, une mise à jour de toutes les versions supportées de PostgreSQL, soit les versions : 13.4, 12.8, 11.13, 10.18, et 9.6.23 ainsi que la troisième version bêta de PostgreSQL 14. Cette mise à jour corrige une vulnérabilité et plus de 75 bogues rapportés au cours des trois derniers mois.

Pour une liste complète des changements, reportez-vous à la note de publication.

La fin de vie de PostgreSQL 9.6 approche

PostgreSQL 9.6 cessera de recevoir des correctifs le 11 novembre 2021. Si vous utilisez PostgreSQL 9.6 dans un environnement de production, nous vous suggérons de prévoir une mise à jour vers une version plus récente et supportée de PostgreSQL. Pour plus d’informations, veuillez consulter notre politique de versionnement.

Correctifs de sécurité

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

Versions touchées: 11 - 13.

Une requête spécifique peut lire arbitrairement des octets de la mémoire du serveur. Dans une configuration par défaut, tout utilisateur authentifié de la base de données peut réaliser cette attaque à volonté. L’attaque ne nécessite pas la capacité de créer des objets. Si la configuration du serveur inclut max_worker_processes=0, les versions connues de cette attaque sont infaisables.

Note sur la Bêta de PostgreSQL 14

Cette version marque l’arrivée de la troisième version bêta de PostgreSQL 14 et rapproche la communauté de sa disponibilité générale prévue pour la fin du troisième trimestre.

Dans l’esprit de la communauté open-source de PostgreSQL, nous vous encourageons vivement à tester les nouvelles fonctionnalités de PostgreSQL 14 afin de nous aider à éliminer tout bogue ou problème éventuel. Bien que nous ne conseillions pas d’exécuter PostgreSQL 14 Bêta 3 sur vos environnement de production, nous vous encourageons à tenter d’exécuter vos charges de travail applicatives sur cette version bêta.

Vos tests et vos commentaires aideront la communauté à s’assurer que la version 14 de PostgreSQL respecte nos standards pour livrer une version stable et fiable de la base de données relationnelle open-source la plus avancée au monde.

Corrections de bogues et améliorations

Cette mise à jour corrige plus de 75 bogues qui ont été signalés au cours des derniers mois. Certains de ces problèmes ne concernent que la version 13, mais pourraient également s’appliquer à d’autres versions supportées.

Parmi ces corrections, citons :

  • Désactivation complète de la renégotiation TLS/SSL. Cette fonction avait déjà été désactivée, mais le serveur pouvait toujours exécuter une demande de renégociation initiée par le client.
  • Corrige les cas où une tentative de récupération de donnée toast échouerait immediatement après un COMMIT/ROLLBACK avec une des erreurs comme no known snapshots ou missing chunk number 0 for toast value.
  • Évite un mauvais comportement lors de la persistance de la sortie d’un curseur qui lit une requête volatile.
  • Rejeter les cas où une requête WITH se réécrit en juste NOTIFY, ce qui provoquerait un crash.
  • Correction de plusieurs cas particuliers pour les types numériques.
  • ALTER EXTENSION verrouille l’extension lors d’un ajout ou d’une suppression d’un objet membre.
  • L’état “enabled” est désormais copié quand des triggers de table partitionnée sont clonés dans une nouvelle partition.
  • Évite les conflits d’alias dans les requêtes générées pour la commande REFRESH MATERIALIZED VIEW CONCURRENTLY. Cette commande échouait sur les vues matérialisées contenant des colonnes avec certains noms, notamment mv et newdata.
  • Interdit les variables de ligne entière dans les expressions GENERATED.
  • Plusieurs correctifs pour la commande DROP OWNED BY impliquée dans une politique de sécurité row-level security (RLS).
  • Rétablissement des noms de localisation Windows old-style pour les commandes CREATE COLLATION.
  • Les processus walsenders affichent désormais leur dernière commande de réplication dans la vue pg_stat_activity, au lieu de montrer la dernière commande SQL.
  • La colonne pg_settings.pending_restart affiche désormais true lorsqu’un paramètre éligible est supprimé du fichier postgresql.conf.
  • Sur Windows 64 bits, autorise que la valeur effective de work_mem * hash_mem_multiplier puisse dépasser 2 Go.
  • Modification du point minimum de récupération lorsque le rejeu d’une entrée d’annulation de transaction provoque une troncature de fichier.
  • Identifie correctement le plus ancien segment WAL requis pour la réplication après qu’un slot soit invalidé. Corrige un problème où le stockage des WAL pouvait manquer d’espace.
  • Amélioration du rapport de progression lors de la phase de tri, pour une reconstruction d’index B-tree en mode parallélisé.
  • Correction de cas possibles de plantage lors de la réplication logique d’intructions UPDATE pour lesquels sont déclenchés des AFTER triggers de tables partitionnées.
  • Correction contre des boucles infinies lors d’ajout d’entrées dans un index SP-GiST.
  • S’assure que l’ajout d’une entrée dans un index SP-GiST peut être interrompue par une demande d’annulation de requête.
  • Avec psql et d’autres programmes client, correction d’un problème de débordement de fin de chaîne de caractères lors de la lecture de données encodées de manière incorrecte.
  • Correction de pg_dump pour manipuler correctement les triggers sur les tables partitionnées dont leur état d’activation est différent de l’état des triggers de la table principale.
  • Correction des avertissements invalid creation date in header lors de l’exécution de pg_restore pour un fichier de sauvegarde issu d’un créneau horaire différent.
  • pg_upgrade reporte désormais le plus ancien identifiant de transaction oldestXID et ne force plus d’opération VACUUM préventive contre le recyclage des identifiants (anti-wraparound).
  • Évolution de pg_upgrade pour détecter et avertir lorsque les extensions doivent être mises à jour.
  • Correction de l’extension contrib/postgres_fdw pour mieux traiter les colonnes générées, dès lors qu’une colonne générée d’une table distante représente la colonne de la table source.

Pour la liste complète des changements, voir les notes de versions.

Mise à jour

Toutes les mises à jour de PostgreSQL sont cumulatives. Comme pour les autres mises à jour mineures, les utilisateurs n’ont pas à sauvegarder et recharger leur base de données ou à utiliser pg_upgrade pour appliquer cette mise à jour ; vous pouvez simplement arrêter PostgreSQL et mettre les binaires à jour.

Les utilisateurs ayant sauté une ou plusieurs mises à jour peuvent avoir à exécuter certaines étapes supplémentaires après installation ; merci de consulter les notes des versions précédentes pour les détails.

Pour plus de détails, vous pouvez lire les notes de version.

NOTE : PostgreSQL 9.6 ne recevra plus de correctifs après le 11 novembre 2021. Merci de consulter notre politique de versionnement pour plus d’informations.

Note sur la Bêta PostgreSQL 14

PostgreSQL 14 Bêta 3 introduit la fonction unnest pour les types multi-intervalle (multirange) en plus d’une série de corrections de bogues.

Pour une liste exhaustive de tous les changements inclus dans PostgreSQL 14 Bêta 3, merci de consulter la page des problèmes en cours :

https://wiki.postgresql.org/wiki/PostgreSQL_14_Open_Items#resolved_before_14beta3

Pour mettre à jour PostgreSQL 14 Bêta 3 depuis Bêta 2, Bêta 1 ou une version antérieure, vous devez utiliser une stratégie similaire à une mise à jour entre versions majeures de PostgreSQL (par exemple pg_upgrade ou pg_dump / pg_restore). Pour plus d’informations, veuillez consulter la section de la documentation sur la mise à jour.

Test des bogues et compatibilité

La stabilité de chaque sortie de PostgreSQL dépend grandement de vous, la communauté, à travers les tests de la prochaine version dans des conditions de charges variées, dans le but d’identifier bugs et régressions avant la mise à disposition générale de la version 14 de PostgreSQL. Puisqu’il s’agit d’une bêta, des changements mineurs dans les comportements de la base de données, fonctionnalités ou API sont toujours possibles. Vos retours d’expérience et vos tests vont aider à déterminer les derniers réglages des nouvelles fonctionnalités, merci de les tester dans un avenir proche. La qualité des tests utilisateurs aide à établir le moment où nous aboutirons à une version finale.

Une liste des problèmes ouverts est disponible publiquement sur le wiki de PostgreSQL. Vous pouvez rapporter des bugs en utilisant le formulaire sur le site de PostgreSQL :

https://www.postgresql.org/account/submitbug/

Planning des bêtas

La présente publication inclut la troisième bêta de la version 14. Le projet PostgreSQL publiera d’autres bêtas si les tests le nécessitent, suivies d’une ou plusieurs versions candidates, jusqu’à la version finale au cours de la fin d’année 2021.

Pour plus d’informations, voir la page de test des bêtas.

Liens


DALIBO

DALIBO est le spécialiste français de PostgreSQL®. Nous proposons du support, de la formation et du conseil depuis 2005.