Documentation PostgreSQL 9.1 · 30.4. Examen de la couverture du test ..... 468 IV.

1995
Documentation PostgreSQL 9.1.24 The PostgreSQL Global Development Group

Transcript of Documentation PostgreSQL 9.1 · 30.4. Examen de la couverture du test ..... 468 IV.

Documentation PostgreSQL 9.1.24

The PostgreSQL Global Development Group

Documentation PostgreSQL 9.1.24The PostgreSQL Global Development GroupCopyright 1996-2016 The PostgreSQL Global Development Group

Legal Notice

PostgreSQL is Copyright (c) 1996-2016 by the PostgreSQL Global Development Group and is distributed under the terms of the license of the University of Ca-lifornia below.

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.

Prface ........................................................................................................................................................ xxi1. Dfinition de PostgreSQL .................................................................................................................. xxi2. Bref historique de PostgreSQL ............................................................................................................ xxi3. Conventions ..................................................................................................................................... xxiii4. Pour plus d'informations ...................................................................................................................... xxiii5. Lignes de conduite pour les rapports de bogues ....................................................................................... xxiii

I. Tutoriel ...................................................................................................................................................... 11. Dmarrage ............................................................................................................................................ 2

1.1. Installation ................................................................................................................................... 21.2. Concepts architecturaux de base ....................................................................................................... 21.3. Cration d'une base de donnes ........................................................................................................ 21.4. Accder une base ........................................................................................................................ 4

2. Le langage SQL .................................................................................................................................... 52.1. Introduction ................................................................................................................................. 52.2. Concepts ..................................................................................................................................... 52.3. Crer 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'agrgat ........................................................................................................................ 92.8. Mises jour ................................................................................................................................ 102.9. Suppressions ............................................................................................................................... 11

3. Fonctionnalits avances ........................................................................................................................ 123.1. Introduction ................................................................................................................................ 123.2. Vues .......................................................................................................................................... 123.3. Cls trangres ............................................................................................................................ 123.4. Transactions ................................................................................................................................ 133.5. Fonctions de fentrage .................................................................................................................. 143.6. Hritage ........................................................................................................................................3.7. Conclusion .................................................................................................................................. 18

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

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

5. Dfinition des donnes ........................................................................................................................... 395.1. Notions fondamentales sur les tables ................................................................................................ 395.2. Valeurs par dfaut ........................................................................................................................ 405.3. Contraintes ................................................................................................................................. 405.4. Colonnes systme ......................................................................................................................... 465.5. Modification des tables .................................................................................................................. 475.6. Droits ......................................................................................................................................... 495.7. Schmas ..................................................................................................................................... 495.8. L'hritage ......................................................................................................................................5.9. Partitionnement ............................................................................................................................ 555.10. Donnes distantes ....................................................................................................................... 615.11. Autres objets de la base de donnes ................................................................................................ 615.12. Gestion des dpendances .............................................................................................................. 61

6. Manipulation de donnes ........................................................................................................................ 636.1. Insrer des donnes ....................................................................................................................... 636.2. Actualiser les donnes ................................................................................................................... 646.3. Supprimer des donnes .................................................................................................................. 64

7. Requtes ............................................................................................................................................. 667.1. Aperu ....................................................................................................................................... 667.2. Expressions de table ..................................................................................................................... 667.3. Listes de slection ........................................................................................................................ 747.4. Combiner des requtes .................................................................................................................. 757.5. Tri des lignes ............................................................................................................................... 767.6. LIMIT et OFFSET ....................................................................................................................... 777.7. Listes VALUES ............................................................................................................................ 777.8. Requtes WITH (Common Table Expressions) ................................................................................... 78

8. Types de donnes ................................................................................................................................. 83

iii

8.1. Types numriques ........................................................................................................................ 848.2. Types montaires ......................................................................................................................... 878.3. Types caractre ............................................................................................................................ 888.4. Types de donnes binaires .............................................................................................................. 898.5. Types date/heure .......................................................................................................................... 918.6. Type boolen ............................................................................................................................... 998.7. Types numration ..................................................................................................................... 1008.8. Types gomtriques .................................................................................................................... 1018.9. Types adresses rseau ................................................................................................................. 1038.10. Type chane de bits ................................................................................................................... 1058.11. Types de recherche plein texte .................................................................................................... 1058.12. Type UUID ............................................................................................................................. 1078.13. Type XML .............................................................................................................................. 1088.14. Tableaux ................................................................................................................................. 1108.15. Types composites ..................................................................................................................... 1168.16. Types identifiant d'objet ............................................................................................................. 1198.17. Pseudo-Types .......................................................................................................................... 120

