LOXODATA

PostgreSQL 19 bêta 1

2026-06-08   1626 mots, 8 minutes de lecture

PostgreSQL 19 Bêta 1 publiée

Le PostgreSQL Global Development Group annonce la disponibilité de la première bêta de PostgreSQL 19 en téléchargement.

Cette publication contient un aperçu des fonctionnalités qui seront disponibles dans la version finale de PostgreSQL 19, bien que des modifications puissent intervenir pendant la période bêta.

Vous pouvez trouver des informations sur toutes les fonctionnalités et les changements de PostgreSQL 19 dans les notes de version.

Dans l’esprit de la communauté open source PostgreSQL, nous vous encourageons fortement à tester les nouvelles fonctionnalités de PostgreSQL 19 dans vos systèmes afin de nous aider à éliminer les bogues et autres problèmes. Bien que nous ne vous conseillons pas de faire fonctionner cette publication bêta 1 dans vos environnements de production, nous vous encourageons à trouver des moyens de faire fonctionner votre charge applicative typique avec cette publication bêta.

Vos tests et vos commentaires aideront la communauté à s’assurer que PostgreSQL 19 respecte nos standards de stabilité et de fiabilité pour continuer à en faire la base de données relationnelle open-source la plus avancée du monde. Vous pouvez également vous renseigner sur notre processus de beta testing et comment y contribuer.

Principales fonctionnalités de PostgreSQL 19

Vous trouverez ci-dessous les principales fonctionnalités planifiées pour PostgreSQL 19. Cette liste n’est pas exhaustive : pour la liste complète des fonctionnalités, se référer à la note de publication.

Performance

PostgreSQL capitalise sur le sous-système d’I/O asynchrone introduit dans PostgreSQL 18. Dans cette publication, io_method=worker augmente automatiquement le nombre de processus d’I/O, en se basant sur les nouveaux paramètres io_min_workers et io_max_worker.

Cette publication introduit aussi l’extension pg_plan_advice, qui permet aux utilisateurs de contrôler et stabiliser les décisions du planner, accompagné de pg_stash_advice pour appliquer automatiquement les choix en utilisant les identifiants de requête.

Cette publication apporte des améliorations à VACUUM et aux opérations de maintenance. Autovacuum peut maintenant utiliser de la parallélisation, qui peut être configurée avec le nouveau paramètre autovacuum_max_parallel_workers, et un nouveau système de notation aide à prioriser les tables à traiter par VACUUM. De plus, PostgreSQL 19 améliore VACUUM avec une nouvelle stratégie réduisant automatiquement la quantité de travail en marquant les pages comme visibles tant qu’elles sont requêtées.

Enfin, cette publication ajoute la commande REPACK et son option non bloquante CONCURRENTLY, ce qui permet de reconstruire des tables avec moins de surcharge opérationnelle.

PostgreSQL double les performances des INSERT lorsque des vérifications de clés étrangères interviennent.

De plus, cette publication améliore plusieurs aires de la planification et de l’exécuteur de requêtes, incluant des optimisations sur les anti-join, une utilisation plus large des tris incrémentaux, une agrégation anticipée qui accélère le traitement des lignes, des lectures plus rapides à partir du stockage pendant les lectures séquentielles parallélisées, et une simplification de IS DISTINCT FROM et IS NOT DISTINCT FROM vers les opérateurs <> et = lorsque les données en entrées ne peuvent pas être NULL.

Il y a aussi des améliorations de la montée en charge de LISTEN/NOTIFY impactant les charges multi-channel.

Expérience développeur

PostgreSQL 19 introduit le support de SQL/PGQ, permettant aux utilisateurs d’exécuter des « Property Graph Queries » en utilisant la syntaxe SQL standard.

Cette publication étend aussi les possibilités des requêtes temporelles avec le support de la clause FOR PORTION OF pour les commandes UPDATE et DELETE, complétant le support des contraintes temporelles ajoutées dans PostgreSQL 18.

Cette publication ajoute aussi les commandes ALTER TABLE ... MERGE PARTITIONS et ALTER TABLE ... SPLIT PARTITIONS pour faciliter la réorganisation à la volée des tables partitionnées.

Il y a aussi maintenant le support des lignes retournées en conflit pendant une opération « upsert » utilisant la commande INSERT ... ON CONFLICT DO SELECT ... RETURNING.

PostgreSQL 19 introduit la nouvelle syntaxe GROUP BY ALL, facilitant l’ajout de toutes les colonnes non agrégées et non issues d’une fonction fenêtrée au regroupement.

Cette publication étend les capacités de traitement des chaines de caractères dans JSONPATH avec l’ajout des fonctions lower(), upper(), initcap(), replace(), split_part() et la famille de fonctions trim().

PostgreSQL facilite l’adoption de motifs de requêtes « read-your-writes » lorsqu’on travaille avec des réplicas en utilisant la commande WAIT FOR LSN. Ceci permet à une session d’attendre un changement lié au rejeu d’une position spécifique du log (LSN) sur le replica avant d’exécuter une requête SELECT.

PostgreSQL 19 ajoute aussi de nouvelles fonctions SQL pour récupérer les commandes DDL nécessaires pour recréer des rôles, tablespaces et bases de données, simplifiant l’écriture de scripts et de tâches de migration.

