~ubuntu-branches/ubuntu/lucid/postgresql-8.4/lucid-security

« back to all changes in this revision

Viewing changes to doc/src/FAQ/FAQ_french.html

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2009-03-20 12:00:13 UTC
  • Revision ID: james.westby@ubuntu.com-20090320120013-hogj7egc5mjncc5g
Tags: upstream-8.4~0cvs20090328
Import upstream version 8.4~0cvs20090328

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
2
<HTML>
 
3
  <HEAD>
 
4
    <META name="generator" content="HTML Tidy, see www.w3.org">
 
5
    <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 
6
    <TITLE>PostgreSQL FAQ</TITLE>
 
7
  </HEAD>
 
8
 
 
9
  <BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000"
 
10
  alink="#0000ff">
 
11
    <H1>Foire Aux Questions (FAQ) pour PostgreSQL</H1>
 
12
 
 
13
    <P>Derni�re mise � jour&nbsp;: vendredi 14 novembre 2004 16:32:47</P>
 
14
 
 
15
    <P>Mainteneur actuel&nbsp;: Bruce Momjian (<A href=
 
16
    "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
 
17
    </P>
 
18
 
 
19
    <P>La plus r�cente version de ce document est disponible sur <A
 
20
    href=
 
21
    "http://www.PostgreSQL.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A>.</P>
 
22
 
 
23
    <P>Les questions sp�cifiques � la plateforme sont r�pondues sur <A href=
 
24
    "http://www.PostgreSQL.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A>.</P>
 
25
    <HR>
 
26
 
 
27
    <H2 align="center">Questions g�n�rales</H2>
 
28
    <A href="#1.1">1.1</A>) Qu'est ce que PostgreSQL&nbsp;? Comment le prononcer&nbsp;?<BR>
 
29
     <A href="#1.2">1.2</A>) Quelle est la licence de PostgreSQL&nbsp;?<BR>
 
30
     <A href="#1.3">1.3</A>) Sous quels environnements Unix PostgreSQL tourne-t-il&nbsp;?<BR>
 
31
     <A href="#1.4">1.4</A>) Sous quels environnements non-Unix PostgreSQL tourne-t-il&nbsp;?<BR>
 
32
     <A href="#1.5">1.5</A>) O� puis-je me procurer PostgreSQL&nbsp;?<BR>
 
33
     <A href="#1.6">1.6</A>) O� puis-je obtenir du support&nbsp;?<BR>
 
34
     <A href="#1.7">1.7</A>) Quelle est la derni�re version&nbsp;?<BR>
 
35
     <A href="#1.8">1.8</A>) Quelle documentation est disponible&nbsp;?<BR>
 
36
     <A href="#1.9">1.9</A>) Comment savoir quels sont les bogues connus ou les fonctionnalit�s manquantes&nbsp;?<BR>
 
37
     <A href="#1.10">1.10</A>) Comment puis-je apprendre le <SMALL>SQL</SMALL>&nbsp;?<BR>
 
38
     <A href="#1.11">1.11</A>) PostgreSQL est-il compatible an 2000&nbsp;?<BR>
 
39
     <A href="#1.12">1.12</A>) Comment puis-je rejoindre l'�quipe de d�veloppement&nbsp;?<BR>
 
40
     <A href="#1.13">1.13</A>) Comment dois-je soumettre un rapport de
 
41
    bogue&nbsp;?<BR>
 
42
     <A href="#1.14">1.14</A>) Comment PostgreSQL se compare-t'il � d'autres
 
43
    <SMALL>SGBD</SMALL>&nbsp;?<BR>
 
44
     <A href="#1.15">1.15</A>) Comment puis-je aider financi�rement PostgreSQL&nbsp;?<BR>
 
45
     
 
46
 
 
47
    <H2 align="center">Questions sur le client utilisateur</H2>
 
48
    <A href="#2.1">2.1</A>) Y a-t-il des pilotes <SMALL>ODBC</SMALL> pour
 
49
    PostgreSQL&nbsp;?<BR>
 
50
    <A href="#2.2">2.2</A>) Quels outils sont disponibles pour utiliser
 
51
    PostgreSQL avec des pages Web&nbsp;?<BR>
 
52
    <A href="#2.3">2.3</A>) PostgreSQL a-t-il une interface graphique&nbsp;?<BR>
 
53
    <A href="#2.4">2.4</A>) Quels langages sont disponibles pour
 
54
    communiquer avec PostgreSQL&nbsp;?<BR>
 
55
 
 
56
 
 
57
    <H2 align="center">Questions administratives</H2>
 
58
    <A href="#3.1">3.1</A>) Comment installer PostgreSQL ailleurs que sous <I>/usr/local/pgsql</I>&nbsp;?<BR>
 
59
    <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>
 
60
    <A href="#3.3">3.3</A>) Quand je lance <I>postmaster</I>, j'obtiens des erreurs <I>IpcMemoryCreate</I>. Pourquoi&nbsp;?<BR>
 
61
    <A href="#3.4">3.4</A>) Quand je lance <I>postmaster</I>, j'obtiens des erreurs <I>IpcSemaphoreCreate</I>. Pourquoi&nbsp;?<BR>
 
62
    <A href="#3.5">3.5</A>) Comment contr�ler les connexions d'autres machines&nbsp;?<BR>
 
63
    <A href="#3.6">3.6</A>) Comment r�gler le moteur de la base de donn�es pour de meilleures performances&nbsp;?<BR>
 
64
    <A href="#3.7">3.7</A>) Quelles fonctionalit�s de d�boguage sont disponibles&nbsp;?<BR>
 
65
    <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>
 
66
    <A href="#3.9">3.9</A>) Que contient le r�pertoire <I>pgsql_tmp</I>&nbsp;?<BR>
 
67
    <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>
 
68
    <A href="#3.11">3.11</A>) Quels mat�riels dois-je utiliser&nbsp;?<BR>
 
69
 
 
70
 
 
71
    <H2 align="center">Questions fonctionnelles</H2>
 
72
    <A href="#4.1">4.1</A>) Quelle est la diff�rence entre curseur binaire
 
73
    et curseur normal&nbsp;?<BR>
 
74
    <A href="#4.2">4.2</A>) Comment faire un <SMALL>SELECT</SMALL> seulement
 
75
     sur les premi�res lignes d'une requ�te&nbsp;?  Sur une ligne al�atoire&nbsp;?<BR>
 
76
    <A href="#4.3">4.3</A>) Comment obtenir une liste des tables ou
 
77
     d'autres choses que je vois dans <I>psql</I>&nbsp;?<BR>
 
78
     <A href="#4.4">4.4</A>) Comment supprime-t-on une colonne d'une table,
 
79
     ou comment change-t-on son type de donn�es&nbsp;?<BR>
 
80
     <A href="#4.5">4.5</A>) Quelle est la taille maximale pour une ligne,
 
81
     une table et une base de donn�es&nbsp;?<BR>
 
82
     <A href="#4.6">4.6</A>) Combien d'espace disque faut-il pour stocker
 
83
     les donn�es d'un fichier texte typique&nbsp;?<BR>
 
84
     <A href="#4.7">4.7</A>) Comment puis-je savoir quels index, tables,
 
85
     bases de donn�es et utilisateurs sont d�finis&nbsp;?<BR>
 
86
     <A href="#4.8">4.8</A>) Mes requ�tes sont lentes ou ne font pas usage
 
87
     des index. Pourquoi&nbsp;?<BR>
 
88
     <A href="#4.9">4.9</A>) Comment puis-je savoir si l'optimiseur �value
 
89
     mes requ�tes&nbsp;?<BR>
 
90
     <A href="#4.10">4.10</A>) Qu'est-ce qu'un index R-tree&nbsp;?<BR>
 
91
     <A href="#4.11">4.11</A>) Qu'est-ce que l'optimiseur g�n�tique de
 
92
    requ�tes&nbsp;?<BR>
 
93
     <A href="#4.12">4.12</A>) Comment puis-je r�aliser des recherches par des
 
94
    expressions rationnelles ainsi que des recherches non sensibles � la
 
95
    casse&nbsp;? Comment puis-je utiliser un index lors de recherches non
 
96
    sensibles � la casse&nbsp;?<BR>
 
97
     <A href="#4.13">4.13</A>) Comment puis-je d�tecter si un champ est
 
98
    <SMALL>NULL</SMALL> dans une requ�te&nbsp;?<BR>
 
99
     <A href="#4.14">4.14</A>) Quelle sont les diff�rences entre les nombreux
 
100
    types de caract�res&nbsp;?<BR>
 
101
     <A href="#4.15.1">4.15.1</A>) Comment puis-je cr�er un champ s�rie,
 
102
    c'est-�-dire s'incr�mentant automatiquement&nbsp;?<BR>
 
103
     <A href="#4.15.2">4.15.2</A>) Comment puis-je obtenir la valeur d'un
 
104
    <SMALL>SERIAL</SMALL> suite � une insertion&nbsp;?<BR>
 
105
     <A href="#4.15.3">4.15.3</A>) Est-ce que <I>currval()</I> et
 
106
     <I>nextval()</I> n'am�nent pas des probl�mes lorsque plusieurs utilisateurs
 
107
     les lancent en m�me temps&nbsp;?<BR>
 
108
     <A href="#4.15.4">4.15.4</A>) Pourquoi mes num�ros de s�quences ne sont pas
 
109
     r�-utilis�s lors d'une annulation de transaction&nbsp;? Pourquoi
 
110
     existe-t'il des trous dans la num�rotation de ma colonne s�quentielle
 
111
     (SERIAL)&nbsp;?<BR>
 
112
     <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>
 
113
     <A href="#4.17">4.17</A>) A quoi correspond certains termes utilis�s avec
 
114
    PostgreSQL&nbsp;?<BR>
 
115
     <A href="#4.18">4.18</A>) Pourquoi ai-je l'erreur <I>ERROR:
 
116
    Memory exhausted in AllocSetAlloc()</I>&nbsp;?<BR>
 
117
     <A href="#4.19">4.19</A>) Comment puis-je conna�tre la version de
 
118
    PostgreSQL que j'utilise&nbsp;?<BR>
 
119
     <A href="#4.20">4.20</A>) Pourquoi ai-je <I>invalid large obj
 
120
    descriptor</I> lors d'op�rations avec des gros objets&nbsp;?<BR>
 
121
     <A href="#4.21">4.21</A>) Comment puis-je cr�er une colonne qui aura par
 
122
    d�faut l'heure actuelle comme valeur&nbsp;?<BR>
 
123
     <A href="#4.22">4.22</A>) Pourquoi mes sous-requ�tes utilisant
 
124
    <CODE><SMALL>IN</SMALL></CODE> sont-elles si lentes&nbsp;?<BR>
 
125
     <A href="#4.23">4.23</A>) Comment puis-je r�aliser une jointure
 
126
    externe&nbsp;?<BR>
 
127
     <A href="#4.24">4.24</A>) Comment puis-je lancer des requ�tes utilisant
 
128
    plusieurs bases de donn�es&nbsp;??<BR>
 
129
     <A href="#4.25">4.25</A>) Comment puis-je renvoyer plusieurs lignes ou
 
130
    colonnes � partir d'une fonction&nbsp;?<BR>
 
131
     <A href="#4.26">4.26</A>) Pourquoi ne puis-je pas cr�er/supprimer des
 
132
    tables temporaires dans les fonctions PL/PgSQL de fa�on stable&nbsp;?<BR>
 
133
     <A href="#4.27">4.27</A>) Quelles options de cryptage sont
 
134
    disponibles&nbsp;?<BR>
 
135
     
 
136
    <H2 align="center">Etendre PostgreSQL</H2>
 
137
    <A href="#5.1">5.1</A>) J'ai �crit une fonction utilisateur. Lorsque je l'ex�cute avec
 
138
    <I>psql</I>, pourquoi cela finit-il avec un "dump core"&nbsp;?<BR>
 
139
     <A href="#5.2">5.2</A>) Comment puis-je contribuer avec de nouveaux types et fonctions
 
140
    pour PostgreSQL&nbsp;?<BR>
 
141
     <A href="#5.3">5.3</A>) Comment puis-je �crire une fonction C pour r�cup�rer une
 
142
    ligne&nbsp;?<BR>
 
143
     <A href="#5.4">5.4</A>) J'ai modifi� un fichier source. Pourquoi la modification
 
144
      n'est-elle pas visible apr�s la recompilation&nbsp;?<BR>
 
145
     
 
146
    <HR>
 