9. Fonctions et oprateurs ........................................................................................................................ 1229.1. Oprateurs logiques .................................................................................................................... 1229.2. Oprateurs de comparaison .......................................................................................................... 1229.3. Fonctions et oprateurs mathmatiques ........................................................................................... 1249.4. Fonctions et oprateurs de chanes ................................................................................................. 1269.5. Fonctions et oprateurs de chanes binaires ...................................................................................... 1359.6. Fonctions et oprateurs sur les chanes de bits .................................................................................. 1379.7. Correspondance de motif ............................................................................................................. 1379.8. Fonctions de formatage des types de donnes .................................................................................. 1509.9. Fonctions et oprateurs sur date/heure ............................................................................................ 1559.10. Fonctions de support enum ......................................................................................................... 1649.11. Fonctions et oprateurs gomtriques ........................................................................................... 1659.12. Fonctions et oprateurs sur les adresses rseau ............................................................................... 1689.13. Fonctions et oprateurs de la recherche plein texte .......................................................................... 1699.14. Fonctions XML ........................................................................................................................ 1739.15. Fonctions de manipulation de squences ....................................................................................... 1819.16. Expressions conditionnelles ........................................................................................................ 1839.17. Fonctions et oprateurs de tableaux .............................................................................................. 1859.18. Fonctions d'agrgat ................................................................................................................... 1879.19. Fonctions Window .................................................................................................................... 1909.20. Expressions de sous-requtes ...................................................................................................... 1919.21. Comparaisons de lignes et de tableaux .......................................................................................... 1949.22. Fonctions retournant des ensembles ............................................................................................. 1969.23. Fonctions d'informations systme ................................................................................................ 1989.24. Fonctions d'administration systme .............................................................................................. 2059.25. Fonctions trigger ...................................................................................................................... 216

10. Conversion de types .......................................................................................................................... 21810.1. Aperu ................................................................................................................................... 21810.2. Oprateurs ............................................................................................................................... 21910.3. Fonctions ................................................................................................................................ 22210.4. Stockage de valeurs ................................................................................................................... 22410.5. Constructions UNION, CASE et constructions relatives .................................................................... 224

11. Index .............................................................................................................................................. 22611.1. Introduction ............................................................................................................................. 22611.2. Types d'index ........................................................................................................................... 22611.3. Index multicolonnes .................................................................................................................. 22811.4. Index et ORDER BY .................................................................................................................. 22811.5. Combiner des index multiples ..................................................................................................... 22911.6. Index d'unicit ......................................................................................................................... 23011.7. Index d'expressions ................................................................................................................... 23011.8. Index partiels ........................................................................................................................... 23111.9. Classes et familles d'oprateurs ................................................................................................... 23211.10. Index et collationnements ......................................................................................................... 23311.11. Examiner l'utilisation des index ................................................................................................. 234

12. Recherche plein texte ......................................................................................................................... 23512.1. Introduction ............................................................................................................................. 235

Documentation PostgreSQL 9.1.24

iv

12.2. Tables et index ......................................................................................................................... 23712.3. Contrler la recherche plein texte ................................................................................................. 23912.4. Fonctionnalits supplmentaires .................................................................................................. 24412.5. Analyseurs .............................................................................................................................. 24812.6. Dictionnaires ........................................................................................................................... 25012.7. Exemple de configuration ........................................................................................................... 25612.8. Tester et dboguer la recherche plein texte ..................................................................................... 25712.9. Types d'index GiST et GIN ........................................................................................................ 26112.10. Support de psql ....................................................................................................................... 26212.11. Limites ................................................................................................................................. 26412.12. Migration partir d'une recherche plein texte antrieure 8.3 .......................................................... 264

13. Contrle d'accs simultan .................................................................................................................. 26613.1. Introduction ............................................................................................................................. 26613.2. Isolation des transactions ........................................................................................................... 26613.3. Verrouillage explicite ................................................................................................................ 27013.4. Vrification de cohrence des donnes au niveau de l'application ....................................................... 27413.5. Avertissements ......................................................................................................................... 27513.6. Verrouillage et index ................................................................................................................. 275

14. Conseils sur les performances .............................................................................................................. 27714.1. Utiliser EXPLAIN ................................................................................................................... 27714.2. Statistiques utilises par le planificateur ........................................................................................ 28114.3. Contrler le planificateur avec des clauses JOIN explicites .............................................................. 28214.4. Remplir une base de donnes ...................................................................................................... 28314.5. Configuration avec une perte accepte .......................................................................................... 286

III. Administration du serveur ......................................................................................................................... 28715. Procdure d'installation de PostgreSQL du code source ......................................................................... 288

