Paris, le 13 février 2020
Le PostgreSQL Global Development Group vient de publier une mise à jour pour toutes les versions supportées de vos systèmes de bases de données, à savoir : 12.2, 11.7, 10.12, 9.6.17, 9.5.21 et 9.4.26. Cette sortie corrige plus de 75 bugs signalés sur les trois derniers mois.
Les utilisateurs doivent prévoir de mettre à jour dès que possible.
Fin de vie pour PostgreSQL 9.4
Cette mise à jour marque également la fin de vie de la version PostgreSQL 9.4, qui ne recevra plus aucun correctif de bogue ou de sécurité. PostgreSQL 9.4 a introduit les nouvelles fonctionnalités comme la prise en charge du format JSONB, la commande ALTER SYSTEM
, la capacité de décoder les changements en flux à l’aide d’un plugin, et bien d’autres.
Bien que nous soyons très fiers de cette version, les fonctionnalités sont aussi présentes dans les versions plus récentes de PostgreSQL. Beaucoup de ces fonctionnalités ont reçu des améliorations, et de par notre politique de gestion de versions, il est temps de mettre PostgreSQL 9.4 au repos.
Veuillez planifier une mise à jour vers une version plus récente, supportée par la communauté, dès que possible. Veuillez consulter notre politique de gestion des versions pour de plus amples informations.
Correctifs de sécurité
- CVE-2020-1720:
ALTER ... DEPENDS ON EXTENSION
n’a pas de contrôle de droits.
Versions concernées : 9.6 - 12
La sous-commande ALTER ... DEPENDS ON EXTENSION
ne procède à aucun contrôle de droits, ce qui permet à un utilisateur non privilégié, sous certaines conditions, de supprimer n’importe quelle fonction, procédure, vue matérialisée, index ou triggers. Cette attaque est possible si un administrateur a installé une extension et qu’un utilisateur dispose d’un privilège CREATE
ou que le propriétaire de l’extension exécute la commande DROP EXTENSION
.
Le projet PostgreSQL remercie Tom Lane pour avoir rapporté ce problème.
Corrections de bugs et améliorations
Cette mise à jour corrige plus de 75 bugs rapportés ces derniers mois. Certains problèmes n’affectent que la version 12 mais d’autres peuvent concerner toutes les versions supportées.
Ces corrections comprennent :
- Correctif pour les tables partitionnées avec des références de clés étrangères où
TRUNCATE...CASCATE
ne supprime pas toutes les données. Si vous avez déja utiliséTRUNCATE ... CASCADE
sur une table partitionnée avec des références de clés étrangère, veuillez consulter la section “Mise à jour” pour les étapes de vérification et de nettoyage. - Correctif de l’échec de l’ajout de contraintes de clés étrangères à une table avec des sous-partitions (appelée aussi table partitionnée à plusieurs niveaux). Si vous avez déja utilisé cette fonctionnalité, vous pouvez corriger cela soit en détachant et en réajoutant la partition affectée, soit en supprimant et en recréant la contrainte de clé étrangère à la table mère. Vous trouverez plus d’informations sur la manière d’effectuer ces étapes dans la documentation ALTER TABLE.
- Correctif d’un problème de performance pour les tables partitionnées introduit par le correctif pour CVE-2017-7484, qui permet désormais au planificateur d’utiliser des statistiques d’une table enfant pour une colonne à laquelle l’utilisateur est autorisé à accéder à la table parent lorsque la requête contient un d’opérateur « avec fuite » (leaky).
- Plusieurs autres correctifs et changements pour les tables partitionnées, y compris l’interdiction des expressions de clés de partition qui renvoient des pseudo-types, comme
RECORD
. - Correctif pour les abonnés à la réplication logique dans l’exécution des triggers
UPDATE
par colonne. - Correctif de plusieurs pannes et échecs pour les abonnés et les éditeurs de la réplication logique.
- Amélioration de l’efficacité de la réplication logique avec
REPLICA IDENTITY FULL
. - S’assure que l’appel de la fonction
pg_replication_slot_advance()
sur un slot de réplication conservera les changements après redémarrage. - Plusieurs correctifs pour le processus walsender.
- Amélioration des performances des hash join avec de grandes tables internes.
- Correctif du placement du champ “Subplans Removed” dans la sortie de
EXPLAIN
en le plaçant avec son plan parent Append ou MergeAppend. - Plusieurs correctifs pour les plans de requêtes parallèles.
- Plusieurs correctifs pour les erreurs du planificateur de requêtes, dont une qui affectait les jointures des sous requêtes à une seule ligne.
- Plusieurs correctifs pour les statistiques étendues MCV, dont une sur une estimation incorrecte des clauses
OR
. - Amélioration de l’utilisation des CPU avec plusieurs cœurs pour les nœuds hash join parallélisés.
- Ignore l’option
CONCURRENTLY
lors d’une opération de création, de suppression d’index ou de ré-index sur une table temporaire. - Construction d’un index sans le parallélisme lorsque l’instruction
CREATE INDEX
ne dispose pas d’assez de mémoire partagé dynamique. - Plusieurs correctifs pour les index GiST et GIN
- Correctif d’un crash possible sur les opérations d’index BRIN avec les types de données
box
,range
etinet
. - Correctif de la prise en charge des index hypothétique BRIN.
- Correctif d’un échec d’
ALTER TABLE
lorsqu’une colonne référencée dans une expressionGENERATED
est ajoutée ou son type modifié plus tôt dans la même instructionALTER TABLE
. - Correctif de la gestion de multiples triggers
AFTER ROW
sur une table étrangère. - Correctif d’un écart de 1 pour
EXTRACT(ISOYEAR FROM timestamp)
pour les dates avant Jésus-Christ. - Empêche la mise en minuscule et la troncature non désirées des paramètres d’authentification RADIUS dans le fichier
pg_hba.conf
. - Plusieurs correctifs pour le support de GSSAPI, notamment l’acceptation par la libpq de tous les paramètres de connexions liés à GSS, même si GSSAPI n’est pas compilé.
- Plusieurs correctifs pour
pg_dump
etpg_restore
en mode parallélisation. - Correctif de crashs avec
postgres_fdw
lors d’une tentative d’exécution sur le serveur distant d’une requête commeUPDATE remote_tab SET (x,y) = (SELECT ...)
. - Interdit les valeurs de catégorie à NULL dans la fonction
crosstab()
de la contributiontablefunc
pour éviter les crashs. - Plusieurs correctifs pour la version de PostgreSQL sous Windows, y compris une condition de concurrence qui pourrait entraîner des anomalies de timing avec la commande
NOTIFY
. - Plusieurs correctifs d’ecpg.
Pour une liste exhaustive des modification, veuillez consulter 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 restaurer leur base ou ni à utiliser pg_upgrade
pour appliquer cette mise à jour ; vous pouvez simplement arrêter PostgreSQL et mettre à jour ses binaires.
Les utilisateurs ayant sauté une version ou plus peuvent avoir besoin d’ajouter des étapes supplémentaires après la mise à jour.
Si vous avez déjà exécuté TRUNCATE ... CASCADE
sur une sous-partition d’une table partitionnée et que la table partitionnée a une référence de clé étrangère provenant d’une autre table, vous devrez exécuter l’instruction TRUNCATE
sur l’autre table ou exécuter l’instruction DELETE
si vous avez ajouté des lignes depuis l’exécution du TRUNCATE ... CASCADE
. Le problème original est résolu dans cette version, mais vous devrez effectuer cette étape pour assurer que toutes vos données soient cohérentes.
Pour plus de détails, veuillez consulter les notes de versions.
Liens
- PostgreSQL (396) ,
- release (83) ,
- mineure (30) ,
- sécurité (54) ,
- 12 (28) ,
- 11 (26) ,
- 10 (32) ,
- 9 (57) ,
- update (45)