147
 
 
148
    <H2 align="center">Questions g�n�rales</H2>
 
149
 
 
150
    <H4><A name="1.1">1.1</A>) Qu'est ce que PostgreSQL&nbsp;? Comment
 
151
    le prononcer&nbsp;?</H4>
 
152
 
 
153
    <P>PostgreSQL se prononce <I>Post-Gres-Q-L</I>. Un fichier audio est
 
154
    disponible sur <A
 
155
    href="http://www.postgresql.org/postgresql.mp3">http://www.postgresql.org/postgresql.mp3</A>
 
156
    pour ceux souhaitant entendre la prononciation.</P>
 
157
 
 
158
    <P>PostgreSQL est une am�lioration du syst�me de gestion de bases
 
159
    de donn�es POSTGRES (et est toujours quelque fois appel� "Postgres"),
 
160
    un prototype de recherche de
 
161
    <SMALL>SGBD</SMALL> de prochaine g�n�ration. PostgreSQL garde le
 
162
    puissant mod�le de donn�es et les types de donn�es riches de
 
163
    POSTGRES, mais remplace le langage de requ�tes PostQuel par un
 
164
    sous-ensemble �tendu de <SMALL>SQL</SMALL>. PostgreSQL est gratuit
 
165
    et les sources complets sont disponibles.</P>
 
166
 
 
167
    <P> PostgreSQL est �crit par une �quipe de d�veloppeurs qui sont
 
168
    tous inscrits � la liste de diffusion de d�veloppement de
 
169
    PostgreSQL. Le coordinateur actuel est Marc G. Fournier (<A href=
 
170
    "mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A> et voir
 
171
    la section <a href="#1.6">1.6</a> pour contacter les
 
172
    d�veloppeurs). Cette �quipe est responsable de tout le
 
173
    d�veloppement de PostgreSQL. C'est un projet soutenu par une
 
174
    communaut� sans �tre contr�l� par une soci�t�. Pour y contribuer,
 
175
    voir la FAQ des d�veloppeurs sur <A
 
176
    href="http://www.postgresql.org/docs/faqs/FAQ_DEV.html">http://www.postgresql.org/docs/faqs/FAQ_DEV.html</A>.</P>
 
177
 
 
178
    <P>Les auteurs de PostgreSQL 1.01 �taient Andrew Yu et Jolly Chen.
 
179
    Beaucoup d'autres personnes ont contribu� au portage, aux tests,
 
180
    au d�boguage et � l'am�lioration du code. Le code de Postgres
 
181
    original, duquel PostgreSQL est d�riv�, �tait le fruit de
 
182
    l'effort de nombreux �tudiants dipl�m�s et non dipl�m�s, et de
 
183
    programmeurs travaillant sous la direction du Professeur Michael
 
184
    Stonebraker � l'universit� de Californie, Berkeley.</P>
 
185
 
 
186
    <P>Le nom original du logiciel � Berkeley �tait Postgres. Quand le
 
187
    <SMALL>SQL</SMALL> fut ajout� en 1995, le nom a d� �tre chang� en
 
188
    Postgres95. Fin 1996, le nom fut chang� en PostgreSQL.</P>
 
189
 
 
190
    <H4><A name="1.2">1.2</A>) Quelle est la licence de PostgreSQL&nbsp;?</H4>
 
191
 
 
192
    <P>PostgreSQL est distribu� sous la licence suivante&nbsp;:</P>
 
193
 
 
194
    <P>PostgreSQL Data Base Management System</P>
 
195
 
 
196
    <P>Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
 
197
    Portions Copyright (c) 1994-6 Regents of the University of California</P>
 
198
 
 
199
    <P>Permission to use, copy, modify, and distribute this software
 
200
    and its documentation for any purpose, without fee, and without a
 
201
    written agreement is hereby granted, provided that the above
 
202
    copyright notice and this paragraph and the following two
 
203
    paragraphs appear in all copies.</P>
 
204
 
 
205
    <P>IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY
 
206
    PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
 
207
    DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS
 
208
    SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
 
209
    CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</P>
 
210
 
 
211
    <P>THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
 
212
    WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 
213
    OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
 
214
    SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE
 
215
    UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
 
216
    SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.</P>
 
217
 
 
218
    <P>La licence ci-dessus est la licence BSD, une licence open-source
 
219
    classique.</P>
 
220
 
 
221
    <H4><A name="1.3">1.3</A>) Sous quels environnements Unix PostgreSQL tourne-t-il&nbsp;?</H4>
 
222
 
 
223
    <P>En g�n�ral, tout environnement compatible Unix moderne devrait
 
224
    pouvoir faire fonctionner PostgreSQL. Les environnements qui ont �t�
 
225
    test�s explicitement sont list�s dans les instructions
 
226
    d'installation.</P>
 
227
 
 
228
    <H4><A name="1.4">1.4</A>) Sous quels environnements non Unix PostgreSQL fonctionne-t'il&nbsp;?</H4>
 
229
 
 
230
    
 
231
    <p>� partir de la version 8.0, PostgreSQL fonctionne nativement sur les
 
232
    syst�mes d'exploitation Microsoft Windows � base NT comme Win2000, WinXP et Win2003.
 
233
    Un installeur est disponible sur
 
234
    <a href="http://pgfoundry.org/projects/pginstaller">http://pgfoundry.org/projects/pginstaller</a>.</p>
 
235
   
 
236
    <p>Il existe aussi un port sur Novell Netware sur
 
237
    <a href="http://forge.novell.com">http://forge.novell.com</a>.</p>
 
238
 
 
239
    <H4><A name="1.5">1.5</A>) O� puis-je me procurer PostgreSQL&nbsp;?</H4>
 
240
 
 
241
    <P>Le site FTP anonyme principal de PostgreSQL est <A href=
 
242
    "ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>.
 
243
    Pour les sites miroirs, voir notre site web principal.</P>
 
244
 
 
245
    <H4><A name="1.6">1.6</A>) O� puis-je obtenir du support&nbsp;?</H4>
 
246
 
 
247
    <P>La liste de diffusion principale est <A href=
 
248
    "mailto:pgsql-general@PostgreSQL.org">pgsql-general@PostgreSQL.org</A>.
 
249
    Elle est disponible pour discuter de sujets en rapport avec
 
250
    PostgreSQL. Pour s'y inscrire, il faut envoyer un courriel avec
 
251
    les lignes suivantes dans le corps du message (pas dans la ligne
 
252
    du sujet)&nbsp;:</P>
 
253
<PRE>
 
254
    subscribe
 
255
    end
 
256
</PRE>
 
257
 
 
258
    <P>� <A href=
 
259
    "mailto:pgsql-general-request@PostgreSQL.org">pgsql-general-request@PostgreSQL.org</A>.</P>
 
260
 
 
261
    <P>Il existe aussi un recueil de la liste. Pour s'y inscrire,
 
262
    envoyez un courriel � <A href=
 
263
    "mailto:pgsql-general-digest-request@PostgreSQL.org">pgsql-general-digest-request@PostgreSQL.org</A>
 
264
    avec dans le corps&nbsp;:</P>
 
265
<PRE>
 
266
    subscribe
 
267
    end
 
268
</PRE>
 
269
 
 
270
    Les recueils sont envoy�s aux membres de cette liste d�s que la
 
271
    liste principale a re�u 30&nbsp;Ko de messages. 
 
272
 
 
273
    <P>Une liste de diffusion de bogues est disponible. Pour s'y inscrire,
 
274
    envoyer un courriel � <A href=
 
275
    "mailto:pgsql-bugs-request@PostgreSQL.org">pgsql-bugs-request@PostgreSQL.org</A>
 
276
      avec dans le corps&nbsp;:</P>
 
277
<PRE>
 
278
    subscribe
 
279
    end
 
280
</PRE>
 
281
 
 
282
    Une liste de diffusion pour les d�veloppeurs est aussi disponible. Pour s'y
 
283
    inscrire, envoyez un courriel � <A href=
 
284
    "mailto:pgsql-hackers-request@PostgreSQL.org">pgsql-hackers-request@PostgreSQL.org</A>
 
285
    avec dans le corps&nbsp;: 
 
286
<PRE>
 
287
    subscribe
 
288
    end
 
289
</PRE>
 
290
 
 
291
    <P>Vous pouvez trouver d'autres listes et informations sur
 
292
    PostgreSQL sur le site web de PostgreSQL&nbsp;:</P>
 
293
 
 
294
    <BLOCKQUOTE>
 
295
      <p><A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A></p>
 
296
    </BLOCKQUOTE>
 
297
 
 
298
    <P>Il y a aussi un canal IRC sur Freenode et EFNet, le canal
 
299
    <I>#PostgreSQL</I>. Vous pouvez utiliser la commande Unix
 
300
    <CODE>irc -c '#PostgreSQL' "$USER" irc.phoenix.net</CODE> ou
 
301
    <CODE>irc -c '#PostgreSQL' "$USER" irc.freenode.net</CODE>.</P>
 
302
 
 
303
    <P>Une liste de soci�t�s pouvant fournir un support commercial
 
304
    est disponible sur <A href=
 
305
    "http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A>.</P>
 
306
 
 
307
    <H4><A name="1.7">1.7</A>) Quelle est la derni�re version&nbsp;?</H4>
 
308
 
 
309
    <P>La derni�re version de PostgreSQL est la version 7.4.5.</P>
 
310
 
 
311
    <P>Nous projetons de sortir une version majeure tous les six � huit
 
312
    mois.</P>
 
313
 
 
314
    <H4><A name="1.8">1.8</A>) Quelle documentation est disponible&nbsp;?</H4>
 
315
 
 
316
    <P>Plusieurs manuels, pages de manuel ainsi que des petits exemples de
 
317
    test sont inclus dans la distribution. Voir le r�pertoire
 
318
    <I>/doc</I>. Vous pouvez aussi acc�der aux manuels en ligne sur <A href=
 
319
    "http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.</P>
 
320
 
 
321
    <P>Deux livres sur PostgreSQL sont disponibles en ligne sur <A href=
 
322
    "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
 
323
    et <A href=
 
324
    "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>.
 
325
    Il y a une liste de livres sur PostgreSQL pouvant �tre achet�s sur <A
 
326
    href=
 
327
    "http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>.
 
328
    Il y a aussi une collection d'articles techniques sur PostgreSQL sur <A
 
329
    href=
 
330
    "http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</A>.</P>
 
331
 
 
332
    <P><I>psql</I> poss�de des commandes \d pratiques montrant des
 
333
    informations sur les types, op�rateurs, fonctions, aggr�gats, etc.</P>
 
334
 
 
335
    <P>Notre site web contient encore plus de documentations.</P>
 
336
 
 
337
    <H4><A name="1.9">1.9</A>) Comment savoir quels sont les bogues connus ou les fonctionnalit�s manquantes&nbsp;?</H4>
 
338
 
 
339
    <P>PostgreSQL supporte un sous-ensemble �tendu de <SMALL>SQL</SMALL>-92.
 
340
    Voir notre liste <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
 
341
    pour les bogues connus, les fonctionnalit�s manquantes et les
 
342
    plans pour le futur.</P>
 
343
 
 
344
    <H4><A name="1.10">1.10</A>) Comment puis-je apprendre le <SMALL>SQL</SMALL>&nbsp;?</H4>
 
345
 
 
346
    <P>Le livre PostgreSQL sur <A href=
 
347
    "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
 
348
    enseigne le <SMALL>SQL</SMALL>. Il existe un autre livre PostgreSQL sur <A
 
349
    href=
 
350
    "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook.</A>
 
351
    Il existe de bons tutoriels sur <A href=
 
352
    "http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm,</A>
 
353
    <A href=
 
354
    "http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">
 
355
    http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM</A>
 
356
    et <A href=
 
357
    "http://sqlcourse.com/">http://sqlcourse.com.</A></P>
 
358
 
 
359
    <P>Un autre (en anglais uniquement) "Teach Yourself SQL in 21 Days, Second Edition"
 
360
    se trouve sur <A href=
 
361
    "http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A></P>
 
362
 
 
363
    <P>Nombre de nos utilisateurs aiment <I>The Practical SQL Handbook</I>,
 
364
    Bowman, Judith S., et al., Addison-Wesley. D'autres aiment <I>The
 
365
    Complete Reference SQL</I>, Groff et al., McGraw-Hill.</P>
 
366
 
 
367
    <H4><A name="1.11">1.11</A>) PostgreSQL est-il compatible an 2000&nbsp;?</H4>
 
368
 
 
369
    <P>Oui, nous manipulons facilement les dates apr�s et avant l'an 2000.</P>
 
