PostgreSQL

Logiciel capture d'écran:
PostgreSQL
Détails logiciels:
Version: 10.5 / 11 Beta 3 Mise à jour
Date de transfert: 16 Aug 18
Licence: Gratuit
Popularité: 29

Rating: 1.5/5 (Total Votes: 2)

PostgreSQL est un système de base de données relationnelle objet open source, puissant, fiable, stable, adapté aux entreprises et gratuit, dans le style des projets MariaDB, MySQL ou SQLite. Il s'agit d'un serveur / moteur de base de données compatible ACID (Atomicity, Consistency, Isolation, Durability) qui peut être hautement personnalisé et comprend de nombreuses fonctionnalités attrayantes, remplaçant parfaitement les moteurs de bases de données susmentionnés.


Caractéristiques en un coup d'oeil

Principales fonctionnalités: prise en charge des clés étrangères, des vues, des jointures, des déclencheurs et des procédures stockées, prise en charge de plusieurs langues, prise en charge de nombreux types de données SQL: BOOLEAN, CHAR, INTEGER, NUMERIC, VARCHAR, INTERVAL, TIMESTAMP DATE.

En outre, le logiciel prend en charge le stockage d’objets volumineux binaires, y compris toutes sortes de fichiers multimédias (vidéo, audio et photo) et fournit aux développeurs des interfaces de programmation natives pour C, C ++, Python, Perl, Ruby, etc. Langages de programmation Java, .Net, Tcl et ODBC.

Parmi d’autres fonctionnalités intéressantes, on peut citer le MVCC (Multi-Version Concurrency Control), les tablespaces, les encodages de caractères multi-octets, la récupération ponctuelle, l’optimiseur et le planificateur de requêtes matures, la réplication asynchrone, les sauvegardes en ligne, sauvegardes à chaud, la journalisation anticipée pour la tolérance aux pannes, la prise en charge des jeux de caractères internationaux, ainsi que le support Unicode.


PostgreSQL en chiffres

Pour le moment, le serveur de bases de données PostgreSQL prend en charge une taille illimitée pour les bases de données, 32 To maximum pour les tables, 1,6 To par ligne, 1 Go par champ, un nombre illimité de lignes par table. , en fonction des types de colonne, et prend en charge des index illimités par table.


Systèmes d'exploitation pris en charge

PostgreSQL ™ a été testé avec succès sur tous les systèmes d’exploitation courants, y compris GNU / Linux, BSD, Solaris, HP-UX, AIX, SGI IRIX, Solaris, Tru64, Mac OS X et Microsoft Windows. PostgreSQL est disponible au téléchargement en tant qu'archive source universelle, ainsi que des packages binaires pré-compilés pour de nombreuses distributions Linux, prenant en charge les architectures 32 bits et 64 bits.

Nouveautés dans cette version:

  • Cette version corrige deux problèmes de sécurité. Cette version corrige également les problèmes rencontrés avec VACUUM, les index GIN & Hash, les requêtes parallèles, la réplication logique et d'autres bogues signalés au cours des trois derniers mois. Tous les utilisateurs utilisant les versions affectées de PostgreSQL devraient se mettre à jour dès que possible.

Nouveautés dans la version 10.4 / 11 Bêta 1:

  • Cette version corrige deux problèmes de sécurité. Cette version corrige également les problèmes rencontrés avec VACUUM, les index GIN & Hash, les requêtes parallèles, la réplication logique et d'autres bogues signalés au cours des trois derniers mois. Tous les utilisateurs utilisant les versions affectées de PostgreSQL devraient se mettre à jour dès que possible.

