LOXODATA

PostgreSQL 12.2 et autres correctifs

2020-02-14   1143 mots, 6 minutes de lecture

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 et inet ;
  • 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 ordre ALTER 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 et pg_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 que UPDATE remote_tab SET (x,y) = (SELECT ...) ;
  • interdit les valeurs de catégories NULLes dans la fonction crosstab() de l’extension contrib/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.

Liens