370
 
 
371
    <H4><A name="1.12">1.12</A>) Comment puis-je rejoindre l'�quipe de d�veloppement&nbsp;?</H4>
 
372
 
 
373
    <P>Tout d'abord, t�l�chargez les derniers sources et lisez la
 
374
    documentation pour les d�veloppeurs sur notre site web ou bien
 
375
    dans la distribution. Ensuite, inscrivez-vous aux listes de
 
376
    diffusion <I>pgsql-hackers</I> et <I>pgsql-patches</I>. Et pour finir,
 
377
    soumettez des correctifs de grande qualit� sur <i>pgsql-patches</i>.</P>
 
378
 
 
379
    <P>Environ une douzaine de personnes ont des droits de modification
 
380
    sur l'archive <SMALL>CVS</SMALL> de PostgreSQL. Ils ont chacun
 
381
    soumis tellement de correctifs de qualit� qu'il �tait devenu
 
382
    impossible aux d�veloppeurs de tenir la cadence et nous avions
 
383
    confiance dans le qualit� des correctifs qu'ils soumettaient.</P>
 
384
 
 
385
    <H4><A name="1.13">1.13</A>) Comment dois-je soumettre un rapport de
 
386
    bogue&nbsp;?</H4>
 
387
 
 
388
    <P>Merci de visiter la page PostgreSQL BugTool sur <A href=
 
389
    "http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>,
 
390
    qui donne des indications sur la fa�on de soumettre un rapport de bogue.</P>
 
391
 
 
392
    <P>De m�me, v�rifiez notre site ftp <A href=
 
393
    "ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A> pour
 
394
    voir s'il existe une version PostgreSQL plus r�cente ou des
 
395
    correctifs.</P>
 
396
 
 
397
    <H4><A name="1.14">1.14</A>) Comment PostgreSQL se compare-til �
 
398
      d'autres <SMALL>SGBD</SMALL>&nbsp;?</H4>
 
399
 
 
400
    <P>Il y a plusieurs mani�res de mesurer un logiciel&nbsp;: les fonctionnalit�s,
 
401
    les performances, la fiabilit�, le support, et le prix.</P>
 
402
 
 
403
    <DL>
 
404
      <DT><B>Fonctionnalit�s</B></DT>
 
405
 
 
406
      <DD>PostgreSQL poss�de la plupart des fonctionnalit�s pr�sentes
 
407
      dans les <SMALL>SGBD</SMALL> commerciaux, comme les
 
408
      transactions, les requ�tes imbriqu�es, les d�clencheurs,
 
409
      les vues, l'int�grit� r�f�rentielle par cl�s �trang�res, et le
 
410
      verrouillage sophistiqu�. Nous avons des fonctionnalit�s qu'ils
 
411
      n'ont pas, comme les types d�finis par l'utilisateur,
 
412
      l'h�ritage, les r�gles, et le contr�le de concurrence par
 
413
      multi-versionnage pour r�duire les contentions de verrouillage.<BR>
 
414
      <BR>
 
415
      </DD>
 
416
 
 
417
      <DT><B>Performances</B></DT>
 
418
 
 
419
      <DD>PostgreSQL a des performances similaires aux autres bases de
 
420
      donn�es commerciales et open source. Il est plus rapide pour
 
421
      certaines op�rations, plus lent pour d'autres. Par rapport �
 
422
      MySQL ou d'autres <SMALL>SGBD</small> plus l�ger, nous sommes
 
423
      plus rapides pour de nombreux utilisateurs, des requ�tes complexes et
 
424
      une charge pour les requ�tes de lecture/�criture. MySQL est plus rapide
 
425
      pour des requ�tes SELECT simples effectu�es par quelques utilisateurs.
 
426
      Bien s�r, MySQL ne poss�de aucune des fonctionnalit�s de la section
 
427
      <I>Fonctionnalit�s</I> ci-dessus. PostgreSQL est construit pour la
 
428
      fiabilit� et les fonctionnalit�s et nous continuons � am�liorer les
 
429
      performances � chaque version. Il y a une page web int�ressante
 
430
      qui compare PostgreSQL � MySQL sur <A
 
431
      href="http://openacs.org/philosophy/why-not-mysql.html">
 
432
      http://openacs.org/philosophy/why-not-mysql.html</A>. De plus, MySQL
 
433
      est une soci�t� qui distribue son produit via l'open source et requiert
 
434
      une licence commerciale pour les logiciels propri�taires, donc pas une
 
435
      communaut� de d�veloppement open source comme PostgreSQL.<BR>
 
436
 
 
437
      <BR>
 
438
      </DD>
 
439
 
 
440
      <DT><B>Fiabilit�</B></DT>
 
441
 
 
442
      <DD>Nous somme conscients qu'un <SMALL>SGBD</SMALL> doit �tre
 
443
      fiable ou bien il est inutile. Nous faisons le maximum pour
 
444
      sortir des versions bien test�es, du code stable ne contenant qu'un
 
445
      minimum de bogues. Chaque version a au moins un mois de tests,
 
446
      et notre historique de versions montre que nous pouvons
 
447
      fournir des versions stables et robustes, pr�tes pour une
 
448
      utilisation en environnement de production. Nous pensons que
 
449
      nous nous comparons favorablement aux autres bases de donn�es
 
450
      dans ce domaine.<BR>
 
451
      <BR>
 
452
      </DD>
 
453
 
 
454
      <DT><B>Support</B></DT>
 
455
 
 
456
      <DD>Nos listes de diffusion offrent un contact avec un large
 
457
        groupe de d�veloppeurs et d'utilisateurs afin d'aider � la
 
458
        r�solution des probl�mes rencontr�s. Nous ne pouvons garantir
 
459
        un correctif mais les <SMALL>SGBD</SMALL> commerciaux ne le
 
460
        garantissent pas toujours non plus. L'acc�s direct aux
 
461
        d�veloppeurs, � la communaut� d'utilisateurs, aux manuels, et
 
462
        au code source, fait du support pour PostgreSQL un support
 
463
        sup�rieur aux autres <SMALL>SGBD</SMALL>. Un support commercial par
 
464
        incident est disponible pour ceux qui en ont le besoin (voir
 
465
        la <A
 
466
        href="#1.6">section 1.6 de la FAQ</A>).<BR>
 
467
      <BR>
 
468
      </DD>
 
469
 
 
470
      <DT><B>Prix</B></DT>
 
471
 
 
472
      <DD>Nous sommes gratuits pour tous les usages, commerciaux et
 
473
        non commerciaux. Vous pouvez inclure notre code dans vos
 
474
        produits sans limitation, except�es celles cit�es dans notre
 
475
        licence de type BSD donn�e plus haut.<BR>
 
476
      <BR>
 
477
      </DD>
 
478
    </DL>
 
479
 
 
480
    <H4><A name="1.15">1.15</A>) Comment puis-je aider financi�rement
 
481
      PostgreSQL&nbsp;?</H4>
 
482
 
 
483
    <P>PostgreSQL poss�de une infrastructure de premi�re classe depuis
 
484
    le d�but en 1996. Ceci gr�ce � Marc Fournier, qui a cr�� et g�r�
 
485
    cette infrastructure des ann�es durant.</P>
 
486
 
 
487
    <P>Une infrastructure de qualit� est importante pour un projet
 
488
    open-source. Cela permet d'emp�cher l'�parpillement qui ralentirait
 
489
    beaucoup l'avancement du projet.</P>
 
490
 
 
491
    <P>Bien s�r, cette infrastructure n'est pas donn�e. Elle requiert
 
492
    un certain nombre de d�penses mensuelles ou ponctuelles. Si vous
 
493
    ou votre soci�t� peut donner de l'argent pour soutenir cet effort,
 
494
    merci de consulter la page web <A
 
495
    href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A>
 
496
    et de faire une donation.</P>
 
497
 
 
498
    <P>Bien que la page web mentionne PostgreSQL, Inc, les
 
499
    contributions sont exclusivement utilis�es pour soutenir le
 
500
    projet PostgreSQL et ne soutiennent aucune soci�t� que ce soit. Si
 
501
    vous le pr�f�rez, vous pouvez  aussi envoyer un ch�que � l'adresse
 
502
    de contact.</P>
 
503
    <HR>
 
504
 
 
505
    <P>De plus, si vous avez une histoire de succ�s avec PostgreSQL,
 
506
    merci de la soumettre � notre site d'�vang�lisation sur <a
 
507
    href="http://advocacy.postgresql.org">
 
508
    http://advocacy.postgresql.org</a>.</P>
 
509
 
 
510
 
 
511
 
 
512
    <H2 align="center">Questions sur le client utilisateur</H2>
 
513
 
 
514
    <H4><A name="2.1">2.1</A>) Existe-t'il des pilotes <SMALL>ODBC</SMALL> pour
 
515
    PostgreSQL&nbsp;?</H4>
 
516
 
 
517
    <P>Il y a deux pilotes <SMALL>ODBC</SMALL> disponibles, PsqlODBC
 
518
    et OpenLink <SMALL>ODBC</SMALL>.</P>
 
519
 
 
520
    <P>Vous pouvez t�l�charger PsqlOBDC depuis <A href=
 
521
    "http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">
 
522
    http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A>.</P>
 
523
 
 
524
    <P>OpenLink <SMALL>ODBC</SMALL> peut �tre obtenu depuis <A href=
 
525
    "http://www.openlinksw.com/">http://www.openlinksw.com</A>. Il fonctionne
 
526
    avec leur logiciel client <SMALL>ODBC</SMALL> standard, vous aurez
 
527
    donc PostgreSQL <SMALL>ODBC</SMALL> sur toutes les plateformes 
 
528
    client qu'ils supportent (Win, Mac, Unix, VMS).</P>
 
529
 
 
530
    <P>Ils vendront probablement ce produit aux gens qui recherchent 
 
531
    une qualit� de support professionnelle mais une version freeware sera
 
532
    toujours disponible. Merci d'envoyer vos questions � <A href=
 
533
    "mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.</P>
 
534
 
 
535
    <H4><A name="2.2">2.2</A>) Quels outils sont disponibles pour utiliser 
 
536
    PostgreSQL avec des pages Web&nbsp;?</H4>
 
537
 
 
538
    <P>Une bonne introduction aux pages Web adoss�s � une base de donn�es se
 
539
    trouve � <A href="http://www.webreview.com">http://www.webreview.com</A></P>
 
540
 
 
541
    <P>Pour l'int�gration Web, PHP est une excellente interface. Elle se trouve � <A
 
542
    href="http://www.php.net">http://www.php.net</A>.</P>
 
543
 
 
544
    <P>Pour les cas complexes, beaucoup utilisent l'interface Perl et CGI.pm ou mod_perl.</P>
 
545
 
 
546
    <H4><A name="2.3">2.3</A>) PostgreSQL a-t-il une interface graphique&nbsp;?</H4>
 
547
 
 
548
    <P>Oui, il y a plusieurs interfaces graphiques disponibles pour PostgreSQL,
 
549
    dont PgAccess <a href="http://www.pgaccess.org">
 
550
    http://www.pgaccess.org</a>), PgAdmin III (<a
 
551
    href="http://www.pgadmin.org">http://www.pgadmin.org</a>),
 