15.1. Version courte ......................................................................................................................... 28815.2. Prrequis ................................................................................................................................. 28815.3. Obtenir les sources .................................................................................................................... 28915.4. Procdure d'installation .............................................................................................................. 29015.5. Initialisation post-installation ...................................................................................................... 29715.6. Dmarrer ................................................................................................................................ 29815.7. Et maintenant ? ........................................................................................................................ 29915.8. Plateformes supportes .............................................................................................................. 29915.9. Notes spcifiques des plateformes ............................................................................................. 300

16. Installation partir du code source sur Windows .................................................................................. 30816.1. Construire avec Visual C++ ou le Platform SDK ...................................................................... 30816.2. Construire libpq avec Visual C++ ou Borland C++ ................................................................... 311

17. Configuration du serveur et mise en place .............................................................................................. 31317.1. Compte utilisateur PostgreSQL ................................................................................................ 31317.2. Crer un groupe de base de donnes ............................................................................................. 31317.3. Lancer le serveur de bases de donnes .......................................................................................... 31417.4. Grer les ressources du noyau ..................................................................................................... 31717.5. Arrter le serveur ...................................................................................................................... 32317.6. Mise jour d'une instance PostgreSQL ...................................................................................... 32417.7. Empcher l'usurpation de serveur ................................................................................................. 32617.8. Options de chiffrement .............................................................................................................. 32617.9. Connexions tcp/ip scurises avec ssl ........................................................................................... 32717.10. Connexions tcp/ip scurises avec des tunnels ssh tunnels ............................................................... 329

18. Configuration du serveur .................................................................................................................... 33018.1. Paramtres de configuration ........................................................................................................ 33018.2. Emplacement des fichiers ........................................................................................................... 33118.3. Connexions et authentification .................................................................................................... 33218.4. Consommation des ressources ..................................................................................................... 33518.5. Write Ahead Log ...................................................................................................................... 33918.6. Rplication .............................................................................................................................. 34218.7. Planification des requtes ........................................................................................................... 34418.8. Remonter et tracer les erreurs ...................................................................................................... 34818.9. Statistiques d'excution .............................................................................................................. 35518.10. Nettoyage (vacuum) automatique .............................................................................................. 35618.11. Valeurs par dfaut des connexions client ..................................................................................... 35718.12. Gestion des verrous ................................................................................................................. 36218.13. Compatibilit de version et de plateforme .................................................................................... 363

Documentation PostgreSQL 9.1.24

v

18.14. Gestion des erreurs .................................................................................................................. 36418.15. Options prconfigures ............................................................................................................ 36518.16. Options personnalises ............................................................................................................. 36618.17. Options pour les dveloppeurs ................................................................................................... 36618.18. Options courtes ...................................................................................................................... 368

19. Authentification du client ................................................................................................................... 37019.1. Le fichier pg_hba.conf ......................................................................................................... 37019.2. Correspondances d'utilisateurs .................................................................................................... 37519.3. Mthodes d'authentification ........................................................................................................ 37619.4. Problmes d'authentification ....................................................................................................... 382

20. Rles de la base de donnes ................................................................................................................ 38320.1. Rles de la base de donnes ........................................................................................................ 38320.2. Attributs des rles ..................................................................................................................... 38320.3. Appartenance d'un rle .............................................................................................................. 38420.4. Supprimer des rles ................................................................................................................... 38620.5. Scurit des fonctions et dclencheurs (triggers) ............................................................................. 386

21. Administration des bases de donnes .................................................................................................... 38721.1. Aperu ................................................................................................................................... 38721.2. Cration d'une base de donnes ................................................................................................... 38721.3. Bases de donnes modles .......................................................................................................... 38821.4. Configuration d'une base de donnes ............................................................................................ 38921.5. Dtruire une base de donnes ...................................................................................................... 38921.6. Tablespaces ............................................................................................................................. 389

22. Localisation ..................................................................................................................................... 39122.1. Support des locales ................................................................................................................... 39122.2. Support des collations ................................................................................................................ 39322.3. Support des jeux de caractres ..................................................................................................... 395

23. Planifier les tches de maintenance ....................................................................................................... 40023.1. Nettoyages rguliers .................................................................................................................. 40023.2. R-indexation rgulire .............................................................................................................. 40523.3. Maintenance du fichier de traces .................................................................................................. 405

24. Sauvegardes et restaurations ................................................................................................................ 40724.1. Sauvegarde SQL ...................................................................................................................... 40724.2. Sauvegarde de niveau systme de fichiers ...................................................................................... 40924.3. Archivage continu et rcupration d'un instantan (PITR) ................................................................. 410

