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

« 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-09-06 14:11:13 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20090906141113-qf5f3hkw7n036jfy
Tags: 8.4.1-1
* Urgency medium due to security fix.
* New upstream security/bug fix release:
  - Disallow "RESET ROLE" and "RESET SESSION AUTHORIZATION" inside
    security-definer functions. This covers a case that was missed in the
    previous patch that disallowed "SET ROLE" and "SET SESSION
    AUTHORIZATION" inside security-definer functions. [CVE-2007-6600]
  - Fix WAL page header initialization at the end of archive recovery.
    This could lead to failure to process the WAL in a subsequent archive
    recovery.
  - Fix "cannot make new WAL entries during recovery" error.
  - Fix problem that could make expired rows visible after a crash.
    This bug involved a page status bit potentially not being set
    correctly after a server crash.
  - Make "LOAD" of an already-loaded loadable module into a no-op.
    Formerly, "LOAD" would attempt to unload and re-load the module,
    but this is unsafe and not all that useful.
  - Make window function PARTITION BY and ORDER BY items always be
    interpreted as simple expressions.
    In 8.4.0 these lists were parsed following the rules used for
    top-level GROUP BY and ORDER BY lists. But this was not correct per
    the SQL standard, and it led to possible circularity.
  - Fix several errors in planning of semi-joins. These led to wrong query
    results in some cases where IN or EXISTS was used together with another
    join.
  - Fix handling of whole-row references to subqueries that are within
    an outer join. An example is SELECT COUNT(ss.-) FROM ... LEFT JOIN
    (SELECT ...) ss ON .... Here, ss.- would be treated as
    ROW(NULL,NULL,...) for null-extended join rows, which is not the same as
    a simple NULL.  Now it is treated as a simple NULL.
  - Fix locale handling with plperl. This bug could cause the server's
    locale setting to change when a plperl function is called, leading to
    data corruption.
  - Fix handling of reloptions to ensure setting one option doesn't
    force default values for others.
  - Ensure that a "fast shutdown" request will forcibly terminate open
    sessions, even if a "smart shutdown" was already in progress.
  - Avoid memory leak for array_agg() in GROUP BY queries.
  - Treat to_char(..., 'TH') as an uppercase ordinal suffix with
    'HH'/'HH12'.  It was previously handled as 'th'.
  - Include the fractional part in the result of EXTRACT(second) and
    EXTRACT(milliseconds) for time and time with time zone inputs.
    This has always worked for floating-point datetime configurations,
    but was broken in the integer datetime code.
  - Fix overflow for INTERVAL 'x ms' when "x" is more than 2 million
    and integer datetimes are in use.
  - Improve performance when processing toasted values in index scans.
    This is particularly useful for PostGIS.
  - Fix a typo that disabled commit_delay.
  - Output early-startup messages to "postmaster.log" if the server is
    started in silent mode. Previously such error messages were discarded,
    leading to difficulty in debugging.
  - Remove translated FAQs. They are now on the wiki. The main FAQ was moved
    to the wiki some time ago.
  - Fix pg_ctl to not go into an infinite loop if "postgresql.conf" is
    empty.
  - Fix several errors in pg_dump's --binary-upgrade mode. pg_dump
    --binary-upgrade is used by pg_migrator.
  - Fix "contrib/xml2"'s xslt_process() to properly handle the maximum
    number of parameters (twenty).
  - Improve robustness of libpq's code to recover from errors during
    "COPY FROM STDIN".
  - Avoid including conflicting readline and editline header files when
    both libraries are installed.
  - Work around gcc bug that causes "floating-point exception" instead
    of "division by zero" on some platforms.
* debian/control: Bump Standards-Version to 3.8.3 (no changes necessary).

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