552
    RHDB Admin (<a
 
553
    href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/
 
554
    </a> et Rekall (<a href="http://www.thekompany.com/products/rekall/">
 
555
    http://www.thekompany.com/products/rekall/</a>, propri�taire). Il y a
 
556
    aussi PhpPgAdmin (<a href="http://phppgadmin.sourceforge.net/">
 
557
    http://phppgadmin.sourceforge.net/ </a>), une interface Web pour
 
558
    PostgreSQL.</P>
 
559
 
 
560
    <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>
 
561
 
 
562
    <H4><A name="2.4">2.4</A>) Quels langages sont disponibles pour
 
563
    communiquer avec PostgreSQL&nbsp;?</H4>
 
564
 
 
565
    <P>La plupart des langages de programmation couramment utilis�s ont
 
566
    une interface pour PostgreSQL. V�rifiez la liste des modules de votre
 
567
    langage.</P>
 
568
 
 
569
    <P>Les interfaces ci-dessous sont incluses dans la distribution&nbsp;:</P>
 
570
 
 
571
    <UL>
 
572
      <LI>C (libpq)</LI>
 
573
 
 
574
      <LI>Embedded C (ecpg)</LI>
 
575
 
 
576
      <LI>Java (jdbc)</LI>
 
577
 
 
578
      <LI>Python (PyGreSQL)</LI>
 
579
 
 
580
      <LI>TCL (libpgtcl)</LI>
 
581
 
 
582
    </UL>
 
583
    <P>Interfaces suppl�mentaires disponibles sur
 
584
    <a href="http://gborg.postgresql.org">http://gborg.postgresql.org</A>
 
585
    dans la section <I>Drivers/Interfaces</I> 
 
586
    </P>
 
587
    <HR>
 
588
 
 
589
    <H2 align="center">Questions Administratives</H2>
 
590
 
 
591
    <H4><A name="3.1">3.1</A>) Comment installer PostgreSQL ailleurs que sous <I>/usr/local/pgsql</I>&nbsp;?</H4>
 
592
 
 
593
    <P>Il faut sp�cifier l'option <I>--prefix</I> lors du lancement de <I>configure</I>.</P>
 
594
 
 
595
    <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>
 
596
 
 
597
    <P>Cela peut �tre d� � une vari�t� de probl�mes mais v�rifiez d'abord que
 
598
    vous avez les extensions System V install�es pour votre noyau. PostgreSQL
 
599
    n�cessite le support noyau pour la m�moire partag�e et les s�maphores.</P>
 
600
 
 
601
    <H4><A name="3.3">3.3</A>) Quand je lance <I>postmaster</I>, j'obtiens des erreurs <I>IpcMemoryCreate</I>. Pourquoi&nbsp;?</H4>
 
602
 
 
603
    <P>Soit vous n'avez pas configur� correctement la m�moire partag�e dans
 
604
    votre noyau, soit vous devez augmenter la m�moire partag�e disponible dans
 
605
    le noyau. Le montant exact dont vous avez besoin d�pend de votre
 
606
    architecture et du nombre de tampons et de processus que vous avez
 
607
    configur� pour <I>postmaster</I>. Pour la plupart des syst�mes avec un
 
608
    nombre par d�faut de tampons et de processus, vous aurez besoin d'un minimum
 
609
    d'environ 1&nbsp;Mo. Voir le chapitre <A href=
 
610
    "http://www.PostgreSQL.org/docs/view.php?version=current&amp;idoc=1&amp;file=kernel-resources.html">Administration
 
611
    du manuel PostgreSQL</A> pour des informations plus d�taill�es sur la m�moire partag�e et les s�maphores.</P>
 
612
 
 
613
    <H4><A name="3.4">3.4</A>) Quand je lance <I>postmaster</I>, j'obtiens des erreurs <I>IpcSemaphoreCreate</I>. Pourquoi&nbsp;?</H4>
 
614
 
 
615
    <P>Si le message d'erreur est <I>IpcSemaphoreCreate: semget failed (No
 
616
    space left on device)</I> alors votre noyau n'est pas configur� avec
 
617
    suffisamment de s�maphores. PostgreSQL a besoin d'un s�maphore par processus
 
618
    serveur potentiel. Une solution provisoire est de lancer <I>postmaster</I>
 
619
    avec une plus petite limite sur le nombre de processus serveur. Utilisez l'option
 
620
    <I>-N</I> avec un param�tre inf�rieur au choix par d�faut de 32. Une
 
621
    solution permanente est d'augmenter les param�tres 
 
622
    <SMALL>SEMMNS</SMALL> et <SMALL>SEMMNI</SMALL> de votre noyau.</P>
 
623
 
 
624
    <P>Des s�maphores inop�rantes peuvent aussi provoquer des plantages pendant de gros acc�s � la base de donn�es.</P>
 
625
 
 
626
    <P>Si le message d'erreur est autre chose, vous n'avez peut-�tre pas du tout le support des
 
627
    s�maphores dans votre noyau. Voir le 
 
628
    chapitre <A href=
 
629
    "http://www.PostgreSQL.org/docs/view.php?version=current&amp;idoc=1&amp;file=kernel-resources.html">Administration
 
630
    du manuel PostgreSQL</A> pour des informations plus d�taill�es sur la m�moire partag�e et les s�maphores.</P>
 
631
 
 
632
    <H4><A name="3.5">3.5</A>) Comment contr�ler les connexions d'autres machines&nbsp;?</H4>
 
633
 
 
634
    <p>Par d�faut, PostgreSQL autorise seulement les connexions de la machine
 
635
    locale en utilisant les sockets de domaine Unix ou les connexions TCP/IP.
 
636
    D'autres machines ne seront pas capables de se connecter sauf si vous modifiez
 
637
    listen_addresses dans postgresql.conf et activez une authentification bas�e
 
638
    sur l'h�te en modifiant le fichier <i>$PGDATA/pg_hba.conf</i> en accord.</p>
 
639
 
 
640
    <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>
 
641
 
 
642
    <P>Des index acc�l�reront les requ�tes. La commande 
 
643
    <SMALL>EXPLAIN ANALYZE</SMALL> vous permet de voir comment PostgreSQL traite
 
644
    votre requ�te et quels index sont utilis�s.</P>
 
645
 
 
646
    <P>Si vous faites beaucoup d'insertions (instruction <SMALL>INSERT</SMALL>),
 
647
    envisagez de les faire en une fois en utilisant la commande <SMALL>COPY</SMALL>. Ceci
 
648
    est plus rapide que des commandes <SMALL>INSERTS</SMALL> individuelles. Deuxi�ment,
 
649
    les requ�tes qui ne sont pas dans des blocs de transaction <SMALL>BEGIN WORK/COMMIT</SMALL>
 
650
    sont consid�r�s comme �tant dans leur propre transaction. Envisagez de faire
 
651
    plusieurs instructions dans un seul bloc de transaction. Ceci r�duira la
 
652
    surcharge apport�e par les transactions. Aussi, envisagez d'abandonner et
 
653
    de recr�er des index lors de grosses modifications de donn�es.</P>
 
654
 
 
655
    <P>Il y a plusieurs options d'optimisations. Vous pouvez d�sactiver
 
656
    <I>fsync()</I> en lan�ant <I>postmaster</I> avec l'option <I>-o -F</I>.
 
657
    Ceci emp�chera les <I>fsync()</I>s d'�crire sur disque apr�s toute
 
658
    transaction.</P>
 
659
 
 
660
    <P>Vous pouvez utiliser l'option <I>-B</I> de <I>postmaster</I> pour
 
661
    augmenter le nombre de tampons de m�moire partag�e utilis�s par les
 
662
    processus serveurs. Si vous fixez ce param�tre trop haut,
 
663
    <I>postmaster</I> ne se lancera pas car vous avez d�pass� la limite de
 
664
    votre noyau sur la quantit� de m�moire partag�e. Chaque tampon fait 8&nbsp;Ko et
 
665
    le choix par d�faut est de 64 tampons.</P>
 
666
 
 
667
    <P>Vous pouvez utiliser l'option serveur <I>-S</I> pour augmenter la
 
668
    quantit� maximale de m�moire utilis�e par les processus serveurs pour des
 
669
    tris temporaires. La valeur de <I>-S</I> est mesur� en kilooctets et le
 
670
    choix par d�faut est de 512 (c'est-�-dire 512&nbsp;Ko).</P>
 
671
 
 
672
    <P>Vous pouvez utiliser la commande <SMALL>CLUSTER</SMALL> pour regrouper
 
673
    vos donn�es en tables pour correspondre � un index. Voir la page de manual
 
674
    <SMALL>CLUSTER</SMALL> pour plus de d�tails.</P>
 
675
 
 
676
    <H4><A name="3.7">3.7</A>) Quelles fonctionalit�s de d�boguage sont disponibles&nbsp;?</H4>
 
677
 
 
678
    <P>PostgreSQL a plusieurs fonctionalit�s qui permettent de recueillir des
 
679
    informations de statut qui peuvent �tre utile pour des intentions de
 
680
    d�boguage.</P>
 
681
 
 
682
    <P>D'abord, en lan�ant <I>configure</I> avec l'option --enable-cassert,
 
683
    beaucoup d'<I>assert()</I>s surveillent le serveur et arr�tent le programme 
 
684
    quand quelque chose d'inattendu arrive.</P>
 
685
 
 
686
    <P><I>Postmaster</I> et <I>postgres</I> ont tous deux plusieurs options de
 
687
    d�boguage de disponible. D'abord, quand vous lancez <I>postmaster</I>,
 
688
    v�rifiez que vous envoyez les sorties standard et d'erreur dans un fichier
 
689
    de traces comme&nbsp;:</P>
 
690
<PRE>
 
691
    cd /usr/local/pgsql
 
692
    ./bin/postmaster &gt;server.log 2&gt;&amp;1 &amp;
 
693
</PRE>
 
694
 
 
695
    <P>Ceci va cr�er un fichier server.log dans le r�pertoire racine de
 
696
    PostgreSQL. Ce fichier contient des informations utiles sur les probl�mes
 
697
    ou erreurs rencontr�s par le serveur. <I>Postmaster</I> dispose d'une
 
698
    option <I>-d</I> qui permet de rapporter des informations encore plus
 
699
    d�taill�es d'�tre rapport�es. L'option <I>-d</I> prend un num�ro qui
 
700
    sp�cifie le niveau de d�boguage. Faites attention au fait que des valeurs
 
701
    �l�v�es de niveau de d�boguage g�nerent des fichiers de traces volumineux.</P>
 
702
 
 
703
    <P>Si <I>postmaster</I> ne tourne pas, vous pouvez lancer le serveur
 
704
    <I>postgres</I> de la ligne de commande et taper votre requ�te
 
705
    <SMALL>SQL</SMALL> directement. Ceci est recommand� <B>seulement</B> pour
 
706
    des fonctions de d�boguage. Notez qu'un retour chariot termine la requ�te,
 
707
    pas un point-virgule. Si vous compilez avec les symboles de d�boguage, vous
 
708
    pouvez utiliser un d�bogueur pour voir ce qui se passe. Parce que le serveur
 
709
    n'a pas �t� lanc� par <I>postmaster</I>, il ne tourne pas dans un environnement
 
710
    identique et les probl�mes d'interaction de verrouillage/serveur ne peuvent
 
711
    �tre dupliqu�s.</P>
 
712
 
 
713
    <P>Si <I>postmaster</I> est en train de tourner, lancez <I>psql</I> dans
 
714
    une fen�tre puis trouvez le <SMALL>PID</SMALL> du processus <I>postgres</I>
 
715
    utilis� par <I>psql</I>. Utilisez un d�bogueur pour l'attacher au
 
716
    <SMALL>PID</SMALL> <I>postgres</I>. Vous pouvez mettre un point d'arr�t
 
717
    dans le d�bogueur et envoyez des requ�tes de <I>psql</I>. Si vous d�boguez
 
718
    le d�marrage de <I>postgres</I>, vous pouvez mettre PGOPTIONS="-W n", puis
 
719
    lancez <I>psql</I>. Ceci va retarder le d�marrage de <I>n</I> secondes
 
720
    pour que vous puissiez attacher un d�bogueur au processus, fixer des points
 
721
    d'arr�t et continuer la s�quence de d�marrage.</P>
 
722
 
 
723
    <P>Le programme <I>postgres</I> a les options <I>-s, -A</I> et <I>-t</I>
 
724
    qui peuvent �tre utile pour des mesures de d�boguage et de performance.</P>
 
725
 
 
726
    <P>Vous pouvez compiler avec les options de performance pour voir quelles
 
727
    fonctions prennent du temps d'ex�cution. Les fichiers de gestion du serveur
 
728
    seront d�pos�s dans le r�pertoire <I>pgsql/data/base/nom_db</I>. Les
 
729
    fichiers de gestion clients seront mis dans le r�pertoire actuel du client.
 
730
    Linux requiert une compilation avec <I>-DLINUX_PROFILE</I> pour une
 
731
    meilleure gestion.</P>
 
732
 
 
733
    <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>
 
734
 
 
735
    <P>Vous pouvez augmenter la limite de <I>postmaster</I> sur le nombre de
 
736
    processus serveur concurrents qu'il peut lancer.</P>
 
737
 
 
738
    <P>La limite par d�faut est de 32 processus. Vous pouvez l'augmenter en
 
739
    relan�ant <I>postmaster</I> avec une valeur <I>-N</I> appropri�e ou
 
740
    en modifiant <I>postgresql.conf</I>.</P>
 
741
 
 
742
    <P>Tenez compte du fait que si vous fixez <I>-N</I> plus grand que 32, vous
 
743
    devez aussi augmenter <I>-B</I> au-dela de sa valeur par d�faut 64&nbsp;;
 