25. Haute disponibilit, rpartition de charge et rplication ............................................................................. 41825.1. Comparaison de diffrentes solutions ........................................................................................... 41825.2. Serveurs de Standby par transfert de journaux ................................................................................ 42125.3. Bascule (Failover) .................................................................................................................... 42525.4. Mthode alternative pour le log shipping ....................................................................................... 42625.5. Hot Standby ............................................................................................................................ 428

26. Configuration de la rcupration .......................................................................................................... 43426.1. Paramtres de rcupration de l'archive ......................................................................................... 43426.2. Paramtres de cible de rcupration .............................................................................................. 43426.3. Paramtres de serveur de Standby ................................................................................................ 435

27. Surveiller l'activit de la base de donnes ............................................................................................... 43727.1. Outils Unix standard ................................................................................................................. 43727.2. Le rcuprateur de statistiques ..................................................................................................... 43727.3. Visualiser les verrous ................................................................................................................ 44627.4. Traces dynamiques ................................................................................................................... 446

28. Surveiller l'utilisation des disques ......................................................................................................... 45528.1. Dterminer l'utilisation des disques .............................................................................................. 45528.2. Panne pour disque satur ............................................................................................................ 456

29. Fiabilit et journaux de transaction ....................................................................................................... 45729.1. Fiabilit .................................................................................................................................. 45729.2. Write-Ahead Logging (WAL) ..................................................................................................... 45829.3. Validation asynchrone (Asynchronous Commit) ............................................................................. 45829.4. Configuration des journaux de transaction ..................................................................................... 45929.5. Vue interne des journaux de transaction ........................................................................................ 461

30. Tests de rgression ............................................................................................................................ 46330.1. Lancer les tests ......................................................................................................................... 46330.2. valuation des tests ................................................................................................................... 46530.3. Fichiers de comparaison de variants ............................................................................................. 467

Documentation PostgreSQL 9.1.24

vi

30.4. Examen de la couverture du test .................................................................................................. 468IV. Interfaces client ...................................................................................................................................... 469

31. libpq - Bibliothque C ........................................................................................................................ 47031.1. Fonctions de contrle de connexion la base de donnes .................................................................. 47031.2. Fonctions de statut de connexion ................................................................................................. 47631.3. Fonctions de commandes d'excution ........................................................................................... 47931.4. Traitement des commandes asynchrones ....................................................................................... 49031.5. Annuler des requtes en cours d'excution ..................................................................................... 49331.6. Interface chemin rapide ........................................................................................................... 49331.7. Notification asynchrone ............................................................................................................. 49431.8. Fonctions associes avec la commande COPY ............................................................................... 49531.9. Fonctions de contrle ................................................................................................................ 49831.10. Fonctions diverses ................................................................................................................... 49931.11. Traitement des messages .......................................................................................................... 50131.12. Systme d'vnements ............................................................................................................. 50231.13. Variables d'environnement ........................................................................................................ 50731.14. Fichier de mots de passe ........................................................................................................... 50931.15. Fichier des connexions de service ............................................................................................... 50931.16. Recherches LDAP des paramtres de connexion ........................................................................... 50931.17. Support de SSL ...................................................................................................................... 51031.18. Comportement des programmes threads ..................................................................................... 51331.19. Construire des applications avec libpq ......................................................................................... 51431.20. Exemples de programmes ......................................................................................................... 515

32. Objets larges .................................................................................................................................... 52232.1. Introduction ............................................................................................................................. 52232.2. Fonctionnalits d'implmentation ................................................................................................. 52232.3. Interfaces client ........................................................................................................................ 52232.4. Fonctions du ct serveur ........................................................................................................... 52432.5. Programme d'exemple ............................................................................................................... 525

33. ECPG SQL embarqu en C ................................................................................................................. 53033.1. Le Concept .............................................................................................................................. 53033.2. Grer les Connexions la Base de Donnes ................................................................................... 53033.3. Excuter des Commandes SQL ................................................................................................... 53233.4. Utiliser des Variables Htes ........................................................................................................ 53433.5. SQL Dynamique ...................................................................................................................... 54633.6. Librairie pgtypes ...................................................................................................................... 54733.7. Utiliser les Zones de Descripteur ................................................................................................. 55833.8. Gestion des Erreurs ................................................................................................................... 56833.9. Directives de Prprocesseur ........................................................................................................ 57433.10. Traiter des Programmes en SQL Embarqu .................................................................................. 57533.11. Fonctions de la Librairie ........................................................................................................... 57633.12. Large Objects ......................................................................................................................... 57633.13. Applications C++ .................................................................................................................... 57833.14. Commandes SQL Embarques .................................................................................................. 58133.15. Mode de Compatibilit Informix ............................................................................................. 60133.16. Fonctionnement Interne ............................................................................................................ 612

