summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian2004-07-15 15:25:25 +0000
committerBruce Momjian2004-07-15 15:25:25 +0000
commit1e0415d96d15acf03c030bc2528a7a92be15f0ee (patch)
treea17b3b3ba66adfa1fbd0089e53662824090484dc
parent036ecf7afb1aa413b2e66a0caba163cfcaf713d7 (diff)
Add French FAQ.
LELARGE Guillaume
-rw-r--r--doc/FAQ_french1322
-rw-r--r--doc/src/FAQ/FAQ_french.html1498
2 files changed, 2820 insertions, 0 deletions
diff --git a/doc/FAQ_french b/doc/FAQ_french
new file mode 100644
index 00000000000..9e00870214e
--- /dev/null
+++ b/doc/FAQ_french
@@ -0,0 +1,1322 @@
+
+ Foire Aux Questions (FAQ) pour PostgreSQL
+
+ Derni�re mise � jour : vendredi 11 juillet 2004 23:58:24
+
+ Mainteneur actuel : Bruce Momjian ([email protected])
+
+ La plus r�cente version de ce document est disponible sur
+ http://www.PostgreSQL.org/docs/faqs/FAQ.html.
+
+ Les questions sp�cifiques � la plateforme sont r�pondues sur
+ http://www.PostgreSQL.org/docs/index.html.
+ _________________________________________________________________
+
+ Questions g�n�rales
+
+ 1.1) Qu'est ce que PostgreSQL ? Comment le prononcer ?
+ 1.2) Quelle est la licence de PostgreSQL ?
+ 1.3) Sous quels environnements Unix PostgreSQL tourne-t-il ?
+ 1.4) Sous quels environnements non-Unix PostgreSQL tourne-t-il ?
+ 1.5) O� puis-je me procurer PostgreSQL ?
+ 1.6) O� puis-je obtenir du support ?
+ 1.7) Quelle est la derni�re version ?
+ 1.8) Quelle documentation est disponible ?
+ 1.9) Comment savoir quels sont les bogues connus ou les
+ fonctionnalit�s manquantes ?
+ 1.10) Comment puis-je apprendre le SQL ?
+ 1.11) PostgreSQL est-il compatible an 2000 ?
+ 1.12) Comment puis-je rejoindre l'�quipe de d�veloppement ?
+ 1.13) Comment dois-je soumettre un rapport de bogue ?
+ 1.14) Comment PostgreSQL se compare-t'il � d'autres SGBD ?
+ 1.15) Comment puis-je aider financi�rement PostgreSQL ?
+
+ Questions sur le client utilisateur
+
+ 2.1) Y a-t-il des pilotes ODBC pour PostgreSQL ?
+ 2.2) Quels outils sont disponibles pour utiliser PostgreSQL avec des
+ pages Web ?
+ 2.3) PostgreSQL a-t-il une interface graphique ?
+ 2.4) Quels langages sont disponibles pour communiquer avec
+ PostgreSQL ?
+
+ Questions administratives
+
+ 3.1) Comment installer PostgreSQL ailleurs que sous /usr/local/pgsql ?
+ 3.2) Quand je lance postmaster, j'obtiens un Bad System Call ou un
+ message core dumped. Pourquoi ?
+ 3.3) Quand je lance postmaster, j'obtiens des erreurs IpcMemoryCreate.
+ Pourquoi ?
+ 3.4) Quand je lance postmaster, j'obtiens des erreurs
+ IpcSemaphoreCreate. Pourquoi ?
+ 3.5) Comment contr�ler les connexions d'autres machines ?
+ 3.6) Comment r�gler le moteur de la base de donn�es pour de meilleures
+ performances ?
+ 3.7) Quelles fonctionalit�s de d�boguage sont disponibles ?
+ 3.8) Pourquoi est-ce que j'obtiens des messages Sorry, too many
+ clients quand je me connecte ?
+ 3.9) Que contient le r�pertoire pgsql_tmp ?
+ 3.10) Pourquoi ai-je besoin de faire une sauvegarde des bases et de
+ restaurer pour mettre a jour les versions de PostgreSQL ?
+ 3.11) Quels mat�riels dois-je utiliser ?
+
+ Questions fonctionnelles
+
+ 4.1) Quelle est la diff�rence entre curseur binaire et curseur
+ normal ?
+ 4.2) Comment faire un SELECT seulement sur les premi�res lignes d'une
+ requ�te ? Sur une ligne al�atoire ?
+ 4.3) Comment obtenir une liste des tables ou d'autres choses que je
+ vois dans psql ?
+ 4.4) Comment supprime-t-on une colonne d'une table, ou comment
+ change-t-on son type de donn�es ?
+ 4.5) Quelle est la taille maximale pour une ligne, une table et une
+ base de donn�es ?
+ 4.6) Combien d'espace disque faut-il pour stocker les donn�es d'un
+ fichier texte typique ?
+ 4.7) Comment puis-je savoir quels index, tables, bases de donn�es et
+ utilisateurs sont d�finis ?
+ 4.8) Mes requ�tes sont lentes ou ne font pas usage des index.
+ Pourquoi ?
+ 4.9) Comment puis-je savoir si l'optimiseur �value mes requ�tes ?
+ 4.10) Qu'est-ce qu'un index R-tree ?
+ 4.11) Qu'est-ce que l'optimiseur g�n�tique de requ�tes ?
+ 4.12) Comment puis-je r�aliser des recherches par des expressions
+ rationnelles ainsi que des recherches non sensibles � la casse ?
+ Comment puis-je utiliser un index lors de recherches non sensibles �
+ la casse ?
+ 4.13) Comment puis-je d�tecter si un champ est NULL dans une requ�te ?
+ 4.14) Quelle sont les diff�rences entre les nombreux types de
+ caract�res ?
+ 4.15.1) Comment puis-je cr�er un champ s�rie, c'est-�-dire
+ s'incr�mentant automatiquement ?
+ 4.15.2) Comment puis-je obtenir la valeur d'un SERIAL suite � une
+ insertion ?
+ 4.15.3) Est-ce que currval() et nextval() n'am�nent pas des probl�mes
+ lorsque plusieurs utilisateurs les lancent en m�me temps ?
+ 4.15.4) Pourquoi mes num�ros de s�quences ne sont pas r�-utilis�s lors
+ d'une annulation de transaction ? Pourquoi existe-t'il des trous dans
+ la num�rotation de ma colonne s�quentielle (SERIAL) ?
+ 4.16) Qu'est-ce qu'un OID? Qu'est-ce qu'un TID ?
+ 4.17) A quoi correspond certains termes utilis�s avec PostgreSQL ?
+ 4.18) Pourquoi ai-je l'erreur ERROR: Memory exhausted in
+ AllocSetAlloc() ?
+ 4.19) Comment puis-je conna�tre la version de PostgreSQL que
+ j'utilise ?
+ 4.20) Pourquoi ai-je invalid large obj descriptor lors d'op�rations
+ avec des gros objets ?
+ 4.21) Comment puis-je cr�er une colonne qui aura par d�faut l'heure
+ actuelle comme valeur ?
+ 4.22) Pourquoi mes sous-requ�tes utilisant IN sont-elles si lentes ?
+ 4.23) Comment puis-je r�aliser une jointure externe ?
+ 4.24) Comment puis-je lancer des requ�tes utilisant plusieurs bases de
+ donn�es ??
+ 4.25) Comment puis-je renvoyer plusieurs lignes ou colonnes � partir
+ d'une fonction ?
+ 4.26) Why can't I reliably create/drop temporary tables in PL/PgSQL
+ functions?
+ 4.27) Quelles options de replication sont disponibles ?
+ 4.28) Quelles options de cryptage sont disponibles ?
+
+ Etendre PostgreSQL
+
+ 5.1) J'ai �crit une fonction utilisateur. Lorsque je l'ex�cute avec
+ psql, pourquoi cela finit-il avec un "dump core" ?
+ 5.2) Comment puis-je contribuer avec de nouveaux types et fonctions
+ pour PostgreSQL ?
+ 5.3) Comment puis-je �crire une fonction C pour r�cup�rer une ligne ?
+ 5.4) J'ai modifi� un fichier source. Pourquoi la modification
+ n'est-elle pas visible apr�s la recompilation ?
+ _________________________________________________________________
+
+ Questions g�n�rales
+
+ 1.1) Qu'est ce que PostgreSQL ? Comment le prononcer ?
+
+ PostgreSQL se prononce Post-Gres-Q-L. Un fichier audio est disponible
+ sur http://www.postgresql.org/postgresql.mp3 pour ceux souhaitant
+ entendre la prononciation.
+
+ PostgreSQL est une am�lioration du syst�me de gestion de bases de
+ donn�es POSTGRES (et est toujours quelque fois appel� "Postgres"), un
+ prototype de recherche de SGBD de prochaine g�n�ration. PostgreSQL
+ garde le puissant mod�le de donn�es et les types de donn�es riches de
+ POSTGRES, mais remplace le langage de requ�tes PostQuel par un
+ sous-ensemble �tendu de SQL. PostgreSQL est gratuit et les sources
+ complets sont disponibles.
+
+ PostgreSQL est �crit par une �quipe de d�veloppeurs qui sont tous
+ inscrits � la liste de diffusion de d�veloppement de PostgreSQL. Le
+ coordinateur actuel est Marc G. Fournier ([email protected] et
+ voir la section 1.6 pour contacter les d�veloppeurs). Cette �quipe est
+ responsable de tout le d�veloppement de PostgreSQL. C'est un projet
+ soutenu par une communaut� sans �tre contr�l� par une soci�t�. Pour y
+ contribuer, voir la FAQ des d�veloppeurs sur
+ http://www.postgresql.org/docs/faqs/FAQ_DEV.html.
+
+ Les auteurs de PostgreSQL 1.01 �taient Andrew Yu et Jolly Chen.
+ Beaucoup d'autres personnes ont contribu� au portage, aux tests, au
+ d�boguage et � l'am�lioration du code. Le code de Postgres original,
+ duquel PostgreSQL est d�riv�, �tait le fruit de l'effort de nombreux
+ �tudiants dipl�m�s et non dipl�m�s, et de programmeurs travaillant
+ sous la direction du Professeur Michael Stonebraker � l'universit� de
+ Californie, Berkeley.
+
+ Le nom original du logiciel � Berkeley �tait Postgres. Quand le SQL
+ fut ajout� en 1995, le nom a d� �tre chang� en Postgres95. Fin 1996,
+ le nom fut chang� en PostgreSQL.
+
+ 1.2) Quelle est la licence de PostgreSQL ?
+
+ PostgreSQL est distribu� sous la licence suivante :
+
+ PostgreSQL Data Base Management System
+
+ Portions copyright (c) 1996-2004, PostgreSQL Global Development Group
+ Portions Copyright (c) 1994-6 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 granted, 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, OR CONSEQUENTIAL DAMAGES,
+ INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
+ ITS DOCUMENTATION, EVEN IF 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 WARRANTIES 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.
+
+ La licence ci-dessus est la licence BSD, une licence open-source
+ classique.
+
+ 1.3) Sous quels environnements Unix PostgreSQL tourne-t-il ?
+
+ En g�n�ral, tout environnement compatible Unix moderne devrait pouvoir
+ faire fonctionner PostgreSQL. Les environnements qui ont �t� test�s
+ explicitement sont list�s dans les instructions d'installation.
+
+ 1.4) Sous quels environnements non Unix PostgreSQL fonctionne-t'il ?
+
+ Client
+
+ Il est possible de compiler la biblioth�que C libpq, psql et d'autres
+ interfaces et applications clientes pour qu'elles tournent sous des
+ environnements MS Windows. Dans ce cas, le client tourne sous MS
+ Windows et communique par TCP/IP avec un serveur tournant sous un
+ environnement Unix support�. Un fichier win32.mak est inclus dans la
+ distribution pour construire une biblioth�que libpq psql Win32.
+ PostgreSQL communique aussi avec des clients ODBC.
+
+ Serveur
+
+ Le serveur de base de donn�es peut tourner sous Windows NT et Windows
+ 2000 en utilisant Cygwin, la biblioth�que de portage Unix/NT de
+ Cygnus. Voir pgsql/doc/FAQ_MSWIN dans la distribution ou la FAQ MS
+ Windows sur http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
+
+ Un port natif sur MS Windows NT/2000/XP est en court. Pour plus de
+ d�tails sur le statut actuel de PostgreSQL sur Windows, voir
+ http://techdocs.postgresql.org/guides/Windows et
+ http://momjian.postgresql.org/main/writings/pgsql/win32.html.
+
+ Il existe aussi un port sur Novell Netware sur
+ http://forge.novell.com.
+
+ 1.5) O� puis-je me procurer PostgreSQL ?
+
+ Le site FTP anonyme principal de PostgreSQL est
+ ftp://ftp.PostgreSQL.org/pub. Pour les sites miroirs, voir notre site
+ web principal.
+
+ 1.6) O� puis-je obtenir du support ?
+
+ La liste de diffusion principale est [email protected].
+ Elle est disponible pour discuter de sujets en rapport avec
+ PostgreSQL. Pour s'y inscrire, il faut envoyer un courriel avec les
+ lignes suivantes dans le corps du message (pas dans la ligne du
+ sujet) :
+ subscribe
+ end
+
+
+ Il existe aussi un recueil de la liste. Pour s'y inscrire, envoyez un
+ courriel � [email protected] avec dans le
+ corps :
+ subscribe
+ end
+
+ Les recueils sont envoy�s aux membres de cette liste d�s que la liste
+ principale a re�u 30 Ko de messages.
+
+ Une liste de diffusion de bogues est disponible. Pour s'y inscrire,
+ envoyer un courriel � [email protected] avec dans le
+ corps :
+ subscribe
+ end
+
+ Une liste de diffusion pour les d�veloppeurs est aussi disponible.
+ Pour s'y inscrire, envoyez un courriel �
+ [email protected] avec dans le corps :
+ subscribe
+ end
+
+ Vous pouvez trouver d'autres listes et informations sur PostgreSQL sur
+ le site web de PostgreSQL :
+
+ http://www.PostgreSQL.org
+
+ Il y a aussi un canal IRC sur Freenode et EFNet, le canal #PostgreSQL.
+ Vous pouvez utiliser la commande Unix irc -c '#PostgreSQL' "$USER"
+ irc.phoenix.net ou irc -c '#PostgreSQL' "$USER" irc.freenode.net.
+
+ Une liste de soci�t�s pouvant fournir un support commercial est
+ disponible sur http://techdocs.postgresql.org/companies.php.
+
+ 1.7) Quelle est la derni�re version ?
+
+ La derni�re version de PostgreSQL est la version 7.4.3.
+
+ Nous projetons de sortir une version majeure tous les six � huit mois.
+
+ 1.8) Quelle documentation est disponible ?
+
+ Plusieurs manuels, pages de manuel ainsi que des petits exemples de
+ test sont inclus dans la distribution. Voir le r�pertoire /doc. Vous
+ pouvez aussi acc�der aux manuels en ligne sur
+ http://www.PostgreSQL.org/docs.
+
+ Deux livres sur PostgreSQL sont disponibles en ligne sur
+ http://www.PostgreSQL.org/docs/awbook.html et
+ http://www.commandprompt.com/ppbook/. Il y a une liste de livres sur
+ PostgreSQL pouvant �tre achet�s sur
+ http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Il y a aussi
+ une collection d'articles techniques sur PostgreSQL sur
+ http://techdocs.PostgreSQL.org/.
+
+ psql poss�de des commandes \d pratiques montrant des informations sur
+ les types, op�rateurs, fonctions, aggr�gats, etc.
+
+ Notre site web contient encore plus de documentations.
+
+ 1.9) Comment savoir quels sont les bogues connus ou les fonctionnalit�s
+ manquantes ?
+
+ PostgreSQL supporte un sous-ensemble �tendu de SQL-92. Voir notre
+ liste TODO pour les bogues connus, les fonctionnalit�s manquantes et
+ les plans pour le futur.
+
+ 1.10) Comment puis-je apprendre le SQL ?
+
+ Le livre PostgreSQL sur http://www.PostgreSQL.org/docs/awbook.html
+ enseigne le SQL. Il existe un autre livre PostgreSQL sur
+ http://www.commandprompt.com/ppbook. Il existe de bons tutoriels sur
+ http://www.intermedia.net/support/sql/sqltut.shtm,
+ http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
+ et http://sqlcourse.com.
+
+ Un autre (en anglais uniquement) "Teach Yourself SQL in 21 Days,
+ Second Edition" se trouve sur
+ http://members.tripod.com/er4ebus/sql/index.htm
+
+ Nombre de nos utilisateurs aiment The Practical SQL Handbook, Bowman,
+ Judith S., et al., Addison-Wesley. D'autres aiment The Complete
+ Reference SQL, Groff et al., McGraw-Hill.
+
+ 1.11) PostgreSQL est-il compatible an 2000 ?
+
+ Oui, nous manipulons facilement les dates apr�s et avant l'an 2000.
+
+ 1.12) Comment puis-je rejoindre l'�quipe de d�veloppement ?
+
+ Tout d'abord, t�l�chargez les derniers sources et lisez la
+ documentation pour les d�veloppeurs sur notre site web ou bien dans la
+ distribution. Ensuite, inscrivez-vous aux listes de diffusion
+ pgsql-hackers et pgsql-patches. Et pour finir, soumettez des
+ correctifs de grande qualit� sur pgsql-patches.
+
+ Environ une douzaine de personnes ont des droits de modification sur
+ l'archive CVS de PostgreSQL. Ils ont chacun soumis tellement de
+ correctifs de qualit� qu'il �tait devenu impossible aux d�veloppeurs
+ de tenir la cadence et nous avions confiance dans le qualit� des
+ correctifs qu'ils soumettaient.
+
+ 1.13) Comment dois-je soumettre un rapport de bogue ?
+
+ Merci de visiter la page PostgreSQL BugTool sur
+ http://www.PostgreSQL.org/bugs/bugs.php, qui donne des indications sur
+ la fa�on de soumettre un rapport de bogue.
+
+ De m�me, v�rifiez notre site ftp ftp://ftp.PostgreSQL.org/pub pour
+ voir s'il existe une version PostgreSQL plus r�cente ou des
+ correctifs.
+
+ 1.14) Comment PostgreSQL se compare-til � d'autres SGBD ?
+
+ Il y a plusieurs mani�res de mesurer un logiciel : les
+ fonctionnalit�s, les performances, la fiabilit�, le support, et le
+ prix.
+
+ Fonctionnalit�s
+ PostgreSQL poss�de la plupart des fonctionnalit�s pr�sentes
+ dans les SGBD commerciaux, comme les transactions, les requ�tes
+ imbriqu�es, les d�clencheurs, les vues, l'int�grit�
+ r�f�rentielle par cl�s �trang�res, et le verrouillage
+ sophistiqu�. Nous avons des fonctionnalit�s qu'ils n'ont pas,
+ comme les types d�finis par l'utilisateur, l'h�ritage, les
+ r�gles, et le contr�le de concurrence par multi-versionnage
+ pour r�duire les contentions de verrouillage.
+
+ Performances
+ PostgreSQL a des performances similaires aux autres bases de
+ donn�es commerciales et open source. Il est plus rapide pour
+ certaines op�rations, plus lent pour d'autres. Par rapport �
+ MySQL ou d'autres SGBD plus l�ger, nous sommes plus rapides
+ pour de nombreux utilisateurs, des requ�tes complexes et une
+ charge pour les requ�tes de lecture/�criture. MySQL est plus
+ rapide pour des requ�tes SELECT simples effectu�es par quelques
+ utilisateurs. Bien s�r, MySQL ne poss�de aucune des
+ fonctionnalit�s de la section Fonctionnalit�s ci-dessus.
+ PostgreSQL est construit pour la fiabilit� et les
+ fonctionnalit�s et nous continuons � am�liorer les performances
+ � chaque version. Il y a une page web int�ressante qui compare
+ PostgreSQL � MySQL sur
+ http://openacs.org/philosophy/why-not-mysql.html. De plus,
+ MySQL est une soci�t� qui distribue son produit via l'open
+ source et requiert une licence commerciale pour les logiciels
+ propri�taires, donc pas une communaut� de d�veloppement open
+ source comme PostgreSQL.
+
+ Fiabilit�
+ Nous somme conscients qu'un SGBD doit �tre fiable ou bien il
+ est inutile. Nous faisons le maximum pour sortir des versions
+ bien test�es, du code stable ne contenant qu'un minimum de
+ bogues. Chaque version a au moins un mois de tests, et notre
+ historique de versions montre que nous pouvons fournir des
+ versions stables et robustes, pr�tes pour une utilisation en
+ environnement de production. Nous pensons que nous nous
+ comparons favorablement aux autres bases de donn�es dans ce
+ domaine.
+
+ Support
+ Nos listes de diffusion offrent un contact avec un large groupe
+ de d�veloppeurs et d'utilisateurs afin d'aider � la r�solution
+ des probl�mes rencontr�s. Nous ne pouvons garantir un correctif
+ mais les SGBD commerciaux ne le garantissent pas toujours non
+ plus. L'acc�s direct aux d�veloppeurs, � la communaut�
+ d'utilisateurs, aux manuels, et au code source, fait du support
+ pour PostgreSQL un support sup�rieur aux autres SGBD. Un
+ support commercial par incident est disponible pour ceux qui en
+ ont le besoin (voir la section 1.6 de la FAQ).
+
+ Prix
+ Nous sommes gratuits pour tous les usages, commerciaux et non
+ commerciaux. Vous pouvez inclure notre code dans vos produits
+ sans limitation, except�es celles cit�es dans notre licence de
+ type BSD donn�e plus haut.
+
+ 1.15) Comment puis-je aider financi�rement PostgreSQL ?
+
+ PostgreSQL poss�de une infrastructure de premi�re classe depuis le
+ d�but en 1996. Ceci gr�ce � Marc Fournier, qui a cr�� et g�r� cette
+ infrastructure des ann�es durant.
+
+ Une infrastructure de qualit� est importante pour un projet
+ open-source. Cela permet d'emp�cher l'�parpillement qui ralentirait
+ beaucoup l'avancement du projet.
+
+ Bien s�r, cette infrastructure n'est pas donn�e. Elle requiert un
+ certain nombre de d�penses mensuelles ou ponctuelles. Si vous ou votre
+ soci�t� peut donner de l'argent pour soutenir cet effort, merci de
+ consulter la page web http://store.pgsql.com/shopping/ et de faire une
+ donation.
+
+ Bien que la page web mentionne PostgreSQL, Inc, les contributions sont
+ exclusivement utilis�es pour soutenir le projet PostgreSQL et ne
+ soutiennent aucune soci�t� que ce soit. Si vous le pr�f�rez, vous
+ pouvez aussi envoyer un ch�que � l'adresse de contact.
+ _________________________________________________________________
+
+ De plus, si vous avez une histoire de succ�s avec PostgreSQL, merci de
+ la soumettre � notre site d'�vang�lisation sur
+ http://advocacy.postgresql.org.
+
+ Questions sur le client utilisateur
+
+ 2.1) Existe-t'il des pilotes ODBC pour PostgreSQL ?
+
+ Il y a deux pilotes ODBC disponibles, PsqlODBC et OpenLink ODBC.
+
+ Vous pouvez t�l�charger PsqlOBDC depuis
+ http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
+
+ OpenLink ODBC peut �tre obtenu depuis http://www.openlinksw.com. Il
+ fonctionne avec leur logiciel client ODBC standard, vous aurez donc
+ PostgreSQL ODBC sur toutes les plateformes client qu'ils supportent
+ (Win, Mac, Unix, VMS).
+
+ Ils vendront probablement ce produit aux gens qui recherchent une
+ qualit� de support professionnelle mais une version freeware sera
+ toujours disponible. Merci d'envoyer vos questions �
+
+ 2.2) Quels outils sont disponibles pour utiliser PostgreSQL avec des pages
+ Web ?
+
+ Une bonne introduction aux pages Web adoss�s � une base de donn�es se
+ trouve � http://www.webreview.com
+
+ Pour l'int�gration Web, PHP est une excellente interface. Elle se
+ trouve � http://www.php.net.
+
+ Pour les cas complexes, beaucoup utilisent l'interface Perl et CGI.pm
+ ou mod_perl.
+
+ 2.3) PostgreSQL a-t-il une interface graphique ?
+
+ Oui, il y a plusieurs interfaces graphiques disponibles pour
+ PostgreSQL, dont PgAccess http://www.pgaccess.org), PgAdmin III
+ (http://www.pgadmin.org), RHDB Admin (http://sources.redhat.com/rhdb/
+ et Rekall ( http://www.thekompany.com/products/rekall/, propri�taire).
+ Il y a aussi PhpPgAdmin ( http://phppgadmin.sourceforge.net/ ), une
+ interface Web pour PostgreSQL.
+
+ Voir http://techdocs.postgresql.org/guides/GUITools pour une liste
+ plus d�taill�e.
+
+ 2.4) Quels langages sont disponibles pour communiquer avec PostgreSQL ?
+
+ La plupart des langages de programmation couramment utilis�s ont une
+ interface pour PostgreSQL. V�rifiez la liste des modules de votre
+ langage.
+
+ Les interfaces ci-dessous sont incluses dans la distribution :
+ * C (libpq)
+ * Embedded C (ecpg)
+ * Java (jdbc)
+ * Python (PyGreSQL)
+ * TCL (libpgtcl)
+
+ Interfaces suppl�mentaires disponibles sur http://gborg.postgresql.org
+ dans la section Drivers/Interfaces
+ _________________________________________________________________
+
+ Questions Administratives
+
+ 3.1) Comment installer PostgreSQL ailleurs que sous /usr/local/pgsql ?
+
+ Il faut sp�cifier l'option --prefix lors du lancement de configure.
+
+ 3.2) Quand je lance postmaster, j'obtiens un Bad System Call ou un message
+ core dumped . Pourquoi ?
+
+ Cela peut �tre d� � une vari�t� de probl�mes mais v�rifiez d'abord que
+ vous avez les extensions System V install�es pour votre noyau.
+ PostgreSQL n�cessite le support noyau pour la m�moire partag�e et les
+ s�maphores.
+
+ 3.3) Quand je lance postmaster, j'obtiens des erreurs IpcMemoryCreate.
+ Pourquoi ?
+
+ Soit vous n'avez pas configur� correctement la m�moire partag�e dans
+ votre noyau, soit vous devez augmenter la m�moire partag�e disponible
+ dans le noyau. Le montant exact dont vous avez besoin d�pend de votre
+ architecture et du nombre de tampons et de processus que vous avez
+ configur� pour postmaster. Pour la plupart des syst�mes avec un nombre
+ par d�faut de tampons et de processus, vous aurez besoin d'un minimum
+ d'environ 1 Mo. Voir le chapitre Administration du manuel PostgreSQL
+ pour des informations plus d�taill�es sur la m�moire partag�e et les
+ s�maphores.
+
+ 3.4) Quand je lance postmaster, j'obtiens des erreurs IpcSemaphoreCreate.
+ Pourquoi ?
+
+ Si le message d'erreur est IpcSemaphoreCreate: semget failed (No space
+ left on device) alors votre noyau n'est pas configur� avec
+ suffisamment de s�maphores. PostgreSQL a besoin d'un s�maphore par
+ processus serveur potentiel. Une solution provisoire est de lancer
+ postmaster avec une plus petite limite sur le nombre de processus
+ serveur. Utilisez l'option -N avec un param�tre inf�rieur au choix par
+ d�faut de 32. Une solution permanente est d'augmenter les param�tres
+ SEMMNS et SEMMNI de votre noyau.
+
+ Des s�maphores inop�rantes peuvent aussi provoquer des plantages
+ pendant de gros acc�s � la base de donn�es.
+
+ Si le message d'erreur est autre chose, vous n'avez peut-�tre pas du
+ tout le support des s�maphores dans votre noyau. Voir le chapitre
+ Administration du manuel PostgreSQL pour des informations plus
+ d�taill�es sur la m�moire partag�e et les s�maphores.
+
+ 3.5) Comment contr�ler les connexions d'autres machines ?
+
+ Par d�faut, PostgreSQL n'autorise que les connexions de la machine
+ locale utilisant les sockets de domaine Unix. D'autres machines ne
+ seront pas capables de se connecter sauf si vous configurez
+ tcpip_sockets dans postgresql.conf et activez l'authentification bas�e
+ sur l'h�te en modifiant le fichier $PGDATA/pg_hba.conf en cons�quence.
+ Ceci autorisera les connexions TCP/IP.
+
+ 3.6) Comment r�gler le moteur de la base de donn�es pour de meilleures
+ performances ?
+
+ Des index acc�l�reront les requ�tes. La commande EXPLAIN ANALYZE vous
+ permet de voir comment PostgreSQL traite votre requ�te et quels index
+ sont utilis�s.
+
+ Si vous faites beaucoup d'insertions (instruction INSERT), envisagez
+ de les faire en une fois en utilisant la commande COPY. Ceci est plus
+ rapide que des commandes INSERTS individuelles. Deuxi�ment, les
+ requ�tes qui ne sont pas dans des blocs de transaction BEGIN
+ WORK/COMMIT sont consid�r�s comme �tant dans leur propre transaction.
+ Envisagez de faire plusieurs instructions dans un seul bloc de
+ transaction. Ceci r�duira la surcharge apport�e par les transactions.
+ Aussi, envisagez d'abandonner et de recr�er des index lors de grosses
+ modifications de donn�es.
+
+ Il y a plusieurs options d'optimisations. Vous pouvez d�sactiver
+ fsync() en lan�ant postmaster avec l'option -o -F. Ceci emp�chera les
+ fsync()s d'�crire sur disque apr�s toute transaction.
+
+ Vous pouvez utiliser l'option -B de postmaster pour augmenter le
+ nombre de tampons de m�moire partag�e utilis�s par les processus
+ serveurs. Si vous fixez ce param�tre trop haut, postmaster ne se
+ lancera pas car vous avez d�pass� la limite de votre noyau sur la
+ quantit� de m�moire partag�e. Chaque tampon fait 8 Ko et le choix par
+ d�faut est de 64 tampons.
+
+ Vous pouvez utiliser l'option serveur -S pour augmenter la quantit�
+ maximale de m�moire utilis�e par les processus serveurs pour des tris
+ temporaires. La valeur de -S est mesur� en kilooctets et le choix par
+ d�faut est de 512 (c'est-�-dire 512 Ko).
+
+ Vous pouvez utiliser la commande CLUSTER pour regrouper vos donn�es en
+ tables pour correspondre � un index. Voir la page de manual CLUSTER
+ pour plus de d�tails.
+
+ 3.7) Quelles fonctionalit�s de d�boguage sont disponibles ?
+
+ PostgreSQL a plusieurs fonctionalit�s qui permettent de recueillir des
+ informations de statut qui peuvent �tre utile pour des intentions de
+ d�boguage.
+
+ D'abord, en lan�ant configure avec l'option --enable-cassert, beaucoup
+ d'assert()s surveillent le serveur et arr�tent le programme quand
+ quelque chose d'inattendu arrive.
+
+ Postmaster et postgres ont tous deux plusieurs options de d�boguage de
+ disponible. D'abord, quand vous lancez postmaster, v�rifiez que vous
+ envoyez les sorties standard et d'erreur dans un fichier de traces
+ comme :
+ cd /usr/local/pgsql
+ ./bin/postmaster >server.log 2>&1 &
+
+ Ceci va cr�er un fichier server.log dans le r�pertoire racine de
+ PostgreSQL. Ce fichier contient des informations utiles sur les
+ probl�mes ou erreurs rencontr�s par le serveur. Postmaster dispose
+ d'une option -d qui permet de rapporter des informations encore plus
+ d�taill�es d'�tre rapport�es. L'option -d prend un num�ro qui sp�cifie
+ le niveau de d�boguage. Faites attention au fait que des valeurs
+ �l�v�es de niveau de d�boguage g�nerent des fichiers de traces
+ volumineux.
+
+ Si postmaster ne tourne pas, vous pouvez lancer le serveur postgres de
+ la ligne de commande et taper votre requ�te SQL directement. Ceci est
+ recommand� seulement pour des fonctions de d�boguage. Notez qu'un
+ retour chariot termine la requ�te, pas un point-virgule. Si vous
+ compilez avec les symboles de d�boguage, vous pouvez utiliser un
+ d�bogueur pour voir ce qui se passe. Parce que le serveur n'a pas �t�
+ lanc� par postmaster, il ne tourne pas dans un environnement identique
+ et les probl�mes d'interaction de verrouillage/serveur ne peuvent �tre
+ dupliqu�s.
+
+ Si postmaster est en train de tourner, lancez psql dans une fen�tre
+ puis trouvez le PID du processus postgres utilis� par psql. Utilisez
+ un d�bogueur pour l'attacher au PID postgres. Vous pouvez mettre un
+ point d'arr�t dans le d�bogueur et envoyez des requ�tes de psql. Si
+ vous d�boguez le d�marrage de postgres, vous pouvez mettre
+ PGOPTIONS="-W n", puis lancez psql. Ceci va retarder le d�marrage de n
+ secondes pour que vous puissiez attacher un d�bogueur au processus,
+ fixer des points d'arr�t et continuer la s�quence de d�marrage.
+
+ Le programme postgres a les options -s, -A et -t qui peuvent �tre
+ utile pour des mesures de d�boguage et de performance.
+
+ Vous pouvez compiler avec les options de performance pour voir quelles
+ fonctions prennent du temps d'ex�cution. Les fichiers de gestion du
+ serveur seront d�pos�s dans le r�pertoire pgsql/data/base/nom_db. Les
+ fichiers de gestion clients seront mis dans le r�pertoire actuel du
+ client. Linux requiert une compilation avec -DLINUX_PROFILE pour une
+ meilleure gestion.
+
+ 3.8) Pourquoi est-ce que j'obtiens des messages Sorry, too many clients
+ quand je me connecte ?
+
+ Vous pouvez augmenter la limite de postmaster sur le nombre de
+ processus serveur concurrents qu'il peut lancer.
+
+ La limite par d�faut est de 32 processus. Vous pouvez l'augmenter en
+ relan�ant postmaster avec une valeur -N appropri�e ou en modifiant
+ postgresql.conf.
+
+ Tenez compte du fait que si vous fixez -N plus grand que 32, vous
+ devez aussi augmenter -B au-dela de sa valeur par d�faut 64 ; -B doit
+ valoir au moins deux fois -N et probablement plus pour une meilleure
+ performance. Pour de grand nombres de processus serveurs vous aurez
+ probablement aussi augmenter plusieurs parametres de configuration du
+ noyau Unix. Les choses a v�rifier incluent la taille maximale des
+ blocs de m�moire partag�e, SHMMAX ; le nombre maximal de s�maphores,
+ SEMMNS et SEMMNI ; le nombre maximal de processus, NPROC ; le nombre
+ maximal de processus par utilisateur, MAXUPRC ; et le nombre maximal
+ de fichiers ouverts, NFILE et NINODE. La raison pour laquelle
+ PostgreSQL a une limite sur le nombre de processus serveurs autoris�s
+ est pour que votre syst�me ne tombe pas � court de ressources.
+
+ 3.9) Que contient le r�pertoire pgsql_tmp ?
+
+ Ce r�pertoire contient des fichiers temporaires g�n�r�s par le moteur
+ de requ�te. Par exemple, si un tri doit �tre fait pour satisfaire un
+ ORDER BY et que ce tri requiert plus de place que le param�tre -S du
+ serveur n'autorise, alors des fichiers temporaires seront cr��s pour
+ contenir les donn�es n�cessaires.
+
+ Les fichiers temporaires sont d'habitude effac�s automatiquement mais
+ peuvent rester si un serveur s'arr�te brutalement pendant un tri. Un
+ arr�t et un red�marrage de postmaster effacera les fichiers dans ces
+ r�pertoires.
+
+ 3.10) Pourquoi est-ce que j'ai besoin de faire une sauvegarde des bases et
+ de restaurer pour mettre a jour les versions de PostgreSQL ?
+
+ L'�quipe PostgreSQL ne fait que des changements mineurs entre des
+ versions mineurs, donc mettre � jour de 7.2 vers 7.2.1 ne n�cessitera
+ pas de sauvegarde et de restauration. Par contre, les sorties majeures
+ (c'est-�-dire de 7.2 vers 7.3) changent souvent le format interne des
+ tables syst�mes et des fichiers de donn�es. Ces modifications sont
+ souvent complexes alors nous ne gardons pas de compatibilit�
+ descendante pour les fichiers de donn�es. Une sauvegarde exportera les
+ donn�es dans un format g�n�rique qui peut ensuite �tre charg� dans le
+ nouveau format interne.
+
+ Dans les sorties o� le format sur disque ne change pas, le script
+ pg_upgrade peut �tre utilis� pour mettre � jour sans
+ sauvegarde/restauration. Les notes de sorties pr�cisent si pg_upgrade
+ est disponible pour la sortie.
+
+ 3.11) Quels mat�riels dois-je utiliser ?
+
+ Comme le mat�riel PC est compatible en grosse partie, les gens ont
+ tendance � croire que tous les mat�riels PC sont de m�me qualit�. Ce
+ n'est pas le cas. La RAM ECC, le SCSI et les cartes-m�re de qualit�
+ sont plus fiables et ont de meilleurs performances qu'un mat�riel
+ moins co�teux. PostgreSQL fonctionnera sur � peu pr�s tout mat�riel
+ mais si la fiabilit� et la performance sont importantes pour vous, il
+ est rus� de bien consid�rer les options mat�rielles. Nos listes de
+ diffusion peuvent �tre utilis�es pour discuter des options mat�riels.
+ _________________________________________________________________
+
+ Questions fonctionnelles
+
+ 4.1) Quelle est la diff�rence entre curseur binaire et curseur normal ?
+
+ Voir la page DECLARE du manuel pour une description.
+
+ 4.2) Comment faire un SELECT seulement sur les premi�res lignes d'une
+ requ�te ? Sur une ligne al�atoire ?
+
+ Voir la page FETCH du manuel ou utiliser SELECT ... LIMIT....
+
+ Il se peut que l'int�gralit� de la requ�te doive �tre �valu�e, m�me si
+ vous voulez seulement les premi�res lignes. Envisagez d'utiliser une
+ requ�te avec une clause ORDER BY. S'il existe un index correspondant �
+ l'ORDER BY, PostgreSQL peut n'�valuer que les premi�res lignes, sinon
+ l'int�gralit� de la requ�te peut �tre �valu�e, jusqu'� g�n�rer les
+ lignes d�sir�es.
+
+ Pour faire un SELECT sur une ligne al�atoire :
+ SELECT colonne
+ FROM table
+ ORDER BY random()
+ LIMIT 1;
+
+ 4.3) Comment obtenir une liste des tables ou d'autres objets que je vois
+ dans psql ?
+
+ Utilisez la commande \dt pour voir les tables dans psql. Pour une
+ liste compl�te de commandes � l'int�rieur de psql, vous pouvez
+ utiliser \?. Autrement, vous pouvez lire le code source de psql dans
+ le fichier pgsql/src/bin/psql/describe.c. Il contient des commandes
+ SQL qui g�n�rent le contenu des commandes anti-slash de psql. Vous
+ pouvez aussi lancer psql avec l'option -E, afin qu'il imprime les
+ requ�tes qu'il utilise pour ex�cuter les commandes que vous lui
+ passez. PostgreSQL fournit aussi une interface d'informations sur le
+ sch�ma compatible avec SQLi que vous pouvez interroger des
+ informations sur la base de donn�es.
+
+ 4.4) Comment supprime-t-on une colonne d'une table, ou comment change-t-on
+ son type de donn�es ?
+
+ La fonction DROP COLUMN a �t� ajout�e dans la version 7.3 avec ALTER
+ TABLE DROP COLUMN. Pour les versions pr�c�dentes, vous pouvez faire :
+ BEGIN;
+ LOCK TABLE ancienne_table;
+ SELECT ... -- s�lectionnez toutes les colonnes sauf celle � supprimer
+ INTO TABLE nouvelle_table
+ FROM ancienne_table;
+ DROP TABLE ancienne_table;
+ ALTER TABLE nouvelle_table RENAME TO ancienne_table;
+ COMMIT;
+
+ Pour changer le type de donn�es d'une colonne, faites :
+ BEGIN;
+ ALTER TABLE table ADD COLUMN nouvelle_colonne nouveau_type_de_donnees;
+ UPDATE table SET nouvelle_colonne = CAST(ancienne_colonne AS nouveau_type_d
+e_donnees);
+ ALTER TABLE table DROP COLUMN ancienne_colonne;
+ COMMIT;
+
+ Apr�s, vous pouvez faire VACUUM FULL tab pour r�cup�rer l'espace
+ disque utilis� par les lignes expir�es.
+
+ 4.5) Quelle est la taille maximale pour une ligne, une table, une base de
+ donn�es ?
+
+ Les limites sont :
+ Taille maximum pour une base de donn�es illimit�e (il existe des bases
+de 32 To)
+ Taille maximum pour une table 32 To
+ Taille maximum pour une ligne 1,6 To
+ Taille maximum pour un champ 1 Go
+ Nombre maximum de lignes dans une table illimit�
+ Nombre maximum de colonnes dans une table 250-1600, selon le type de colo
+nnes
+ Nombre maximum d'index sur une table illimit�
+
+ Bien s�r, ces valeurs ne sont pas vraiment illimit�e, elles sont
+ limit�es par l'espace disque disponible, ainsi que par l'espace de
+ m�moire et de swap. Les performances peuvent se d�grader si ces
+ valeurs sont inhabituellement grandes.
+
+ La taille maximum des tables (32 To) ne n�cessite pas que le syst�me
+ d'exploitation supporte les grands fichiers. Les grandes tables sont
+ stock�es sous forme de fichiers multiples de 1 Go, donc les limites de
+ taille du syst�me de fichier ne sont pas importantes.
+
+ La taille maximum des tables et le nombre maximum de colonnes peuvent
+ �tre quadripl�s, si la taille des blocs par d�faut est augment�e �
+ 32 Ko.
+
+ 4.6) Combien d'espace disque faut-il pour stocker les donn�es d'un fichier
+ texte typique ?
+
+ Une base de donn�es PostgreSQL peut utiliser jusqu'� cinq fois
+ l'espace n�cessaire pour stocker les donn�es d'un fichier texte.
+
+ A titre d'exemple, consid�rez un fichier de 100 000 lignes, comportant
+ un entier et une cha�ne de description sur chaque ligne. Supposons que
+ la cha�ne soit longue en moyenne de 20 octets. Le fichier texte serait
+ de 2,8 Mo. La taille du fichier d'une base de donn�es PostgreSQL peut
+ �tre estim�e � 6,4 Mo :
+ 36 octets: chaque ligne (approximation)
+ 24 octets: un champ 'entier' et un champ 'texte'
+ + 4 octets: pointeur vers le tuple sur la page
+ ----------------------------------------
+ 64 octets par ligne
+
+ La taille des pages de donn�es dans PostgreSQL est de 8192 octets (8 KO), do
+nc :
+
+ 8192 octets par page
+ ---------------------- = 128 lignes par page de base de donn�es (arrondi �
+ l'entier inf�rieur)
+ 64 octets par ligne
+
+ 100000 lignes de donn�es
+ ------------------------- = 782 pages de base de donn�es (arrondi � l'enti
+er sup�rieur)
+ 128 lignes par page
+
+782 pages de base de donn�es * 8192 octets par page = 6 406 144 octets (6,4 M
+o)
+
+ Les index utilisent moins d'espace, mais ils contiennent les donn�es
+ index�es, ils peuvent donc �galement �tre grands.
+
+ Les NULL sont stock�s sous forme de bitmap, aussi utilisent-ils tr�s
+ peu d'espace.
+
+ 4.7) Comment puis-je savoir quels index, tables, bases de donn�es et
+ utilisateurs sont d�finis ?
+
+ psql dispose de plusieurs commandes commen�ant par un anti-slash pour
+ retrouver ces informations. Utilisez \? pour les conna�tre. Il existe
+ aussi des tables syst�mes, qui commencent par pg_ et qui les d�crivent
+ �galement. Aussi, psql -l liste toutes les bases de donn�es.
+
+ Essayez �galement le fichier pgsql/src/tutorial/syscat.source. Il
+ illustre un grand nombre de commandes SELECT n�cessaires pour
+ r�cup�rer l'information des tables syst�me de la base de donn�es.
+
+ 4.8) Mes requ�tes sont lentes ou ne font pas usage des index. Pourquoi ?
+
+ Les index ne sont pas automatiquement utilis�s par chaque requ�te. Ils
+ sont utilis�s uniquement si la table est plus grande qu'une certaine
+ taille, et si la requ�te s�lectionne seulement un faible pourcentage
+ des lignes de la table. Ceci est d� au fait qu'un acc�s disque
+ al�atoire caus� par un parcours d'index peut �tre plus lent qu'une
+ simple lecture de la table, ou parcours s�quentiel
+
+ Pour d�terminer si un index devrait �tre utilis�, PostgreSQL a besoin
+ des statistiques de la table. Ces statistiques sont collect�es en
+ lan�ant VACUUM ANALYZE ou simplement ANALYZE. Avec les statistiques,
+ l'optimiseur sait combien de lignes se trouvent dans la table et peut
+ mieux d�terminer s'il faut utiliser l'index. Les statistiques sont
+ �galement utiles pour d�terminer l'ordre optimal des op�rations de
+ jointure. La collecte des statistiques devrait �tre effectu�e
+ r�guli�rement lorsque le contenu de la table change.
+
+ Les index ne sont normalement pas utilis�s pour les clauses ORDER BY
+ ou pour les jointures. Un parcours s�quentiel suivi d'un tri explicite
+ est habituellement plus rapide qu'un parcours d'index pour une table
+ importante. Toutefois, LIMIT combin� avec ORDER BY utilisera souvent
+ un index parce que seulement une petite partie de la table est
+ renvoy�e. En fait, bien que MAX() et MIN() n'utilisent pas les index,
+ il est possible de retrouver ces valeurs en utilisant un index avec
+ ORDER BY et LIMIT :
+ SELECT colonne
+ FROM table
+ ORDER BY colonne [ DESC ]
+ LIMIT 1;
+
+ Si vous pensez que l'optimiseur choisit par erreur un parcours
+ sequentiel, utilisez SET enable_seqscan TO 'off' et lancez des tests
+ pour voir si le parcours d'index est effectivement plus rapide.
+
+ Lorsque vous utilisez des caract�res joker tels que LIKE ou ~, les
+ index peuvent seulement �tre utilis�s dans certaines circonstances :
+ * Le d�but de la cha�ne de recherche doit �tre ancr� au d�part de la
+ cha�ne, c'est-�-dire
+ + Les mod�les pour LIKE ne doivent pas commencer par %.
+ + Les mod�les d'expression r�guli�re pour ~ doivent commencer
+ par ^.
+ * La cha�ne de recherche ne peut pas commencer par une classe de
+ caract�res, c'est-�-dire [a-e].
+ * Les recherches sans casse comme ILIKE et ~* n'utilisent pas les
+ index. Utilisez plut�t les index fonctionnels, d�crit dans la
+ section 4.12.
+ * La locale C par d�faut doit �tre utilis�e lors de initdb.
+
+ 4.9) Comment puis-je savoir si l'optimiseur �value mes requ�tes ?
+
+ Voir la page EXPLAIN du manuel.
+
+ 4.10) Qu'est-ce qu'un index R-tree ?
+
+ Un index R-tree est utilis� pour l'indexation des donn�es spatiales.
+ Un index de hachage ne permet pas les recherches par plage. Un index
+ B-tree peut seulement faire des recherches sur une dimension. Les
+ index R-tree peuvent traiter des donn�es multi-dimensionnelles. Par
+ exemple, si un index R-tree peut �tre construit sur un attribut de
+ type point, le syst�me peut plus efficacement g�rer les requ�tes du
+ type "S�lection de tous les points d'un rectangle".
+
+ L'article de r�f�rence qui d�crit le syst�me R-tree original est :
+
+ Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
+ Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of
+ Data, 45-57.
+
+ Vous pouvez �galement trouver ce papier dans le livre de Stonebraker
+ "Readings in Database Systems".
+
+ Les index R-tree int�gr�s peuvent prendre en charge les polyg�nes et
+ les bo�tes. En th�orie, les R-trees peuvent �tre �tendus � un plus
+ grand nombre de dimensions. En pratique, l'extension des R-trees
+ requiert pas mal de travail et nous n'avons pour le moment aucune
+ documentation sur la fa�on de proc�der.
+
+ 4.11) Qu'est-ce que l'optimiseur g�n�tique de requ�tes ?
+
+ Le module GEQO (acronyme de GEnetic Query Optimizer) acc�l�re
+ l'optimisation des requ�tes lors de jointures de nombreuses tables par
+ un algorithme g�n�tique (GA). Il permet la gestion des grosses
+ requ�tes de jointures en utilisant une recherche non exhaustive.
+
+ 4.12) Comment puis-je r�aliser des recherches sur des expressions
+ rationnelles ainsi que des recherches non sensibles � la casse ? Comment
+ puis-je utiliser un index lors de recherches non sensibles � la casse ?
+
+ L'op�rateur ~ r�alise des recherches d'expressions rationnelles et ~*
+ le fait sans tenir compte de la casse. La variante de LIKE non
+ sensible � la casse est ILIKE.
+
+ Des comparaisons d'�galit� non sensibles � la casse sont
+ habituellement exprim�es de cette fa�on :
+ SELECT *
+ FROM table
+ WHERE lower(colonne) = 'abc';
+
+ Ceci n'utilisera pas un index standard. N�anmoins, si vous cr�ez un
+ index fonctionnel, celui-ci sera utilis� :
+ CREATE INDEX tableindex ON table (lower(colonne));
+
+ 4.13) Comment puis-je d�tecter si un champ est NULL dans une requ�te ?
+
+ Il vous suffit de tester la colonne avec IS NULL ou IS NOT NULL.
+
+ 4.14) Quelle sont les diff�rences entre les nombreux types de caract�res ?
+
+Type Nom interne Notes
+--------------------------------------------------
+VARCHAR(n) varchar n sp�cifie la taille maximum, sans remplissage
+CHAR(n) bpchar des espaces sont ajout�s pour obtenir la
+ longueur fixe sp�cifi�e
+TEXT text pas de limite sup�rieure pour la taille
+BYTEA bytea tableau d'octets (accepte les octets nuls)
+"char" char un caract�re
+
+ Vous verrez le nom interne en examinant les catalogues syst�me et dans
+ quelques messages d'erreur.
+
+ Les quatres premiers types du dessus sont des types "varlena"
+ (c'est-�-dire que les quatre premiers octets correspondent � la
+ taille, suivi des donn�es). Donc, l'espace r�ellement utilis� est
+ l�g�rement plus grand que la taille d�clar�e. N�anmoins, ces types de
+ donn�es sont aussi sujet � la compression ou � un enregistrement en
+ dehors de la table avec TOAST, donc l'espace occup� sur disque
+ pourrait aussi �tre moindre que ce qu'on pourrait attendre.
+
+ VARCHAR(n) est bien mieux pour enregistrer des cha�nes de longueurs
+ variables tout en limitant la taille de cette cha�ne. TEXT est utile
+ pour les cha�nes de longueur illimit�e, avec malgr� tout un maximum de
+ 1 Go.
+
+ CHAR(n) est int�ressant pour stocker des cha�nes de taille identique.
+ CHAR(n) compl�te avec des espaces pour arriver � la taille sp�cifi�e
+ alors que VARCHAR(n) n'enregistre que les caract�res donn�s. BYTEA
+ sert � stocker des donn�es binaires, particuli�rement les donn�es
+ incluant des octets NULL. Tous les types d�crits ici ont des
+ performances similaires.
+
+ 4.15.1) Comment puis-je cr�er un champ s�rie, c'est-�-dire s'incr�mentant
+ automatiquement ?
+
+ PostgreSQL supporte un type de donn�es SERIAL. Il cr�e automatiquement
+ une s�quence. Par exemple, ceci :
+ CREATE TABLE personne (
+ id SERIAL,
+ nom TEXT
+ );
+
+ est automatiquement traduit en ceci :
+ CREATE SEQUENCE personne_id_seq;
+ CREATE TABLE personne (
+ id INT4 NOT NULL DEFAULT nextval('personne_id_seq'),
+ nom TEXT
+ );
+
+ Voir la page man de create_sequence pour plus d'informations sur les
+ s�quences. Vous pouvez aussi utiliser le champ OID de chaque ligne
+ comme valeur unique. N�anmoins, si vous avez besoin de sauvegarder
+ puis recharger la base de donn�es, vous devrez utiliser l'option -o ou
+ l'option COPY WITH OIDS de pg_dump pour conserver les OIDs.
+
+ 4.15.2) Comment puis-je obtenir la valeur d'un SERIAL suite � une
+ insertion ?
+
+ Une approche pour r�cup�rer la prochaine valeur SERIAL � partir de
+ l'objet s�quence est d'utiliser la fonction nextval() avant
+ l'insertion et de l'ins�rer ensuite explicitement. En utilisant la
+ table d'exemple de la section 4.15.1, un exemple dans un
+ pseudo-langage ressemblerait � ceci :
+ nouvelle_id = execute("SELECT nextval('personne_id_seq')");
+ execute("INSERT INTO personne (id, nom) VALUES (nouvelle_id, 'Blaise Pascal
+')");
+
+ Vous pourriez ensuite utiliser la nouvelle valeur stock�e dans
+ nouvelle_id avec d'autres requ�tes (c'est-�-dire en tant que cl�
+ �trang�re de la table personne). Notez que le nom de la SEQUENCE
+ automatiquement cr��e sera <table>_<colonneserial>_seq, o� table et
+ colonneserial sont les noms respectifs de votre table et de votre
+ colonne SERIAL.
+
+ Autrement, vous pouvez r�cup�rer la valeur SERIAL affect�e avec la
+ fonction currval() apr�s qu'elle ait �t� ins�r�e par d�faut,
+ c'est-�-dire,
+ execute("INSERT INTO personne (nom) VALUES ('Blaise Pascal')");
+ nouvelle_id = execute("SELECT currval('personne_id_seq')");
+
+ Enfin, vous pouvez utiliser l'OID renvoy� par l'instruction INSERT
+ pour r�cup�rer la valeur par d�faut bien que cela soit l'appoche la
+ moins portable et la valeur de l'OID se r�initialisera aux environs de
+ quatre milliards. En Perl, avec DBI et le module DBD:Pg d'Edmund
+ Mergl, l'ancienne valeur est disponible via $sth->{pg_oid_status}
+ apr�s un $sth->execute().
+
+ 4.15.3) Est-ce que currval() et nextval() n'am�nent pas des probl�mes
+ lorsque plusieurs utilisateurs les lancent en m�me temps ?
+
+ Non. currval() renvoie la valeur actuelle affect�e par votre
+ processus, et non pas par tous les utilisateurs.
+
+ 4.15.4) Pourquoi mes num�ros de s�quences ne sont pas r�-utilis�s lors
+ d'une annulation de transaction ? Pourquoi existe-t'il des trous dans la
+ num�rotation de ma colonne s�quentielle (SERIAL) ?
+
+ Pour am�liorer les acc�s concurrents, les valeurs de s�quences sont
+ donn�es aux transactions qui en ont besoin et ne sont pas bloqu�es
+ jusqu'� la fin de la transaction. Ceci cr�e des trous dans le
+ num�rotage pour les transactions annul�es.
+
+ 4.16) Qu'est-ce qu'un OID ? Qu'est-ce qu'un TID ?
+
+ Les OID sont la r�ponse de PostgreSQL aux identifiants de lignes
+ uniques. Chaque ligne cr��e dans PostgreSQL obtient un OID unique.
+ Tous les OID g�n�r�s pendant initdb sont inf�rieurs � 16384 (voir
+ include/access/transam.h). Tous les OID cr��s par un utilisateur sont
+ sup�rieurs ou �gaux � ceci. Par d�faut, tous ces OID sont uniques non
+ seulement dans une table ou une base mais unique � l'int�rieur d'une
+ installation PostgreSQL enti�re.
+
+ PostgreSQL utilise les OID dans ses tables syst�me interne pour lier
+ les lignes entre tables. Ces OID peuvent �tre utilis�s pour identifier
+ des lignes utilisateurs sp�cifiques et utilis�s dans des jointures. Il
+ est recommand� que vous utilisiez le type de colonne OID pour stocker
+ des valeurs OID. Vous pouvez cr�er un index sur le champ OID pour un
+ acc�s plus rapide.
+
+ Les OID sont attribu�s pour toute ligne d'un endroit central qui est
+ utilis� par toutes les bases de donn�es. Si vous voulez changer l'OID
+ en quelque chose d'autre ou si vous voulez faire une copie de la table
+ avec les OID originaux, il n'y a pas de raisons pour ne pas le faire :
+ CREATE TABLE nouvelle_table (macolonne int);
+ SELECT oid AS ancienne_oid, macolonne INTO table_temporaire FROM ancienne_t
+able;
+ COPY table_temporaire FROM '/tmp/tablepg';
+ COPY nouvelle_table WITH OIDS FROM '/tmp/tablepg';
+ DROP TABLE table_temporaire;
+
+ Les OID sont stock�s en tant qu'entiers de quatre octets et
+ d�borderont � quatre milliards. Personne n'a jamais rapport� un tel
+ cas et nous avons pr�vu de retirer la limite avant que cela ne se
+ produise.
+
+ Les TIDs sont utilis�s pour identifier des lignes physiques
+ sp�cifiques avec des valeurs de bloc et d�calage. Les TID changent
+ apr�s que les lignes aient �t� modifi�s ou recharg�s. Ils sont
+ utilis�s par des entr�es d'index pour pointer vers des lignes
+ physiques.
+
+ 4.17) A quoi correspond certains termes utilis�s avec PostgreSQL ?
+
+ Une partie du code source et de l'ancienne documentation utilisent des
+ termes dont l'usage est plus commun. Voici quelques exemples :
+ * table, relation, classe
+ * ligne (row), enregistrement (record), tuple
+ * colonne (column), champ (field), attribut
+ * r�cup�re, s�lectionne (select)
+ * remplace (replace), met � jour (update)
+ * ajoute (append), ins�re (insert)
+ * OID, valeur s�quentielle (serial value)
+ * portal, curseur
+ * range variable, table name, table alias
+
+ Une liste des termes g�n�raux pour le domaine des bases de donn�es est
+ disponible sur :
+ http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
+ /glossary.html
+
+ 4.18) Pourquoi ai-je l'erreur ERROR: Memory exhausted in AllocSetAlloc() ?
+
+ Vous manquez probablement de m�moire virtuelle sur votre syst�me ou
+ votre noyau a une limite assez basse pour certaines ressources.
+ Essayez ceci avant de lancer postmaster :
+ ulimit -d 262144
+ limit datasize 256m
+
+ Suivant votre shell, seul un d'eux pourrait r�ussir mais cela
+ configurera d'une fa�on plus importante la taille du segment de
+ donn�es de votre processus. Cette commande s'applique au processus
+ actuel et � tous les processus lanc� par celui-ci. Si vous avez des
+ probl�mes avec le client SQL parce que le processus serveur renvoie
+ trop de donn�es, essayez �a avant de lancer le client.
+
+ 4.19) Comment puis-je conna�tre la version de PostgreSQL que j'utilise ?
+
+ A partir de psql, tapez SELECT version();
+
+ 4.20) Pourquoi ai-je invalid large obj descriptor lors d'op�rations sur des
+ gros objects ?
+
+ Vous avez besoin de placer BEGIN WORK et COMMIT autour de chaque
+ utilisateur de gros objets, c'est-�-dire pour entourer lo_open ...
+ lo_close.
+
+ Actuellement, PostgreSQL force cette r�gle en fermant les gros objets
+ lors de la transaction. Donc, le premier essai d'op�rations sur ces
+ objets, fonctionnant habituellement (au moins la plupart du temps)
+ aura un invalid large obj descriptor. Donc le code, auparavant
+ fonctionnel (au moins la plupart du temps), g�n�rera maintenant un
+ message d'erreur si vous n'utilisez pas de transaction.
+
+ Si vous utilisez une interface client interface comme ODBC, vous aurez
+ peut-�tre besoin de lancer auto-commit off.
+
+ 4.21) Comment puis-je cr�er une colonne qui aura par d�faut l'heure
+ actuelle comme valeur ?
+
+ Utilisez CURRENT_TIMESTAMP:
+CREATE TABLE test (x int, heuremodif timestamp DEFAULT CURRENT_TIMESTAMP );
+
+ 4.22) Pourquoi mes sous-requ�tes utilisant IN sont-elles si lentes ?
+
+ Dans les versions pr�c�dant la 7.4, les sous-requ�tes ont �t� jointes
+ avec des jointures externes en parcourant s�quentiellement le r�sultat
+ de la sous-requ�te pour chaque ligne de la requ�te externe. Si la
+ sous-requ�te renvoit quelques lignes et que la requ�te externe en
+ renvoit plein, IN sera plus rapide. Pour acc�l�rer les autres
+ requ�tes, remplacez IN avec EXISTS :
+ SELECT *
+ FROM table
+ WHERE colonne IN (SELECT souscolonne FROM soustable);
+
+ to:
+ SELECT *
+ FROM table
+ WHERE EXISTS (SELECT souscolonne FROM soustable WHERE souscolonne = colonne
+);
+
+ Pour que ceci soit rapide, souscolonne doit �tre une colonne index�e.
+
+ A partir de la version 7.4, IN utilise actuellement les m�mes
+ techniques sophistiqu�es de jointures comme des requ�tes normales et
+ est pr�f�r� � l'utilisation de EXISTS.
+
+ 4.23) Comment puis-je r�aliser une jointure externe ?
+
+ PostgreSQL supporte les jointures externes en utilisant la syntaxe SQL
+ standard. Voici deux exemples :
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+
+ or
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 USING (col);
+
+ Ces requ�tes identiques joignent t1.col � t2.col et renvoient toute
+ colonne non jointe de t1 (celles sans correspondance dans t2). Une
+ jointure droite (RIGHT join) ajoutera les lignes non jointes de t2.
+ Une jointure compl�te (FULL join) renverra les lignes correspondantes
+ ainsi que les lignes non jointes de t1 et t2. Le mot cl� OUTER est
+ optionnelle et assum� dans le cas de jointure LEFT, RIGHT et FULL. Les
+ jointures ordinaires sont appel�es des jointures INNER.
+
+ Lors des pr�c�dentes versions, les jointures externes peuvent �tre
+ simul�es en utilisant UNION et NOT IN. Par exemple, lors d'une
+ jointure de tab1 et tab2, la requ�te suivante r�alise une jointure
+ externe, outer, des deux tables :
+ SELECT tab1.col1, tab2.col2
+ FROM tab1, tab2
+ WHERE tab1.col1 = tab2.col1
+ UNION ALL
+ SELECT tab1.col1, NULL
+ FROM tab1
+ WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
+ ORDER BY col1
+
+ 4.24) Comment puis-je lancer des requ�tes utilisant plusieurs bases de
+ donn�es ?
+
+ Il n'existe pas de moyens de lancer des requ�tes sur une autre base
+ que la courante. Comme PostgreSQL charge des catalogues syst�mes
+ sp�cifiques � la base de donn�es, sa r�action aux requ�tes inter-base
+ de donn�es est incertaine.
+
+ contrib/dblink permet les requ�tes entre bases de donn�es en utilisant
+ des fonctions. Bien s�r un client peut r�aliser des connexions
+ simultan�es � plusieurs bases de donn�es et joindre les r�sultats du
+ c�t� client.
+
+ 4.25) Comment puis-je renvoyer plusieurs lignes ou colonnes � partir d'une
+ fonction?
+
+ A partir de la 7.3, vous pouvez facilement renvoyer plusieurs lignes
+ ou colonnes � partir d'une fonction,
+ http://techdocs.postgresql.org/guides/SetReturningFunctions.
+
+ 4.26) Pourquoi ne puis-je pas cr�er/supprimer des tables temporaires dans
+ les fonctions PL/PgSQL de fa�on stable ?
+
+ PL/PgSQL cache le contenu des fonctions et un effet de bord malheureux
+ est que si une fonction PL/PgSQL acc�de � une table temporaire, que
+ cette table est ensuite supprim�e et recr��e, et que la fonction est
+ appel�e de nouveau, la fonction �chouera car le contenu de la fonction
+ cach�e pointera toujours vers l'ancienne table temporaire. La solution
+ revient � utiliser EXECUTE pour l'acc�s aux tables temporaires avec
+ PL/PgSQL. Ceci obligera l'analyse de la requ�te � chaque fois.
+
+ 4.27) Quelles options de r�plication sont disponibles ?
+
+ Il existe plusieurs solutions de r�plication ma�tre/esclave. Elles
+ permettent uniquement au ma�tre de r�aliser des changements sur la
+ base de donn�es alors que l'esclave peut seulement faire des lectures
+ de base de donn�es. Le bas de la page
+ http://gborg.PostgreSQL.org/genpage?replication_research les liste.
+ Une solution de r�plication multi-ma�tre est en cours de d�veloppement
+ sur http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
+
+ 4.28) Quelles options de cryptage sont disponibles ?
+
+ * contrib/pgcrypto contient de nombreuses fonctions de cryptage, �
+ utiliser dans des requ�tes SQL.
+ * Pour crypter une transmission entre le client et le serveur, le
+ serveur doit avoir positionn� l'option ssl � true dans
+ postgresql.conf, et un enregistrement applicable host ou hostssl
+ doit exister dans pg_hba.conf, et le sslmode du client ne doit pas
+ �tre d�sactiv�e. Notez qu'il est aussi possible d'utiliser un
+ transport crypt� d'une troisi�me partie, tel que stunnel ou ssh,
+ plut�t que les connexions SSL natives de PostgreSQL.
+ * Les mots de passe des utilisateurs sont automatiquement crypt�s
+ depuis la version 7.3. Pour les versions pr�c�dentes, vous devez
+ activer l'option PASSWORD_ENCRYPTION dans postgresql.conf.
+ * Le serveur peut fonctionner avec un syst�me de fichiers crypt�s.
+ _________________________________________________________________
+
+ Etendre PostgreSQL
+
+ 5.1) J'ai �crit une fonction utilisateur. Lorsque je l'ex�cute avec psql,
+ pourquoi cela finit-il avec un dump core ?
+
+ Il peut y avoir plusieurs raisons. Essayez tout d'abord votre fonction
+ utilisateur dans un programme de test.
+
+ 5.2) Comment puis-je ajouter de bons nouveaux types ou fonctions �
+ PostgreSQL ?
+
+ Envoyez vos extensions � la liste de diffusion pgsql-hackers, elles
+ atterriront �ventuellement dans le sous-r�pertoire contrib/.
+
+ 5.3) Comment faire pour �crire une fonction C qui renvoie un tuple ?
+
+ Dans les versions de PostgreSQL � partir de 7.3, les fonctions qui
+ renvoient une table sont totalement support�es en C, PL/PgSQL, et SQL.
+ Voir le Guide du Programmeur pour plus d'information. Un exemple de
+ fonction renvoyant une table d�finie en C se trouve �
+ contrib/tablefunc.
+
+ 5.4) J'ai modifi� un fichier source. Pourquoi ma recompilation ne voit-elle
+ pas les modifications ?
+
+ Les Makefiles n'ont pas les d�pendances ad�quates pour les fichiers
+ d'en-t�te. Il vous faut faire make clean puis un autre make. Si vous
+ utilisez GCC, vous pouvez utiliser l'option --enable-depend de
+ configure pour que le compilateur calcule les d�pendances
+ automatiquement.
diff --git a/doc/src/FAQ/FAQ_french.html b/doc/src/FAQ/FAQ_french.html
new file mode 100644
index 00000000000..f3b9722cebf
--- /dev/null
+++ b/doc/src/FAQ/FAQ_french.html
@@ -0,0 +1,1498 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+ <HEAD>
+ <META name="generator" content="HTML Tidy, see www.w3.org">
+ <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <TITLE>PostgreSQL FAQ</TITLE>
+ </HEAD>
+
+ <BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000"
+ alink="#0000ff">
+ <H1>Foire Aux Questions (FAQ) pour PostgreSQL</H1>
+
+ <P>Derni�re mise � jour&nbsp;: vendredi 11 juillet 2004 23:58:24</P>
+
+ <P>Mainteneur actuel&nbsp;: Bruce Momjian (<A href=
+ </P>
+
+ <P>La plus r�cente version de ce document est disponible sur <A
+ href=
+ "http://www.PostgreSQL.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A>.</P>
+
+ <P>Les questions sp�cifiques � la plateforme sont r�pondues sur <A href=
+ "http://www.PostgreSQL.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A>.</P>
+ <HR>
+
+ <H2 align="center">Questions g�n�rales</H2>
+ <A href="#1.1">1.1</A>) Qu'est ce que PostgreSQL&nbsp;? Comment le prononcer&nbsp;?<BR>
+ <A href="#1.2">1.2</A>) Quelle est la licence de PostgreSQL&nbsp;?<BR>
+ <A href="#1.3">1.3</A>) Sous quels environnements Unix PostgreSQL tourne-t-il&nbsp;?<BR>
+ <A href="#1.4">1.4</A>) Sous quels environnements non-Unix PostgreSQL tourne-t-il&nbsp;?<BR>
+ <A href="#1.5">1.5</A>) O� puis-je me procurer PostgreSQL&nbsp;?<BR>
+ <A href="#1.6">1.6</A>) O� puis-je obtenir du support&nbsp;?<BR>
+ <A href="#1.7">1.7</A>) Quelle est la derni�re version&nbsp;?<BR>
+ <A href="#1.8">1.8</A>) Quelle documentation est disponible&nbsp;?<BR>
+ <A href="#1.9">1.9</A>) Comment savoir quels sont les bogues connus ou les fonctionnalit�s manquantes&nbsp;?<BR>
+ <A href="#1.10">1.10</A>) Comment puis-je apprendre le <SMALL>SQL</SMALL>&nbsp;?<BR>
+ <A href="#1.11">1.11</A>) PostgreSQL est-il compatible an 2000&nbsp;?<BR>
+ <A href="#1.12">1.12</A>) Comment puis-je rejoindre l'�quipe de d�veloppement&nbsp;?<BR>
+ <A href="#1.13">1.13</A>) Comment dois-je soumettre un rapport de
+ bogue&nbsp;?<BR>
+ <A href="#1.14">1.14</A>) Comment PostgreSQL se compare-t'il � d'autres
+ <SMALL>SGBD</SMALL>&nbsp;?<BR>
+ <A href="#1.15">1.15</A>) Comment puis-je aider financi�rement PostgreSQL&nbsp;?<BR>
+
+
+ <H2 align="center">Questions sur le client utilisateur</H2>
+ <A href="#2.1">2.1</A>) Y a-t-il des pilotes <SMALL>ODBC</SMALL> pour
+ PostgreSQL&nbsp;?<BR>
+ <A href="#2.2">2.2</A>) Quels outils sont disponibles pour utiliser
+ PostgreSQL avec des pages Web&nbsp;?<BR>
+ <A href="#2.3">2.3</A>) PostgreSQL a-t-il une interface graphique&nbsp;?<BR>
+ <A href="#2.4">2.4</A>) Quels langages sont disponibles pour
+ communiquer avec PostgreSQL&nbsp;?<BR>
+
+
+ <H2 align="center">Questions administratives</H2>
+ <A href="#3.1">3.1</A>) Comment installer PostgreSQL ailleurs que sous <I>/usr/local/pgsql</I>&nbsp;?<BR>
+ <A href="#3.2">3.2</A>) Quand je lance <I>postmaster</I>, j'obtiens un <I>Bad System Call</I> ou un message <I>core dumped</I>. Pourquoi&nbsp;?<BR>
+ <A href="#3.3">3.3</A>) Quand je lance <I>postmaster</I>, j'obtiens des erreurs <I>IpcMemoryCreate</I>. Pourquoi&nbsp;?<BR>
+ <A href="#3.4">3.4</A>) Quand je lance <I>postmaster</I>, j'obtiens des erreurs <I>IpcSemaphoreCreate</I>. Pourquoi&nbsp;?<BR>
+ <A href="#3.5">3.5</A>) Comment contr�ler les connexions d'autres machines&nbsp;?<BR>
+ <A href="#3.6">3.6</A>) Comment r�gler le moteur de la base de donn�es pour de meilleures performances&nbsp;?<BR>
+ <A href="#3.7">3.7</A>) Quelles fonctionalit�s de d�boguage sont disponibles&nbsp;?<BR>
+ <A href="#3.8">3.8</A>) Pourquoi est-ce que j'obtiens des messages <I>Sorry, too many clients</I> quand je me connecte&nbsp;?<BR>
+ <A href="#3.9">3.9</A>) Que contient le r�pertoire <I>pgsql_tmp</I>&nbsp;?<BR>
+ <A href="#3.10">3.10</A>) Pourquoi ai-je besoin de faire une sauvegarde des bases et de restaurer pour mettre a jour les versions de PostgreSQL&nbsp;?<BR>
+ <A href="#3.11">3.11</A>) Quels mat�riels dois-je utiliser&nbsp;?<BR>
+
+
+ <H2 align="center">Questions fonctionnelles</H2>
+ <A href="#4.1">4.1</A>) Quelle est la diff�rence entre curseur binaire
+ et curseur normal&nbsp;?<BR>
+ <A href="#4.2">4.2</A>) Comment faire un <SMALL>SELECT</SMALL> seulement
+ sur les premi�res lignes d'une requ�te&nbsp;? Sur une ligne al�atoire&nbsp;?<BR>
+ <A href="#4.3">4.3</A>) Comment obtenir une liste des tables ou
+ d'autres choses que je vois dans <I>psql</I>&nbsp;?<BR>
+ <A href="#4.4">4.4</A>) Comment supprime-t-on une colonne d'une table,
+ ou comment change-t-on son type de donn�es&nbsp;?<BR>
+ <A href="#4.5">4.5</A>) Quelle est la taille maximale pour une ligne,
+ une table et une base de donn�es&nbsp;?<BR>
+ <A href="#4.6">4.6</A>) Combien d'espace disque faut-il pour stocker
+ les donn�es d'un fichier texte typique&nbsp;?<BR>
+ <A href="#4.7">4.7</A>) Comment puis-je savoir quels index, tables,
+ bases de donn�es et utilisateurs sont d�finis&nbsp;?<BR>
+ <A href="#4.8">4.8</A>) Mes requ�tes sont lentes ou ne font pas usage
+ des index. Pourquoi&nbsp;?<BR>
+ <A href="#4.9">4.9</A>) Comment puis-je savoir si l'optimiseur �value
+ mes requ�tes&nbsp;?<BR>
+ <A href="#4.10">4.10</A>) Qu'est-ce qu'un index R-tree&nbsp;?<BR>
+ <A href="#4.11">4.11</A>) Qu'est-ce que l'optimiseur g�n�tique de
+ requ�tes&nbsp;?<BR>
+ <A href="#4.12">4.12</A>) Comment puis-je r�aliser des recherches par des
+ expressions rationnelles ainsi que des recherches non sensibles � la
+ casse&nbsp;? Comment puis-je utiliser un index lors de recherches non
+ sensibles � la casse&nbsp;?<BR>
+ <A href="#4.13">4.13</A>) Comment puis-je d�tecter si un champ est
+ <SMALL>NULL</SMALL> dans une requ�te&nbsp;?<BR>
+ <A href="#4.14">4.14</A>) Quelle sont les diff�rences entre les nombreux
+ types de caract�res&nbsp;?<BR>
+ <A href="#4.15.1">4.15.1</A>) Comment puis-je cr�er un champ s�rie,
+ c'est-�-dire s'incr�mentant automatiquement&nbsp;?<BR>
+ <A href="#4.15.2">4.15.2</A>) Comment puis-je obtenir la valeur d'un
+ <SMALL>SERIAL</SMALL> suite � une insertion&nbsp;?<BR>
+ <A href="#4.15.3">4.15.3</A>) Est-ce que <I>currval()</I> et
+ <I>nextval()</I> n'am�nent pas des probl�mes lorsque plusieurs utilisateurs
+ les lancent en m�me temps&nbsp;?<BR>
+ <A href="#4.15.4">4.15.4</A>) Pourquoi mes num�ros de s�quences ne sont pas
+ r�-utilis�s lors d'une annulation de transaction&nbsp;? Pourquoi
+ existe-t'il des trous dans la num�rotation de ma colonne s�quentielle
+ (SERIAL)&nbsp;?<BR>
+ <A href="#4.16">4.16</A>) Qu'est-ce qu'un <SMALL>OID</SMALL>? Qu'est-ce qu'un <SMALL>TID</SMALL>&nbsp;?<BR>
+ <A href="#4.17">4.17</A>) A quoi correspond certains termes utilis�s avec
+ PostgreSQL&nbsp;?<BR>
+ <A href="#4.18">4.18</A>) Pourquoi ai-je l'erreur <I>ERROR:
+ Memory exhausted in AllocSetAlloc()</I>&nbsp;?<BR>
+ <A href="#4.19">4.19</A>) Comment puis-je conna�tre la version de
+ PostgreSQL que j'utilise&nbsp;?<BR>
+ <A href="#4.20">4.20</A>) Pourquoi ai-je <I>invalid large obj
+ descriptor</I> lors d'op�rations avec des gros objets&nbsp;?<BR>
+ <A href="#4.21">4.21</A>) Comment puis-je cr�er une colonne qui aura par
+ d�faut l'heure actuelle comme valeur&nbsp;?<BR>
+ <A href="#4.22">4.22</A>) Pourquoi mes sous-requ�tes utilisant
+ <CODE><SMALL>IN</SMALL></CODE> sont-elles si lentes&nbsp;?<BR>
+ <A href="#4.23">4.23</A>) Comment puis-je r�aliser une jointure
+ externe&nbsp;?<BR>
+ <A href="#4.24">4.24</A>) Comment puis-je lancer des requ�tes utilisant
+ plusieurs bases de donn�es&nbsp;??<BR>
+ <A href="#4.25">4.25</A>) Comment puis-je renvoyer plusieurs lignes ou
+ colonnes � partir d'une fonction&nbsp;?<BR>
+ <A href="#4.26">4.26</A>) Why can't I reliably create/drop
+ temporary tables in PL/PgSQL functions?<BR>
+ <A href="#4.27">4.27</A>) Quelles options de replication sont
+ disponibles&nbsp;?<BR>
+ <A href="#4.28">4.28</A>) Quelles options de cryptage sont
+ disponibles&nbsp;?<BR>
+
+ <H2 align="center">Etendre PostgreSQL</H2>
+ <A href="#5.1">5.1</A>) J'ai �crit une fonction utilisateur. Lorsque je l'ex�cute avec
+ <I>psql</I>, pourquoi cela finit-il avec un "dump core"&nbsp;?<BR>
+ <A href="#5.2">5.2</A>) Comment puis-je contribuer avec de nouveaux types et fonctions
+ pour PostgreSQL&nbsp;?<BR>
+ <A href="#5.3">5.3</A>) Comment puis-je �crire une fonction C pour r�cup�rer une
+ ligne&nbsp;?<BR>
+ <A href="#5.4">5.4</A>) J'ai modifi� un fichier source. Pourquoi la modification
+ n'est-elle pas visible apr�s la recompilation&nbsp;?<BR>
+
+ <HR>
+
+ <H2 align="center">Questions g�n�rales</H2>
+
+ <H4><A name="1.1">1.1</A>) Qu'est ce que PostgreSQL&nbsp;? Comment
+ le prononcer&nbsp;?</H4>
+
+ <P>PostgreSQL se prononce <I>Post-Gres-Q-L</I>. Un fichier audio est
+ disponible sur <A
+ HREF="http://www.postgresql.org/postgresql.mp3">http://www.postgresql.org/postgresql.mp3</A>
+ pour ceux souhaitant entendre la prononciation.</P>
+
+ <P>PostgreSQL est une am�lioration du syst�me de gestion de bases
+ de donn�es POSTGRES (et est toujours quelque fois appel� "Postgres"),
+ un prototype de recherche de
+ <SMALL>SGBD</SMALL> de prochaine g�n�ration. PostgreSQL garde le
+ puissant mod�le de donn�es et les types de donn�es riches de
+ POSTGRES, mais remplace le langage de requ�tes PostQuel par un
+ sous-ensemble �tendu de <SMALL>SQL</SMALL>. PostgreSQL est gratuit
+ et les sources complets sont disponibles.</P>
+
+ <P> PostgreSQL est �crit par une �quipe de d�veloppeurs qui sont
+ tous inscrits � la liste de diffusion de d�veloppement de
+ PostgreSQL. Le coordinateur actuel est Marc G. Fournier (<A href=
+ "mailto:[email protected]">[email protected]</A> et voir
+ la section <a href="#1.6">1.6</a> pour contacter les
+ d�veloppeurs). Cette �quipe est responsable de tout le
+ d�veloppement de PostgreSQL. C'est un projet soutenu par une
+ communaut� sans �tre contr�l� par une soci�t�. Pour y contribuer,
+ voir la FAQ des d�veloppeurs sur <A
+ HREF="http://www.postgresql.org/docs/faqs/FAQ_DEV.html">http://www.postgresql.org/docs/faqs/FAQ_DEV.html</A>.</P>
+
+ <P>Les auteurs de PostgreSQL 1.01 �taient Andrew Yu et Jolly Chen.
+ Beaucoup d'autres personnes ont contribu� au portage, aux tests,
+ au d�boguage et � l'am�lioration du code. Le code de Postgres
+ original, duquel PostgreSQL est d�riv�, �tait le fruit de
+ l'effort de nombreux �tudiants dipl�m�s et non dipl�m�s, et de
+ programmeurs travaillant sous la direction du Professeur Michael
+ Stonebraker � l'universit� de Californie, Berkeley.</P>
+
+ <P>Le nom original du logiciel � Berkeley �tait Postgres. Quand le
+ <SMALL>SQL</SMALL> fut ajout� en 1995, le nom a d� �tre chang� en
+ Postgres95. Fin 1996, le nom fut chang� en PostgreSQL.</P>
+
+ <H4><A name="1.2">1.2</A>) Quelle est la licence de PostgreSQL&nbsp;?</H4>
+
+ <P>PostgreSQL est distribu� sous la licence suivante&nbsp;:</P>
+
+ <P>PostgreSQL Data Base Management System</P>
+
+ <P>Portions copyright (c) 1996-2004, PostgreSQL Global Development
+ Group Portions Copyright (c) 1994-6 Regents of the University of
+ California</P>
+
+ <P>Permission to use, copy, modify, and distribute this software
+ and its documentation for any purpose, without fee, and without a
+ written agreement is hereby granted, provided that the above
+ copyright notice and this paragraph and the following two
+ paragraphs appear in all copies.</P>
+
+ <P>IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY
+ PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+ DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS
+ SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
+ CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</P>
+
+ <P>THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ 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.</P>
+
+ <P>La licence ci-dessus est la licence BSD, une licence open-source
+ classique.</P>
+
+ <H4><A name="1.3">1.3</A>) Sous quels environnements Unix PostgreSQL tourne-t-il&nbsp;?</H4>
+
+ <P>En g�n�ral, tout environnement compatible Unix moderne devrait
+ pouvoir faire fonctionner PostgreSQL. Les environnements qui ont �t�
+ test�s explicitement sont list�s dans les instructions
+ d'installation.</P>
+
+ <H4><A name="1.4">1.4</A>) Sous quels environnements non Unix PostgreSQL fonctionne-t'il&nbsp;?</H4>
+
+ <P><STRONG>Client</STRONG></P>
+
+ <P>Il est possible de compiler la biblioth�que C <I>libpq</I>,
+ psql et d'autres interfaces et applications clientes pour
+ qu'elles tournent sous des environnements MS Windows. Dans ce cas,
+ le client tourne sous MS Windows et communique par TCP/IP avec un
+ serveur tournant sous un environnement Unix support�. Un fichier
+ <I>win32.mak</I> est inclus dans la distribution pour construire
+ une biblioth�que <I>libpq</I> <I>psql</I> Win32. PostgreSQL
+ communique aussi avec des clients <SMALL>ODBC</SMALL>.</P>
+
+ <P><STRONG>Serveur</STRONG></P>
+
+ <P>Le serveur de base de donn�es peut tourner sous Windows NT et
+ Windows 2000 en utilisant Cygwin, la biblioth�que de portage
+ Unix/NT de Cygnus. Voir
+ <I>pgsql/doc/FAQ_MSWIN</I> dans la distribution ou la FAQ MS
+ Windows sur <A href="http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN">
+ http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>.</P>
+
+ <p>Un port natif sur MS Windows NT/2000/XP est en court. Pour plus de
+ d�tails sur le statut actuel de PostgreSQL sur Windows, voir
+ <a href="http://techdocs.postgresql.org/guides/Windows">
+ http://techdocs.postgresql.org/guides/Windows</a> et
+ <a href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">
+ http://momjian.postgresql.org/main/writings/pgsql/win32.html</a>.</p>
+
+ <p>Il existe aussi un port sur Novell Netware sur
+ <a href="http://forge.novell.com">http://forge.novell.com</a>.</p>
+
+ <H4><A name="1.5">1.5</A>) O� puis-je me procurer PostgreSQL&nbsp;?</H4>
+
+ <P>Le site FTP anonyme principal de PostgreSQL est <A href=
+ "ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>.
+ Pour les sites miroirs, voir notre site web principal.</P>
+
+ <H4><A name="1.6">1.6</A>) O� puis-je obtenir du support&nbsp;?</H4>
+
+ <P>La liste de diffusion principale est <A href=
+ Elle est disponible pour discuter de sujets en rapport avec
+ PostgreSQL. Pour s'y inscrire, il faut envoyer un courriel avec
+ les lignes suivantes dans le corps du message (pas dans la ligne
+ du sujet)&nbsp;:</P>
+<PRE>
+ subscribe
+ end
+</PRE>
+
+ <P>� <A href=
+
+ <P>Il existe aussi un recueil de la liste. Pour s'y inscrire,
+ envoyez un courriel � <A href=
+ avec dans le corps&nbsp;:</P>
+<PRE>
+ subscribe
+ end
+</PRE>
+
+ Les recueils sont envoy�s aux membres de cette liste d�s que la
+ liste principale a re�u 30&nbsp;Ko de messages.
+
+ <P>Une liste de diffusion de bogues est disponible. Pour s'y inscrire,
+ envoyer un courriel � <A href=
+ avec dans le corps&nbsp;:</P>
+<PRE>
+ subscribe
+ end
+</PRE>
+
+ Une liste de diffusion pour les d�veloppeurs est aussi disponible. Pour s'y
+ inscrire, envoyez un courriel � <A href=
+ avec dans le corps&nbsp;:
+<PRE>
+ subscribe
+ end
+</PRE>
+
+ <P>Vous pouvez trouver d'autres listes et informations sur
+ PostgreSQL sur le site web de PostgreSQL&nbsp;:</P>
+
+ <BLOCKQUOTE>
+ <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
+ </BLOCKQUOTE>
+
+ <P>Il y a aussi un canal IRC sur Freenode et EFNet, le canal
+ <I>#PostgreSQL</I>. Vous pouvez utiliser la commande Unix
+ <CODE>irc -c '#PostgreSQL' "$USER" irc.phoenix.net</CODE> ou
+ <CODE>irc -c '#PostgreSQL' "$USER" irc.freenode.net</CODE>.</P>
+
+ <P>Une liste de soci�t�s pouvant fournir un support commercial
+ est disponible sur <A href=
+ "http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A>.</P>
+
+ <H4><A name="1.7">1.7</A>) Quelle est la derni�re version&nbsp;?</H4>
+
+ <P>La derni�re version de PostgreSQL est la version 7.4.3.</P>
+
+ <P>Nous projetons de sortir une version majeure tous les six � huit
+ mois.</P>
+
+ <H4><A name="1.8">1.8</A>) Quelle documentation est disponible&nbsp;?</H4>
+
+ <P>Plusieurs manuels, pages de manuel ainsi que des petits exemples de
+ test sont inclus dans la distribution. Voir le r�pertoire
+ <I>/doc</I>. Vous pouvez aussi acc�der aux manuels en ligne sur <A href=
+ "http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.</P>
+
+ <P>Deux livres sur PostgreSQL sont disponibles en ligne sur <A href=
+ "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
+ et <A href=
+ "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>.
+ Il y a une liste de livres sur PostgreSQL pouvant �tre achet�s sur <A
+ href=
+ "http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>.
+ Il y a aussi une collection d'articles techniques sur PostgreSQL sur <A
+ href=
+ "http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</A>.</P>
+
+ <P><I>psql</I> poss�de des commandes \d pratiques montrant des
+ informations sur les types, op�rateurs, fonctions, aggr�gats, etc.</P>
+
+ <P>Notre site web contient encore plus de documentations.</P>
+
+ <H4><A name="1.9">1.9</A>) Comment savoir quels sont les bogues connus ou les fonctionnalit�s manquantes&nbsp;?</H4>
+
+ <P>PostgreSQL supporte un sous-ensemble �tendu de <SMALL>SQL</SMALL>-92.
+ Voir notre liste <A href="http://developer.PostgreSQL.org/todo.php">TODO</A>
+ pour les bogues connus, les fonctionnalit�s manquantes et les
+ plans pour le futur.</P>
+
+ <H4><A name="1.10">1.10</A>) Comment puis-je apprendre le <SMALL>SQL</SMALL>&nbsp;?</H4>
+
+ <P>Le livre PostgreSQL sur <A href=
+ "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
+ enseigne le <SMALL>SQL</SMALL>. Il existe un autre livre PostgreSQL sur <A
+ href=
+ "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook.</A>
+ Il existe de bons tutoriels sur <A href=
+ "http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm,</A>
+ <A href=
+ "http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">
+ http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM</A>
+ et <A href=
+ "http://sqlcourse.com/">http://sqlcourse.com.</A></P>
+
+ <P>Un autre (en anglais uniquement) "Teach Yourself SQL in 21 Days, Second Edition"
+ se trouve sur <A href=
+ "http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A></P>
+
+ <P>Nombre de nos utilisateurs aiment <I>The Practical SQL Handbook</I>,
+ Bowman, Judith S., et al., Addison-Wesley. D'autres aiment <I>The
+ Complete Reference SQL</I>, Groff et al., McGraw-Hill.</P>
+
+ <H4><A name="1.11">1.11</A>) PostgreSQL est-il compatible an 2000&nbsp;?</H4>
+
+ <P>Oui, nous manipulons facilement les dates apr�s et avant l'an 2000.</P>
+
+ <H4><A name="1.12">1.12</A>) Comment puis-je rejoindre l'�quipe de d�veloppement&nbsp;?</H4>
+
+ <P>Tout d'abord, t�l�chargez les derniers sources et lisez la
+ documentation pour les d�veloppeurs sur notre site web ou bien
+ dans la distribution. Ensuite, inscrivez-vous aux listes de
+ diffusion <I>pgsql-hackers</I> et <I>pgsql-patches</I>. Et pour finir,
+ soumettez des correctifs de grande qualit� sur <i>pgsql-patches</i>.</P>
+
+ <P>Environ une douzaine de personnes ont des droits de modification
+ sur l'archive <SMALL>CVS</SMALL> de PostgreSQL. Ils ont chacun
+ soumis tellement de correctifs de qualit� qu'il �tait devenu
+ impossible aux d�veloppeurs de tenir la cadence et nous avions
+ confiance dans le qualit� des correctifs qu'ils soumettaient.</P>
+
+ <H4><A name="1.13">1.13</A>) Comment dois-je soumettre un rapport de
+ bogue&nbsp;?</H4>
+
+ <P>Merci de visiter la page PostgreSQL BugTool sur <A href=
+ "http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>,
+ qui donne des indications sur la fa�on de soumettre un rapport de bogue.</P>
+
+ <P>De m�me, v�rifiez notre site ftp <A href=
+ "ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A> pour
+ voir s'il existe une version PostgreSQL plus r�cente ou des
+ correctifs.</P>
+
+ <H4><A name="1.14">1.14</A>) Comment PostgreSQL se compare-til �
+ d'autres <SMALL>SGBD</SMALL>&nbsp;?</H4>
+
+ <P>Il y a plusieurs mani�res de mesurer un logiciel&nbsp;: les fonctionnalit�s,
+ les performances, la fiabilit�, le support, et le prix.</P>
+
+ <DL>
+ <DT><B>Fonctionnalit�s</B></DT>
+
+ <DD>PostgreSQL poss�de la plupart des fonctionnalit�s pr�sentes
+ dans les <SMALL>SGBD</SMALL> commerciaux, comme les
+ transactions, les requ�tes imbriqu�es, les d�clencheurs,
+ les vues, l'int�grit� r�f�rentielle par cl�s �trang�res, et le
+ verrouillage sophistiqu�. Nous avons des fonctionnalit�s qu'ils
+ n'ont pas, comme les types d�finis par l'utilisateur,
+ l'h�ritage, les r�gles, et le contr�le de concurrence par
+ multi-versionnage pour r�duire les contentions de verrouillage.<BR>
+ <BR>
+ </DD>
+
+ <DT><B>Performances</B></DT>
+
+ <DD>PostgreSQL a des performances similaires aux autres bases de
+ donn�es commerciales et open source. Il est plus rapide pour
+ certaines op�rations, plus lent pour d'autres. Par rapport �
+ MySQL ou d'autres <SMALL>SGBD</small> plus l�ger, nous sommes
+ plus rapides pour de nombreux utilisateurs, des requ�tes complexes et
+ une charge pour les requ�tes de lecture/�criture. MySQL est plus rapide
+ pour des requ�tes SELECT simples effectu�es par quelques utilisateurs.
+ Bien s�r, MySQL ne poss�de aucune des fonctionnalit�s de la section
+ <I>Fonctionnalit�s</I> ci-dessus. PostgreSQL est construit pour la
+ fiabilit� et les fonctionnalit�s et nous continuons � am�liorer les
+ performances � chaque version. Il y a une page web int�ressante
+ qui compare PostgreSQL � MySQL sur <A
+ href="http://openacs.org/philosophy/why-not-mysql.html">
+ http://openacs.org/philosophy/why-not-mysql.html</A>. De plus, MySQL
+ est une soci�t� qui distribue son produit via l'open source et requiert
+ une licence commerciale pour les logiciels propri�taires, donc pas une
+ communaut� de d�veloppement open source comme PostgreSQL.<BR>
+
+ <BR>
+ </DD>
+
+ <DT><B>Fiabilit�</B></DT>
+
+ <DD>Nous somme conscients qu'un <SMALL>SGBD</SMALL> doit �tre
+ fiable ou bien il est inutile. Nous faisons le maximum pour
+ sortir des versions bien test�es, du code stable ne contenant qu'un
+ minimum de bogues. Chaque version a au moins un mois de tests,
+ et notre historique de versions montre que nous pouvons
+ fournir des versions stables et robustes, pr�tes pour une
+ utilisation en environnement de production. Nous pensons que
+ nous nous comparons favorablement aux autres bases de donn�es
+ dans ce domaine.<BR>
+ <BR>
+ </DD>
+
+ <DT><B>Support</B></DT>
+
+ <DD>Nos listes de diffusion offrent un contact avec un large
+ groupe de d�veloppeurs et d'utilisateurs afin d'aider � la
+ r�solution des probl�mes rencontr�s. Nous ne pouvons garantir
+ un correctif mais les <SMALL>SGBD</SMALL> commerciaux ne le
+ garantissent pas toujours non plus. L'acc�s direct aux
+ d�veloppeurs, � la communaut� d'utilisateurs, aux manuels, et
+ au code source, fait du support pour PostgreSQL un support
+ sup�rieur aux autres <SMALL>SGBD</SMALL>. Un support commercial par
+ incident est disponible pour ceux qui en ont le besoin (voir
+ la <A
+ href="#1.6">section 1.6 de la FAQ</A>).<BR>
+ <BR>
+ </DD>
+
+ <DT><B>Prix</B></DT>
+
+ <DD>Nous sommes gratuits pour tous les usages, commerciaux et
+ non commerciaux. Vous pouvez inclure notre code dans vos
+ produits sans limitation, except�es celles cit�es dans notre
+ licence de type BSD donn�e plus haut.<BR>
+ <BR>
+ </DD>
+ </DL>
+
+ <H4><A name="1.15">1.15</A>) Comment puis-je aider financi�rement
+ PostgreSQL&nbsp;?</H4>
+
+ <P>PostgreSQL poss�de une infrastructure de premi�re classe depuis
+ le d�but en 1996. Ceci gr�ce � Marc Fournier, qui a cr�� et g�r�
+ cette infrastructure des ann�es durant.</P>
+
+ <P>Une infrastructure de qualit� est importante pour un projet
+ open-source. Cela permet d'emp�cher l'�parpillement qui ralentirait
+ beaucoup l'avancement du projet.</P>
+
+ <P>Bien s�r, cette infrastructure n'est pas donn�e. Elle requiert
+ un certain nombre de d�penses mensuelles ou ponctuelles. Si vous
+ ou votre soci�t� peut donner de l'argent pour soutenir cet effort,
+ merci de consulter la page web <A
+ href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A>
+ et de faire une donation.</P>
+
+ <P>Bien que la page web mentionne PostgreSQL, Inc, les
+ contributions sont exclusivement utilis�es pour soutenir le
+ projet PostgreSQL et ne soutiennent aucune soci�t� que ce soit. Si
+ vous le pr�f�rez, vous pouvez aussi envoyer un ch�que � l'adresse
+ de contact.</P>
+ <HR>
+
+ <P>De plus, si vous avez une histoire de succ�s avec PostgreSQL,
+ merci de la soumettre � notre site d'�vang�lisation sur <a
+ href="http://advocacy.postgresql.org">
+ http://advocacy.postgresql.org</a>.</P>
+
+
+
+ <H2 align="center">Questions sur le client utilisateur</H2>
+
+ <H4><A name="2.1">2.1</A>) Existe-t'il des pilotes <SMALL>ODBC</SMALL> pour
+ PostgreSQL&nbsp;?</H4>
+
+ <P>Il y a deux pilotes <SMALL>ODBC</SMALL> disponibles, PsqlODBC
+ et OpenLink <SMALL>ODBC</SMALL>.</P>
+
+ <P>Vous pouvez t�l�charger PsqlOBDC depuis <A href=
+ "http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">
+ http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A>.</P>
+
+ <P>OpenLink <SMALL>ODBC</SMALL> peut �tre obtenu depuis <A href=
+ "http://www.openlinksw.com/">http://www.openlinksw.com</A>. Il fonctionne
+ avec leur logiciel client <SMALL>ODBC</SMALL> standard, vous aurez
+ donc PostgreSQL <SMALL>ODBC</SMALL> sur toutes les plateformes
+ client qu'ils supportent (Win, Mac, Unix, VMS).</P>
+
+ <P>Ils vendront probablement ce produit aux gens qui recherchent
+ une qualit� de support professionnelle mais une version freeware sera
+ toujours disponible. Merci d'envoyer vos questions � <A href=
+
+ <H4><A name="2.2">2.2</A>) Quels outils sont disponibles pour utiliser
+ PostgreSQL avec des pages Web&nbsp;?</H4>
+
+ <P>Une bonne introduction aux pages Web adoss�s � une base de donn�es se
+ trouve � <A href="http://www.webreview.com">http://www.webreview.com</A></P>
+
+ <P>Pour l'int�gration Web, PHP est une excellente interface. Elle se trouve � <A
+ href="http://www.php.net">http://www.php.net</A>.</P>
+
+ <P>Pour les cas complexes, beaucoup utilisent l'interface Perl et CGI.pm ou mod_perl.</P>
+
+ <H4><A name="2.3">2.3</A>) PostgreSQL a-t-il une interface graphique&nbsp;?</H4>
+
+ <P>Oui, il y a plusieurs interfaces graphiques disponibles pour PostgreSQL,
+ dont PgAccess <a href="http://www.pgaccess.org">
+ http://www.pgaccess.org</a>), PgAdmin III (<a
+ href="http://www.pgadmin.org">http://www.pgadmin.org</a>),
+ RHDB Admin (<a
+ href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/
+ </a> et Rekall (<a href="http://www.thekompany.com/products/rekall/">
+ http://www.thekompany.com/products/rekall/</a>, propri�taire). Il y a
+ aussi PhpPgAdmin (<a href="http://phppgadmin.sourceforge.net/">
+ http://phppgadmin.sourceforge.net/ </a>), une interface Web pour
+ PostgreSQL.</P>
+
+ <P>Voir <a href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a> pour une liste plus d�taill�e.</P>
+
+ <H4><A name="2.4">2.4</A>) Quels langages sont disponibles pour
+ communiquer avec PostgreSQL&nbsp;?</H4>
+
+ <P>La plupart des langages de programmation couramment utilis�s ont
+ une interface pour PostgreSQL. V�rifiez la liste des modules de votre
+ langage.</P>
+
+ <P>Les interfaces ci-dessous sont incluses dans la distribution&nbsp;:</P>
+
+ <UL>
+ <LI>C (libpq)</LI>
+
+ <LI>Embedded C (ecpg)</LI>
+
+ <LI>Java (jdbc)</LI>
+
+ <LI>Python (PyGreSQL)</LI>
+
+ <LI>TCL (libpgtcl)</LI>
+
+ </UL>
+ <P>Interfaces suppl�mentaires disponibles sur
+ <a href="http://gborg.postgresql.org">http://gborg.postgresql.org</A>
+ dans la section <I>Drivers/Interfaces</I>
+ </P>
+ <HR>
+
+ <H2 align="center">Questions Administratives</H2>
+
+ <H4><A name="3.1">3.1</A>) Comment installer PostgreSQL ailleurs que sous <I>/usr/local/pgsql</I>&nbsp;?</H4>
+
+ <P>Il faut sp�cifier l'option <I>--prefix</I> lors du lancement de <I>configure</I>.</P>
+
+ <H4><A name="3.2">3.2</A>) Quand je lance <I>postmaster</I>, j'obtiens un <I>Bad System Call</I> ou un message <i>core dumped</i> . Pourquoi&nbsp;?</H4>
+
+ <P>Cela peut �tre d� � une vari�t� de probl�mes mais v�rifiez d'abord que
+ vous avez les extensions System V install�es pour votre noyau. PostgreSQL
+ n�cessite le support noyau pour la m�moire partag�e et les s�maphores.</P>
+
+ <H4><A name="3.3">3.3</A>) Quand je lance <I>postmaster</I>, j'obtiens des erreurs <I>IpcMemoryCreate</I>. Pourquoi&nbsp;?</H4>
+
+ <P>Soit vous n'avez pas configur� correctement la m�moire partag�e dans
+ votre noyau, soit vous devez augmenter la m�moire partag�e disponible dans
+ le noyau. Le montant exact dont vous avez besoin d�pend de votre
+ architecture et du nombre de tampons et de processus que vous avez
+ configur� pour <I>postmaster</I>. Pour la plupart des syst�mes avec un
+ nombre par d�faut de tampons et de processus, vous aurez besoin d'un minimum
+ d'environ 1&nbsp;Mo. Voir le chapitre <A href=
+ "http://www.PostgreSQL.org/docs/view.php?version=current&amp;idoc=1&amp;file=kernel-resources.html">Administration
+ du manuel PostgreSQL</A> pour des informations plus d�taill�es sur la m�moire partag�e et les s�maphores.</P>
+
+ <H4><A name="3.4">3.4</A>) Quand je lance <I>postmaster</I>, j'obtiens des erreurs <I>IpcSemaphoreCreate</I>. Pourquoi&nbsp;?</H4>
+
+ <P>Si le message d'erreur est <I>IpcSemaphoreCreate: semget failed (No
+ space left on device)</I> alors votre noyau n'est pas configur� avec
+ suffisamment de s�maphores. PostgreSQL a besoin d'un s�maphore par processus
+ serveur potentiel. Une solution provisoire est de lancer <I>postmaster</I>
+ avec une plus petite limite sur le nombre de processus serveur. Utilisez l'option
+ <I>-N</I> avec un param�tre inf�rieur au choix par d�faut de 32. Une
+ solution permanente est d'augmenter les param�tres
+ <SMALL>SEMMNS</SMALL> et <SMALL>SEMMNI</SMALL> de votre noyau.</P>
+
+ <P>Des s�maphores inop�rantes peuvent aussi provoquer des plantages pendant de gros acc�s � la base de donn�es.</P>
+
+ <P>Si le message d'erreur est autre chose, vous n'avez peut-�tre pas du tout le support des
+ s�maphores dans votre noyau. Voir le
+ chapitre <A href=
+ "http://www.PostgreSQL.org/docs/view.php?version=current&amp;idoc=1&amp;file=kernel-resources.html">Administration
+ du manuel PostgreSQL</A> pour des informations plus d�taill�es sur la m�moire partag�e et les s�maphores.</P>
+
+ <H4><A name="3.5">3.5</A>) Comment contr�ler les connexions d'autres machines&nbsp;?</H4>
+
+ <P>Par d�faut, PostgreSQL n'autorise que les connexions de la machine locale
+ utilisant les sockets de domaine Unix. D'autres machines ne seront pas
+ capables de se connecter sauf si vous configurez tcpip_sockets dans <I>postgresql.conf</I>
+ <B>et</B> activez l'authentification bas�e sur l'h�te en modifiant le fichier
+ <I>$PGDATA/pg_hba.conf</I> en cons�quence. Ceci autorisera les connexions TCP/IP.</P>
+
+ <H4><A name="3.6">3.6</A>) Comment r�gler le moteur de la base de donn�es pour de meilleures performances&nbsp;?</H4>
+
+ <P>Des index acc�l�reront les requ�tes. La commande
+ <SMALL>EXPLAIN ANALYZE</SMALL> vous permet de voir comment PostgreSQL traite
+ votre requ�te et quels index sont utilis�s.</P>
+
+ <P>Si vous faites beaucoup d'insertions (instruction <SMALL>INSERT</SMALL>),
+ envisagez de les faire en une fois en utilisant la commande <SMALL>COPY</SMALL>. Ceci
+ est plus rapide que des commandes <SMALL>INSERTS</SMALL> individuelles. Deuxi�ment,
+ les requ�tes qui ne sont pas dans des blocs de transaction <SMALL>BEGIN WORK/COMMIT</SMALL>
+ sont consid�r�s comme �tant dans leur propre transaction. Envisagez de faire
+ plusieurs instructions dans un seul bloc de transaction. Ceci r�duira la
+ surcharge apport�e par les transactions. Aussi, envisagez d'abandonner et
+ de recr�er des index lors de grosses modifications de donn�es.</P>
+
+ <P>Il y a plusieurs options d'optimisations. Vous pouvez d�sactiver
+ <I>fsync()</I> en lan�ant <I>postmaster</I> avec l'option <I>-o -F</I>.
+ Ceci emp�chera les <I>fsync()</I>s d'�crire sur disque apr�s toute
+ transaction.</P>
+
+ <P>Vous pouvez utiliser l'option <I>-B</I> de <I>postmaster</I> pour
+ augmenter le nombre de tampons de m�moire partag�e utilis�s par les
+ processus serveurs. Si vous fixez ce param�tre trop haut,
+ <I>postmaster</I> ne se lancera pas car vous avez d�pass� la limite de
+ votre noyau sur la quantit� de m�moire partag�e. Chaque tampon fait 8&nbsp;Ko et
+ le choix par d�faut est de 64 tampons.</P>
+
+ <P>Vous pouvez utiliser l'option serveur <I>-S</I> pour augmenter la
+ quantit� maximale de m�moire utilis�e par les processus serveurs pour des
+ tris temporaires. La valeur de <I>-S</I> est mesur� en kilooctets et le
+ choix par d�faut est de 512 (c'est-�-dire 512&nbsp;Ko).</P>
+
+ <P>Vous pouvez utiliser la commande <SMALL>CLUSTER</SMALL> pour regrouper
+ vos donn�es en tables pour correspondre � un index. Voir la page de manual
+ <SMALL>CLUSTER</SMALL> pour plus de d�tails.</P>
+
+ <H4><A name="3.7">3.7</A>) Quelles fonctionalit�s de d�boguage sont disponibles&nbsp;?</H4>
+
+ <P>PostgreSQL a plusieurs fonctionalit�s qui permettent de recueillir des
+ informations de statut qui peuvent �tre utile pour des intentions de
+ d�boguage.</P>
+
+ <P>D'abord, en lan�ant <I>configure</I> avec l'option --enable-cassert,
+ beaucoup d'<I>assert()</I>s surveillent le serveur et arr�tent le programme
+ quand quelque chose d'inattendu arrive.</P>
+
+ <P><I>Postmaster</I> et <I>postgres</I> ont tous deux plusieurs options de
+ d�boguage de disponible. D'abord, quand vous lancez <I>postmaster</I>,
+ v�rifiez que vous envoyez les sorties standard et d'erreur dans un fichier
+ de traces comme&nbsp;:</P>
+<PRE>
+ cd /usr/local/pgsql
+ ./bin/postmaster &gt;server.log 2&gt;&amp;1 &amp;
+</PRE>
+
+ <P>Ceci va cr�er un fichier server.log dans le r�pertoire racine de
+ PostgreSQL. Ce fichier contient des informations utiles sur les probl�mes
+ ou erreurs rencontr�s par le serveur. <I>Postmaster</I> dispose d'une
+ option <I>-d</I> qui permet de rapporter des informations encore plus
+ d�taill�es d'�tre rapport�es. L'option <I>-d</I> prend un num�ro qui
+ sp�cifie le niveau de d�boguage. Faites attention au fait que des valeurs
+ �l�v�es de niveau de d�boguage g�nerent des fichiers de traces volumineux.</P>
+
+ <P>Si <I>postmaster</I> ne tourne pas, vous pouvez lancer le serveur
+ <I>postgres</I> de la ligne de commande et taper votre requ�te
+ <SMALL>SQL</SMALL> directement. Ceci est recommand� <B>seulement</B> pour
+ des fonctions de d�boguage. Notez qu'un retour chariot termine la requ�te,
+ pas un point-virgule. Si vous compilez avec les symboles de d�boguage, vous
+ pouvez utiliser un d�bogueur pour voir ce qui se passe. Parce que le serveur
+ n'a pas �t� lanc� par <I>postmaster</I>, il ne tourne pas dans un environnement
+ identique et les probl�mes d'interaction de verrouillage/serveur ne peuvent
+ �tre dupliqu�s.</P>
+
+ <P>Si <I>postmaster</I> est en train de tourner, lancez <I>psql</I> dans
+ une fen�tre puis trouvez le <SMALL>PID</SMALL> du processus <I>postgres</I>
+ utilis� par <I>psql</I>. Utilisez un d�bogueur pour l'attacher au
+ <SMALL>PID</SMALL> <I>postgres</I>. Vous pouvez mettre un point d'arr�t
+ dans le d�bogueur et envoyez des requ�tes de <I>psql</I>. Si vous d�boguez
+ le d�marrage de <I>postgres</I>, vous pouvez mettre PGOPTIONS="-W n", puis
+ lancez <I>psql</I>. Ceci va retarder le d�marrage de <I>n</I> secondes
+ pour que vous puissiez attacher un d�bogueur au processus, fixer des points
+ d'arr�t et continuer la s�quence de d�marrage.</P>
+
+ <P>Le programme <I>postgres</I> a les options <I>-s, -A</I> et <I>-t</I>
+ qui peuvent �tre utile pour des mesures de d�boguage et de performance.</P>
+
+ <P>Vous pouvez compiler avec les options de performance pour voir quelles
+ fonctions prennent du temps d'ex�cution. Les fichiers de gestion du serveur
+ seront d�pos�s dans le r�pertoire <I>pgsql/data/base/nom_db</I>. Les
+ fichiers de gestion clients seront mis dans le r�pertoire actuel du client.
+ Linux requiert une compilation avec <I>-DLINUX_PROFILE</I> pour une
+ meilleure gestion.</P>
+
+ <H4><A name="3.8">3.8</A>) Pourquoi est-ce que j'obtiens des messages <I>Sorry, too many clients</I> quand je me connecte&nbsp;?</H4>
+
+ <P>Vous pouvez augmenter la limite de <I>postmaster</I> sur le nombre de
+ processus serveur concurrents qu'il peut lancer.</P>
+
+ <P>La limite par d�faut est de 32 processus. Vous pouvez l'augmenter en
+ relan�ant <I>postmaster</I> avec une valeur <I>-N</I> appropri�e ou
+ en modifiant <I>postgresql.conf</I>.</P>
+
+ <P>Tenez compte du fait que si vous fixez <I>-N</I> plus grand que 32, vous
+ devez aussi augmenter <I>-B</I> au-dela de sa valeur par d�faut 64&nbsp;;
+ <I>-B</I> doit valoir au moins deux fois <I>-N</I> et probablement plus pour
+ une meilleure performance. Pour de grand nombres de processus serveurs vous
+ aurez probablement aussi augmenter plusieurs parametres de configuration du
+ noyau Unix. Les choses a v�rifier incluent la taille maximale des blocs de
+ m�moire partag�e, <SMALL>SHMMAX</SMALL>&nbsp;; le nombre maximal de
+ s�maphores, <SMALL>SEMMNS</SMALL> et <SMALL>SEMMNI</SMALL>&nbsp;; le
+ nombre maximal de processus, <SMALL>NPROC</SMALL>&nbsp;; le nombre maximal
+ de processus par utilisateur, <SMALL>MAXUPRC</SMALL>&nbsp;; et le nombre
+ maximal de fichiers ouverts, <SMALL>NFILE</SMALL> et <SMALL>NINODE</SMALL>.
+ La raison pour laquelle PostgreSQL a une limite sur le nombre de processus
+ serveurs autoris�s est pour que votre syst�me ne tombe pas � court de
+ ressources.</P>
+
+ <H4><A name="3.9">3.9</A>) Que contient le r�pertoire <I>pgsql_tmp</I>&nbsp;?</H4>
+
+ <P>Ce r�pertoire contient des fichiers temporaires g�n�r�s par le moteur de
+ requ�te. Par exemple, si un tri doit �tre fait pour satisfaire un
+ <SMALL>ORDER BY</SMALL> et que ce tri requiert plus de place que le param�tre
+ <I>-S</I> du serveur n'autorise, alors des fichiers temporaires seront cr��s
+ pour contenir les donn�es n�cessaires.</P>
+
+ <P>Les fichiers temporaires sont d'habitude effac�s automatiquement mais
+ peuvent rester si un serveur s'arr�te brutalement pendant un tri. Un arr�t
+ et un red�marrage de <I>postmaster</I> effacera les fichiers dans ces
+ r�pertoires.</P>
+
+ <H4><A name="3.10">3.10</A>) Pourquoi est-ce que j'ai besoin de faire une
+ sauvegarde des bases et de restaurer pour mettre a jour les versions de
+ PostgreSQL&nbsp;?</H4>
+
+ <P>L'�quipe PostgreSQL ne fait que des changements mineurs entre des
+ versions mineurs, donc mettre � jour de 7.2 vers 7.2.1 ne n�cessitera pas
+ de sauvegarde et de restauration. Par contre, les sorties majeures
+ (c'est-�-dire de 7.2 vers 7.3) changent souvent le format interne des tables
+ syst�mes et des fichiers de donn�es. Ces modifications sont souvent
+ complexes alors nous ne gardons pas de compatibilit� descendante pour les
+ fichiers de donn�es. Une sauvegarde exportera les donn�es dans un format
+ g�n�rique qui peut ensuite �tre charg� dans le nouveau format interne.</P>
+
+ <P>Dans les sorties o� le format sur disque ne change pas, le script
+ <I>pg_upgrade</I> peut �tre utilis� pour mettre � jour sans
+ sauvegarde/restauration. Les notes de sorties pr�cisent si <I>pg_upgrade</I>
+ est disponible pour la sortie.</P>
+
+ <H4><A name="3.11">3.11</A>) Quels mat�riels dois-je utiliser&nbsp;?</H4>
+
+ <P>Comme le mat�riel PC est compatible en grosse partie, les gens ont
+ tendance � croire que tous les mat�riels PC sont de m�me qualit�. Ce n'est
+ pas le cas. La RAM ECC, le SCSI et les cartes-m�re de qualit� sont plus
+ fiables et ont de meilleurs performances qu'un mat�riel moins co�teux.
+ PostgreSQL fonctionnera sur � peu pr�s tout mat�riel mais si la fiabilit� et
+ la performance sont importantes pour vous, il est rus� de bien consid�rer
+ les options mat�rielles. Nos listes de diffusion peuvent �tre utilis�es pour
+ discuter des options mat�riels.</P>
+
+ <HR>
+
+ <H2 align="center">Questions fonctionnelles</H2>
+
+ <H4><A name="4.1">4.1</A>) Quelle est la diff�rence entre curseur binaire
+ et curseur normal&nbsp;?</H4>
+
+ <P>Voir la page <SMALL>DECLARE</SMALL> du manuel pour une description.</P>
+
+ <H4><A name="4.2">4.2</A>) Comment faire un <SMALL>SELECT</SMALL> seulement
+ sur les premi�res lignes d'une requ�te&nbsp;? Sur une ligne al�atoire&nbsp;?</H4>
+
+ <P>Voir la page <SMALL>FETCH</SMALL> du manuel ou utiliser
+ <SMALL>SELECT</SMALL> ... <SMALL>LIMIT</SMALL>....</P>
+
+ <P>Il se peut que l'int�gralit� de la requ�te doive �tre �valu�e,
+ m�me si vous voulez seulement les premi�res lignes. Envisagez
+ d'utiliser une requ�te avec une clause <SMALL>ORDER
+ BY</SMALL>. S'il existe un index correspondant � l'<SMALL>ORDER
+ BY</SMALL>, PostgreSQL peut n'�valuer que les premi�res lignes, sinon
+ l'int�gralit� de la requ�te peut �tre �valu�e, jusqu'� g�n�rer les lignes
+ d�sir�es.</P>
+
+ <P>Pour faire un <SMALL>SELECT</SMALL> sur une ligne al�atoire&nbsp;:
+<PRE>
+ SELECT colonne
+ FROM table
+ ORDER BY random()
+ LIMIT 1;
+</PRE>
+
+ <H4><A name="4.3">4.3</A>) Comment obtenir une liste des tables ou
+ d'autres objets que je vois dans <I>psql</I>&nbsp;?</H4>
+
+ <P>Utilisez la commande \dt pour voir les tables dans <I>psql</I>. Pour
+ une liste compl�te de commandes � l'int�rieur de psql, vous pouvez utiliser
+ \?. Autrement, vous pouvez lire le code source de <I>psql</I> dans le fichier
+ <I>pgsql/src/bin/psql/describe.c</I>. Il contient des commandes
+ <SMALL>SQL</SMALL> qui g�n�rent le contenu des commandes anti-slash de
+ psql. Vous pouvez aussi lancer <I>psql</I> avec l'option
+ <I>-E</I>, afin qu'il imprime les requ�tes qu'il utilise pour ex�cuter
+ les commandes que vous lui passez. PostgreSQL fournit aussi une interface
+ d'informations sur le sch�ma compatible avec <I>SQLi</I> que vous pouvez
+ interroger des informations sur la base de donn�es.</P>
+
+ <H4><A name="4.4">4.4</A>) Comment supprime-t-on une colonne d'une table,
+ ou comment change-t-on son type de donn�es&nbsp;?</H4>
+
+ <P>La fonction <SMALL>DROP COLUMN</SMALL> a �t� ajout�e dans la version 7.3
+ avec <SMALL>ALTER TABLE DROP COLUMN</SMALL>. Pour les versions pr�c�dentes,
+ vous pouvez faire&nbsp;:</P>
+<PRE>
+ BEGIN;
+ LOCK TABLE ancienne_table;
+ SELECT ... -- s�lectionnez toutes les colonnes sauf celle � supprimer
+ INTO TABLE nouvelle_table
+ FROM ancienne_table;
+ DROP TABLE ancienne_table;
+ ALTER TABLE nouvelle_table RENAME TO ancienne_table;
+ COMMIT;
+</PRE>
+
+ <P>Pour changer le type de donn�es d'une colonne, faites&nbsp;:</P>
+
+<PRE>
+ BEGIN;
+ ALTER TABLE table ADD COLUMN nouvelle_colonne <i>nouveau_type_de_donnees</i>;
+ UPDATE table SET nouvelle_colonne = CAST(ancienne_colonne AS <i>nouveau_type_de_donnees</i>);
+ ALTER TABLE table DROP COLUMN ancienne_colonne;
+ COMMIT;
+</PRE>
+
+ <P>Apr�s, vous pouvez faire <I>VACUUM FULL tab</I> pour r�cup�rer l'espace
+ disque utilis� par les lignes expir�es.</P>
+
+ <H4><A name="4.5">4.5</A>) Quelle est la taille maximale pour une ligne,
+ une table, une base de donn�es&nbsp;?</H4>
+
+ <P>Les limites sont&nbsp;:</P>
+<PRE>
+ Taille maximum pour une base de donn�es illimit�e (il existe des bases de 32&nbsp;To)
+ Taille maximum pour une table 32&nbsp;To
+ Taille maximum pour une ligne 1,6&nbsp;To
+ Taille maximum pour un champ 1&nbsp;Go
+ Nombre maximum de lignes dans une table illimit�
+ Nombre maximum de colonnes dans une table 250-1600, selon le type de colonnes
+ Nombre maximum d'index sur une table illimit�
+</PRE>
+
+ <P>Bien s�r, ces valeurs ne sont pas vraiment illimit�e, elles sont limit�es
+ par l'espace disque disponible, ainsi que par l'espace de m�moire et de swap.
+ Les performances peuvent se d�grader si ces valeurs sont inhabituellement
+ grandes.</P>
+
+ <P>La taille maximum des tables (32&nbsp;To) ne n�cessite pas que le syst�me
+ d'exploitation supporte les grands fichiers. Les grandes tables sont stock�es
+ sous forme de fichiers multiples de 1&nbsp;Go, donc les limites de taille du
+ syst�me de fichier ne sont pas importantes.</P>
+
+ <P>La taille maximum des tables et le nombre maximum de colonnes peuvent
+ �tre quadripl�s, si la taille des blocs par d�faut est augment�e � 32&nbsp;Ko.</P>
+
+ <H4><A name="4.6">4.6</A>) Combien d'espace disque faut-il pour stocker
+ les donn�es d'un fichier texte typique&nbsp;?</H4>
+
+ <P>Une base de donn�es PostgreSQL peut utiliser jusqu'� cinq fois
+ l'espace n�cessaire pour stocker les donn�es d'un fichier texte.</P>
+
+ <P>A titre d'exemple, consid�rez un fichier de 100 000 lignes, comportant
+ un entier et une cha�ne de description sur chaque ligne. Supposons que la
+ cha�ne soit longue en moyenne de 20 octets. Le fichier texte serait de 2,8&nbsp;Mo.
+ La taille du fichier d'une base de donn�es PostgreSQL peut �tre
+ estim�e � 6,4&nbsp;Mo&nbsp;:</P>
+<PRE>
+ 36 octets: chaque ligne (approximation)
+ 24 octets: un champ 'entier' et un champ 'texte'
+ + 4 octets: pointeur vers le tuple sur la page
+ ----------------------------------------
+ 64 octets par ligne
+
+ La taille des pages de donn�es dans PostgreSQL est de 8192 octets (8 KO), donc :
+
+ 8192 octets par page
+ ---------------------- = 128 lignes par page de base de donn�es (arrondi � l'entier inf�rieur)
+ 64 octets par ligne
+
+ 100000 lignes de donn�es
+ ------------------------- = 782 pages de base de donn�es (arrondi � l'entier sup�rieur)
+ 128 lignes par page
+
+782 pages de base de donn�es * 8192 octets par page = 6&nbsp;406&nbsp;144&nbsp;octets (6,4&nbsp;Mo)
+</PRE>
+
+ <P>Les index utilisent moins d'espace, mais ils contiennent les donn�es index�es,
+ ils peuvent donc �galement �tre grands.</P>
+
+ <P>Les <SMALL>NULL</SMALL> sont stock�s sous forme de bitmap, aussi
+ utilisent-ils tr�s peu d'espace.</P>
+
+ <H4><A name="4.7">4.7</A>) Comment puis-je savoir quels index, tables,
+ bases de donn�es et utilisateurs sont d�finis&nbsp;?</H4>
+
+ <P><I>psql</I> dispose de plusieurs commandes commen�ant par un anti-slash
+ pour retrouver ces informations. Utilisez \? pour les conna�tre. Il existe
+ aussi des tables syst�mes, qui commencent par <I>pg_</I> et qui les
+ d�crivent �galement. Aussi, <I>psql -l</I> liste toutes les bases de
+ donn�es.</P>
+
+ <P>Essayez �galement le fichier <I>pgsql/src/tutorial/syscat.source</I>. Il
+ illustre un grand nombre de commandes <SMALL>SELECT</SMALL> n�cessaires pour
+ r�cup�rer l'information des tables syst�me de la base de donn�es.</P>
+
+ <H4><A name="4.8">4.8</A>) Mes requ�tes sont lentes ou ne font pas usage
+ des index. Pourquoi&nbsp;?</H4>
+
+ <P>Les index ne sont pas automatiquement utilis�s par chaque requ�te. Ils
+ sont utilis�s uniquement si la table est plus grande qu'une certaine taille,
+ et si la requ�te s�lectionne seulement un faible pourcentage des lignes de la
+ table. Ceci est d� au fait qu'un acc�s disque al�atoire caus� par un parcours
+ d'index peut �tre plus lent qu'une simple lecture de la table, ou parcours
+ s�quentiel</P>
+
+ <P>Pour d�terminer si un index devrait �tre utilis�, PostgreSQL a besoin
+ des statistiques de la table. Ces statistiques sont collect�es en lan�ant
+ <SMALL>VACUUM ANALYZE</SMALL> ou simplement <SMALL>ANALYZE</SMALL>.
+ Avec les statistiques, l'optimiseur sait combien de lignes se trouvent
+ dans la table et peut mieux d�terminer s'il faut utiliser l'index.
+ Les statistiques sont �galement utiles pour d�terminer l'ordre optimal
+ des op�rations de jointure. La collecte des statistiques devrait �tre
+ effectu�e r�guli�rement lorsque le contenu de la table change.</P>
+
+ <P>Les index ne sont normalement pas utilis�s pour les clauses <SMALL>ORDER BY</SMALL>
+ ou pour les jointures. Un parcours s�quentiel suivi d'un tri explicite est
+ habituellement plus rapide qu'un parcours d'index pour une table importante.
+ Toutefois, <SMALL>LIMIT</SMALL> combin� avec <SMALL>ORDER BY</SMALL>
+ utilisera souvent un index parce que seulement une petite partie de la table est
+ renvoy�e. En fait, bien que MAX() et MIN() n'utilisent pas les index,
+ il est possible de retrouver ces valeurs en utilisant un index avec
+ ORDER BY et LIMIT&nbsp;:</P>
+
+<PRE>
+ SELECT colonne
+ FROM table
+ ORDER BY colonne [ DESC ]
+ LIMIT 1;
+</PRE>
+
+ <P>Si vous pensez que l'optimiseur choisit par erreur un parcours sequentiel,
+ utilisez <CODE>SET enable_seqscan TO 'off'</CODE> et
+ lancez des tests pour voir si le parcours d'index est effectivement plus rapide.</P>
+
+ <P>Lorsque vous utilisez des caract�res joker tels que <SMALL>LIKE</SMALL> ou
+ <I>~</I>, les index peuvent seulement �tre utilis�s dans certaines circonstances&nbsp;:</P>
+ <UL>
+ <LI>Le d�but de la cha�ne de recherche doit �tre ancr� au d�part de la cha�ne, c'est-�-dire
+ <UL>
+ <LI>Les mod�les pour <SMALL>LIKE</SMALL> ne doivent pas commencer par <I>%</I>.</LI>
+ <LI>Les mod�les d'expression r�guli�re pour <I>~</I> doivent commencer par
+ <I>^</I>.</LI>
+ </UL></LI>
+ <LI>La cha�ne de recherche ne peut pas commencer par une classe de caract�res, c'est-�-dire
+ [a-e].</LI>
+ <LI>Les recherches sans casse comme <SMALL>ILIKE</SMALL> et
+ <I>~*</I> n'utilisent pas les index. Utilisez plut�t les index fonctionnels,
+ d�crit dans la section <a href="#4.12">4.12</a>.</LI>
+ <LI>La locale <I>C</I> par d�faut doit �tre utilis�e lors de
+ <i>initdb</i>.</LI>
+ </UL>
+ <P>
+
+ <H4><A name="4.9">4.9</A>) Comment puis-je savoir si l'optimiseur �value
+ mes requ�tes&nbsp;?</H4>
+
+ <P>Voir la page <SMALL>EXPLAIN</SMALL> du manuel.</P>
+
+ <H4><A name="4.10">4.10</A>) Qu'est-ce qu'un index R-tree&nbsp;?</H4>
+
+ <P>Un index R-tree est utilis� pour l'indexation des donn�es spatiales. Un
+ index de hachage ne permet pas les recherches par plage. Un index B-tree peut
+ seulement faire des recherches sur une dimension. Les index R-tree
+ peuvent traiter des donn�es multi-dimensionnelles. Par exemple, si un index
+ R-tree peut �tre construit sur un attribut de type <I>point</I>,
+ le syst�me peut plus efficacement g�rer les requ�tes du type
+ "S�lection de tous les points d'un rectangle".</P>
+
+ <P>L'article de r�f�rence qui d�crit le syst�me R-tree original est&nbsp;:</P>
+
+ <P>Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
+ Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt
+ of Data, 45-57.</P>
+
+ <P>Vous pouvez �galement trouver ce papier dans le livre de Stonebraker
+ "Readings in Database Systems".</P>
+
+ <P>Les index R-tree int�gr�s peuvent prendre en charge les polyg�nes et les bo�tes.
+ En th�orie, les R-trees peuvent �tre �tendus � un plus grand nombre de dimensions.
+ En pratique, l'extension des R-trees requiert pas mal de travail et nous
+ n'avons pour le moment aucune documentation sur la fa�on de proc�der.</P>
+
+ <H4><A name="4.11">4.11</A>) Qu'est-ce que l'optimiseur g�n�tique de
+ requ�tes&nbsp;?</H4>
+
+ <P>Le module <SMALL>GEQO</SMALL> (acronyme de <i>GEnetic Query
+ Optimizer</i>) acc�l�re l'optimisation des requ�tes lors de jointures de
+ nombreuses tables par un algorithme g�n�tique (GA). Il permet la
+ gestion des grosses requ�tes de jointures en utilisant une recherche non
+ exhaustive.</P>
+
+ <H4><A name="4.12">4.12</A>) Comment puis-je r�aliser des recherches sur des
+ expressions rationnelles ainsi que des recherches non sensibles � la
+ casse&nbsp;? Comment puis-je utiliser un index lors de recherches non
+ sensibles � la casse&nbsp;?</H4>
+
+ <P>L'op�rateur <I>~</I> r�alise des recherches d'expressions rationnelles
+ et <I>~*</I> le fait sans tenir compte de la casse. La variante de
+ <SMALL>LIKE</SMALL> non sensible � la casse est
+ <SMALL>ILIKE</SMALL>.</P>
+
+ <P>Des comparaisons d'�galit� non sensibles � la casse sont habituellement
+ exprim�es de cette fa�on&nbsp;:</P>
+<PRE>
+ SELECT *
+ FROM table
+ WHERE lower(colonne) = 'abc';
+</PRE>
+
+ <P>Ceci n'utilisera pas un index standard. N�anmoins, si vous cr�ez un index
+ fonctionnel, celui-ci sera utilis�&nbsp;:</P>
+<PRE>
+ CREATE INDEX tableindex ON table (lower(colonne));
+</PRE>
+
+ <H4><A name="4.13">4.13</A>) Comment puis-je d�tecter si un champ est
+ <SMALL>NULL</SMALL> dans une requ�te&nbsp;?</H4>
+
+ <P>Il vous suffit de tester la colonne avec <SMALL>IS NULL</SMALL> ou <SMALL>IS
+ NOT NULL</SMALL>.</P>
+
+ <H4><A name="4.14">4.14</A>) Quelle sont les diff�rences entre les nombreux
+ types de caract�res&nbsp;?</H4>
+<PRE>
+Type Nom interne Notes
+--------------------------------------------------
+VARCHAR(n) varchar n sp�cifie la taille maximum, sans remplissage
+CHAR(n) bpchar des espaces sont ajout�s pour obtenir la
+ longueur fixe sp�cifi�e
+TEXT text pas de limite sup�rieure pour la taille
+BYTEA bytea tableau d'octets (accepte les octets nuls)
+"char" char un caract�re
+</PRE>
+
+ <P>Vous verrez le nom interne en examinant les catalogues syst�me et dans
+ quelques messages d'erreur.</P>
+
+ <P>Les quatres premiers types du dessus sont des types "varlena"
+ (c'est-�-dire que les quatre premiers octets correspondent � la taille,
+ suivi des donn�es). Donc, l'espace r�ellement utilis� est l�g�rement plus
+ grand que la taille d�clar�e. N�anmoins, ces types de donn�es sont aussi
+ sujet � la compression ou � un enregistrement en dehors de la table avec
+ <SMALL>TOAST</SMALL>, donc l'espace occup� sur disque pourrait aussi �tre
+ moindre que ce qu'on pourrait attendre.</P>
+
+ <P><SMALL>VARCHAR(n)</SMALL> est bien mieux pour enregistrer des cha�nes de
+ longueurs variables tout en limitant la taille de cette cha�ne.
+ <SMALL>TEXT</SMALL> est utile pour les cha�nes de longueur illimit�e, avec
+ malgr� tout un maximum de 1&nbsp;Go.</P>
+
+ <P><SMALL>CHAR(n)</SMALL> est int�ressant pour stocker des cha�nes de taille
+ identique. <SMALL>CHAR(n)</SMALL> compl�te avec des espaces pour arriver �
+ la taille sp�cifi�e alors que <SMALL>VARCHAR(n)</SMALL> n'enregistre que les
+ caract�res donn�s. <SMALL>BYTEA</SMALL> sert � stocker des donn�es binaires,
+ particuli�rement les donn�es incluant des octets <SMALL>NULL</SMALL>. Tous
+ les types d�crits ici ont des performances similaires.</P>
+
+ <H4><A name="4.15.1">4.15.1</A>) Comment puis-je cr�er un champ s�rie,
+ c'est-�-dire s'incr�mentant automatiquement&nbsp;?</H4>
+
+ <P>PostgreSQL supporte un type de donn�es <SMALL>SERIAL</SMALL>. Il cr�e
+ automatiquement une s�quence. Par exemple,
+ ceci&nbsp;:</P>
+<PRE>
+ CREATE TABLE personne (
+ id SERIAL,
+ nom TEXT
+ );
+</PRE>
+
+ est automatiquement traduit en ceci&nbsp;:
+<PRE>
+ CREATE SEQUENCE personne_id_seq;
+ CREATE TABLE personne (
+ id INT4 NOT NULL DEFAULT nextval('personne_id_seq'),
+ nom TEXT
+ );
+</PRE>
+
+ Voir la page man de <I>create_sequence</I> pour plus d'informations
+ sur les s�quences. Vous pouvez aussi utiliser le champ <I>OID</I> de chaque
+ ligne comme valeur unique. N�anmoins, si vous avez besoin de sauvegarder
+ puis recharger la base de donn�es, vous devrez utiliser l'option
+ <I>-o</I> ou l'option <SMALL>COPY WITH OIDS</SMALL> de
+ <I>pg_dump</I> pour conserver les <SMALL>OID</SMALL>s.
+
+ <H4><A name="4.15.2">4.15.2</A>) Comment puis-je obtenir la valeur d'un
+ <SMALL>SERIAL</SMALL> suite � une insertion&nbsp;?</H4>
+
+ <P>Une approche pour r�cup�rer la prochaine valeur <SMALL>SERIAL</SMALL> �
+ partir de l'objet s�quence est d'utiliser la fonction <I>nextval()</I>
+ <I>avant</I> l'insertion et de l'ins�rer ensuite explicitement. En utilisant
+ la table d'exemple de la section <A href="#4.15.1">4.15.1</A>, un exemple
+ dans un pseudo-langage ressemblerait � ceci&nbsp;:</P>
+<PRE>
+ nouvelle_id = execute("SELECT nextval('personne_id_seq')");
+ execute("INSERT INTO personne (id, nom) VALUES (nouvelle_id, 'Blaise Pascal')");
+</PRE>
+
+ Vous pourriez ensuite utiliser la nouvelle valeur stock�e dans
+ <CODE>nouvelle_id</CODE> avec d'autres requ�tes (c'est-�-dire en tant que
+ cl� �trang�re de la table <CODE>personne</CODE>). Notez que le nom de la
+ <SMALL>SEQUENCE</SMALL> automatiquement cr��e sera
+ &lt;<I>table</I>&gt;_&lt;<I>colonneserial</I>&gt;_<I>seq</I>, o�
+ <I>table</I> et <I>colonneserial</I> sont les noms respectifs de votre table
+ et de votre colonne <SMALL>SERIAL</SMALL>.
+
+ <P>Autrement, vous pouvez r�cup�rer la valeur <SMALL>SERIAL</SMALL> affect�e
+ avec la fonction <I>currval()</I> <I>apr�s</I> qu'elle ait �t� ins�r�e par
+ d�faut, c'est-�-dire,</P>
+<PRE>
+ execute("INSERT INTO personne (nom) VALUES ('Blaise Pascal')");
+ nouvelle_id = execute("SELECT currval('personne_id_seq')");
+</PRE>
+
+ Enfin, vous pouvez utiliser l'<A href="#4.16"><SMALL>OID</SMALL></A> renvoy�
+ par l'instruction <SMALL>INSERT</SMALL> pour r�cup�rer la valeur par d�faut
+ bien que cela soit l'appoche la moins portable et la valeur de l'OID se
+ r�initialisera aux environs de quatre milliards. En Perl, avec DBI et le
+ module DBD:Pg d'Edmund Mergl, l'ancienne valeur est disponible via
+ <I>$sth-&gt;{pg_oid_status}</I> apr�s un <I>$sth-&gt;execute()</I>.
+
+ <H4><A name="4.15.3">4.15.3</A>) Est-ce que <I>currval()</I> et
+ <I>nextval()</I> n'am�nent pas des probl�mes lorsque plusieurs utilisateurs
+ les lancent en m�me temps&nbsp;?</H4>
+
+ <P>Non. <I>currval()</I> renvoie la valeur actuelle affect�e par votre
+ processus, et non pas par tous les utilisateurs.</P>
+
+ <H4><A name="4.15.4">4.15.4</A>) Pourquoi mes num�ros de s�quences ne sont pas
+ r�-utilis�s lors d'une annulation de transaction&nbsp;? Pourquoi
+ existe-t'il des trous dans la num�rotation de ma colonne s�quentielle
+ (SERIAL)&nbsp;?</H4>
+
+ <P>Pour am�liorer les acc�s concurrents, les valeurs de s�quences sont
+ donn�es aux transactions qui en ont besoin et ne sont pas bloqu�es jusqu'�
+ la fin de la transaction. Ceci cr�e des trous dans le num�rotage pour les
+ transactions annul�es.</P>
+
+ <H4><A name="4.16">4.16</A>) Qu'est-ce qu'un <SMALL>OID</SMALL>&nbsp;?
+ Qu'est-ce qu'un <SMALL>TID</SMALL>&nbsp;?</H4>
+
+ <P>Les <SMALL>OID</SMALL> sont la r�ponse de PostgreSQL aux identifiants de
+ lignes uniques. Chaque ligne cr��e dans PostgreSQL obtient un
+ <SMALL>OID</SMALL> unique. Tous les <SMALL>OID</SMALL> g�n�r�s pendant
+ <I>initdb</I> sont inf�rieurs � 16384 (voir <I>include/access/transam.h</I>).
+ Tous les <SMALL>OID</SMALL> cr��s par un utilisateur sont sup�rieurs ou
+ �gaux � ceci. Par d�faut, tous ces <SMALL>OID</SMALL> sont uniques non
+ seulement dans une table ou une base mais unique � l'int�rieur d'une
+ installation PostgreSQL enti�re.</P>
+
+ <P>PostgreSQL utilise les <SMALL>OID</SMALL> dans ses tables syst�me interne
+ pour lier les lignes entre tables. Ces <SMALL>OID</SMALL> peuvent �tre
+ utilis�s pour identifier des lignes utilisateurs sp�cifiques et utilis�s dans
+ des jointures. Il est recommand� que vous utilisiez le type de colonne
+ <SMALL>OID</SMALL> pour stocker des valeurs <SMALL>OID</SMALL>.
+ Vous pouvez cr�er un index sur le champ <SMALL>OID</SMALL> pour un acc�s
+ plus rapide.</P>
+
+ <P>Les <SMALL>OID</SMALL> sont attribu�s pour toute ligne d'un endroit
+ central qui est utilis� par toutes les bases de donn�es. Si vous voulez
+ changer l'<SMALL>OID</SMALL> en quelque chose d'autre ou si vous voulez
+ faire une copie de la table avec les <SMALL>OID</SMALL> originaux, il
+ n'y a pas de raisons pour ne pas le faire&nbsp;:</P>
+<PRE>
+ CREATE TABLE nouvelle_table (macolonne int);
+ SELECT oid AS ancienne_oid, macolonne INTO table_temporaire FROM ancienne_table;
+ COPY table_temporaire FROM '/tmp/tablepg';
+ COPY nouvelle_table WITH OIDS FROM '/tmp/tablepg';
+ DROP TABLE table_temporaire;
+</PRE>
+
+ <P>Les <SMALL>OID</SMALL> sont stock�s en tant qu'entiers de quatre octets
+ et d�borderont � quatre milliards. Personne n'a jamais rapport� un tel cas
+ et nous avons pr�vu de retirer la limite avant que cela ne se produise.</P>
+
+ <P>Les <SMALL>TID</SMALL>s sont utilis�s pour identifier des lignes
+ physiques sp�cifiques avec des valeurs de bloc et d�calage. Les
+ <SMALL>TID</SMALL> changent apr�s que les lignes aient �t� modifi�s ou
+ recharg�s. Ils sont utilis�s par des entr�es d'index pour pointer vers des
+ lignes physiques.</P>
+
+ <H4><A name="4.17">4.17</A>) A quoi correspond certains termes utilis�s avec
+ PostgreSQL&nbsp;?</H4>
+
+ <P>Une partie du code source et de l'ancienne documentation utilisent des
+ termes dont l'usage est plus commun. Voici quelques exemples&nbsp;:</P>
+
+ <UL>
+ <LI>table, relation, classe</LI>
+ <LI>ligne (row), enregistrement (record), tuple</LI>
+ <LI>colonne (column), champ (field), attribut</LI>
+ <LI>r�cup�re, s�lectionne (select)</LI>
+ <LI>remplace (replace), met � jour (update)</LI>
+ <LI>ajoute (append), ins�re (insert)</LI>
+ <LI><SMALL>OID</SMALL>, valeur s�quentielle (serial value)</LI>
+ <LI>portal, curseur</LI>
+ <LI>range variable, table name, table alias</LI>
+ </UL>
+
+ <P>Une liste des termes g�n�raux pour le domaine des bases de donn�es est
+ disponible sur&nbsp;: <A href=
+ "http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A></P>
+
+ <H4><A name="4.18">4.18</A>) Pourquoi ai-je l'erreur <I>ERROR:
+ Memory exhausted in AllocSetAlloc()</I>&nbsp;?</H4>
+
+ <P>Vous manquez probablement de m�moire virtuelle sur votre syst�me ou votre
+ noyau a une limite assez basse pour certaines ressources. Essayez ceci avant
+ de lancer <I>postmaster</I>&nbsp;:</P>
+<PRE>
+ ulimit -d 262144
+ limit datasize 256m
+</PRE>
+
+ Suivant votre shell, seul un d'eux pourrait r�ussir mais cela configurera
+ d'une fa�on plus importante la taille du segment de donn�es de votre
+ processus. Cette commande s'applique au processus actuel et � tous les
+ processus lanc� par celui-ci. Si vous avez des probl�mes avec le client
+ <SMALL>SQL</SMALL> parce que le processus serveur renvoie trop de donn�es,
+ essayez �a avant de lancer le client.
+
+ <H4><A name="4.19">4.19</A>) Comment puis-je conna�tre la version de
+ PostgreSQL que j'utilise&nbsp;?</H4>
+
+ <P>A partir de <I>psql</I>, tapez <CODE>SELECT version();</CODE></P>
+
+ <H4><A name="4.20">4.20</A>) Pourquoi ai-je <I>invalid large obj
+ descriptor</I> lors d'op�rations sur des gros objects&nbsp;?</H4>
+
+ <P>Vous avez besoin de placer <CODE>BEGIN WORK</CODE> et <CODE>COMMIT</CODE>
+ autour de chaque utilisateur de gros objets, c'est-�-dire pour entourer
+ <CODE>lo_open</CODE> ... <CODE>lo_close.</CODE></P>
+
+ <P>Actuellement, PostgreSQL force cette r�gle en fermant les gros objets
+ lors de la transaction. Donc, le premier essai d'op�rations sur ces objets,
+ fonctionnant habituellement (au moins la plupart du temps) aura un
+ <I>invalid large obj descriptor</I>. Donc le code, auparavant fonctionnel
+ (au moins la plupart du temps), g�n�rera maintenant un message d'erreur si
+ vous n'utilisez pas de transaction.</P>
+
+ <P>Si vous utilisez une interface client interface comme
+ <SMALL>ODBC</SMALL>, vous aurez peut-�tre besoin de lancer
+ <CODE>auto-commit off.</CODE></P>
+
+ <H4><A name="4.21">4.21</A>) Comment puis-je cr�er une colonne qui aura par
+ d�faut l'heure actuelle comme valeur&nbsp;?</H4>
+
+ <P>Utilisez <I>CURRENT_TIMESTAMP</I>:</P>
+<PRE>
+<CODE>CREATE TABLE test (x int, heuremodif timestamp DEFAULT CURRENT_TIMESTAMP );
+</CODE>
+</PRE>
+
+ <H4><A name="4.22">4.22</A>) Pourquoi mes sous-requ�tes utilisant
+ <CODE><SMALL>IN</SMALL></CODE> sont-elles si lentes&nbsp;?</H4>
+
+ <P>Dans les versions pr�c�dant la 7.4, les sous-requ�tes ont �t� jointes avec
+ des jointures externes en parcourant s�quentiellement le r�sultat de la
+ sous-requ�te pour chaque ligne de la requ�te externe. Si la sous-requ�te
+ renvoit quelques lignes et que la requ�te externe en renvoit plein,
+ <CODE><SMALL>IN</SMALL></CODE> sera plus rapide. Pour acc�l�rer les autres
+ requ�tes, remplacez <CODE>IN</CODE> avec <CODE>EXISTS</CODE>&nbsp;:</P>
+<PRE> SELECT *
+ FROM table
+ WHERE colonne IN (SELECT souscolonne FROM soustable);
+</PRE>
+ to:
+<PRE> SELECT *
+ FROM table
+ WHERE EXISTS (SELECT souscolonne FROM soustable WHERE souscolonne = colonne);
+</PRE>
+
+ Pour que ceci soit rapide, <CODE>souscolonne</CODE> doit �tre une colonne
+ index�e.
+
+ <P>A partir de la version 7.4, <CODE>IN</CODE> utilise actuellement les m�mes
+ techniques sophistiqu�es de jointures comme des requ�tes normales et est
+ pr�f�r� � l'utilisation de <CODE>EXISTS</CODE>.</P>
+
+ <H4><A name="4.23">4.23</A>) Comment puis-je r�aliser une jointure
+ externe&nbsp;?</H4>
+
+ <P>PostgreSQL supporte les jointures externes en utilisant la syntaxe SQL
+ standard. Voici deux exemples&nbsp;:</P>
+<PRE>
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+</PRE>
+ or
+<PRE>
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 USING (col);
+</PRE>
+
+ <P>Ces requ�tes identiques joignent t1.col � t2.col et renvoient toute
+ colonne non jointe de t1 (celles sans correspondance dans t2). Une jointure
+ droite (<SMALL>RIGHT join</SMALL>) ajoutera les lignes non jointes de t2.
+ Une jointure compl�te (<SMALL>FULL join</SMALL>) renverra les lignes
+ correspondantes ainsi que les lignes non jointes de t1 et t2. Le mot cl�
+ <SMALL>OUTER</SMALL> est optionnelle et assum� dans le cas de jointure
+ <SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL> et <SMALL>FULL</SMALL>. Les
+ jointures ordinaires sont appel�es des jointures <SMALL>INNER</SMALL>.</P>
+
+ <P>Lors des pr�c�dentes versions, les jointures externes peuvent �tre
+ simul�es en utilisant <SMALL>UNION</SMALL> et <SMALL>NOT IN</SMALL>. Par
+ exemple, lors d'une jointure de <I>tab1</I> et <I>tab2</I>, la requ�te
+ suivante r�alise une jointure externe, <I>outer</I>, des deux tables&nbsp;:<BR>
+ <BR>
+ </P>
+<PRE>
+ SELECT tab1.col1, tab2.col2
+ FROM tab1, tab2
+ WHERE tab1.col1 = tab2.col1
+ UNION ALL
+ SELECT tab1.col1, NULL
+ FROM tab1
+ WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
+ ORDER BY col1
+</PRE>
+
+ <H4><A name="4.24">4.24</A>) Comment puis-je lancer des requ�tes utilisant
+ plusieurs bases de donn�es&nbsp;?</H4>
+
+ <P>Il n'existe pas de moyens de lancer des requ�tes sur une autre base que
+ la courante. Comme PostgreSQL charge des catalogues syst�mes sp�cifiques �
+ la base de donn�es, sa r�action aux requ�tes inter-base de donn�es est
+ incertaine.</P>
+
+ <P><I>contrib/dblink</I> permet les requ�tes entre bases de donn�es en
+ utilisant des fonctions. Bien s�r un client peut r�aliser des connexions
+ simultan�es � plusieurs bases de donn�es et joindre les r�sultats du c�t�
+ client.</P>
+
+ <H4><A name="4.25">4.25</A>) Comment puis-je renvoyer plusieurs lignes ou
+ colonnes � partir d'une fonction?</H4>
+
+ <P>A partir de la 7.3, vous pouvez facilement renvoyer plusieurs lignes ou
+ colonnes � partir d'une fonction,
+ <a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
+ http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.
+
+ <H4><A name="4.26">4.26</A>) Pourquoi ne puis-je pas cr�er/supprimer des
+ tables temporaires dans les fonctions PL/PgSQL de fa�on stable&nbsp;?</H4>
+ <P>PL/PgSQL cache le contenu des fonctions et un effet de bord malheureux est
+ que si une fonction PL/PgSQL acc�de � une table temporaire, que cette table
+ est ensuite supprim�e et recr��e, et que la fonction est appel�e de nouveau,
+ la fonction �chouera car le contenu de la fonction cach�e pointera toujours
+ vers l'ancienne table temporaire. La solution revient � utiliser
+ <SMALL>EXECUTE</SMALL> pour l'acc�s aux tables temporaires avec PL/PgSQL.
+ Ceci obligera l'analyse de la requ�te � chaque fois.</P>
+
+ <H4><A name="4.27">4.27</A>) Quelles options de r�plication sont
+ disponibles&nbsp;?</H4>
+ <P>Il existe plusieurs solutions de r�plication ma�tre/esclave. Elles
+ permettent uniquement au ma�tre de r�aliser des changements sur la base de
+ donn�es alors que l'esclave peut seulement faire des lectures de base de donn�es.
+ Le bas de la page <a
+ href="http://gborg.PostgreSQL.org/genpage?replication_research">
+ http://gborg.PostgreSQL.org/genpage?replication_research</a> les liste.
+ Une solution de r�plication multi-ma�tre est en cours de d�veloppement sur
+ <a
+ href="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a>.</P>
+
+ <H4><A name="4.28">4.28</A>) Quelles options de cryptage sont
+ disponibles&nbsp;?
+ </H4>
+ <UL>
+ <LI><I>contrib/pgcrypto</I> contient de nombreuses fonctions de cryptage, �
+ utiliser dans des requ�tes <SMALL>SQL</SMALL>.</LI>
+ <LI>Pour crypter une transmission entre le client et le serveur, le serveur
+ doit avoir positionn� l'option <I>ssl</I> � <I>true</I> dans <I>postgresql.conf,
+ </I> et un enregistrement applicable <I>host</I> ou <I>hostssl</I> doit
+ exister dans <I>pg_hba.conf</I>, et le <I>sslmode</I> du client ne doit pas
+ �tre <I>d�sactiv�e</I>. Notez qu'il est aussi possible d'utiliser un
+ transport crypt� d'une troisi�me partie, tel que stunnel ou ssh, plut�t que
+ les connexions SSL natives de PostgreSQL.
+ <LI>Les mots de passe des utilisateurs sont automatiquement crypt�s depuis
+ la version 7.3. Pour les versions pr�c�dentes, vous devez activer l'option
+ <I>PASSWORD_ENCRYPTION</I> dans <I>postgresql.conf</I>.</LI>
+ <LI>Le serveur peut fonctionner avec un syst�me de fichiers crypt�s.</LI>
+ </UL>
+
+ <HR>
+
+ <H2 align="center">Etendre PostgreSQL</H2>
+
+ <H4><A name="5.1">5.1</A>) J'ai �crit une fonction utilisateur. Lorsque je l'ex�cute avec
+ <I>psql</I>, pourquoi cela finit-il avec un <I>dump core</I>&nbsp;?</H4>
+
+ <P>Il peut y avoir plusieurs raisons. Essayez tout d'abord votre fonction utilisateur
+ dans un programme de test.</P>
+
+ <H4><A name="5.2">5.2</A>) Comment puis-je ajouter de bons nouveaux
+ types ou fonctions � PostgreSQL&nbsp;?</H4>
+
+ <P>Envoyez vos extensions � la liste de diffusion <I>pgsql-hackers</I>,
+ elles atterriront �ventuellement dans le sous-r�pertoire <I>contrib/</I>.</P>
+
+ <H4><A name="5.3">5.3</A>) Comment faire pour �crire une fonction C
+ qui renvoie un tuple&nbsp;?</H4>
+
+ <P>Dans les versions de PostgreSQL � partir de 7.3, les fonctions qui
+ renvoient une table sont totalement support�es en C, PL/PgSQL, et SQL. Voir
+ le Guide du Programmeur pour plus d'information. Un exemple de fonction
+ renvoyant une table d�finie en C se trouve �
+ <I>contrib/tablefunc</I>.</P>
+
+ <H4><A name="5.4">5.4</A>) J'ai modifi� un fichier source. Pourquoi
+ ma recompilation ne voit-elle pas les modifications&nbsp;?</H4>
+
+ <P>Les <I>Makefiles</I> n'ont pas les d�pendances ad�quates pour les
+ fichiers d'en-t�te. Il vous faut faire <I>make clean</I> puis un autre
+ <I>make</I>. Si vous utilisez <SMALL>GCC</SMALL>, vous pouvez utiliser
+ l'option <I>--enable-depend</I> de <I>configure</I> pour que le
+ compilateur calcule les d�pendances automatiquement.</P>
+ </BODY>
+</HTML>
+