744
    <I>-B</I> doit valoir au moins deux fois <I>-N</I> et probablement plus pour
 
745
    une meilleure performance. Pour de grand nombres de processus serveurs vous
 
746
    aurez probablement aussi augmenter plusieurs parametres de configuration du
 
747
    noyau Unix. Les choses a v�rifier incluent la taille maximale des blocs de
 
748
    m�moire partag�e, <SMALL>SHMMAX</SMALL>&nbsp;; le nombre maximal de
 
749
    s�maphores, <SMALL>SEMMNS</SMALL> et <SMALL>SEMMNI</SMALL>&nbsp;; le
 
750
    nombre maximal de processus, <SMALL>NPROC</SMALL>&nbsp;; le nombre maximal 
 
751
    de processus par utilisateur, <SMALL>MAXUPRC</SMALL>&nbsp;; et le nombre
 
752
    maximal de fichiers ouverts, <SMALL>NFILE</SMALL> et <SMALL>NINODE</SMALL>.
 
753
    La raison pour laquelle PostgreSQL a une limite sur le nombre de processus
 
754
    serveurs autoris�s est pour que votre syst�me ne tombe pas � court de
 
755
    ressources.</P>
 
756
 
 
757
    <H4><A name="3.9">3.9</A>) Que contient le r�pertoire <I>pgsql_tmp</I>&nbsp;?</H4>
 
758
 
 
759
    <P>Ce r�pertoire contient des fichiers temporaires g�n�r�s par le moteur de
 
760
    requ�te. Par exemple, si un tri doit �tre fait pour satisfaire un
 
761
    <SMALL>ORDER BY</SMALL> et que ce tri requiert plus de place que le param�tre
 
762
    <I>-S</I> du serveur n'autorise, alors des fichiers temporaires seront cr��s
 
763
    pour contenir les donn�es n�cessaires.</P>
 
764
 
 
765
    <P>Les fichiers temporaires sont d'habitude effac�s automatiquement mais
 
766
    peuvent rester si un serveur s'arr�te brutalement pendant un tri. Un arr�t
 
767
    et un red�marrage de <I>postmaster</I> effacera les fichiers dans ces
 
768
    r�pertoires.</P>
 
769
 
 
770
    <H4><A name="3.10">3.10</A>) Pourquoi est-ce que j'ai besoin de faire une
 
771
    sauvegarde des bases et de restaurer pour mettre a jour les versions de
 
772
    PostgreSQL&nbsp;?</H4>
 
773
 
 
774
    <P>L'�quipe PostgreSQL ne fait que des changements mineurs entre des
 
775
    versions mineurs, donc mettre � jour de 7.2 vers 7.2.1 ne n�cessitera pas
 
776
    de sauvegarde et de restauration. Par contre, les sorties majeures
 
777
    (c'est-�-dire de 7.2 vers 7.3) changent souvent le format interne des tables
 
778
    syst�mes et des fichiers de donn�es. Ces modifications sont souvent
 
779
    complexes alors nous ne gardons pas de compatibilit� descendante pour les
 
780
    fichiers de donn�es. Une sauvegarde exportera les donn�es dans un format
 
781
    g�n�rique qui peut ensuite �tre charg� dans le nouveau format interne.</P>
 
782
 
 
783
    <P>Dans les sorties o� le format sur disque ne change pas, le script
 
784
    <I>pg_upgrade</I> peut �tre utilis� pour mettre � jour sans
 
785
    sauvegarde/restauration. Les notes de sorties pr�cisent si <I>pg_upgrade</I>
 
786
    est disponible pour la sortie.</P>
 
787
 
 
788
    <H4><A name="3.11">3.11</A>) Quels mat�riels dois-je utiliser&nbsp;?</H4>
 
789
         
 
790
    <P>Comme le mat�riel PC est compatible en grosse partie, les gens ont
 
791
    tendance � croire que tous les mat�riels PC sont de m�me qualit�. Ce n'est
 
792
    pas le cas. La RAM ECC, le SCSI et les cartes-m�re de qualit� sont plus
 
793
    fiables et ont de meilleurs performances qu'un mat�riel moins co�teux.
 
794
    PostgreSQL fonctionnera sur � peu pr�s tout mat�riel mais si la fiabilit� et
 
795
    la performance sont importantes pour vous, il est rus� de bien consid�rer
 
796
    les options mat�rielles. Nos listes de diffusion peuvent �tre utilis�es pour
 
797
    discuter des options mat�riels.</P>
 
798
 
 
799
    <HR>
 
800
 
 
801
    <H2 align="center">Questions fonctionnelles</H2>
 
802
 
 
803
    <H4><A name="4.1">4.1</A>) Quelle est la diff�rence entre curseur binaire
 
804
    et curseur normal&nbsp;?</H4>
 
805
 
 
806
    <P>Voir la page <SMALL>DECLARE</SMALL> du manuel pour une description.</P>
 
807
 
 
808
    <H4><A name="4.2">4.2</A>) Comment faire un <SMALL>SELECT</SMALL> seulement
 
809
     sur les premi�res lignes d'une requ�te&nbsp;?  Sur une ligne al�atoire&nbsp;?</H4>
 
810
 
 
811
    <P>Voir la page <SMALL>FETCH</SMALL> du manuel ou utiliser
 
812
    <SMALL>SELECT</SMALL> ... <SMALL>LIMIT</SMALL>....</P>
 
813
 
 
814
    <P>Il se peut que l'int�gralit� de la requ�te doive �tre �valu�e,
 
815
    m�me si vous voulez seulement les premi�res lignes. Envisagez
 
816
    d'utiliser une requ�te avec une clause <SMALL>ORDER
 
817
    BY</SMALL>. S'il existe un index correspondant � l'<SMALL>ORDER
 
818
    BY</SMALL>, PostgreSQL peut n'�valuer que les premi�res lignes, sinon
 
819
    l'int�gralit� de la requ�te peut �tre �valu�e, jusqu'� g�n�rer les lignes
 
820
    d�sir�es.</P>
 
821
 
 
822
    <P>Pour faire un <SMALL>SELECT</SMALL> sur une ligne al�atoire&nbsp;:</P>
 
823
<PRE>
 
824
    SELECT colonne
 
825
    FROM table
 
826
    ORDER BY random()
 
827
    LIMIT 1;
 
828
</PRE>
 
829
 
 
830
    <H4><A name="4.3">4.3</A>) Comment obtenir une liste des tables ou
 
831
    d'autres objets que je vois dans <I>psql</I>&nbsp;?</H4>
 
832
 
 
833
    <P>Utilisez la commande \dt pour voir les tables dans <I>psql</I>. Pour
 
834
    une liste compl�te de commandes � l'int�rieur de psql, vous pouvez utiliser
 
835
    \?. Autrement, vous pouvez lire le code source de <I>psql</I> dans le fichier
 
836
    <I>pgsql/src/bin/psql/describe.c</I>. Il contient des commandes
 
837
    <SMALL>SQL</SMALL> qui g�n�rent le contenu des commandes anti-slash de
 
838
    psql. Vous pouvez aussi lancer <I>psql</I> avec l'option
 
839
    <I>-E</I>, afin qu'il imprime les requ�tes qu'il utilise pour ex�cuter
 
840
    les commandes que vous lui passez. PostgreSQL fournit aussi une interface
 
841
    d'informations sur le sch�ma compatible avec <I>SQLi</I> que vous pouvez
 
842
    interroger des informations sur la base de donn�es.</P>
 
843
 
 
844
    <H4><A name="4.4">4.4</A>) Comment supprime-t-on une colonne d'une table,
 
845
     ou comment change-t-on son type de donn�es&nbsp;?</H4>
 
846
 
 
847
    <P>La fonction <SMALL>DROP COLUMN</SMALL> a �t� ajout�e dans la version 7.3
 
848
    avec <SMALL>ALTER TABLE DROP COLUMN</SMALL>.  Pour les versions pr�c�dentes, 
 
849
    vous pouvez faire&nbsp;:</P>
 
850
<PRE>
 
851
    BEGIN;
 
852
    LOCK TABLE ancienne_table;
 
853
    SELECT ...  -- s�lectionnez toutes les colonnes sauf celle � supprimer
 
854
    INTO TABLE nouvelle_table
 
855
    FROM ancienne_table;
 
856
    DROP TABLE ancienne_table;
 
857
    ALTER TABLE nouvelle_table RENAME TO ancienne_table;
 
858
    COMMIT;
 
859
</PRE>
 
860
 
 
861
    <P>Pour changer le type de donn�es d'une colonne, faites&nbsp;:</P>
 
862
 
 
863
<PRE>
 
864
    BEGIN;
 
865
    ALTER TABLE table ADD COLUMN nouvelle_colonne <i>nouveau_type_de_donnees</i>;
 
866
    UPDATE table SET nouvelle_colonne = CAST(ancienne_colonne AS <i>nouveau_type_de_donnees</i>);
 
867
    ALTER TABLE table DROP COLUMN ancienne_colonne;
 
868
    COMMIT;
 
869
</PRE>
 
870
 
 
871
    <P>Apr�s, vous pouvez faire <I>VACUUM FULL tab</I> pour r�cup�rer l'espace
 
872
    disque utilis� par les lignes expir�es.</P>
 
873
    
 
874
    <H4><A name="4.5">4.5</A>) Quelle est la taille maximale pour une ligne,
 
875
    une table, une base de donn�es&nbsp;?</H4>
 
876
 
 
877
    <P>Les limites sont&nbsp;:</P>
 
878
<PRE>
 
879
    Taille maximum pour une base de donn�es     illimit�e (il existe des bases de 32&nbsp;To)
 
880
    Taille maximum pour une table               32&nbsp;To
 
881
    Taille maximum pour une ligne               1,6&nbsp;To
 
882
    Taille maximum pour un champ                1&nbsp;Go
 
883
    Nombre maximum de lignes dans une table     illimit�
 
884
    Nombre maximum de colonnes dans une table   250-1600, selon le type de colonnes
 
885
    Nombre maximum d'index sur une table        illimit�
 
886
</PRE>
 
887
 
 
888
    <P>Bien s�r, ces valeurs ne sont pas vraiment illimit�e, elles sont limit�es
 
889
    par l'espace disque disponible, ainsi que par l'espace de m�moire et de swap.
 
890
    Les performances peuvent se d�grader si ces valeurs sont inhabituellement
 
891
    grandes.</P>
 
892
 
 
893
    <P>La taille maximum des tables (32&nbsp;To) ne n�cessite pas que le syst�me
 
894
    d'exploitation supporte les grands fichiers. Les grandes tables sont stock�es
 
895
    sous forme de fichiers multiples de 1&nbsp;Go, donc les limites de taille du
 
896
    syst�me de fichier ne sont pas importantes.</P>
 
897
 
 
898
    <P>La taille maximum des tables et le nombre maximum de colonnes peuvent
 
899
    �tre quadripl�s, si la taille des blocs par d�faut est augment�e � 32&nbsp;Ko.</P>
 
900
 
 
901
    <H4><A name="4.6">4.6</A>) Combien d'espace disque faut-il pour stocker
 
902
    les donn�es d'un fichier texte typique&nbsp;?</H4>
 
903
 
 
904
    <P>Une base de donn�es PostgreSQL peut utiliser jusqu'� cinq fois
 
905
    l'espace n�cessaire pour stocker les donn�es d'un fichier texte.</P>
 
906
 
 
907
    <P>A titre d'exemple, consid�rez un fichier de 100 000 lignes, comportant
 
908
    un entier et une cha�ne de description sur chaque ligne. Supposons que la
 
909
    cha�ne soit longue en moyenne de 20 octets. Le fichier texte serait de 2,8&nbsp;Mo.
 
910
    La taille du fichier d'une base de donn�es PostgreSQL peut �tre
 
911
    estim�e � 6,4&nbsp;Mo&nbsp;:</P>
 
912
<PRE>
 
913
    32 octets: chaque ligne (approximation)
 
914
    24 octets: un champ 'entier' et un champ 'texte'
 
915
   + 4 octets: pointeur vers le tuple sur la page
 
916
   ----------------------------------------
 
917
    60 octets par ligne
 
918
 
 
919
   La taille des pages de donn�es dans PostgreSQL est de 8192 octets (8 KO), donc :
 
920
 
 
921
   8192 octets par page
 