34. Schma d'information ........................................................................................................................ 61534.1. Le schma ............................................................................................................................... 61534.2. Types de donnes ..................................................................................................................... 61534.3. information_schema_catalog_name ............................................................................... 61634.4. administrable_role_authorizations ........................................................................... 61634.5. applicable_roles ............................................................................................................. 61634.6. attributes ......................................................................................................................... 61634.7. character_sets ................................................................................................................. 61834.8. check_constraint_routine_usage ................................................................................. 61934.9. check_constraints ........................................................................................................... 62034.10. collations ........................................................................................................................ 62034.11. collation_character_set_applicability .................................................................. 62034.12. column_domain_usage ...................................................................................................... 62134.13. column_privileges .......................................................................................................... 62134.14. column_udt_usage ............................................................................................................ 62234.15. columns .............................................................................................................................. 62234.16. constraint_column_usage .............................................................................................. 625

Documentation PostgreSQL 9.1.24

vii

34.17. constraint_table_usage ................................................................................................ 62534.18. data_type_privileges .................................................................................................... 62534.19. domain_constraints ........................................................................................................ 62634.20. domain_udt_usage ............................................................................................................ 62634.21. domains .............................................................................................................................. 62734.22. element_types .................................................................................................................. 62834.23. enabled_roles .................................................................................................................. 63034.24. foreign_data_wrapper_options .................................................................................... 63034.25. foreign_data_wrappers .................................................................................................. 63034.26. foreign_server_options ................................................................................................ 63134.27. foreign_servers .............................................................................................................. 63134.28. foreign_table_options .................................................................................................. 63134.29. foreign_tables ................................................................................................................ 63234.30. key_column_usage ............................................................................................................ 63234.31. parameters ........................................................................................................................ 63334.32. referential_constraints .............................................................................................. 63434.33. role_column_grants ........................................................................................................ 63534.34. role_routine_grants ...................................................................................................... 63534.35. role_table_grants .......................................................................................................... 63534.36. role_usage_grants .......................................................................................................... 63634.37. routine_privileges ........................................................................................................ 63634.38. routines ............................................................................................................................ 63734.39. schemata ............................................................................................................................ 64034.40. sequences .......................................................................................................................... 64134.41. sql_features .................................................................................................................... 64234.42. sql_implementation_info .............................................................................................. 64234.43. sql_languages .................................................................................................................. 64234.44. sql_packages .................................................................................................................... 64334.45. sql_parts .......................................................................................................................... 64334.46. sql_sizing ........................................................................................................................ 64434.47. sql_sizing_profiles ...................................................................................................... 64434.48. table_constraints .......................................................................................................... 64434.49. table_privileges ............................................................................................................ 64534.50. tables ................................................................................................................................ 64534.51. triggered_update_columns ............................................................................................ 64634.52. triggers ............................................................................................................................ 64634.53. usage_privileges ............................................................................................................ 64734.54. user_mapping_options .................................................................................................... 64834.55. user_mappings .................................................................................................................. 64834.56. view_column_usage .......................................................................................................... 64934.57. view_routine_usage ........................................................................................................ 64934.58. view_table_usage ............................................................................................................ 65034.59. views .................................................................................................................................. 650

V. Programmation serveur ............................................................................................................................. 65135. tendre SQL .................................................................................................................................... 652

35.1. L'extensibilit .......................................................................................................................... 65235.2. Le systme des types de PostgreSQL ......................................................................................... 65235.3. Fonctions utilisateur .................................................................................................................. 65335.4. Fonctions en langage de requtes (SQL) ........................................................................................ 65435.5. Surcharge des fonctions ............................................................................................................. 66435.6. Catgories de volatilit des fonctions ............................................................................................ 66435.7. Fonctions en langage de procdures ............................................................................................. 66535.8. Fonctions internes ..................................................................................................................... 66635.9. Fonctions en langage C .............................................................................................................. 66635.10. Agrgats utilisateur ................................................................................................................. 68435.11. Types utilisateur ..................................................................................................................... 68635.12. Oprateurs dfinis par l'utilisateur .............................................................................................. 68935.13. Informations sur l'optimisation d'un oprateur .............................................................................. 68935.14. Interfacer des extensions d'index ................................................................................................ 69235.15. Empaqueter des objets dans une extension ................................................................................... 70135.16. Outils de construction d'extension .............................................................................................. 706

36. Dclencheurs (triggers) ...................................................................................................................... 70936.1. Aperu du comportement des dclencheurs .................................................................................... 709

Documentation PostgreSQL 9.1.24

viii

