documentation postgresql 12 · 11.2. types d'index ..... 327

2162
Documentation PostgreSQL 12.3 The PostgreSQL Global Development Group

Upload: others

Post on 16-May-2020

27 views

Category:

Documents


0 download

TRANSCRIPT

  • Documentation PostgreSQL 12.3

    The PostgreSQL Global Development Group

  • Documentation PostgreSQL 12.3The PostgreSQL Global Development GroupCopyright © 1996-2020 The PostgreSQL Global Development Group

    Legal Notice

    PostgreSQL™ is Copyright (c) 1996-2020 by the PostgreSQL Global Development Group.

    Postgres95™ is Copyright (c) 1994-5 by the Regents of the University of California.

    Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby gran-ted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.

    IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, ORCONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVENIF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WAR-RANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN « AS-IS »BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,OR MODIFICATIONS.

  • Préface ......................................................................................................................................................... xx1. Définition de PostgreSQL™ ................................................................................................................... xx2. Bref historique de PostgreSQL™ ............................................................................................................. xx3. Conventions ...................................................................................................................................... xxii4. Pour plus d'informations ....................................................................................................................... xxii5. Lignes de conduite pour les rapports de bogues ........................................................................................ xxii

    I. Tutoriel ...................................................................................................................................................... 11. Démarrage ............................................................................................................................................ 2

    1.1. Installation ................................................................................................................................... 21.2. Concepts architecturaux de base ....................................................................................................... 21.3. Création d'une base de données ........................................................................................................ 21.4. Accéder à une base ........................................................................................................................ 4

    2. Le langage SQL .................................................................................................................................... 52.1. Introduction ................................................................................................................................. 52.2. Concepts ..................................................................................................................................... 52.3. Créer une nouvelle table ................................................................................................................. 52.4. Remplir une table avec des lignes ..................................................................................................... 62.5. Interroger une table ........................................................................................................................ 62.6. Jointures entre les tables ................................................................................................................. 82.7. Fonctions d'agrégat ........................................................................................................................ 92.8. Mises à jour ................................................................................................................................ 112.9. Suppressions ............................................................................................................................... 11

    3. Fonctionnalités avancées ........................................................................................................................ 123.1. Introduction ................................................................................................................................ 123.2. Vues .......................................................................................................................................... 123.3. Clés étrangères ............................................................................................................................ 123.4. Transactions ................................................................................................................................ 133.5. Fonctions de fenêtrage .................................................................................................................. 143.6. Héritage ........................................................................................................................................3.7. Conclusion .................................................................................................................................. 18

    II. Langage SQL ............................................................................................................................................ 194. Syntaxe SQL ....................................................................................................................................... 20

    4.1. Structure lexicale ......................................................................................................................... 204.2. Expressions de valeurs .................................................................................................................. 274.3. Fonctions appelantes ..................................................................................................................... 38

    5. Définition des données ........................................................................................................................... 415.1. Notions fondamentales sur les tables ................................................................................................ 415.2. Valeurs par défaut ........................................................................................................................ 425.3. Colonnes générées ........................................................................................................................ 425.4. Contraintes ................................................................................................................................. 435.5. Colonnes système ......................................................................................................................... 495.6. Modification des tables .................................................................................................................. 505.7. Droits ......................................................................................................................................... 535.8. Row Security Policies ................................................................................................................... 565.9. Schémas ..................................................................................................................................... 615.10. L'héritage .....................................................................................................................................5.11. Partitionnement de tables ............................................................................................................. 675.12. Données distantes ....................................................................................................................... 785.13. Autres objets de la base de données ................................................................................................ 795.14. Gestion des dépendances .............................................................................................................. 79

    6. Manipulation de données ........................................................................................................................ 816.1. Insérer des données ....................................................................................................................... 816.2. Actualiser les données ................................................................................................................... 826.3. Supprimer des données .................................................................................................................. 826.4. Renvoyer des données provenant de lignes modifiées .......................................................................... 83

    7. Requêtes ............................................................................................................................................. 847.1. Aperçu ....................................................................................................................................... 847.2. Expressions de table ..................................................................................................................... 847.3. Listes de sélection ........................................................................................................................ 967.4. Combiner des requêtes .................................................................................................................. 977.5. Tri des lignes ............................................................................................................................... 977.6. LIMIT et OFFSET ....................................................................................................................... 98

    iii

  • 7.7. Listes VALUES ............................................................................................................................ 997.8. Requêtes WITH (Common Table Expressions) ................................................................................. 100

    8. Types de données ............................................................................................................................... 1058.1. Types numériques ...................................................................................................................... 1068.2. Types monétaires ....................................................................................................................... 1108.3. Types caractère .......................................................................................................................... 1108.4. Types de données binaires ............................................................................................................ 1128.5. Types date/heure ........................................................................................................................ 1148.6. Type booléen ............................................................................................................................. 1228.7. Types énumération ..................................................................................................................... 1238.8. Types géométriques .................................................................................................................... 1248.9. Types adresses réseau ................................................................................................................. 1268.10. Type chaîne de bits ................................................................................................................... 1288.11. Types de recherche plein texte .................................................................................................... 1298.12. Type UUID ............................................................................................................................. 1318.13. Type XML .............................................................................................................................. 1328.14. Types JSON ............................................................................................................................ 1348.15. Tableaux ................................................................................................................................. 1418.16. Types composites ..................................................................................................................... 1498.17. Types intervalle de valeurs ......................................................................................................... 1548.18. Types domaine ......................................................................................................................... 1588.19. Types identifiant d'objet ............................................................................................................. 1598.20. pg_lsn Type ............................................................................................................................. 1608.21. Pseudo-Types .......................................................................................................................... 160

    9. Fonctions et opérateurs ........................................................................................................................ 1629.1. Opérateurs logiques .................................................................................................................... 1629.2. Fonctions et opérateurs de comparaison .......................................................................................... 1629.3. Fonctions et opérateurs mathématiques ........................................................................................... 1649.4. Fonctions et opérateurs de chaînes ................................................................................................. 1689.5. Fonctions et opérateurs de chaînes binaires ...................................................................................... 1799.6. Fonctions et opérateurs sur les chaînes de bits .................................................................................. 1819.7. Correspondance de motif ............................................................................................................. 1829.8. Fonctions de formatage des types de données .................................................................................. 1969.9. Fonctions et opérateurs sur date/heure ............................................................................................ 2039.10. Fonctions de support enum ......................................................................................................... 2139.11. Fonctions et opérateurs géométriques ........................................................................................... 2149.12. Fonctions et opérateurs sur les adresses réseau ............................................................................... 2179.13. Fonctions et opérateurs de la recherche plein texte .......................................................................... 2199.14. Fonctions XML ........................................................................................................................ 2259.15. Fonctions et opérateurs JSON ..................................................................................................... 2369.16. Fonctions de manipulation de séquences ....................................................................................... 2509.17. Expressions conditionnelles ........................................................................................................ 2529.18. Fonctions et opérateurs de tableaux .............................................................................................. 2549.19. Fonctions et opérateurs sur les données de type range ...................................................................... 2579.20. Fonctions d'agrégat ................................................................................................................... 2599.21. Fonctions Window .................................................................................................................... 2689.22. Expressions de sous-requêtes ...................................................................................................... 2709.23. Comparaisons de lignes et de tableaux .......................................................................................... 2729.24. Fonctions retournant des ensembles ............................................................................................. 2759.25. Fonctions et opérateurs d'informations système .............................................................................. 2779.26. Fonctions d'administration système .............................................................................................. 2929.27. Fonctions trigger ...................................................................................................................... 3129.28. Fonctions des triggers sur les événements ...................................................................................... 3139.29. Fonctions d'information sur les statistiques .................................................................................... 315

    10. Conversion de types .......................................................................................................................... 31610.1. Aperçu ................................................................................................................................... 31610.2. Opérateurs ............................................................................................................................... 31710.3. Fonctions ................................................................................................................................ 32010.4. Stockage de valeurs ................................................................................................................... 32310.5. Constructions UNION, CASE et constructions relatives .................................................................... 32410.6. Colonnes de sortie du SELECT ................................................................................................... 325

    11. Index .............................................................................................................................................. 32711.1. Introduction ............................................................................................................................. 327

    Documentation PostgreSQL 12.3

    iv

  • 11.2. Types d'index ........................................................................................................................... 32711.3. Index multicolonnes .................................................................................................................. 32911.4. Index et ORDER BY .................................................................................................................. 33011.5. Combiner des index multiples ..................................................................................................... 33111.6. Index d'unicité ......................................................................................................................... 33111.7. Index d'expressions ................................................................................................................... 33211.8. Index partiels ........................................................................................................................... 33211.9. Parcours d'index seul et index couvrants ........................................................................................ 33511.10. Classes et familles d'opérateurs .................................................................................................. 33711.11. Index et collationnements ......................................................................................................... 33811.12. Examiner l'utilisation des index ................................................................................................. 338

    12. Recherche plein texte ......................................................................................................................... 34012.1. Introduction ............................................................................................................................. 34012.2. Tables et index ......................................................................................................................... 34312.3. Contrôler la recherche plein texte ................................................................................................. 34512.4. Fonctionnalités supplémentaires .................................................................................................. 35112.5. Analyseurs .............................................................................................................................. 35512.6. Dictionnaires ........................................................................................................................... 35712.7. Exemple de configuration ........................................................................................................... 36512.8. Tester et déboguer la recherche plein texte ..................................................................................... 36612.9. Types d'index GiST et GIN ........................................................................................................ 36912.10. Support de psql ....................................................................................................................... 37012.11. Limites ................................................................................................................................. 373

    13. Contrôle d'accès simultané .................................................................................................................. 37413.1. Introduction ............................................................................................................................. 37413.2. Isolation des transactions ........................................................................................................... 37413.3. Verrouillage explicite ................................................................................................................ 37913.4. Vérification de cohérence des données au niveau de l'application ....................................................... 38313.5. Avertissements ......................................................................................................................... 38413.6. Verrous et index ....................................................................................................................... 384

    14. Conseils sur les performances .............................................................................................................. 38614.1. Utiliser EXPLAIN ................................................................................................................... 38614.2. Statistiques utilisées par le planificateur ........................................................................................ 39514.3. Contrôler le planificateur avec des clauses JOIN explicites .............................................................. 39814.4. Remplir une base de données ...................................................................................................... 40014.5. Configuration avec une perte acceptée .......................................................................................... 402

    15. Requêtes parallélisées ........................................................................................................................ 40415.1. Comment fonctionne la parallélisation des requêtes ......................................................................... 40415.2. Quand la parallélisation des requêtes peut-elle être utilisée ? ............................................................. 40415.3. Plans parallélisés ...................................................................................................................... 40515.4. Sécurité de la parallélisation ....................................................................................................... 407

    III. Administration du serveur ......................................................................................................................... 40916. Procédure d'installation du code source ................................................................................................. 410

    16.1. Version courte ......................................................................................................................... 41016.2. Prérequis ................................................................................................................................. 41016.3. Obtenir les sources .................................................................................................................... 41116.4. Procédure d'installation .............................................................................................................. 41216.5. Initialisation post-installation ...................................................................................................... 42116.6. Plateformes supportées .............................................................................................................. 42216.7. Notes spécifiques à des plateformes ............................................................................................. 423

    17. Installation à partir du code source sur Windows™ .................................................................................. 42717.1. Construire avec Visual C++™ ou le Microsoft Windows SDK™ ....................................................... 427

    18. Configuration du serveur et mise en place .............................................................................................. 43118.1. Compte utilisateur PostgreSQL™ ................................................................................................ 43118.2. Créer un groupe de base de données ............................................................................................. 43118.3. Lancer le serveur de bases de données .......................................................................................... 43318.4. Gérer les ressources du noyau ..................................................................................................... 43518.5. Arrêter le serveur ...................................................................................................................... 44318.6. Mise à jour d'une instance PostgreSQL™ ...................................................................................... 44318.7. Empêcher l'usurpation de serveur (spoofing) .................................................................................. 44618.8. Options de chiffrement .............................................................................................................. 44618.9. Connexions TCP/IP sécurisées avec SSL ....................................................................................... 44718.10. Connexions TCP/IP sécurisées avec le chiffrage GSSAPI ............................................................... 450

    Documentation PostgreSQL 12.3

    v

  • 18.11. Connexions TCP/IP sécurisées avec des tunnels ssh tunnels ............................................................ 45118.12. Enregistrer le journal des événements sous Windows .................................................................... 451

    19. Configuration du serveur .................................................................................................................... 45319.1. Paramètres de configuration ........................................................................................................ 45319.2. Emplacement des fichiers ........................................................................................................... 45619.3. Connexions et authentification .................................................................................................... 45719.4. Consommation des ressources ..................................................................................................... 46219.5. Write Ahead Log ...................................................................................................................... 46819.6. Réplication .............................................................................................................................. 47519.7. Planification des requêtes ........................................................................................................... 48019.8. Remonter et tracer les erreurs ...................................................................................................... 48519.9. Statistiques d'exécution .............................................................................................................. 49419.10. Nettoyage (vacuum) automatique .............................................................................................. 49519.11. Valeurs par défaut des connexions client ..................................................................................... 49619.12. Gestion des verrous ................................................................................................................. 50419.13. Compatibilité de version et de plateforme .................................................................................... 50419.14. Gestion des erreurs .................................................................................................................. 50619.15. Options préconfigurées ............................................................................................................ 50619.16. Options personnalisées ............................................................................................................. 50819.17. Options pour les développeurs ................................................................................................... 50819.18. Options courtes ...................................................................................................................... 510

    20. Authentification du client ................................................................................................................... 51220.1. Le fichier pg_hba.conf ......................................................................................................... 51220.2. Correspondances d'utilisateurs .................................................................................................... 51820.3. Méthodes d'authentification ........................................................................................................ 51920.4. Authentification trust ................................................................................................................. 51920.5. Authentification par mot de passe ................................................................................................ 52020.6. Authentification GSSAPI ........................................................................................................... 52120.7. Authentification SSPI ................................................................................................................ 52220.8. Authentification fondée sur ident ................................................................................................. 52320.9. Authentification Peer ................................................................................................................. 52320.10. Authentification LDAP ............................................................................................................ 52320.11. Authentification RADIUS ........................................................................................................ 52620.12. Authentification de certificat ..................................................................................................... 52620.13. Authentification PAM .............................................................................................................. 52720.14. Authentification BSD .............................................................................................................. 52720.15. Problèmes d'authentification ..................................................................................................... 527

    21. Rôles de la base de données ................................................................................................................ 52921.1. Rôles de la base de données ........................................................................................................ 52921.2. Attributs des rôles ..................................................................................................................... 52921.3. Appartenance d'un rôle .............................................................................................................. 53021.4. Supprimer des rôles ................................................................................................................... 53221.5. Rôles par défaut ....................................................................................................................... 53221.6. Sécurité des fonctions ................................................................................................................ 533

    22. Administration des bases de données .................................................................................................... 53422.1. Aperçu ................................................................................................................................... 53422.2. Création d'une base de données ................................................................................................... 53422.3. Bases de données modèles .......................................................................................................... 53522.4. Configuration d'une base de données ............................................................................................ 53622.5. Détruire une base de données ...................................................................................................... 53622.6. Tablespaces ............................................................................................................................. 536

    23. Localisation ..................................................................................................................................... 53923.1. Support des locales ................................................................................................................... 53923.2. Support des collations ................................................................................................................ 54123.3. Support des jeux de caractères ..................................................................................................... 546

    24. Planifier les tâches de maintenance ....................................................................................................... 55224.1. Nettoyages réguliers .................................................................................................................. 55224.2. Ré-indexation régulière .............................................................................................................. 55824.3. Maintenance du fichier de traces .................................................................................................. 558

    25. Sauvegardes et restaurations ................................................................................................................ 56025.1. Sauvegarde SQL ...................................................................................................................... 56025.2. Sauvegarde de niveau système de fichiers ...................................................................................... 56225.3. Archivage continu et récupération d'un instantané (PITR) ................................................................. 563

    Documentation PostgreSQL 12.3

    vi

  • 26. Haute disponibilité, répartition de charge et réplication ............................................................................. 57326.1. Comparaison de différentes solutions ........................................................................................... 57326.2. Serveurs de Standby par transfert de journaux ................................................................................ 57626.3. Bascule (Failover) .................................................................................................................... 58326.4. Méthode alternative pour le log shipping ....................................................................................... 58426.5. Hot Standby ............................................................................................................................ 585

    27. Surveiller l'activité de la base de données ............................................................................................... 59227.1. Outils Unix standard ................................................................................................................. 59227.2. Le récupérateur de statistiques ..................................................................................................... 59327.3. Visualiser les verrous ................................................................................................................ 62227.4. Rapporter la progression ............................................................................................................ 62227.5. Traces dynamiques ................................................................................................................... 627

    28. Surveiller l'utilisation des disques ......................................................................................................... 63628.1. Déterminer l'utilisation des disques .............................................................................................. 63628.2. Panne pour disque saturé ............................................................................................................ 637

    29. Fiabilité et journaux de transaction ....................................................................................................... 63829.1. Fiabilité .................................................................................................................................. 63829.2. Write-Ahead Logging (WAL) ..................................................................................................... 63929.3. Validation asynchrone (Asynchronous Commit) ............................................................................. 64029.4. Configuration des journaux de transaction ..................................................................................... 64129.5. Vue interne des journaux de transaction ........................................................................................ 643

    30. Réplication logique ........................................................................................................................... 64530.1. Publication .............................................................................................................................. 64530.2. Abonnement ............................................................................................................................ 64630.3. Conflits .................................................................................................................................. 64730.4. Restrictions ............................................................................................................................. 64730.5. Architecture ............................................................................................................................. 64830.6. Supervision ............................................................................................................................. 64830.7. Sécurité .................................................................................................................................. 64830.8. Paramètres de configuration ........................................................................................................ 64830.9. Démarrage rapide ..................................................................................................................... 649

    31. JIT (compilation à la volée) ................................................................................................................. 65031.1. Qu'est-ce que le JIT ? ................................................................................................................ 65031.2. Quand utiliser le JIT ? ............................................................................................................... 65031.3. Configuration .......................................................................................................................... 65131.4. Extensibilité ............................................................................................................................ 651

    32. Tests de régression ............................................................................................................................ 65332.1. Lancer les tests ......................................................................................................................... 65332.2. Évaluation des tests ................................................................................................................... 65632.3. Fichiers de comparaison de variants ............................................................................................. 65832.4. Tests TAP ............................................................................................................................... 65832.5. Examen de la couverture des tests ................................................................................................ 659

    IV. Interfaces client ...................................................................................................................................... 66033. libpq - Bibliothèque C ........................................................................................................................ 661

    33.1. Fonctions de contrôle de connexion à la base de données .................................................................. 66133.2. Fonctions de statut de connexion ................................................................................................. 67233.3. Fonctions d'exécution de commandes ........................................................................................... 67633.4. Traitement des commandes asynchrones ....................................................................................... 68933.5. Récupérer le résultats des requêtes ligne par ligne ........................................................................... 69233.6. Annuler des requêtes en cours d'exécution ..................................................................................... 69333.7. Interface rapide (Fast Path) ......................................................................................................... 69333.8. Notification asynchrone ............................................................................................................. 69433.9. Fonctions associées à la commande COPY ................................................................................... 69533.10. Fonctions de contrôle ............................................................................................................... 69833.11. Fonctions diverses ................................................................................................................... 70033.12. Traitement des messages .......................................................................................................... 70233.13. Système d'événements ............................................................................................................. 70333.14. Variables d'environnement ........................................................................................................ 70933.15. Fichier de mots de passe ........................................................................................................... 71033.16. Fichier des services de connexion ............................................................................................... 71033.17. Recherche LDAP des paramètres de connexion ............................................................................ 71133.18. Support de SSL ...................................................................................................................... 71133.19. Comportement des programmes threadés ..................................................................................... 715

    Documentation PostgreSQL 12.3

    vii

  • 33.20. Construire des applications avec libpq ......................................................................................... 71533.21. Exemples de programmes ......................................................................................................... 717

    34. Objets larges .................................................................................................................................... 72634.1. Introduction ............................................................................................................................. 72634.2. Fonctionnalités d'implémentation ................................................................................................. 72634.3. Interfaces client ........................................................................................................................ 72634.4. Fonctions du côté serveur ........................................................................................................... 72934.5. Programme d'exemple ............................................................................................................... 731

    35. ECPG SQL embarqué en C ................................................................................................................. 73635.1. Le Concept .............................................................................................................................. 73635.2. Gérer les Connexions à la Base de Données ................................................................................... 73635.3. Exécuter des Commandes SQL ................................................................................................... 73935.4. Utiliser des Variables Hôtes ........................................................................................................ 74135.5. SQL Dynamique ...................................................................................................................... 75335.6. Librairie pgtypes ...................................................................................................................... 75535.7. Utiliser les Zones de Descripteur ................................................................................................. 76635.8. Gestion des Erreurs ................................................................................................................... 77735.9. Directives de Préprocesseur ........................................................................................................ 78335.10. Traiter des Programmes en SQL Embarqué .................................................................................. 78435.11. Fonctions de la Librairie ........................................................................................................... 78535.12. Large Objects ......................................................................................................................... 78635.13. Applications C++ .................................................................................................................... 78735.14. Commandes SQL Embarquées .................................................................................................. 79035.15. Mode de Compatibilité Informix™ ............................................................................................. 81035.16. Fonctionnement Interne ............................................................................................................ 822

    36. Schéma d'information ........................................................................................................................ 82436.1. Le schéma ............................................................................................................................... 82436.2. Types de données ..................................................................................................................... 82436.3. information_schema_catalog_name ............................................................................... 82436.4. administrable_role_authorizations ........................................................................... 82536.5. applicable_roles ............................................................................................................. 82536.6. attributes ......................................................................................................................... 82536.7. character_sets ................................................................................................................. 82836.8. check_constraint_routine_usage ................................................................................. 82936.9. check_constraints ........................................................................................................... 82936.10. collations ........................................................................................................................ 82936.11. collation_character_set_applicability .................................................................. 83036.12. column_column_usage ...................................................................................................... 83036.13. column_domain_usage ...................................................................................................... 83036.14. column_options ................................................................................................................ 83136.15. column_privileges .......................................................................................................... 83136.16. column_udt_usage ............................................................................................................ 83236.17. columns .............................................................................................................................. 83236.18. constraint_column_usage .............................................................................................. 83536.19. constraint_table_usage ................................................................................................ 83536.20. data_type_privileges .................................................................................................... 83636.21. domain_constraints ........................................................................................................ 83636.22. domain_udt_usage ............................................................................................................ 83736.23. domains .............................................................................................................................. 83736.24. element_types .................................................................................................................. 83936.25. enabled_roles .................................................................................................................. 84136.26. foreign_data_wrapper_options .................................................................................... 84136.27. foreign_data_wrappers .................................................................................................. 84136.28. foreign_server_options ................................................................................................ 84136.29. foreign_servers .............................................................................................................. 84236.30. foreign_table_options .................................................................................................. 84236.31. foreign_tables ................................................................................................................ 84336.32. key_column_usage ............................................................................................................ 84336.33. parameters ........................................................................................................................ 84336.34. referential_constraints .............................................................................................. 84536.35. role_column_grants ........................................................................................................ 84536.36. role_routine_grants ...................................................................................................... 84636.37. role_table_grants .......................................................................................................... 846

    Documentation PostgreSQL 12.3

    viii

  • 36.38. role_udt_grants .............................................................................................................. 84736.39. role_usage_grants .......................................................................................................... 84736.40. routine_privileges ........................................................................................................ 84836.41. routines ............................................................................................................................ 84836.42. schemata ............................................................................................................................ 85236.43. sequences .......................................................................................................................... 85236.44. sql_features .................................................................................................................... 85336.45. sql_implementation_info .............................................................................................. 85336.46. sql_languages .................................................................................................................. 85436.47. sql_packages .................................................................................................................... 85436.48. sql_parts .......................................................................................................................... 85536.49. sql_sizing ........................................................................................................................ 85536.50. sql_sizing_profiles ...................................................................................................... 85536.51. table_constraints .......................................................................................................... 85636.52. table_privileges ............................................................................................................ 85636.53. tables ................................................................................................................................ 85736.54. transforms ........................................................................................................................ 85736.55. triggered_update_columns ............................................................................................ 85836.56. triggers ............................................................................................................................ 85836.57. udt_privileges ................................................................................................................ 86036.58. usage_privileges ............................................................................................................ 86036.59. user_defined_types ........................................................................................................ 86136.60. user_mapping_options .................................................................................................... 86236.61. user_mappings .................................................................................................................. 86236.62. view_column_usage .......................................................................................................... 86336.63. view_routine_usage ........................................................................................................ 86336.64. view_table_usage ............................................................................................................ 86436.65. views .................................................................................................................................. 864

    V. Programmation serveur ............................................................................................................................. 86537. Étendre SQL .................................................................................................................................... 866

    37.1. L'extensibilité .......................................................................................................................... 86637.2. Le système des types de PostgreSQL™ ......................................................................................... 86637.3. Fonctions utilisateur .................................................................................................................. 86737.4. Procédures utilisateur ................................................................................................................ 86837.5. Fonctions en langage de requêtes (SQL) ........................................................................................ 86837.6. Surcharge des fonctions ............................................................................................................. 88137.7. Catégories de volatilité des fonctions ............................................................................................ 88137.8. Fonctions en langage de procédures ............................................................................................. 88337.9. Fonctions internes ..................................................................................................................... 88337.10. Fonctions en langage C ............................................................................................................ 88337.11. Informations d'optimisation de fonction ....................................................................................... 90037.12. Agrégats utilisateur ................................................................................................................. 90137.13. Types utilisateur ..................................................................................................................... 90737.14. Opérateurs définis par l'utilisateur .............................................................................................. 91037.15. Informations sur l'optimisation d'un opérateur .............................................................................. 91137.16. Interfacer des extensions d'index ................................................................................................ 91437.17. Empaqueter des objets dans une extension ................................................................................... 92537.18. Outils de construction d'extension .............................................................................................. 931

    38. Déclencheurs (triggers) ...................................................................................................................... 93438.1. Aperçu du comportement des déclencheurs .................................................................................... 93438.2. Visibilité des modifications des données ....................................................................................... 93638.3. Écrire des fonctions déclencheurs en C ......................................................................................... 93738.4. Un exemple complet de trigger .................................................................................................... 939

    39. Déclencheurs (triggers) sur évènement .................................................................................................. 94239.1. Aperçu du fonctionnement des triggers sur évènement ..................................................................... 94239.2. Matrice de déclenchement des triggers sur évènement ...................................................................... 94239.3. Écrire des fonctions trigger sur événement en C .............................................................................. 94639.4. Un exemple complet de trigger sur événement ................................................................................ 94739.5. Un exemple de trigger sur événement de table modifiée ................................................................... 948

    40. Système de règles .............................................................................................................................. 95040.1. Arbre de requêtes ..................................................................................................................... 95040.2. Vues et système de règles ........................................................................................................... 95140.3. Vues matérialisées .................................................................................................................... 957

    Documentation PostgreSQL 12.3

    ix

  • 40.4. Règles sur insert, update et delete .............................................................................................. 95940.5. Règles et droits ........................................................................................................................ 96840.6. Règles et statut de commande ..................................................................................................... 97040.7. Règles contre déclencheurs ......................................................................................................... 970

    41. Langages de procédures ..................................................................................................................... 97341.1. Installation des langages de procédures ......................................................................................... 973

    42. PL/pgSQL - Langage de procédures SQL .............................................................................................. 97542.1. Aperçu ................................................................................................................................... 97542.2. Structure de PL/pgSQL .............................................................................................................. 97642.3. Déclarations ............................................................................................................................ 97742.4. Expressions ............................................................................................................................. 98242.5. Instructions de base ................................................................................................................... 98242.6. Structures de contrôle ................................................................................................................ 98942.7. Curseurs ............................................................................................................................... 100142.8. Gestion des transactions ........................................................................................................... 100642.9. Erreurs et messages ................................................................................................................. 100742.10. Fonctions trigger ................................................................................................................... 100942.11. Les dessous de PL/pgSQL ...................................................................................................... 101642.12. Astuces pour développer en PL/pgSQL ..................................................................................... 101942.13. Portage d'Oracle™ PL/SQL .................................................................................................... 1022

    43. PL/Tcl - Langage de procédures Tcl ................................................................................................... 103043.1. Aperçu ................................................................................................................................. 103043.2. Fonctions et arguments PL/Tcl .................................................................................................. 103043.3. Valeurs des données avec PL/Tcl ............................................................................................... 103243.4. Données globales avec PL/Tcl ................................................................................................... 103243.5. Accès à la base de données depuis PL/Tcl ................................................................................... 103243.6. Fonctions triggers en PL/Tcl ..................................................................................................... 103443.7. Fonctions trigger sur événement en PL/Tcl .................................................................................. 103643.8. Gestion des erreurs avec PL/Tcl ................................................................................................ 103643.9. Sous-transactions explicites dans PL/Tcl ..................................................................................... 103743.10. Gestion des transactions ......................................................................................................... 103743.11. Configuration PL/Tcl ............................................................................................................. 103843.12. Noms de procédure Tcl .......................................................................................................... 1038

    44. PL/Perl - Langage de procédures Perl .................................................................................................. 103944.1. Fonctions et arguments PL/Perl ................................................................................................. 103944.2. Valeurs en PL/Perl .................................................................................................................. 104244.3. Fonction incluses .................................................................................................................... 104244.4. Valeurs globales dans PL/Perl ................................................................................................... 104644.5. Niveaux de confiance de PL/Perl ............................................................................................... 104744.6. Déclencheurs PL/Perl .............................................................................................................. 104844.7. Triggers sur événements avec PL/Perl ........................................................................................ 104944.8. PL/Perl sous le capot ............................................................................................................... 1049

    45. PL/Python - Langage de procédures Python ......................................................................................... 105145.1. Python 2 et Python 3 ............................................................................................................... 105145.2. Fonctions PL/Python ............................................................................................................... 105245.3. Valeur des données avec PL/Python ........................................................................................... 105345.4. Sharing Data .......................................................................................................................... 105745.5. Blocs de code anonymes .......................................................................................................... 105845.6. Fonctions de déclencheurs ........................................................................................................ 105845.7. Accès à la base de données ....................................................................................................... 105845.8. Sous-transactions explicites ...................................................................................................... 106145.9. Gestion des transactions ........................................................................................................... 106345.10. Fonctions outils .................................................................................................................... 106345.11. Variables d'environnement ...................................................................................................... 1064

    46. Interface de programmation serveur .................................................................................................... 106546.1. Fonctions d'interface ............................................................................................................... 106546.2. Fonctions de support d'interface ................................................................................................ 109646.3. Gestion de la mémoire ............................................................................................................. 110546.4. Gestion des transactions ........................................................................................................... 111446.5. Visibilité des modifications de données ....................................................................................... 111746.6. Exemples .............................................................................................................................. 1117

    47. Processus en tâche de fond (background worker) ................................................................................... 112048. Décodage logique (Logical Decoding) ................................................................................................ 1123

    Documentation PostgreSQL 12.3

    x

  • 48.1. Exemples de décodage logique .................................................................................................. 112348.2. Concepts de décodage logique ................................................................................................... 112548.3. Interface du protocole de réplication par flux ............................................................................... 112648.4. Interface SQL de décodage logique ............................................................................................ 112648.5. Catalogues systèmes liés au décodage logique .............................................................................. 112648.6. Plugins de sortie de décodage logique ......................................................................................... 112648.7. Écrivains de sortie de décodage logique ...................................................................................... 113048.8. Support de la réplication synchrone pour le décodage logique ......................................................... 1130

    49. Tracer la progression de la réplication ................................................................................................. 1131VI. Référence ............................................................................................................................................ 1132

    I. Commandes SQL .............................................................................................................................. 1133ABORT ....................................................................................................................................... 1134ALTER AGGREGATE ................................................................................................................... 1135ALTER COLLATION .................................................................................................................... 1137ALTER CONVERSION .................................................................................................................. 1139ALTER DATABASE ..................................................................................................................... 1140ALTER DEFAULT PRIVILEGES .................................................................................................... 1142ALTER DOMAIN ......................................................................................................................... 1145ALTER EVENT TRIGGER ............................................................................................................. 1148ALTER EXTENSION .................................................................................................................... 1149ALTER FOREIGN DATA WRAPPER .............................................................................................. 1152ALTER FOREIGN TABLE ............................................................................................................. 1154ALTER FUNCTION ...................................................................................................................... 1158ALTER GROUP ............................................................................................................................ 1161ALTER INDEX ............................................................................................................................. 1162ALTER LANGUAGE ..................................................................................................................... 1165ALTER LARGE OBJECT ............................................................................................................... 1166ALTER MATERIALIZED VIEW ..................................................................................................... 1167ALTER OPERATOR ...................................................................................................................... 1169ALTER OPERATOR CLASS .......................................................................................................... 1171ALTER OPERATOR FAMILY ........................................................................................................ 1172ALTER POLICY ........................................................................................................................... 1175ALTER PROCEDURE ................................................................................................................... 1176ALTER PUBLICATION ................................................................................................................. 1178ALTER ROLE .............................................................................................................................. 1180ALTER ROUTINE ........................................................................................................................ 1183ALTER RULE .............................................................................................................................. 1184ALTER SCHEMA ......................................................................................................................... 1185ALTER SEQUENCE ...................................................................................................................... 1186ALTER SERVER .......................................................................................................................... 1189ALTER STATISTICS ..................................................................................................................... 1190ALTER SUBSCRIPTION ............................................................................................................... 1191ALTER SYSTEM .......................................................................................................................... 1193ALTER TABLE ............................................................................................................................ 1195ALTER TABLESPACE .................................................................................................................. 1207ALTER TEXT SEARCH CONFIGURATION .................................................................................... 1208ALTER TEXT SEARCH DICTIONARY ........................................................................................... 1210ALTER TEXT SEARCH PARSER ................................................................................................... 1212ALTER TEXT SEARCH TEMPLATE .............................................................................................. 1213ALTER TRIGGER ......................................................................................................................... 1214ALTER TYPE ............................................................................................................................... 1215ALTER USER ............................................................................................................................... 1218ALTER USER MAPPING ............................................................................................................... 1219ALTER VIEW .............................................................................................................................. 1220ANALYZE ................................................................................................................................... 1222BEGIN ........................................................................................................................................ 1225CALL .......................................................................................................................................... 1227CHECKPOINT .............................................................................................................................. 1228CLOSE ........................................................................................................................................ 1229CLUSTER .................................................................................................................................... 1230COMMENT .................................................................................................................................. 1232COMMIT ..................................................................................................................................... 1235COMMIT PREPARED ................................................................................................................... 1236

    Documentation PostgreSQL 12.3

    xi

  • COPY .......................................................................................................................................... 1237CREATE ACCESS METHOD ......................................................................................................... 1245CREATE AGGREGATE ................................................................................................................. 1246CREATE CAST ............................................................................................................................ 1252CREATE COLLATION .................................................................................................................. 1256CREATE CONVERSION ............................................................................................................... 1258CREATE DATABASE ................................................................................................................... 1260CREATE DOMAIN ....................................................................................................................... 1263CREATE EVENT TRIGGER ........................................................................................................... 1266CREATE EXTENSION .................................................................................................................. 1268CREATE FOREIGN DATA WRAPPER ............................................................................................ 1270CREATE FOREIGN TABLE ........................................................................................................... 1272CREATE FUNCTION .................................................................................................................... 1275CREATE GROUP .......................................................................................................................... 1281CREATE INDEX ........................................................................................................................... 1282CREATE LANGUAGE .................................................................................................................. 1289CREATE MATERIALIZED VIEW ................................................................................................... 1292CREATE OPERATOR ................................................................................................................... 1294CREATE OPERATOR CLASS ........................................................................................................ 1297CREATE OPERATOR FAMILY ...................................................................................................... 1300CREATE POLICY ......................................................................................................................... 1301CREATE PROCEDURE ................................................................................................................. 1306CREATE PUBLICATION ............................................................................................................... 1309CREATE ROLE ............................................................................................................................ 1311CREATE RULE ............................................................................................................................ 1315CREATE SCHEMA ....................................................................................................................... 1318CREATE SEQUENCE ................................................................................................................... 1320CREATE SERVER ........................................................................................................................ 1323CREATE STATISTICS .................................................................................................................. 1325CREATE SUBSCRIPTION ............................................................................................................. 1327CREATE TABLE .......................................................................................................................... 1329CREATE TABLE AS ..................................................................................................................... 1346CREATE TABLESPACE ................................................................................................................ 1349CREATE TEXT SEARCH CONFIGURATION .................................................................................. 1351CREATE TEXT SEARCH DICTIONARY ......................................................................................... 1352CREATE TEXT SEARCH PARSER ................................................................................................. 1353CREATE TEXT SEARCH TEMPLATE ............................................................................................ 1354CREATE TRANSFORM ................................................................................................................ 1355CREATE TRIGGER ...................................................................................................................... 1357CREATE TYPE ............................................................................................................................. 1363CREATE USER ............................................................................................................................ 1370CREATE USER MAPPING ............................................................................................................. 1371CREATE VIEW ............................................................................................................................ 1372DEALLOCATE ............................................................................................................................. 1376DECLARE ................................................................................................................................... 1377DELETE ...................................................................................................................................... 1380DISCARD .................................................................................................................................... 1383DO .............................................................................................................................................. 1384DROP ACCESS METHOD ............................................................................................................. 1385DROP AGGREGATE ..................................................................................................................... 1386DROP CAST ................................................................................................................................ 1388DROP COLLATION .............................................................