922
   ----------------------   = 136 lignes par page de base de donn�es (arrondi � l'entier inf�rieur)
 
923
     60 octets par ligne
 
924
 
 
925
   100000 lignes de donn�es
 
926
   -------------------------  =  735 pages de base de donn�es (arrondi � l'entier sup�rieur)
 
927
      128 lignes par page
 
928
 
 
929
735 pages de base de donn�es * 8192 octets par page  =  6&nbsp;021&nbsp;120&nbsp;octets (6,4&nbsp;Mo)
 
930
</PRE>
 
931
 
 
932
    <P>Les index utilisent moins d'espace, mais ils contiennent les donn�es index�es,
 
933
    ils peuvent donc �galement �tre grands.</P>
 
934
 
 
935
    <P>Les <SMALL>NULL</SMALL> sont stock�s sous forme de bitmap, aussi
 
936
    utilisent-ils tr�s peu d'espace.</P>
 
937
    
 
938
    <H4><A name="4.7">4.7</A>) Comment puis-je savoir quels index, tables,
 
939
    bases de donn�es et utilisateurs sont d�finis&nbsp;?</H4>
 
940
 
 
941
    <P><I>psql</I> dispose de plusieurs commandes commen�ant par un anti-slash
 
942
    pour retrouver ces informations. Utilisez \? pour les conna�tre. Il existe
 
943
    aussi des tables syst�mes, qui commencent par <I>pg_</I> et qui les
 
944
    d�crivent �galement. Aussi, <I>psql -l</I> liste toutes les bases de
 
945
    donn�es.</P>
 
946
 
 
947
    <P>Essayez �galement le fichier <I>pgsql/src/tutorial/syscat.source</I>. Il
 
948
    illustre un grand nombre de commandes <SMALL>SELECT</SMALL> n�cessaires pour
 
949
    r�cup�rer l'information des tables syst�me de la base de donn�es.</P>
 
950
 
 
951
    <H4><A name="4.8">4.8</A>) Mes requ�tes sont lentes ou ne font pas usage
 
952
    des index. Pourquoi&nbsp;?</H4>
 
953
 
 
954
    <P>Les index ne sont pas automatiquement utilis�s par chaque requ�te. Ils
 
955
    sont utilis�s uniquement si la table est plus grande qu'une certaine taille,
 
956
    et si la requ�te s�lectionne seulement un faible pourcentage des lignes de la
 
957
    table. Ceci est d� au fait qu'un acc�s disque al�atoire caus� par un parcours
 
958
    d'index peut �tre plus lent qu'une simple lecture de la table, ou parcours
 
959
    s�quentiel</P>
 
960
 
 
961
    <P>Pour d�terminer si un index devrait �tre utilis�, PostgreSQL a besoin
 
962
    des statistiques de la table. Ces statistiques sont collect�es en lan�ant
 
963
    <SMALL>VACUUM ANALYZE</SMALL> ou simplement <SMALL>ANALYZE</SMALL>.
 
964
    Avec les statistiques, l'optimiseur sait combien de lignes se trouvent
 
965
    dans la table et peut mieux d�terminer s'il faut utiliser l'index.
 
966
    Les statistiques sont �galement utiles pour d�terminer l'ordre optimal
 
967
    des op�rations de jointure. La collecte des statistiques devrait �tre
 
968
    effectu�e r�guli�rement lorsque le contenu de la table change.</P>
 
969
 
 
970
    <P>Les index ne sont normalement pas utilis�s pour les clauses <SMALL>ORDER BY</SMALL>
 
971
    ou pour les jointures. Un parcours s�quentiel suivi d'un tri explicite est
 
972
    habituellement plus rapide qu'un parcours d'index pour une table importante.
 
973
    Toutefois, <SMALL>LIMIT</SMALL> combin� avec <SMALL>ORDER BY</SMALL>
 
974
    utilisera souvent un index parce que seulement une petite partie de la table est
 
975
    renvoy�e. En fait, bien que MAX() et MIN() n'utilisent pas les index,
 
976
    il est possible de retrouver ces valeurs en utilisant un index avec
 
977
    ORDER BY et LIMIT&nbsp;:</P>
 
978
 
 
979
<PRE>
 
980
    SELECT colonne
 
981
    FROM table
 
982
    ORDER BY colonne [ DESC ]
 
983
    LIMIT 1;
 
984
</PRE>
 
985
 
 
986
    <P>Si vous pensez que l'optimiseur choisit par erreur un parcours sequentiel,
 
987
    utilisez <CODE>SET enable_seqscan TO 'off'</CODE> et
 
988
    lancez des tests pour voir si le parcours d'index est effectivement plus rapide.</P>
 
989
 
 
990
    <P>Lorsque vous utilisez des caract�res joker tels que <SMALL>LIKE</SMALL> ou
 
991
    <I>~</I>, les index peuvent seulement �tre utilis�s dans certaines circonstances&nbsp;:</P>
 
992
    <UL>
 
993
    <LI>Le d�but de la cha�ne de recherche doit �tre ancr� au d�part de la cha�ne, c'est-�-dire
 
994
    <UL>
 
995
    <LI>Les mod�les pour <SMALL>LIKE</SMALL> ne doivent pas commencer par <I>%</I>.</LI>
 
996
    <LI>Les mod�les d'expression r�guli�re pour <I>~</I> doivent commencer par
 
997
    <I>^</I>.</LI>
 
998
    </UL></LI>
 
999
    <LI>La cha�ne de recherche ne peut pas commencer par une classe de caract�res, c'est-�-dire
 
1000
    [a-e].</LI>
 
1001
    <LI>Les recherches sans casse comme <SMALL>ILIKE</SMALL> et
 
1002
    <I>~*</I> n'utilisent pas les index. Utilisez plut�t les index fonctionnels,
 
1003
    d�crit dans la section <a href="#4.12">4.12</a>.</LI>
 
1004
    <LI>La locale <I>C</I> par d�faut doit �tre utilis�e lors de
 
1005
    <i>initdb</i>.</LI>
 
1006
    </UL>
 
1007
 
 
1008
    <p>Dans les versions ant�rieures � la 8.0, les indexs ne peuvent souvent
 
1009
    pas �tre utilis�s sauf si les types de donn�es correspondent exactement au
 
1010
    type de la colonne de l'index. Ceci est particuli�rement vrai pour les
 
1011
    index de colonnes de type int2, int8 et numeric.</p>
 
1012
    
 
1013
    <H4><A name="4.9">4.9</A>) Comment puis-je savoir si l'optimiseur �value
 
1014
     mes requ�tes&nbsp;?</H4>
 
1015
 
 
1016
    <P>Voir la page <SMALL>EXPLAIN</SMALL> du manuel.</P>
 
1017
 
 
1018
    <H4><A name="4.10">4.10</A>) Qu'est-ce qu'un index R-tree&nbsp;?</H4>
 
1019
 
 
1020
    <P>Un index R-tree est utilis� pour l'indexation des donn�es spatiales. Un
 
1021
    index de hachage ne permet pas les recherches par plage. Un index B-tree peut
 
1022
    seulement faire des recherches sur une dimension. Les index R-tree
 
1023
    peuvent traiter des donn�es multi-dimensionnelles. Par exemple, si un index
 
1024
    R-tree peut �tre construit sur un attribut de type <I>point</I>,
 
1025
    le syst�me peut plus efficacement g�rer les requ�tes du type
 
1026
    "S�lection de tous les points d'un rectangle".</P>
 
1027
 
 
1028
    <P>L'article de r�f�rence qui d�crit le syst�me R-tree original est&nbsp;:</P>
 
1029
 
 
1030
    <P>Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
 
1031
    Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt
 
1032
    of Data, 45-57.</P>
 
1033
 
 
1034
    <P>Vous pouvez �galement trouver ce papier dans le livre de Stonebraker
 
1035
    "Readings in Database Systems".</P>
 
1036
 
 
1037
    <P>Les index R-tree int�gr�s peuvent prendre en charge les polyg�nes et les bo�tes.
 
1038
    En th�orie, les R-trees peuvent �tre �tendus � un plus grand nombre de dimensions.
 
1039
    En pratique, l'extension des R-trees requiert pas mal de travail et nous
 
1040
    n'avons pour le moment aucune documentation sur la fa�on de proc�der.</P>
 
1041
 
 
1042
    <H4><A name="4.11">4.11</A>) Qu'est-ce que l'optimiseur g�n�tique de
 
1043
    requ�tes&nbsp;?</H4>
 
1044
 
 
1045
    <P>Le module <SMALL>GEQO</SMALL> (acronyme de <i>GEnetic Query
 
1046
    Optimizer</i>) acc�l�re l'optimisation des requ�tes lors de jointures de
 
1047
    nombreuses tables par un algorithme g�n�tique (GA). Il permet la
 
1048
    gestion des grosses requ�tes de jointures en utilisant une recherche non
 
1049
    exhaustive.</P>
 
1050
 
 
1051
    <H4><A name="4.12">4.12</A>) Comment puis-je r�aliser des recherches sur des
 
1052
    expressions rationnelles ainsi que des recherches non sensibles � la
 
1053
    casse&nbsp;? Comment puis-je utiliser un index lors de recherches non
 
1054
    sensibles � la casse&nbsp;?</H4>
 
1055
 
 
1056
    <P>L'op�rateur <I>~</I> r�alise des recherches d'expressions rationnelles
 
1057
    et <I>~*</I> le fait sans tenir compte de la casse. La variante de
 
1058
    <SMALL>LIKE</SMALL> non sensible � la casse est
 
1059
    <SMALL>ILIKE</SMALL>.</P>
 
1060
 
 
1061
    <P>Des comparaisons d'�galit� non sensibles � la casse sont habituellement
 
1062
    exprim�es de cette fa�on&nbsp;:</P>
 
1063
<PRE>
 
1064
    SELECT *
 
1065
    FROM table
 
1066
    WHERE lower(colonne) = 'abc';
 
1067
</PRE>
 
1068
 
 
1069
    <P>Ceci n'utilisera pas un index standard. N�anmoins, si vous cr�ez un index
 
1070
    fonctionnel, celui-ci sera utilis�&nbsp;:</P>
 
1071
<PRE>
 
1072
    CREATE INDEX tableindex ON table (lower(colonne));
 
1073
</PRE>
 
1074
 
 
1075
    <H4><A name="4.13">4.13</A>) Comment puis-je d�tecter si un champ est
 
1076
    <SMALL>NULL</SMALL> dans une requ�te&nbsp;?</H4>
 
1077
 
 
1078
    <P>Il vous suffit de tester la colonne avec <SMALL>IS NULL</SMALL> ou <SMALL>IS
 
1079
    NOT NULL</SMALL>.</P>
 
1080
 
 
1081
    <H4><A name="4.14">4.14</A>) Quelle sont les diff�rences entre les nombreux
 
1082
    types de caract�res&nbsp;?</H4>
 
1083
<PRE>
 
1084
Type            Nom interne     Notes
 
1085
--------------------------------------------------
 
1086
VARCHAR(n)      varchar         n sp�cifie la taille maximum, sans remplissage
 
1087
CHAR(n)         bpchar          des espaces sont ajout�s pour obtenir la
 
1088
                                longueur fixe sp�cifi�e
 
1089
TEXT            text            pas de limite sup�rieure pour la taille
 
1090
BYTEA           bytea           tableau d'octets (accepte les octets nuls)
 
1091
"char"          char            un caract�re
 
1092
</PRE>
 
1093
 
 
1094
    <P>Vous verrez le nom interne en examinant les catalogues syst�me et dans
 
1095
    quelques messages d'erreur.</P>
 
1096
 
 
1097
    <P>Les quatres premiers types du dessus sont des types "varlena"
 
1098
    (c'est-�-dire que les quatre premiers octets correspondent � la taille,
 
1099
    suivi des donn�es). Donc, l'espace r�ellement utilis� est l�g�rement plus
 
1100
    grand que la taille d�clar�e. N�anmoins, ces types de donn�es sont aussi
 
1101
    sujet � la compression ou � un enregistrement en dehors de la table avec
 
1102
    <SMALL>TOAST</SMALL>, donc l'espace occup� sur disque pourrait aussi �tre
 
1103
    moindre que ce qu'on pourrait attendre.</P>
 
1104
 
 
1105
    <P><SMALL>VARCHAR(n)</SMALL> est bien mieux pour enregistrer des cha�nes de
 
1106
    longueurs variables tout en limitant la taille de cette cha�ne.
 
1107
    <SMALL>TEXT</SMALL> est utile pour les cha�nes de longueur illimit�e, avec
 
1108
    malgr� tout un maximum de 1&nbsp;Go.</P>
 
1109
 
 
1110
    <P><SMALL>CHAR(n)</SMALL> est int�ressant pour stocker des cha�nes de taille
 
