Le PGDG a publié une mise à jour de toutes les versions supportées du système de gestion de bases de données PostgreSQL. Ces mises à jour incluent les versions 12.2, 11.7, 10.12, 9.6.17, 9.5.21, et 9.4.26.
Cette publication corrige un problème de sécurité et plus de 75 bogues reportés ces trois derniers mois.
Il est chaudement recommandé de planifier la mise à jour de vos serveurs au plus tôt.
Fin du support de PostgreSQL 9.4
Il s’agit de la dernière publication pour la branche 9.4. Il n’y aura plus de mises à jour de sécurité ou de correction de bogue.
PostgreSQL 9.4 a introduit de nouvelles fonctionnalités, telles que le support du JSONB, la commande ALTER SYSTEM
, la possibilité diffuser en continu les modifications logiques vers un plugin de sortie, et bien d’autres :
Ces fonctionnalités, disponibles également dans les nouvelles versions de PostgreSQL, ont pour la plupart d’entre elles été améliorées depuis. La politique de support impose désormais le retrait de cette version.
Pour continuer à bénéficier du support, il est recommandé de prévoir une migration vers une version plus récente de PostgreSQL. On peut se référer à la politique de versionnement pour plus d’informations.
Problème de sécurité
CVE-2020-1720
:ALTER ... DEPENDS ON EXTENSION
ne fait pas les vérifications d’autorisation nécessaires.
Versions affectées : de 9.6 à 12
La sous-commande ALTER ... DEPENDS ON EXTENSION
ne fait pas les
vérifications d’autorisation. Cela peut conduire à autoriser un utilisateur non
privilégié à supprimer une fonction, procédure, vue matérialisée,
index ou déclencheur dans certaines conditions. Cette attaque est
possible si un administrateur a installé une extension et qu’un
utilisateur dispose du privilège CREATE
ou que le propriétaire d’une extension
exécute DROP EXTENSION
.
Le projet PostgreSQL remercie Tom Lane d’avoir reporté ce problème.
Corrections des bogues et améliorations
Cette mise à jour corrige plus de 75 bogues ayant été reportés ces derniers mois. Certains d’entre eux n’affectent que la version 12, d’autres peuvent affecter toutes les versions supportées.
Ces corrections incluent :
- corrige le fait qu’une commande TRUNCATE … CASCADE avec des tables partitionnées et des clés étrangères ne supprime pas toutes les données. Si cette configuration est utilisée, veuillez vous référer à la partie mise à jour pour les vérifications et les étapes de nettoyage ;
- corrige l'échec de l’ajout d’une contrainte de clé étrangère avec les sous-partitions (c’est-à-dire les tables partitionnées à plusieurs niveaux). Si vous avez utilisé cette fonctionnalité, vous pouvez corriger cela en détachant et ré-attachant les partitions affectées, ou en supprimant et créant à nouveau les contraintes de clé étrangère sur la table parent. Vous trouverez pour d’information sur la marche à suivre dans la documentation de la commande ALTER TABLE ;
- corrige un problème de performance sur les tables partitionnées introduit par la correction de CVE-2017-7484 qui maintenant autorise le Planner à utiliser les statistiques sur une table fille pour une colonne autorisée pour l’utilisateur via la table parent lorsque la requête contient un opérateur permissif&nsp;
- d’autres corrections et changements sur les tables partitionnées,
incluant la désactivation les expressions des clés de partitions
retournant des pseudo-types comme
RECORD
; - corrige l’exécution de déclencheurs par colonne sur un UPDATE dans une souscription de la réplication logique ;
- corrige plusieurs erreurs et crashs des publications et souscriptions de la réplication logique ;
- améliore l’efficacité de la réplication logique avec
REPLICA IDENTITY FULL
; - s’assure que les modifications induitent par l’appel à
pg_replication_slot_advance()
pour un slot de réplication physique persistent après un redémarrage ; - plusieurs correctifs sur les processus
walsender
; - améliore les performances des jointures sur hashages avec des tables internes très grandes ;
- corrige le placement des champs “Subplans Removed” dans la sortie
de la commande
EXPLAIN
en le plaçant avec son parent Append ou MergeAppend ; - plusieurs corrections sur les plans de requêtes parallèles
- plusieurs corrections sur les erreurs du Planner, comprenant un correctif sur les jointures sur une sous-requête retournant une ligne ;
- plusieurs correctifs à propos des statistiques étendues sur les
valeurs les plus communes, incluant une estimation
incorrecte pour les clauses
OR
; - améliore l’efficacité des jointures
hash
avec les CPUs avec plusieurs cores ; - ignore l’option CONCURRENTLY lors de l’exécution de la création,
suppression et
REINDEX
sur une table temporaire ; - revient sur la construction non parallèle lorsque un
CREATE INDEX
parallélisé n’a pas de slot libre de mémoire partagée dynamique ; - plusieurs correctifs sur les index GiST et GIN ;
- corrige un crash possible sur les opérations des index BRIN avec
les types de données
box
,range
etinet
; - corrige le support des index hypothétiques
BRIN
; - corrige l'échec de la commande
ALTER TABLE
lorsqu’une colonne dans une expression générée est ajoutée ou modifiée dans le même ordreALTER TABLE
; - corrige la gestion de déclencheurs multiples AFTER ROW sur une table étrangère ;
- corrige le décalage du résultat de
EXTRACT(ISOYEAR FROM timestamp)
pour les dates BC ; - prévient le passage en minuscules et les troncatures des
paramètres d’authentification RADIUS dans le fichier
pg_hba.conf
; - plusieurs correctifs dans le support de GSSAPI, incluant le fait
que la bibliothèque
libpg
accepte des paramètres de connexions à propos de GSS même si le code n’est pas compilé avec le support de GSSAPI ; - plusieurs correctifs pour les commandes
pg_dump
etpg_restore
lorsqu’elles fonctionnent en mode parallèle ; - corrige le crash de
postgres_fdw
lors de l’exécution d’une requête distante sur le serveur distant tel queUPDATE remote_tab SET (x,y) = (SELECT ...)
; - interdit les valeurs de catégories NULLes dans la fonction
crosstab()
de l’extensioncontrib/tablefunc
afin de prévenir les crashs ; - plusieurs correctifs pour Windows, incluant un problème d’exécution
concurrente pouvant causer des erreurs de chronométrage avec la
commande
NOTIFY
; - plusieurs correctifs concernant
ecpg
.
Pour la liste complète des changements, on pourra consulter la note de publication.
Mise à jour
Toutes les publications de mise à jour de PostgreSQL sont
cumulatives. Comme pour les autres publications mineures, il
n’est pas nécessaire d’extraire et de recharger les bases de
données ni d’utiliser pg_upgrade
pour appliquer cette publication ;
il suffit de stopper PostgreSQL et mettre les binaires à
jour.
Les utilisateurs ayant sauté une ou plusieurs mises à jour peuvent avoir besoin d'étapes additionnelles après la mise à jour. Les notes de publication des versions précédentes fournissent les détails.
Si vous avez antérieurement exécuté TRUNCATE ... CASCADE
sur une
sous-partition d’une table partitionnée, et que la table partitionnée
est référencée comme clé étrangère depuis une autre table, vous
pourriez avoir à exécuter le TRUNCATE sur cette autre table, ou un
DELETE si vous avez ajouté des lignes depuis l’exécution du TRUNCATE ... CASCADE
. Ce problème est réglé dans cette publication, mais vous
devez lancer cette procédure afin de vous assurer de la qualité de vos
données.
Pour plus de détails, veuillez consulter la note de publication.