De plus, la fonction random() fonctionne maintenant avec des dates et des horodatages, et le langage PL/Python supporte désormais les déclencheurs sur événement (« events triggers »).

Fonctionnalité liées à la sécurité

PostgreSQL ajoute le support côté serveur de « Server Name Indication » (SNI) à travers un nouveau fichier de configuration : pg_hosts.conf, permettant à un serveur PostgreSQL de présenter différents certificats TLS basés sur le nom demandé par le client.

Il y a aussi un nouveau paramètre password_expiration_warning_threshold, par défaut à 7 jours, avertissant l’utilisateur d’une prochaine expiration du mot de passe.

À la suite des efforts pour la dépréciation de l’authentification md5, cette publication émet un avertissement au client après une authentification md5 réussie. Ceci est contrôlable à travers le nouveau paramètre md5_password_warnings.

Supervision et observabilité

PostgreSQL introduit une nouvelle vue pg_stat_lock, qui rapporte des statistiques par type de verrous, et une vue pg_stat_recovery fournissant une visibilité détaillée sur l’état des opérations de récupération.

Une colonne stats_reset est maintenant disponible dans différentes vues statistiques montrant le moment de la remise à zéro des compteurs.

Les vues pg_stat_progress_vacuum et pg_stat_progress_analyze incluent maintenant une colonne started_by rapportant l’initiateur de l’opération, et la vue pg_stat_progress_vacuum a aussi une colonne mode montrant comment le VACUUM est opéré.

Cette publication permet aussi au niveau de log_min_messages d’être spécifié par type de processus, donnant aux opérateurs un contrôle fin sur chaque partie du système de traces.

De plus, les quantités d’octets de l’écriture de pages pleines (FPW) dans les journaux de transactions (WAL) sont maintenant rapportées dans les messages de traces de VACUUM et ANALYZE, aidant à l’identification des opérations de maintenance produisant de grandes quantités de WAL.

De plus, EXPLAIN ANALYZE supporte maintenant la visualisation des statistiques des I/O asynchrones à travers son option IO, fournissant une meilleure visibilité sur la manière qu’ont les requêtes d’utiliser le sous-système d’I/O asynchrone.

Réplication logique et requêtes fédérées

Dans PostgreSQL 19, la replication logique réplique maintenant les valeurs des séquences, simplifiant les tâches de mise à jour. De plus, la nouvelle syntaxe CREATE PUBLICATION ... EXCEPT vous permet de publier toutes les tables d’une base de données, à l’exception d’un sous-ensemble spécifique, tandis que CREATE SUBSCRIPTION ... SERVER permet à un abonnement d’utiliser en serveur étranger (FOREIGN SERVER), simplifiant la gestion des accès.

PostgreSQL 19 rend possible l’activation de la réplication logique sans redémarrage du serveur. La réplication logique peut maintenant être activée à la demande même lorsque le paramètre wal_level est positionné à replica, et le nouveau paramètre en lecture seule effective_wal_level indique quel est le niveau réel. Ceci réduit le besoin d’activer en avance un niveau de WAL trop élevé lorsque le besoin n’est qu’occasionnel, et évite la rupture de l’activité.

Le pilote de données étrangères de PostgreSQL, postgres_fdw, utilisé pour de la fédération de requête, inclut plusieurs améliorations de performance, dont le « push down » d’opérations sur les tableaux vers le serveur distant, et en récupérant et utilisant les statistiques des tables étrangères pour une meilleure planification locale.

Autres points importants

La période bêta de PostgreSQL a un mode « grease » temporaire pour tenter d’identifier des problèmes de compatibilité du protocole dans l’écosystème. Cette page du wiki contient les informations sur le fonctionnement de la campagne : https://wiki.postgresql.org/wiki/Grease.

PostgreSQL 19 permet l’activation et la désactivation des sommes de contrôle à la volée, sans nécessiter un redémarrage ou une réinitialisation.

Il y a plusieurs changements importants qui méritent une attention particulière dans PostgreSQL 19. La compilation Just-in-time (JIT) est maintenant désactivée par défaut. La valeur par défaut du paramètre default_toast_compression est maintenant lz4, amenant de meilleures performances de compression et décompression par défaut. Le support de l’authentification RADIUS est supprimé. De plus, la commande vacuumdb --analyze-only analyse par défaut les tables partitionnées.

Fonctionnalités supplémentaires

De nombreuses autres fonctionnalités et améliorations ont été ajoutées à PostgreSQL. En fonction des cas d’usage, leur importance peut paraître plus ou moins grande que celles mentionnées ci-dessus. Vous pouvez consulter les notes de publications pour une liste complète des nouveautés et changements : https://www.postgresql.org/docs/19/release-19.html

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 19.

É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 : https://www.postgresql.org/account/submitbug/.

Planning Bêta

Il s’agit de la première publication bêta de la version 19. Le projet PostgreSQL publiera autant de bêtas que cela est nécessaire pour tester. Celles-ci seront suivies par une ou plusieurs publications de versions candidates, jusqu’à la publication de la version finale vers septembre/octobre 2026.

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

Liens

Crédits photo : Carlos Gonzalez