1111
    identique. <SMALL>CHAR(n)</SMALL> compl�te avec des espaces pour arriver �
 
1112
    la taille sp�cifi�e alors que <SMALL>VARCHAR(n)</SMALL> n'enregistre que les
 
1113
    caract�res donn�s. <SMALL>BYTEA</SMALL> sert � stocker des donn�es binaires,
 
1114
    particuli�rement les donn�es incluant des octets <SMALL>NULL</SMALL>. Tous
 
1115
    les types d�crits ici ont des performances similaires.</P>
 
1116
 
 
1117
    <H4><A name="4.15.1">4.15.1</A>) Comment puis-je cr�er un champ s�rie,
 
1118
    c'est-�-dire s'incr�mentant automatiquement&nbsp;?</H4>
 
1119
 
 
1120
    <P>PostgreSQL supporte un type de donn�es <SMALL>SERIAL</SMALL>. Il cr�e
 
1121
    automatiquement une s�quence. Par exemple,
 
1122
    ceci&nbsp;:</P>
 
1123
<PRE>
 
1124
    CREATE TABLE personne ( 
 
1125
        id  SERIAL, 
 
1126
        nom TEXT 
 
1127
    );
 
1128
</PRE>
 
1129
 
 
1130
    est automatiquement traduit en ceci&nbsp;:
 
1131
<PRE>
 
1132
    CREATE SEQUENCE personne_id_seq;
 
1133
    CREATE TABLE personne ( 
 
1134
        id  INT4 NOT NULL DEFAULT nextval('personne_id_seq'),
 
1135
        nom TEXT 
 
1136
    );
 
1137
</PRE>
 
1138
 
 
1139
    Voir la page man de <I>create_sequence</I> pour plus d'informations
 
1140
    sur les s�quences. Vous pouvez aussi utiliser le champ <I>OID</I> de chaque
 
1141
    ligne comme valeur unique. N�anmoins, si vous avez besoin de sauvegarder
 
1142
    puis recharger la base de donn�es, vous devrez utiliser l'option
 
1143
    <I>-o</I> ou l'option <SMALL>COPY WITH OIDS</SMALL> de
 
1144
    <I>pg_dump</I> pour conserver les <SMALL>OID</SMALL>s. 
 
1145
 
 
1146
    <H4><A name="4.15.2">4.15.2</A>) Comment puis-je obtenir la valeur d'un
 
1147
    <SMALL>SERIAL</SMALL> suite � une insertion&nbsp;?</H4>
 
1148
 
 
1149
    <P>Une approche pour r�cup�rer la prochaine valeur <SMALL>SERIAL</SMALL> �
 
1150
    partir de l'objet s�quence est d'utiliser la fonction <I>nextval()</I>
 
1151
    <I>avant</I> l'insertion et de l'ins�rer ensuite explicitement. En utilisant
 
1152
    la table d'exemple de la section <A href="#4.15.1">4.15.1</A>, un exemple
 
1153
    dans un pseudo-langage ressemblerait � ceci&nbsp;:</P>
 
1154
<PRE>
 
1155
    nouvelle_id = execute("SELECT nextval('personne_id_seq')");
 
1156
    execute("INSERT INTO personne (id, nom) VALUES (nouvelle_id, 'Blaise Pascal')");
 
1157
</PRE>
 
1158
 
 
1159
    Vous pourriez ensuite utiliser la nouvelle valeur stock�e dans
 
1160
    <CODE>nouvelle_id</CODE> avec d'autres requ�tes (c'est-�-dire en tant que
 
1161
    cl� �trang�re de la table <CODE>personne</CODE>). Notez que le nom de la
 
1162
    <SMALL>SEQUENCE</SMALL> automatiquement cr��e sera
 
1163
    &lt;<I>table</I>&gt;_&lt;<I>colonneserial</I>&gt;_<I>seq</I>, o�
 
1164
    <I>table</I> et <I>colonneserial</I> sont les noms respectifs de votre table
 
1165
    et de votre colonne <SMALL>SERIAL</SMALL>.
 
1166
 
 
1167
    <P>Autrement, vous pouvez r�cup�rer la valeur <SMALL>SERIAL</SMALL> affect�e
 
1168
    avec la fonction <I>currval()</I> <I>apr�s</I> qu'elle ait �t� ins�r�e par
 
1169
    d�faut, c'est-�-dire,</P>
 
1170
<PRE>
 
1171
    execute("INSERT INTO personne (nom) VALUES ('Blaise Pascal')");
 
1172
    nouvelle_id = execute("SELECT currval('personne_id_seq')");
 
1173
</PRE>
 
1174
 
 
1175
    Enfin, vous pouvez utiliser l'<A href="#4.16"><SMALL>OID</SMALL></A> renvoy�
 
1176
    par l'instruction <SMALL>INSERT</SMALL> pour r�cup�rer la valeur par d�faut
 
1177
    bien que cela soit l'appoche la moins portable et la valeur de l'OID se
 
1178
    r�initialisera aux environs de quatre milliards. En Perl, avec DBI et le
 
1179
    module DBD:Pg d'Edmund Mergl, l'ancienne valeur est disponible via
 
1180
    <I>$sth-&gt;{pg_oid_status}</I> apr�s un <I>$sth-&gt;execute()</I>.
 
1181
 
 
1182
    <H4><A name="4.15.3">4.15.3</A>) Est-ce que <I>currval()</I> et
 
1183
     <I>nextval()</I> n'am�nent pas des probl�mes lorsque plusieurs utilisateurs
 
1184
     les lancent en m�me temps&nbsp;?</H4>
 
1185
 
 
1186
    <P>Non. <I>currval()</I> renvoie la valeur actuelle affect�e par votre
 
1187
    processus, et non pas par tous les utilisateurs.</P>
 
1188
 
 
1189
    <H4><A name="4.15.4">4.15.4</A>) Pourquoi mes num�ros de s�quences ne sont pas
 
1190
     r�-utilis�s lors d'une annulation de transaction&nbsp;? Pourquoi
 
1191
     existe-t'il des trous dans la num�rotation de ma colonne s�quentielle
 
1192
     (SERIAL)&nbsp;?</H4>
 
1193
 
 
1194
     <P>Pour am�liorer les acc�s concurrents, les valeurs de s�quences sont
 
1195
     donn�es aux transactions qui en ont besoin et ne sont pas bloqu�es jusqu'�
 
1196
     la fin de la transaction. Ceci cr�e des trous dans le num�rotage pour les
 
1197
     transactions annul�es.</P>
 
1198
 
 
1199
    <H4><A name="4.16">4.16</A>) Qu'est-ce qu'un <SMALL>OID</SMALL>&nbsp;?
 
1200
    Qu'est-ce qu'un <SMALL>TID</SMALL>&nbsp;?</H4>
 
1201
 
 
1202
    <P>Les <SMALL>OID</SMALL> sont la r�ponse de PostgreSQL aux identifiants de
 
1203
    lignes uniques. Chaque ligne cr��e dans PostgreSQL obtient un
 
1204
    <SMALL>OID</SMALL> unique. Tous les <SMALL>OID</SMALL> g�n�r�s pendant
 
1205
    <I>initdb</I> sont inf�rieurs � 16384 (voir <I>include/access/transam.h</I>).
 
1206
    Tous les <SMALL>OID</SMALL> cr��s par un utilisateur sont sup�rieurs ou
 
1207
    �gaux � ceci. Par d�faut, tous ces <SMALL>OID</SMALL> sont uniques non
 
1208
    seulement dans une table ou une base mais unique � l'int�rieur d'une
 
1209
    installation PostgreSQL enti�re.</P>
 
1210
 
 
1211
    <P>PostgreSQL utilise les <SMALL>OID</SMALL> dans ses tables syst�me interne
 
1212
    pour lier les lignes entre tables. Ces <SMALL>OID</SMALL> peuvent �tre
 
1213
    utilis�s pour identifier des lignes utilisateurs sp�cifiques et utilis�s dans
 
1214
    des jointures. Il est recommand� que vous utilisiez le type de colonne
 
1215
    <SMALL>OID</SMALL> pour stocker des valeurs <SMALL>OID</SMALL>.
 
1216
    Vous pouvez cr�er un index sur le champ <SMALL>OID</SMALL> pour un acc�s
 
1217
    plus rapide.</P>
 
1218
 
 
1219
    <P>Les <SMALL>OID</SMALL> sont attribu�s pour toute ligne d'un endroit
 
1220
    central qui est utilis� par toutes les bases de donn�es. Si vous voulez
 
1221
    changer l'<SMALL>OID</SMALL> en quelque chose d'autre ou si vous voulez
 
1222
    faire une copie de la table avec les <SMALL>OID</SMALL> originaux, il
 
1223
    n'y a pas de raisons pour ne pas le faire&nbsp;:</P>
 
1224
<PRE>
 
1225
    CREATE TABLE nouvelle_table (macolonne int);
 
1226
    SELECT oid AS ancienne_oid, macolonne INTO table_temporaire FROM ancienne_table;
 
1227
    COPY table_temporaire FROM '/tmp/tablepg';
 
1228
    COPY nouvelle_table WITH OIDS FROM '/tmp/tablepg';
 
1229
    DROP TABLE table_temporaire;
 
1230
</PRE>
 
1231
 
 
1232
    <P>Les <SMALL>OID</SMALL> sont stock�s en tant qu'entiers de quatre octets
 
1233
    et d�borderont � quatre milliards. Personne n'a jamais rapport� un tel cas
 
1234
    et nous avons pr�vu de retirer la limite avant que cela ne se produise.</P>
 
1235
 
 
1236
    <P>Les <SMALL>TID</SMALL>s sont utilis�s pour identifier des lignes
 
1237
    physiques sp�cifiques avec des valeurs de bloc et d�calage. Les
 
1238
    <SMALL>TID</SMALL> changent apr�s que les lignes aient �t� modifi�s ou
 
1239
    recharg�s. Ils sont utilis�s par des entr�es d'index pour pointer vers des
 
1240
    lignes physiques.</P>
 
1241
 
 
1242
    <H4><A name="4.17">4.17</A>) A quoi correspond certains termes utilis�s avec
 
1243
    PostgreSQL&nbsp;?</H4>
 
1244
 
 
1245
    <P>Une partie du code source et de l'ancienne documentation utilisent des
 
1246
    termes dont l'usage est plus commun. Voici quelques exemples&nbsp;:</P>
 
1247
 
 
1248
    <UL>
 
1249
      <LI>table, relation, classe</LI>
 
1250
      <LI>ligne (row), enregistrement (record), tuple</LI>
 
1251
      <LI>colonne (column), champ (field), attribut</LI>
 
1252
      <LI>r�cup�re, s�lectionne (select)</LI>
 
1253
      <LI>remplace (replace), met � jour (update)</LI>
 
1254
      <LI>ajoute (append), ins�re (insert)</LI>
 
1255
      <LI><SMALL>OID</SMALL>, valeur s�quentielle (serial value)</LI>
 
1256
      <LI>portal, curseur</LI>
 
1257
      <LI>range variable, table name, table alias</LI>
 
1258
    </UL>
 
1259
 
 
1260
    <P>Une liste des termes g�n�raux pour le domaine des bases de donn�es est
 
1261
    disponible sur&nbsp;: <A href=
 
1262
    "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>
 
1263
 
 
1264
    <H4><A name="4.18">4.18</A>) Pourquoi ai-je l'erreur <I>ERROR:
 
1265
    Memory exhausted in AllocSetAlloc()</I>&nbsp;?</H4>
 
1266
 
 
1267
    <P>Vous manquez probablement de m�moire virtuelle sur votre syst�me ou votre
 
1268
    noyau a une limite assez basse pour certaines ressources. Essayez ceci avant
 
1269
    de lancer <I>postmaster</I>&nbsp;:</P>
 
1270
<PRE>
 
1271
    ulimit -d 262144
 
1272
    limit datasize 256m
 
1273
</PRE>
 
1274
 
 
1275
    Suivant votre shell, seul un d'eux pourrait r�ussir mais cela configurera
 
1276
    d'une fa�on plus importante la taille du segment de donn�es de votre
 
1277
    processus. Cette commande s'applique au processus actuel et � tous les
 
1278
    processus lanc� par celui-ci. Si vous avez des probl�mes avec le client
 
1279
    <SMALL>SQL</SMALL> parce que le processus serveur renvoie trop de donn�es,
 
1280
    essayez �a avant de lancer le client.
 