36.2. Visibilit des modifications des donnes ....................................................................................... 71036.3. crire des fonctions dclencheurs en C ......................................................................................... 71136.4. Un exemple complet de trigger .................................................................................................... 713

37. Systme de rgles .............................................................................................................................. 71637.1. Arbre de requtes ..................................................................................................................... 71637.2. Vues et systme de rgles ........................................................................................................... 71737.3. Rgles sur insert, update et delete .............................................................................................. 72337.4. Rgles et droits ........................................................................................................................ 73137.5. Rgles et statut de commande ..................................................................................................... 73237.6. Rgles contre dclencheurs ......................................................................................................... 732

38. Langages de procdures ..................................................................................................................... 73538.1. Installation des langages de procdures ......................................................................................... 735

39. PL/pgSQL - Langage de procdures SQL .............................................................................................. 73739.1. Aperu ................................................................................................................................... 73739.2. Structure de PL/pgSQL .............................................................................................................. 73839.3. Dclarations ............................................................................................................................ 73939.4. Expressions ............................................................................................................................. 74339.5. Instructions de base ................................................................................................................... 74439.6. Structures de contrle ................................................................................................................ 74939.7. Curseurs ................................................................................................................................. 75839.8. Erreurs et messages ................................................................................................................... 76339.9. Procdures trigger ..................................................................................................................... 76439.10. Les dessous de PL/pgSQL ........................................................................................................ 76939.11. Astuces pour dvelopper en PL/pgSQL ....................................................................................... 77239.12. Portage d'Oracle PL/SQL ...................................................................................................... 774

40. PL/Tcl - Langage de procdures Tcl ..................................................................................................... 78240.1. Aperu ................................................................................................................................... 78240.2. Fonctions et arguments PL/Tcl .................................................................................................... 78240.3. Valeurs des donnes avec PL/Tcl ................................................................................................. 78340.4. Donnes globales avec PL/Tcl ..................................................................................................... 78340.5. Accs la base de donnes depuis PL/Tcl ..................................................................................... 78440.6. Procdures pour dclencheurs en PL/Tcl ....................................................................................... 78540.7. Les modules et la commande unknown ....................................................................................... 78740.8. Noms de procdure Tcl .............................................................................................................. 787

41. PL/Perl - Langage de procdures Perl .................................................................................................... 78841.1. Fonctions et arguments PL/Perl ................................................................................................... 78841.2. Valeurs en PL/Perl .................................................................................................................... 79141.3. Fonction incluses ...................................................................................................................... 79141.4. Valeurs globales dans PL/Perl ..................................................................................................... 79541.5. Niveaux de confiance de PL/Perl ................................................................................................. 79541.6. Dclencheurs PL/Perl ................................................................................................................ 79641.7. PL/Perl sous le capot ................................................................................................................. 797

42. PL/Python - Langage de procdures Python ........................................................................................... 79942.1. Python 2 et Python 3 ................................................................................................................. 79942.2. Fonctions PL/Python ................................................................................................................. 80042.3. Valeur des donnes avec PL/Python ............................................................................................. 80142.4. Sharing Data ............................................................................................................................ 80542.5. Blocs de code anonymes ............................................................................................................ 80542.6. Fonctions de dclencheurs .......................................................................................................... 80542.7. Accs la base de donnes ......................................................................................................... 80642.8. Sous-transactions explicites ........................................................................................................ 80742.9. Fonctions outils ........................................................................................................................ 80842.10. Variables d'environnement ........................................................................................................ 809

43. Interface de programmation serveur ...................................................................................................... 81043.1. Fonctions d'interface ................................................................................................................. 81043.2. Fonctions de support d'interface .................................................................................................. 83843.3. Gestion de la mmoire ............................................................................................................... 84643.4. Visibilit des modifications de donnes ......................................................................................... 85543.5. Exemples ................................................................................................................................ 855

VI. Rfrence .............................................................................................................................................. 858I. Commandes SQL ................................................................................................................................ 859

ABORT ......................................................................................................................................... 860ALTER AGGREGATE ..................................................................................................................... 861

Documentation PostgreSQL 9.1.24

ix

