Réglée comme du papier à musique la nouvelle version de PostgreSQL sort en version stable ce jeudi 3 Octobre. Comme la version précédente, une seule release candidate ainsi que 4 versions bêta auront suffit à finaliser cette version 12. Et comme à chaque nouvelle version son lot de nouveautés que nous allons essayer de passer rapidement en revue.

# Les commandes SQL et fonctions

  • Le support des expressions de chemin SQL/JSON avec l’apparition du type jsonpath qui permet de requêter un champs json
  • La possibilité de créer une colonne générée stockée ou virtuelle
  • L’ajout de la clause WHERE à COPY FROM pour contrôler les lignes acceptées
  • La possibilité d’appeler ALTER TYPE ... ADD VALUE dans une transaction afin de rajouter plus facilement une valeur dans une énumération
  • L’ajout de commandes pour mettre fin à une transaction et en commencer une nouvelle COMMIT AND CHAIN et ROLLBACK AND CHAIN.
  • L’ajout de l’option OR REPLACE sur un CREATE AGGREGATE
  • L’ajout du support des fonctions hyperboliques
  • Le support des collations insensibles à la casse et insensibles aux accents pour les collations fournies par ICU, aussi connues sous le nom de collations non déterministes.

# Amélioration sur le partitionnement

  • L’amélioration des performances sur les tables partitionnées
  • La possibilité de créer des clés étrangères qui référencent une table partitionnée
  • L’augmentation de la vitesse de COPY des tables partitionnées
  • La possibilité d’utiliser n’importe quelle expression en limite de partition
  • L’ajout de fonctions d’information sur le partitionnement
  • L’ajout des index partitionnés dans la vue système pg_indexes
  • L’ajout de la commande psql \dP pour répertorier les tables et les index partitionnés
  • L’amélioration de l’affichage des commandes psql \d et \z sur les tables partitionnées

# Index

  • L’amélioration des performances de lecture / écriture pour les index B-tree ainsi qu’une optimisation de l’espace disque utilisé
  • La réduction de la quantité de données supplémentaires écrites dans les journaux de transactions (WAL) lors de la création d’un index GiST, GIN ou SP-GiST
  • La possibilité de créer des index couvrants de type GiST
  • L’amélioration de REINDEX CONCURRENTLY qui peut reconstruire un index sans bloquer les écritures dans sa table
  • L’ajout du support pour les recherches KNN des index SP-GiST

# Planificateur

  • L’amélioration sur les requêtes CTE (WITH) qui ne bloquent plus l’optimisation mais le fonctionnement peut être forcé avec l’utilisation de MATERIALIZED / NOTMATERIALIZED
  • L’amélioration de CREATE STATISTICS qui supporte maintenant les statistiques sur les valeurs les plus communes
  • Diverses améliorations du planificateur de requêtes

# Performance

  • L’activation de la compilation Just-in-Time (JIT) par défaut
  • Le support des requêtes parallélisées en mode d’isolation de transaction SERIALIZABLE
  • Et d’autres améliorations de performance sur la recherche de mots clés, la recherche de caractères multi-octets, la conversion des chaînes en entiers…

# Monitoring

  • pg_checksums peut activer / désactiver les sommes de contrôle de pages (utilisées pour détecter la corruption des données) dans un cluster hors ligne
  • L’ajout de rapports de progression pour CREATE INDEX, REINDEX, CLUSTER, VACUUM FULL et pg_checksums via les vues systèmes pg_stat_progress_create_index / pg_stat_progress_cluster et pour pg_checksums via l’option --progress
  • La possibilité de faire de la journalisation à partir d’un pourcentage de transactions avec le paramètre log_transaction_sample_rate
  • L’ajout d’un compteur d’échecs de checksum dans pg_stat_database
  • La possibilité de lister le contenu des répertoires archive et temporaire (pg_ls_archive_statusdir() et pg_ls_tmpdir())
  • L’ajout du nom_application, s’il est défini, dans les messages du journal log_connections

# Authentification

  • Le cryptage des connexions TCP / IP lors de l’utilisation de l’authentification GSSAPI

  • La découverte de serveurs LDAP utilisant des enregistrements DNS SRV

# PSQL

  • L’ajout du mode de sortie CSV

  • L’affichage l’URL de la page de manuel dans la sortie \help de psql pour une commande SQL
  • Afficher l’adresse IP dans \conninfo de psql
  • L’amélioration de la complétion

Et voilà, nous avons fini notre petit tour rapide des principales nouveautés de PostgreSQL 12. Si vous n’en avez pas assez et que vous voulez savoir jusqu’à la moindre correction de bug vous pouvez retrouver la note de révision ici.