1281
 
 
1282
    <H4><A name="4.19">4.19</A>) Comment puis-je conna�tre la version de
 
1283
    PostgreSQL que j'utilise&nbsp;?</H4>
 
1284
 
 
1285
    <P>A partir de <I>psql</I>, tapez <CODE>SELECT version();</CODE></P>
 
1286
 
 
1287
    <H4><A name="4.20">4.20</A>) Pourquoi ai-je <I>invalid large obj
 
1288
    descriptor</I> lors d'op�rations sur des gros objects&nbsp;?</H4>
 
1289
 
 
1290
    <P>Vous avez besoin de placer <CODE>BEGIN WORK</CODE> et <CODE>COMMIT</CODE>
 
1291
    autour de chaque utilisateur de gros objets, c'est-�-dire pour entourer
 
1292
    <CODE>lo_open</CODE> ... <CODE>lo_close.</CODE></P>
 
1293
 
 
1294
    <P>Actuellement, PostgreSQL force cette r�gle en fermant les gros objets
 
1295
    lors de la transaction. Donc, le premier essai d'op�rations sur ces objets,
 
1296
    fonctionnant habituellement (au moins la plupart du temps) aura un
 
1297
    <I>invalid large obj descriptor</I>. Donc le code, auparavant fonctionnel
 
1298
    (au moins la plupart du temps), g�n�rera maintenant un message d'erreur si
 
1299
    vous n'utilisez pas de transaction.</P>
 
1300
 
 
1301
    <P>Si vous utilisez une interface client interface comme
 
1302
    <SMALL>ODBC</SMALL>, vous aurez peut-�tre besoin de lancer
 
1303
    <CODE>auto-commit off.</CODE></P>
 
1304
 
 
1305
    <H4><A name="4.21">4.21</A>) Comment puis-je cr�er une colonne qui aura par
 
1306
    d�faut l'heure actuelle comme valeur&nbsp;?</H4>
 
1307
 
 
1308
    <P>Utilisez <I>CURRENT_TIMESTAMP</I>:</P>
 
1309
<PRE>
 
1310
<CODE>CREATE TABLE test (x int, heuremodif timestamp DEFAULT CURRENT_TIMESTAMP );
 
1311
</CODE>
 
1312
</PRE>
 
1313
 
 
1314
    <H4><A name="4.22">4.22</A>) Pourquoi mes sous-requ�tes utilisant
 
1315
    <CODE><SMALL>IN</SMALL></CODE> sont-elles si lentes&nbsp;?</H4>
 
1316
 
 
1317
    <P>Dans les versions pr�c�dant la 7.4, les sous-requ�tes ont �t� jointes avec
 
1318
    des jointures externes en parcourant s�quentiellement le r�sultat de la
 
1319
    sous-requ�te pour chaque ligne de la requ�te externe. Si la sous-requ�te
 
1320
    renvoit quelques lignes et que la requ�te externe en renvoit plein,
 
1321
    <CODE><SMALL>IN</SMALL></CODE> sera plus rapide. Pour acc�l�rer les autres
 
1322
    requ�tes, remplacez <CODE>IN</CODE> avec <CODE>EXISTS</CODE>&nbsp;:</P>
 
1323
<PRE>    SELECT *
 
1324
    FROM table
 
1325
    WHERE colonne IN (SELECT souscolonne FROM soustable);
 
1326
</PRE>
 
1327
    to:
 
1328
<PRE>    SELECT *
 
1329
    FROM table
 
1330
    WHERE EXISTS (SELECT souscolonne FROM soustable WHERE souscolonne = colonne);
 
1331
</PRE>
 
1332
 
 
1333
    Pour que ceci soit rapide, <CODE>souscolonne</CODE> doit �tre une colonne
 
1334
    index�e.
 
1335
 
 
1336
    <P>A partir de la version 7.4, <CODE>IN</CODE> utilise actuellement les m�mes
 
1337
    techniques sophistiqu�es de jointures comme des requ�tes normales et est
 
1338
    pr�f�r� � l'utilisation de <CODE>EXISTS</CODE>.</P>
 
1339
 
 
1340
    <H4><A name="4.23">4.23</A>) Comment puis-je r�aliser une jointure
 
1341
    externe&nbsp;?</H4>
 
1342
 
 
1343
    <P>PostgreSQL supporte les jointures externes en utilisant la syntaxe SQL
 
1344
    standard. Voici deux exemples&nbsp;:</P>
 
1345
<PRE>
 
1346
    SELECT *
 
1347
    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
 
1348
</PRE>
 
1349
    or 
 
1350
<PRE>
 
1351
    SELECT *
 
1352
    FROM t1 LEFT OUTER JOIN t2 USING (col);
 
1353
</PRE>
 
1354
 
 
1355
    <P>Ces requ�tes identiques joignent t1.col � t2.col et renvoient toute
 
1356
    colonne non jointe de t1 (celles sans correspondance dans t2). Une jointure
 
1357
    droite (<SMALL>RIGHT join</SMALL>) ajoutera les lignes non jointes de t2.
 
1358
    Une jointure compl�te (<SMALL>FULL join</SMALL>) renverra les lignes
 
1359
    correspondantes ainsi que les lignes non jointes de t1 et t2. Le mot cl�
 
1360
    <SMALL>OUTER</SMALL> est optionnelle et assum� dans le cas de jointure
 
1361
    <SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL> et <SMALL>FULL</SMALL>. Les
 
1362
    jointures ordinaires sont appel�es des jointures <SMALL>INNER</SMALL>.</P>
 
1363
 
 
1364
    <P>Lors des pr�c�dentes versions, les jointures externes peuvent �tre
 
1365
    simul�es en utilisant <SMALL>UNION</SMALL> et <SMALL>NOT IN</SMALL>. Par
 
1366
    exemple, lors d'une jointure de <I>tab1</I> et <I>tab2</I>, la requ�te
 
1367
    suivante r�alise une jointure externe, <I>outer</I>, des deux tables&nbsp;:<BR>
 
1368
    <BR>
 
1369
    </P>
 
1370
<PRE>
 
1371
    SELECT tab1.col1, tab2.col2
 
1372
    FROM tab1, tab2
 
1373
    WHERE tab1.col1 = tab2.col1
 
1374
    UNION ALL
 
1375
    SELECT tab1.col1, NULL
 
1376
    FROM tab1
 
1377
    WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
 
1378
    ORDER BY col1
 
1379
</PRE>
 
1380
 
 
1381
    <H4><A name="4.24">4.24</A>) Comment puis-je lancer des requ�tes utilisant
 
1382
    plusieurs bases de donn�es&nbsp;?</H4>
 
1383
 
 
1384
    <P>Il n'existe pas de moyens de lancer des requ�tes sur une autre base que
 
1385
    la courante. Comme PostgreSQL charge des catalogues syst�mes sp�cifiques �
 
1386
    la base de donn�es, sa r�action aux requ�tes inter-base de donn�es est
 
1387
    incertaine.</P>
 
1388
 
 
1389
    <P><I>contrib/dblink</I> permet les requ�tes entre bases de donn�es en
 
1390
    utilisant des fonctions. Bien s�r un client peut r�aliser des connexions
 
1391
    simultan�es � plusieurs bases de donn�es et joindre les r�sultats du c�t�
 
1392
    client.</P>
 
1393
 
 
1394
    <H4><A name="4.25">4.25</A>) Comment puis-je renvoyer plusieurs lignes ou
 
1395
    colonnes � partir d'une fonction?</H4>
 
1396
 
 
1397
    <P>A partir de la 7.3, vous pouvez facilement renvoyer plusieurs lignes ou
 
1398
    colonnes � partir d'une fonction,
 
1399
    <a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
 
1400
    http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.</P>
 
1401
 
 
1402
    <H4><A name="4.26">4.26</A>) Pourquoi ne puis-je pas cr�er/supprimer des
 
1403
    tables temporaires dans les fonctions PL/PgSQL de fa�on stable&nbsp;?</H4>
 
1404
    <P>PL/PgSQL cache le contenu des fonctions et un effet de bord malheureux est
 
1405
    que si une fonction PL/PgSQL acc�de � une table temporaire, que cette table
 
1406
    est ensuite supprim�e et recr��e, et que la fonction est appel�e de nouveau,
 
1407
    la fonction �chouera car le contenu de la fonction cach�e pointera toujours
 
1408
    vers l'ancienne table temporaire. La solution revient � utiliser
 
1409
    <SMALL>EXECUTE</SMALL> pour l'acc�s aux tables temporaires avec PL/PgSQL.
 
1410
    Ceci obligera l'analyse de la requ�te � chaque fois.</P>
 
1411
 
 
1412
    <H4><A name="4.27">4.27</A>) Quelles options de cryptage sont
 
1413
    disponibles&nbsp;?
 
1414
    </H4>
 
1415
    <UL>
 
1416
    <LI><I>contrib/pgcrypto</I> contient de nombreuses fonctions de cryptage, �
 
1417
    utiliser dans des requ�tes <SMALL>SQL</SMALL>.</LI>
 
1418
    <LI>Pour crypter une transmission entre le client et le serveur, le serveur
 
1419
    doit avoir positionn� l'option <I>ssl</I> � <I>true</I> dans <I>postgresql.conf,
 
1420
    </I> et un enregistrement applicable <I>host</I> ou <I>hostssl</I> doit
 
1421
    exister dans <I>pg_hba.conf</I>, et le <I>sslmode</I> du client ne doit pas
 
1422
    �tre <I>d�sactiv�e</I>. Notez qu'il est aussi possible d'utiliser un
 
1423
    transport crypt� d'une troisi�me partie, tel que stunnel ou ssh, plut�t que
 
1424
    les connexions SSL natives de PostgreSQL.</LI>
 
1425
    <LI>Les mots de passe des utilisateurs sont automatiquement crypt�s depuis
 
1426
    la version 7.3. Pour les versions pr�c�dentes, vous devez activer l'option
 
1427
    <I>PASSWORD_ENCRYPTION</I> dans <I>postgresql.conf</I>.</LI>
 
1428
    <LI>Le serveur peut fonctionner avec un syst�me de fichiers crypt�s.</LI>
 
1429
    </UL>
 
1430
 
 
1431
    <HR>
 
1432
 
 
1433
    <H2 align="center">Etendre PostgreSQL</H2>
 
1434
 
 
1435
    <H4><A name="5.1">5.1</A>) J'ai �crit une fonction utilisateur. Lorsque je l'ex�cute avec
 
1436
        <I>psql</I>, pourquoi cela finit-il avec un <I>dump core</I>&nbsp;?</H4>
 
1437
 
 
1438
    <P>Il peut y avoir plusieurs raisons. Essayez tout d'abord votre fonction utilisateur
 
1439
    dans un programme de test.</P>
 
1440
 
 
1441
    <H4><A name="5.2">5.2</A>) Comment puis-je ajouter de bons nouveaux
 
1442
    types ou fonctions � PostgreSQL&nbsp;?</H4>
 
1443
 
 
1444
    <P>Envoyez vos extensions � la liste de diffusion <I>pgsql-hackers</I>,
 
1445
    elles atterriront �ventuellement dans le sous-r�pertoire <I>contrib/</I>.</P>
 
1446
 
 
1447
    <H4><A name="5.3">5.3</A>) Comment faire pour �crire une fonction C
 
1448
    qui renvoie un tuple&nbsp;?</H4>
 
1449
 
 
1450
    <P>Dans les versions de PostgreSQL � partir de 7.3, les fonctions qui
 
1451
    renvoient une table sont totalement support�es en C, PL/PgSQL, et SQL. Voir
 
1452
    le Guide du Programmeur pour plus d'information. Un exemple de fonction
 
1453
    renvoyant une table d�finie en C se trouve �
 
1454
    <I>contrib/tablefunc</I>.</P>
 
1455
 
 
1456
    <H4><A name="5.4">5.4</A>) J'ai modifi� un fichier source. Pourquoi
 
1457
    ma recompilation ne voit-elle pas les modifications&nbsp;?</H4>
 
1458
 
 
1459
    <P>Les <I>Makefiles</I> n'ont pas les d�pendances ad�quates pour les 
 
1460
    fichiers d'en-t�te. Il vous faut faire <I>make clean</I> puis un autre
 
1461
    <I>make</I>. Si vous utilisez <SMALL>GCC</SMALL>, vous pouvez utiliser
 
1462
    l'option <I>--enable-depend</I> de <I>configure</I> pour que le
 
1463
    compilateur calcule les d�pendances automatiquement.</P>
 
1464
  </BODY>
 
1465
</HTML>
 
1466