Nouveautés dans la version:

  • Restreindre la visibilité de pg_user_mappings.umoptions, pour protéger les mots de passe stockés en tant qu'options de mappage utilisateur (Noah Misch)
  • Le correctif pour CVE-2017-7486 était incorrect: il permettait à un utilisateur de voir les options dans son propre mappage utilisateur, même si elle ne disposait pas de l'autorisation USAGE sur le serveur étranger associé. Ces options peuvent inclure un mot de passe fourni par le propriétaire du serveur plutôt que par l'utilisateur lui-même. Comme information_schema.user_mapping_options ne montre pas les options dans de tels cas, pg_user_mappings ne devrait pas non plus. (CVE-2017-7547)
  • En soi, ce correctif ne corrigera que le comportement des nouvelles bases de données initdb. Si vous souhaitez appliquer cette modification à une base de données existante, vous devrez procéder comme suit:
  • Redémarrez le postmaster après avoir ajouté allow_system_table_mods = true à postgresql.conf. (Dans les versions prenant en charge ALTER SYSTEM, vous pouvez l'utiliser pour modifier la configuration, mais vous aurez toujours besoin d'un redémarrage.)
  • Dans chaque base de données du cluster, exécutez les commandes suivantes en tant que superutilisateur:
  • SET search_path = pg_catalog;
  • CRÉER OU REMPLACER VIEW pg_user_mappings AS
  • SELECT
  • U.oid AS umid,
  • S.oid AS srvid,
  • S.srvname AS srvname,
  • U.umuser AS umuser,
  • CAS QUAND U.umuser = 0 THEN
  • 'public'
  • ELSE
  • A.rolname
  • END AS name,
  • CAS QUAND (U.umuser 0 et A.rolname = current_user
  • ET (pg_has_role (S.srvowner, 'USAGE')
  • OU has_server_privilege (S.oid, 'USAGE')))
  • OU (U.umuser = 0 ET pg_has_role (S.srvowner, 'USAGE'))
  • OU (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
  • ALORS U.umoptions
  • ELSE NULL END AS umoptions
  • FROM pg_user_mapping U
  • LEFT JOIN pg_authid A (A.oid = U.umuser) JOIN
  • pg_foreign_server S ON (U.umserver = S.oid);
  • N'oubliez pas d'inclure les bases de données template0 et template1, ou la vulnérabilité existera toujours dans les bases de données que vous créerez ultérieurement. Pour corriger template0, vous devrez temporairement l'accepter. Dans PostgreSQL 9.5 et versions ultérieures, vous pouvez utiliser
  • ALTER DATABASE template0 AVEC ALLOW_CONNECTIONS true;
  • et après avoir corrigé template0, annulez cela avec
  • ALTER DATABASE template0 AVEC ALLOW_CONNECTIONS false;
  • Dans les versions précédentes, utilisez plutôt
  • UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
  • MISE À JOUR pg_database SET datallowconn = false WHERE datname = 'template0';
  • Enfin, supprimez le paramètre de configuration allow_system_table_mods, puis redémarrez le postmaster.
  • Interdire les mots de passe vides dans toutes les méthodes d’authentification par mot de passe (Heikki Linnakangas)
  • libpq ignore les spécifications de mot de passe vides et ne les transmet pas au serveur. Ainsi, si le mot de passe d'un utilisateur a été défini sur la chaîne vide, il est impossible de se connecter avec ce mot de passe via psql ou d'autres clients basés sur libpq. Un administrateur peut donc penser que la définition du mot de passe à vide équivaut à désactiver la connexion par mot de passe. Cependant, avec un client modifié ou non basé sur libpq, la connexion peut être possible, selon la méthode d'authentification configurée. En particulier, la méthode la plus courante, md5, acceptait les mots de passe vides. Changer le serveur pour rejeter les mots de passe vides dans tous les cas. (CVE-2017-7546)
  • Faites en sorte que lo_put () vérifie le privilège UPDATE sur le grand objet cible (Tom Lane, Michael Paquier)
  • lo_put () devrait sûrement nécessiter les mêmes autorisations que lowrite (), mais la vérification était manquante, permettant à tout utilisateur de modifier les données d'un objet volumineux. (CVE-2017-7548)
  • Corrigez la documentation sur le processus de mise à niveau des serveurs de secours avec pg_upgrade (Bruce Momjian)
  • La documentation précédente indiquait aux utilisateurs de démarrer / arrêter le serveur principal après avoir exécuté pg_upgrade, mais avant de synchroniser les serveurs de secours. Cette séquence est dangereuse.
  • Correction du verrouillage simultané des chaînes de mise à jour de tuple (Alvaro Herrera)
  • Si plusieurs sessions bloquent simultanément une chaîne de mise à jour de tuple avec des modes de verrouillage non conflictuels utilisant un ancien instantané, et qu'elles réussissent toutes, il est possible que certaines d'entre elles échouent (et concluent à l'absence de version de tuple) condition. Cela a eu des conséquences telles que les vérifications par clé étrangère ne permettant pas de voir un tuple qui existe définitivement mais qui est mis à jour simultanément.
  • Corrigez la corruption potentielle des données lors du gel d'un tuple dont le XMAX est un multixact avec exactement un membre encore intéressant (Teodor Sigaev)
  • Évitez le débordement d'entier et le crash qui en résulte lors du tri de plus d'un milliard de tuples en mémoire (Sergey Koposov)
  • Sous Windows, recommencez la création du processus si nous ne parvenons pas à réserver la plage d'adresses pour notre mémoire partagée dans le nouveau processus (Tom Lane, Amit Kapila)
  • On s'attend à ce que cela répare les échecs de lancement de processus enfant peu fréquents qui sont probablement dus aux interférences des produits antivirus.
  • Correction de la corruption à faible probabilité de la table de hachage partagée du prédicat-verrou dans les versions Windows (Thomas Munro, Tom Lane)
  • Évitez de journaliser la fermeture propre d'une connexion SSL comme s'il s'agissait d'une réinitialisation de la connexion (Michael Paquier)
  • Empêcher l'envoi de tickets de session SSL aux clients (Tom Lane)
  • Cette correction empêche les échecs de reconnexion avec un code SSL côté client sensible aux tickets.
  • Correction du code pour définir tcp_keepalives_idle sur Solaris (Tom Lane)
  • Fixer le collecteur de statistiques pour honorer les messages d’enquête émis juste après un arrêt postmaster et un redémarrage immédiat (Tom Lane)
  • Les requêtes de statistiques publiées moins d’une demi-seconde après la fermeture du postmaster précédent ont été ignorées.
  • Assurez-vous que la taille du tampon de réception du collecteur de statistiques est d'au moins 100 Ko (Tom Lane)
  • Cela réduit le risque de perte de données statistiques sur les anciennes plates-formes dont la taille du tampon de réception par défaut est inférieure à celle-ci.
  • Corrige la création possible d’un segment WAL invalide quand un standby est promu juste après avoir traité un enregistrement WAL XLOG_SWITCH (Andres Freund)
  • Fixez walsender pour quitter rapidement lorsque le client demande l’arrêt (Tom Lane)
  • Correction de la gestion de SIGHUP et SIGUSR1 dans les processus walsender (Petr Jelinek, Andres Freund)
  • Empêchez les paniques déclenchées par les walsender lors des checkpoints d’arrêt (Andres Freund, Michael Paquier)
  • Corrige les redémarrages inutilement lents des processus walreceiver en raison de la condition de concurrence dans le postmaster (Tom Lane)
  • Corrige la fuite des petites sous-transactions déversées sur le disque lors du décodage logique (Andres Freund)
  • Cela a entraîné des fichiers temporaires consommant un espace disque excessif.
  • Réduisez le travail nécessaire pour créer des instantanés lors de la création de logements logiques (Andres Freund, Petr Jelinek)
  • L’algorithme précédent était incroyablement cher sur un serveur avec beaucoup de transactions ouvertes.
  • Correction de la condition de course qui pourrait retarder indéfiniment la création des emplacements de décodage logique (Andres Freund, Petr Jelinek)
  • Réduire le temps système lors du traitement des événements d’invalidation de syscache (Tom Lane)
  • Ceci est particulièrement utile pour le décodage logique, qui déclenche l’invalidation fréquente du cache.
  • Supprimez l'heuristique incorrecte utilisée dans certains cas pour estimer la sélectivité de la jointure en fonction de la présence de contraintes de clé étrangère (David Rowley)
  • Dans certains cas où une contrainte de clé étrangère multi-colonne existait mais ne correspondait pas exactement à la structure de jointure d'une requête, le planificateur utilisait une heuristique d'estimation qui ne fonctionnait pas du tout. Remettez ces cas à la manière dont ils avaient été estimés avant 9.6.
  • Corrige les cas où INSERT ou UPDATE assigne plus d’un élément d’une colonne de type domaine sur tableau (Tom Lane)
  • Autorise l’utilisation des fonctions de fenêtre dans les sous-SELECT qui se trouvent dans les arguments d’une fonction d’agrégat (Tom Lane)
  • Assurez-vous que la clause CHECK OPTIONS d'une vue est correctement appliquée lorsque la table sous-jacente est une table étrangère (Etsuro Fujita)
  • Auparavant, la mise à jour pouvait être entièrement transmise au serveur étranger, mais la nécessité de vérifier les conditions d'affichage était manquante, le cas échéant.
  • Déplacez les types de tableaux générés automatiquement lors de ALTER ... RENAME (Vik Fearing)
  • Auparavant, nous avions renommé un type de tableau généré automatiquement en conflit lors de CREATE; ce correctif étend ce comportement aux opérations de changement de nom.
  • Corrige le pointeur dans ALTER TABLE quand il y a un commentaire sur une contrainte appartenant à la table (David Rowley)
  • La réapplication du commentaire à la contrainte reconstruite pourrait échouer avec un message d'erreur étrange, voire un crash.
  • Assurez-vous que ALTER USER ... SET accepte toutes les variantes de syntaxe ALTER ROLE ... SET (Peter Eisentraut)
  • Permettre initialement que les contraintes CHECK d'une table étrangère ne soient PAS VALIDES (Amit Langote)
  • CREATE TABLE supprime en silence les spécificateurs NON VALID pour les contraintes CHECK, en supposant que la table doit être vide pour que la contrainte puisse être validée immédiatement. Mais c'est faux pour CREATE FOREIGN TABLE, où il n'y a aucune raison de supposer que la table sous-jacente est vide, et même si ce n'est pas à nous de décider que la contrainte peut être considérée comme valide pour l'avenir. Ignorez cette "optimisation" pour les tables étrangères.
  • Mettez à jour correctement les informations de dépendance lorsque vous modifiez l'argument ou le type de retour d'une fonction de type d'E / S de type de données de opaque au type correct (Heikki Linnakangas)
  • CREATE TYPE met à jour les fonctions d'E / S déclarées dans ce style obsolète depuis longtemps, mais il a oublié d'enregistrer une dépendance sur le type, permettant à un DROP TYPE ultérieur de laisser des définitions de fonctions cassées.
  • Autorise le parallélisme dans le plan de requête lorsque COPY copie à partir du résultat d'une requête (Andres Freund)
  • Réduire l’utilisation de la mémoire lorsque ANALYZE traite une colonne tsvector (Heikki Linnakangas)
  • Corrige les pertes de précision inutiles et les arrondis imprécis lors de la multiplication ou de la division des valeurs monétaires par des entiers ou des flottants (Tom Lane)
  • Resserrer les vérifications des espaces dans les fonctions qui analysent les identificateurs, telles que regprocedurein () (Tom Lane)
  • Selon les paramètres régionaux en vigueur, ces fonctions peuvent mal interpréter des fragments de caractères multi-octets comme des espaces.
  • Utilisez les symboles #define pertinents de Perl lors de la compilation de PL / Perl (Ashutosh Sharma, Tom Lane)
  • Cela évite les problèmes de portabilité, se manifestant généralement par une "poignée de main" incompatibilité lors du chargement de la bibliothèque, lorsque vous travaillez avec des versions récentes de Perl.
  • Dans libpq, réinitialisez correctement l’état d’authentification GSS / SASL et SSPI après une tentative de connexion infructueuse (Michael Paquier)
  • Si vous ne le faites pas, cela signifie qu'en cas de repli de SSL vers des connexions non-SSL, une défaillance GSS / SASL dans la tentative SSL provoquerait toujours l'échec de la tentative non-SSL. SSPI n'a pas échoué, mais il y avait une fuite de mémoire.
  • Dans psql, corrigez l'échec lorsque COPY FROM STDIN se termine par un signal EOF du clavier et qu'une autre copie COPY FROM STDIN est tentée (Thomas Munro)
  • Ce mauvais comportement a été observé sur les plates-formes dérivées de BSD (y compris macOS), mais pas sur la plupart des autres.
  • Fixez pg_dump et pg_restore pour émettre les commandes REFRESH MATERIALIZED VIEW en dernier (Tom Lane)
  • Cela évite les erreurs lors de la sauvegarde / restauration lorsqu'un affichage matérialisé fait référence à des tables appartenant à un utilisateur différent.
  • Améliorez le rapport de pg_dump / pg_restore sur les conditions d'erreur provenant de zlib (Vladimir Kunschikov, Alvaro Herrera)
  • Fixez pg_dump avec l'option --clean pour supprimer les déclencheurs d'événement comme prévu (Tom Lane)
  • Il attribue désormais correctement la propriété des déclencheurs d'événement. avant, ils ont été restaurés comme appartenant au super-utilisateur exécutant le script de restauration.
  • Fixez pg_dump avec l'option --clean pour ne pas échouer lorsque le schéma public n'existe pas (Stephen Frost)
  • Correction de pg_dump pour ne pas émettre de code SQL invalide pour une classe d'opérateur vide (Daniel Gustafsson)
  • Correction de la sortie de pg_dump sur stdout sous Windows (Kuntal Ghosh)
  • Un vidage de texte brut compressé écrit sur stdout contiendrait des données corrompues en raison de l’impossibilité de placer le descripteur de fichier en mode binaire.
  • Fixez pg_get_ruledef () pour imprimer la sortie correcte de la règle ON SELECT d’une vue dont les colonnes ont été renommées (Tom Lane)
  • Dans certains cas, pg_dump s'appuie sur pg_get_ruledef () pour vider les vues, de sorte que cette erreur puisse entraîner des échecs de vidage / rechargement.
  • Correction de la sauvegarde des jointures externes avec des contraintes vides, comme le résultat d’une jointure NATURAL LEFT sans colonnes communes (Tom Lane)
  • Correction du dumping des expressions de fonction dans la clause FROM dans les cas où l'expression ne se divise pas en quelque chose qui ressemble à un appel de fonction (Tom Lane)
  • Correction de la sortie de pg_basebackup sur stdout sous Windows (Haribabu Kommi)
  • Une sauvegarde écrite sur stdout contiendrait des données corrompues en raison de l’impossibilité de placer le descripteur de fichier en mode binaire.
  • Corrigez pg_rewind pour gérer correctement les fichiers dépassant 2 Go (Kuntal Ghosh, Michael Paquier)
  • D'ordinaire, ces fichiers n'apparaissent pas dans les répertoires de données PostgreSQL, mais ils peuvent être présents dans certains cas.
  • Corrigez pg_upgrade pour vous assurer que l’enregistrement final WAL n’a pas wal_level = minimum (Bruce Momjian)
  • Cette condition pourrait empêcher les serveurs de secours mis à niveau de se reconnecter.
  • Corrige le calcul de pg_xlogdump de la longueur de l'enregistrement WAL (Andres Freund)
  • Dans postgres_fdw, rétablissez les connexions aux serveurs distants après les commandes ALTER SERVER ou ALTER USER MAPPING (Kyotaro Horiguchi)
  • Cela garantit que les modifications d’option affectant les paramètres de connexion seront appliquées rapidement.
  • Dans postgres_fdw, permet l’annulation des commandes de contrôle des transactions à distance (Robert Haas, Rafia Sabih)
  • Cette modification nous permet d’échapper rapidement à l’attente d’un serveur distant qui ne répond plus dans bien des cas que par le passé.
  • Augmentez MAX_SYSCACHE_CALLBACKS pour laisser plus de place aux extensions (Tom Lane)
  • Utilisez toujours -fPIC, pas -fpic, lors de la création de bibliothèques partagées avec gcc (Tom Lane)
  • Ceci prend en charge les bibliothèques d’extension plus grandes sur les plates-formes où cela fait une différence.
  • Dans les versions MSVC, gérez le cas où la bibliothèque openssl ne se trouve pas dans un sous-répertoire VC (Andrew Dunstan)
  • Dans les versions MSVC, ajoutez le chemin d’inclusion approprié pour les fichiers d’en-tête libxml2 (Andrew Dunstan)
  • Ceci corrige un ancien besoin de déplacer des choses dans les installations Windows standard de libxml2.
  • Dans les versions MSVC, identifiez une bibliothèque Tcl nommée tcl86.lib (Noah Misch)
  • Dans les versions MSVC, respectez les paramètres PROVE_FLAGS sur la ligne de commande de vcregress.pl (Andrew Dunstan)

Nouveautés dans la version 9.6.4:

  • Restreindre la visibilité de pg_user_mappings.umoptions, pour protéger les mots de passe stockés en tant qu'options de mappage utilisateur (Noah Misch)
  • Le correctif pour CVE-2017-7486 était incorrect: il permettait à un utilisateur de voir les options dans son propre mappage utilisateur, même si elle ne disposait pas de l'autorisation USAGE sur le serveur étranger associé. Ces options peuvent inclure un mot de passe fourni par le propriétaire du serveur plutôt que par l'utilisateur lui-même. Comme information_schema.user_mapping_options ne montre pas les options dans de tels cas, pg_user_mappings ne devrait pas non plus. (CVE-2017-7547)
  • En soi, ce correctif ne corrigera que le comportement des nouvelles bases de données initdb. Si vous souhaitez appliquer cette modification à une base de données existante, vous devrez procéder comme suit:
  • Redémarrez le postmaster après avoir ajouté allow_system_table_mods = true à postgresql.conf. (Dans les versions prenant en charge ALTER SYSTEM, vous pouvez l'utiliser pour modifier la configuration, mais vous aurez toujours besoin d'un redémarrage.)
  • Dans chaque base de données du cluster, exécutez les commandes suivantes en tant que superutilisateur:
  • SET search_path = pg_catalog;
  • CRÉER OU REMPLACER VIEW pg_user_mappings AS
  • SELECT
  • U.oid AS umid,
  • S.oid AS srvid,
  • S.srvname AS srvname,
  • U.umuser AS umuser,
  • CAS QUAND U.umuser = 0 THEN
  • 'public'
  • ELSE
  • A.rolname
  • END AS name,
  • CAS QUAND (U.umuser 0 et A.rolname = current_user
  • ET (pg_has_role (S.srvowner, 'USAGE')
  • OU has_server_privilege (S.oid, 'USAGE')))
  • OU (U.umuser = 0 ET pg_has_role (S.srvowner, 'USAGE'))
  • OU (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
  • ALORS U.umoptions
  • ELSE NULL END AS umoptions
  • FROM pg_user_mapping U
  • LEFT JOIN pg_authid A (A.oid = U.umuser) JOIN
  • pg_foreign_server S ON (U.umserver = S.oid);
  • N'oubliez pas d'inclure les bases de données template0 et template1, ou la vulnérabilité existera toujours dans les bases de données que vous créerez ultérieurement. Pour corriger template0, vous devrez temporairement l'accepter. Dans PostgreSQL 9.5 et versions ultérieures, vous pouvez utiliser
  • ALTER DATABASE template0 AVEC ALLOW_CONNECTIONS true;
  • et après avoir corrigé template0, annulez cela avec
  • ALTER DATABASE template0 AVEC ALLOW_CONNECTIONS false;
  • Dans les versions précédentes, utilisez plutôt
  • UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
  • MISE À JOUR pg_database SET datallowconn = false WHERE datname = 'template0';
  • Enfin, supprimez le paramètre de configuration allow_system_table_mods, puis redémarrez le postmaster.
  • Interdire les mots de passe vides dans toutes les méthodes d’authentification par mot de passe (Heikki Linnakangas)
  • libpq ignore les spécifications de mot de passe vides et ne les transmet pas au serveur. Ainsi, si le mot de passe d'un utilisateur a été défini sur la chaîne vide, il est impossible de se connecter avec ce mot de passe via psql ou d'autres clients basés sur libpq. Un administrateur peut donc penser que la définition du mot de passe à vide équivaut à désactiver la connexion par mot de passe. Cependant, avec un client modifié ou non basé sur libpq, la connexion peut être possible, selon la méthode d'authentification configurée. En particulier, la méthode la plus courante, md5, acceptait les mots de passe vides. Changer le serveur pour rejeter les mots de passe vides dans tous les cas. (CVE-2017-7546)
  • Faites en sorte que lo_put () vérifie le privilège UPDATE sur le grand objet cible (Tom Lane, Michael Paquier)
  • lo_put () devrait sûrement nécessiter les mêmes autorisations que lowrite (), mais la vérification était manquante, permettant à tout utilisateur de modifier les données d'un objet volumineux. (CVE-2017-7548)
  • Corrigez la documentation sur le processus de mise à niveau des serveurs de secours avec pg_upgrade (Bruce Momjian)
  • La documentation précédente indiquait aux utilisateurs de démarrer / arrêter le serveur principal après avoir exécuté pg_upgrade, mais avant de synchroniser les serveurs de secours. Cette séquence est dangereuse.
  • Correction du verrouillage simultané des chaînes de mise à jour de tuple (Alvaro Herrera)
  • Si plusieurs sessions bloquent simultanément une chaîne de mise à jour de tuple avec des modes de verrouillage non conflictuels utilisant un ancien instantané, et qu'elles réussissent toutes, il est possible que certaines d'entre elles échouent (et concluent à l'absence de version de tuple) condition. Cela a eu des conséquences telles que les vérifications par clé étrangère ne permettant pas de voir un tuple qui existe définitivement mais qui est mis à jour simultanément.
  • Corrigez la corruption potentielle des données lors du gel d'un tuple dont le XMAX est un multixact avec exactement un membre encore intéressant (Teodor Sigaev)
  • Évitez le débordement d'entier et le crash qui en résulte lors du tri de plus d'un milliard de tuples en mémoire (Sergey Koposov)
  • Sous Windows, recommencez la création du processus si nous ne parvenons pas à réserver la plage d'adresses pour notre mémoire partagée dans le nouveau processus (Tom Lane, Amit Kapila)
  • On s'attend à ce que cela répare les échecs de lancement de processus enfant peu fréquents qui sont probablement dus aux interférences des produits antivirus.
  • Correction de la corruption à faible probabilité de la table de hachage partagée du prédicat-verrou dans les versions Windows (Thomas Munro, Tom Lane)
  • Évitez de journaliser la fermeture propre d'une connexion SSL comme s'il s'agissait d'une réinitialisation de la connexion (Michael Paquier)
  • Empêcher l'envoi de tickets de session SSL aux clients (Tom Lane)
  • Cette correction empêche les échecs de reconnexion avec un code SSL côté client sensible aux tickets.
  • Correction du code pour définir tcp_keepalives_idle sur Solaris (Tom Lane)
  • Fixer le collecteur de statistiques pour honorer les messages d’enquête émis juste après un arrêt postmaster et un redémarrage immédiat (Tom Lane)
  • Les requêtes de statistiques publiées moins d’une demi-seconde après la fermeture du postmaster précédent ont été ignorées.
  • Assurez-vous que la taille du tampon de réception du collecteur de statistiques est d'au moins 100 Ko (Tom Lane)
  • Cela réduit le risque de perte de données statistiques sur les anciennes plates-formes dont la taille du tampon de réception par défaut est inférieure à celle-ci.
  • Corrige la création possible d’un segment WAL invalide quand un standby est promu juste après avoir traité un enregistrement WAL XLOG_SWITCH (Andres Freund)
  • Fixez walsender pour quitter rapidement lorsque le client demande l’arrêt (Tom Lane)
  • Correction de la gestion de SIGHUP et SIGUSR1 dans les processus walsender (Petr Jelinek, Andres Freund)
  • Empêchez les paniques déclenchées par les walsender lors des checkpoints d’arrêt (Andres Freund, Michael Paquier)
  • Corrige les redémarrages inutilement lents des processus walreceiver en raison de la condition de concurrence dans le postmaster (Tom Lane)
  • Corrige la fuite des petites sous-transactions déversées sur le disque lors du décodage logique (Andres Freund)
  • Cela a entraîné des fichiers temporaires consommant un espace disque excessif.
  • Réduisez le travail nécessaire pour créer des instantanés lors de la création de logements logiques (Andres Freund, Petr Jelinek)
  • L’algorithme précédent était incroyablement cher sur un serveur avec beaucoup de transactions ouvertes.
  • Correction de la condition de course qui pourrait retarder indéfiniment la création des emplacements de décodage logique (Andres Freund, Petr Jelinek)
  • Réduire le temps système lors du traitement des événements d’invalidation de syscache (Tom Lane)
  • Ceci est particulièrement utile pour le décodage logique, qui déclenche l’invalidation fréquente du cache.
  • Supprimez l'heuristique incorrecte utilisée dans certains cas pour estimer la sélectivité de la jointure en fonction de la présence de contraintes de clé étrangère (David Rowley)
  • Dans certains cas où une contrainte de clé étrangère multi-colonne existait mais ne correspondait pas exactement à la structure de jointure d'une requête, le planificateur utilisait une heuristique d'estimation qui ne fonctionnait pas du tout. Remettez ces cas à la manière dont ils avaient été estimés avant 9.6.
  • Corrige les cas où INSERT ou UPDATE assigne plus d’un élément d’une colonne de type domaine sur tableau (Tom Lane)
  • Autorise l’utilisation des fonctions de fenêtre dans les sous-SELECT qui se trouvent dans les arguments d’une fonction d’agrégat (Tom Lane)
  • Assurez-vous que la clause CHECK OPTIONS d'une vue est correctement appliquée lorsque la table sous-jacente est une table étrangère (Etsuro Fujita)
  • Auparavant, la mise à jour pouvait être entièrement transmise au serveur étranger, mais la nécessité de vérifier les conditions d'affichage était manquante, le cas échéant.
  • Déplacez les types de tableaux générés automatiquement lors de ALTER ... RENAME (Vik Fearing)
  • Auparavant, nous avions renommé un type de tableau généré automatiquement en conflit lors de CREATE; ce correctif étend ce comportement aux opérations de changement de nom.
  • Corrige le pointeur dans ALTER TABLE quand il y a un commentaire sur une contrainte appartenant à la table (David Rowley)
  • La réapplication du commentaire à la contrainte reconstruite pourrait échouer avec un message d'erreur étrange, voire un crash.
  • Assurez-vous que ALTER USER ... SET accepte toutes les variantes de syntaxe ALTER ROLE ... SET (Peter Eisentraut)
  • Permettre initialement que les contraintes CHECK d'une table étrangère ne soient PAS VALIDES (Amit Langote)
  • CREATE TABLE supprime en silence les spécificateurs NON VALID pour les contraintes CHECK, en supposant que la table doit être vide pour que la contrainte puisse être validée immédiatement. Mais c'est faux pour CREATE FOREIGN TABLE, où il n'y a aucune raison de supposer que la table sous-jacente est vide, et même si ce n'est pas à nous de décider que la contrainte peut être considérée comme valide pour l'avenir. Ignorez cette "optimisation" pour les tables étrangères.
  • Mettez à jour correctement les informations de dépendance lorsque vous modifiez l'argument ou le type de retour d'une fonction de type d'E / S de type de données de opaque au type correct (Heikki Linnakangas)
  • CREATE TYPE met à jour les fonctions d'E / S déclarées dans ce style obsolète depuis longtemps, mais il a oublié d'enregistrer une dépendance sur le type, permettant à un DROP TYPE ultérieur de laisser des définitions de fonctions cassées.
  • Autorise le parallélisme dans le plan de requête lorsque COPY copie à partir du résultat d'une requête (Andres Freund)
  • Réduire l’utilisation de la mémoire lorsque ANALYZE traite une colonne tsvector (Heikki Linnakangas)
  • Corrige les pertes de précision inutiles et les arrondis imprécis lors de la multiplication ou de la division des valeurs monétaires par des entiers ou des flottants (Tom Lane)
  • Resserrer les vérifications des espaces dans les fonctions qui analysent les identificateurs, telles que regprocedurein () (Tom Lane)
  • Selon les paramètres régionaux en vigueur, ces fonctions peuvent mal interpréter des fragments de caractères multi-octets comme des espaces.
  • Utilisez les symboles #define pertinents de Perl lors de la compilation de PL / Perl (Ashutosh Sharma, Tom Lane)
  • Cela évite les problèmes de portabilité, se manifestant généralement par une incompatibilité de "poignée de main" lors du chargement de la bibliothèque, lorsque vous travaillez avec des versions récentes de Perl.
  • Dans libpq, réinitialisez correctement l’état d’authentification GSS / SASL et SSPI après une tentative de connexion infructueuse (Michael Paquier)
  • Si vous ne le faites pas, cela signifie qu'en cas de repli de SSL vers des connexions non-SSL, une défaillance GSS / SASL dans la tentative SSL provoquerait toujours l'échec de la tentative non-SSL. SSPI n'a pas échoué, mais il y avait une fuite de mémoire.
  • Dans psql, corrigez l'échec lorsque COPY FROM STDIN se termine par un signal EOF du clavier et qu'une autre copie COPY FROM STDIN est tentée (Thomas Munro)
  • Ce mauvais comportement a été observé sur les plates-formes dérivées de BSD (y compris macOS), mais pas sur la plupart des autres.
  • Fixez pg_dump et pg_restore pour émettre les commandes REFRESH MATERIALIZED VIEW en dernier (Tom Lane)
  • Cela évite les erreurs lors de la sauvegarde / restauration lorsqu'un affichage matérialisé fait référence à des tables appartenant à un utilisateur différent.
  • Améliorez le rapport de pg_dump / pg_restore sur les conditions d'erreur provenant de zlib (Vladimir Kunschikov, Alvaro Herrera)
  • Fixez pg_dump avec l'option --clean pour supprimer les déclencheurs d'événement comme prévu (Tom Lane)
  • Il attribue désormais correctement la propriété des déclencheurs d'événement. avant, ils ont été restaurés comme appartenant au super-utilisateur exécutant le script de restauration.
  • Fixez pg_dump avec l'option --clean pour ne pas échouer lorsque le schéma public n'existe pas (Stephen Frost)
  • Correction de pg_dump pour ne pas émettre de code SQL invalide pour une classe d'opérateur vide (Daniel Gustafsson)
  • Correction de la sortie de pg_dump sur stdout sous Windows (Kuntal Ghosh)
  • Un vidage de texte brut compressé écrit sur stdout contiendrait des données corrompues en raison de l’impossibilité de placer le descripteur de fichier en mode binaire.
  • Fixez pg_get_ruledef () pour imprimer la sortie correcte de la règle ON SELECT d’une vue dont les colonnes ont été renommées (Tom Lane)
  • Dans certains cas, pg_dump s'appuie sur pg_get_ruledef () pour vider les vues, de sorte que cette erreur puisse entraîner des échecs de vidage / rechargement.
  • Correction de la sauvegarde des jointures externes avec des contraintes vides, comme le résultat d’une jointure NATURAL LEFT sans colonnes communes (Tom Lane)
  • Correction du dumping des expressions de fonction dans la clause FROM dans les cas où l'expression ne se divise pas en quelque chose qui ressemble à un appel de fonction (Tom Lane)
  • Correction de la sortie de pg_basebackup sur stdout sous Windows (Haribabu Kommi)
  • Une sauvegarde écrite sur stdout contiendrait des données corrompues en raison de l’impossibilité de placer le descripteur de fichier en mode binaire.
  • Corrigez pg_rewind pour gérer correctement les fichiers dépassant 2 Go (Kuntal Ghosh, Michael Paquier)
  • D'ordinaire, ces fichiers n'apparaissent pas dans les répertoires de données PostgreSQL, mais ils peuvent être présents dans certains cas.
  • Corrigez pg_upgrade pour vous assurer que l’enregistrement final WAL n’a pas wal_level = minimum (Bruce Momjian)
  • Cette condition pourrait empêcher les serveurs de secours mis à niveau de se reconnecter.
  • Corrige le calcul de pg_xlogdump de la longueur de l'enregistrement WAL (Andres Freund)
  • Dans postgres_fdw, rétablissez les connexions aux serveurs distants après les commandes ALTER SERVER ou ALTER USER MAPPING (Kyotaro Horiguchi)
  • Cela garantit que les modifications d’option affectant les paramètres de connexion seront appliquées rapidement.
  • Dans postgres_fdw, permet l’annulation des commandes de contrôle des transactions à distance (Robert Haas, Rafia Sabih)
  • Cette modification nous permet d’échapper rapidement à l’attente d’un serveur distant qui ne répond plus dans bien des cas que par le passé.
  • Augmentez MAX_SYSCACHE_CALLBACKS pour laisser plus de place aux extensions (Tom Lane)
  • Utilisez toujours -fPIC, pas -fpic, lors de la création de bibliothèques partagées avec gcc (Tom Lane)
  • Ceci prend en charge les bibliothèques d’extension plus grandes sur les plates-formes où cela fait une différence.
  • Dans les versions MSVC, gérez le cas où la bibliothèque openssl ne se trouve pas dans un sous-répertoire VC (Andrew Dunstan)
  • Dans les versions MSVC, ajoutez le chemin d’inclusion approprié pour les fichiers d’en-tête libxml2 (Andrew Dunstan)
  • Ceci corrige un ancien besoin de déplacer des choses dans les installations Windows standard de libxml2.
  • Dans les versions MSVC, identifiez une bibliothèque Tcl nommée tcl86.lib (Noah Misch)
  • Dans les versions MSVC, respectez les paramètres PROVE_FLAGS sur la ligne de commande de vcregress.pl (Andrew Dunstan)

Logiciel similaire

PostGIS
PostGIS

19 Feb 15

SmallSQL
SmallSQL

12 May 15

SQLite
SQLite

22 Jun 18

Commentaires à PostgreSQL

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!