ALTER COLLATION ...................................................................................................................... 862ALTER CONVERSION .................................................................................................................... 863ALTER DATABASE ....................................................................................................................... 864ALTER DEFAULT PRIVILEGES ...................................................................................................... 866ALTER DOMAIN ........................................................................................................................... 868ALTER EXTENSION ...................................................................................................................... 870ALTER FOREIGN DATA WRAPPER ................................................................................................ 873ALTER FOREIGN TABLE ............................................................................................................... 875ALTER FUNCTION ........................................................................................................................ 877ALTER GROUP .............................................................................................................................. 879ALTER INDEX ............................................................................................................................... 880ALTER LANGUAGE ....................................................................................................................... 882ALTER LARGE OBJECT ................................................................................................................. 883ALTER OPERATOR ........................................................................................................................ 884ALTER OPERATOR CLASS ............................................................................................................ 885ALTER OPERATOR FAMILY .......................................................................................................... 886ALTER ROLE ................................................................................................................................ 889ALTER SCHEMA ........................................................................................................................... 892ALTER SEQUENCE ........................................................................................................................ 893ALTER SERVER ............................................................................................................................ 895ALTER TABLE .............................................................................................................................. 896ALTER TABLESPACE .................................................................................................................... 904ALTER TEXT SEARCH CONFIGURATION ...................................................................................... 905ALTER TEXT SEARCH DICTIONARY ............................................................................................. 907ALTER TEXT SEARCH PARSER ..................................................................................................... 909ALTER TEXT SEARCH TEMPLATE ................................................................................................ 910ALTER TRIGGER ........................................................................................................................... 911ALTER TYPE ................................................................................................................................. 912ALTER USER ................................................................................................................................. 915ALTER USER MAPPING ................................................................................................................. 916ALTER VIEW ................................................................................................................................ 917ANALYZE ..................................................................................................................................... 918BEGIN .......................................................................................................................................... 920CHECKPOINT ................................................................................................................................ 922CLOSE .......................................................................................................................................... 923CLUSTER ...................................................................................................................................... 924COMMENT .................................................................................................................................... 926COMMIT ....................................................................................................................................... 929COMMIT PREPARED ..................................................................................................................... 930COPY ............................................................................................................................................ 931CREATE AGGREGATE ................................................................................................................... 938CREATE CAST .............................................................................................................................. 941CREATE COLLATION .................................................................................................................... 945CREATE CONVERSION ................................................................................................................. 947CREATE DATABASE ..................................................................................................................... 949CREATE DOMAIN ......................................................................................................................... 951CREATE EXTENSION .................................................................................................................... 953CREATE FOREIGN DATA WRAPPER .............................................................................................. 955CREATE FOREIGN TABLE ............................................................................................................. 957CREATE FUNCTION ...................................................................................................................... 959CREATE GROUP ............................................................................................................................ 965CREATE INDEX ............................................................................................................................. 966CREATE LANGUAGE .................................................................................................................... 971CREATE OPERATOR ..................................................................................................................... 974CREATE OPERATOR CLASS .......................................................................................................... 976CREATE OPERATOR FAMILY ........................................................................................................ 979CREATE ROLE .............................................................................................................................. 980CREATE RULE .............................................................................................................................. 983CREATE SCHEMA ......................................................................................................................... 985CREATE SEQUENCE ..................................................................................................................... 987CREATE SERVER .......................................................................................................................... 990CREATE TABLE ............................................................................................................................ 992CREATE TABLE AS ..................................................................................................................... 1003

Documentation PostgreSQL 9.1.24

x

CREATE TABLESPACE ................................................................................................................ 1005CREATE TEXT SEARCH CONFIGURATION .................................................................................. 1006CREATE TEXT SEARCH DICTIONARY ......................................................................................... 1007CREATE TEXT SEARCH PARSER ................................................................................................. 1008CREATE TEXT SEARCH TEMPLATE ............................................................................................ 1009CREATE TRIGGER ...................................................................................................................... 1010CREATE TYPE ............................................................................................................................. 1014CREATE USER ............................................................................................................................ 1020CREATE USER MAPPING ............................................................................................................. 1021CREATE VIEW ............................................................................................................................ 1022DEALLOCATE ............................................................................................................................. 1024DECLARE ................................................................................................................................... 1025DELETE ...................................................................................................................................... 1028DISCARD .................................................................................................................................... 1030DO .............................................................................................................................................. 1031DROP AGGREGATE ..................................................................................................................... 1032DROP CAST ................................................................................................................................ 1033DROP COLLATION ...................................................................................................................... 1034DROP CONVERSION ................................................................................................................... 1035DROP DATABASE ....................................................................................................................... 1036DROP DOMAIN ........................................................................................................................... 1037DROP EXTENSION ...................................................................................................................... 1038DROP FOREIGN DATA WRAPPER ................................................................................................ 1039DROP FOREIGN TABLE ............................................................................................................... 1040DROP FUNCTION ........................................................................................................................ 1041DROP GROUP .............................................................................................................................. 1042DROP INDEX ............................................................................................................................... 1043DROP LANGUAGE ...................................................................................................................... 1044DROP OPERATOR ....................................................................................................................... 1045DROP OPERATOR CLASS ............................................................................................................ 1046DROP OPERATOR FAMILY .......................................................................................................... 1047DROP OWNED ............................................................................................................................. 1048DROP ROLE ................................................................................................................................ 1049DROP RULE ................................................................................................................................ 1050DROP SCHEMA ........................................................................................................................... 1051DROP SEQUENCE ........................................................................................................................ 1052DROP SERVER ............................................................................................................................ 1053DROP TABLE .............................................................................................................................. 1054DROP TABLESPACE .................................................................................................................... 1055DROP TEXT SEARCH CONFIGURATION ...................................................................................... 1056DROP TEXT SEARCH DICTIONARY ............................................................................................. 1057DROP TEXT SEARCH PARSER ..................................................................................................... 1058DROP TEXT SEARCH TEMPLATE ................................................................................................ 1059DROP TRIGGER ........................................................................................................................... 1060DROP TYPE ................................................................................................................................. 1061DROP USER ................................................................................................................................ 1062DROP USER MAPPING ................................................................................................................. 1063DROP VIEW ................................................................................................................................ 1064END ............................................................................................................................................ 1065EXECUTE ................................................................................................................................... 1066EXPLAIN .................................................................................................................................... 1067FETCH ........................................................................................................................................ 1071GRANT ....................................................................................................................................... 1074INSERT ....................................................................................................................................... 1079LISTEN ....................................................................................................................................... 1082LOAD ......................................................................................................................................... 1083LOCK .......................................................................................................................................... 1084MOVE ......................................................................................................................................... 1086NOTIFY ...................................................................................................................................... 1088PREPARE .................................................................................................................................... 1090PREPARE TRANSACTION ............................................................................................................ 1092REASSIGN OWNED ..................................................................................................................... 1094REINDEX .................................................................................................................................... 1095

Documentation PostgreSQL 9.1.24

xi

RELEASE SAVEPOINT ................................................................................................................. 1097RESET ........................................................................................................................................ 1098REVOKE ..................................................................................................................................... 1099ROLLBACK ................................................................................................................................. 1102ROLLBACK PREPARED ............................................................................................................... 1103ROLLBACK TO SAVEPOINT ........................................................................................................ 1104SAVEPOINT ................................................................................................................................ 1106SECURITY LABEL ....................................................................................................................... 1107SELECT ...................................................................................................................................... 1109SELECT INTO .............................................................................................................................. 1123SET ............................................................................................................................................. 1125SET CONSTRAINTS ..................................................................................................................... 1128SET ROLE ................................................................................................................................... 1129SET SESSION AUTHORIZATION .................................................................................................. 1131SET TRANSACTION .................................................................................................................... 1132SHOW ......................................................................................................................................... 1134START TRANSACTION ................................................................................................................ 1136TRUNCATE ................................................................................................................................. 1137UNLISTEN .................................................................................................................................. 1139UPDATE ...................................................................................................................................... 1140VACUUM .................................................................................................................................... 1143VALUES ...................................................................................................................................... 1146

II. Applications client de PostgreSQL ...................................................................................................... 1148clusterdb ...................................................................................................................................... 1149createdb ....................................................................................................................................... 1151createlang ..................................................................................................................................... 1153createuser ..................................................................................................................................... 1155dropdb ......................................................................................................................................... 1158droplang ....................................................................................................................................... 1160dropuser ....................................................................................................................................... 1162ecpg ............................................................................................................................................ 1164pg_basebackup .............................................................................................................................. 1166pg_config ..................................................................................................................................... 1169pg_dump ...................................................................................................................................... 1171pg_dumpall ................................................................................................................................... 1178pg_restore ..................................................................................................................................... 1182psql ............................................................................................................................................. 1187reindexdb ..................................................................................................................................... 1209vacuumdb ..................................................................................................................................... 1211

III. Applications relatives au serveur PostgreSQL ....................................................................................... 1213initdb ........................................................................................................................................... 1214pg_controldata ............................................................................................................................... 1217pg_ctl .......................................................................................................................................... 1218pg_resetxlog ................................................................................................................................. 1222postgres ........................................................................................................................................ 1224postmaster .................................................................................................................................... 1229

VII. Internes .............................................................................................................................................. 123044. Prsentation des mcanismes internes de PostgreSQL ............................................................................ 1231

44.1. Chemin d'une requte .............................................................................................................. 123144.2. tablissement des connexions ................................................................................................... 123144.3. tape d'analyse ...................................................................................................................... 123244.4. Systme de rgles de PostgreSQL ........................................................................................... 123244.5. Planificateur/Optimiseur .......................................................................................................... 123344.6. Excuteur .............................................................................................................................. 1234

45. Catalogues systme ........