| 1 |
<!-- |
|---|
| 2 |
$Header: /var/lib/cvs/pgsql-fr/sgml/bki.sgml,v 1.6 2005/03/14 06:03:48 guillaume Exp $ |
|---|
| 3 |
--> |
|---|
| 4 |
|
|---|
| 5 |
<chapter id="bki"> |
|---|
| 6 |
<title>Interface du moteur <acronym>BKI</acronym></title> |
|---|
| 7 |
|
|---|
| 8 |
<para> |
|---|
| 9 |
Les fichiers d'interface du moteur (<acronym>BKI</acronym>) sont des scripts |
|---|
| 10 |
écrits dans un langage spécial, qui est compris par le serveur |
|---|
| 11 |
<productname>PostgreSQL</productname> quand il est lancé dans le mode spécial |
|---|
| 12 |
<quote>bootstrap</quote>. Ce mode autorise la création des catalogues |
|---|
| 13 |
systèmes alors que les commandes SQL requièrent l'existence des catalogues. |
|---|
| 14 |
Les fichiers <acronym>BKI</acronym> peuvent donc être utilisés pour créer le |
|---|
| 15 |
système de base de données en tout premier lieu. (Et ils ne sont probablement |
|---|
| 16 |
pas utiles pour un autre emploi.) |
|---|
| 17 |
</para> |
|---|
| 18 |
|
|---|
| 19 |
<para> |
|---|
| 20 |
<application>initdb</application> utilise un fichier <acronym>BKI</acronym> |
|---|
| 21 |
pour faire une partie de son travail lors de la création d'un nouveau groupe |
|---|
| 22 |
de base de données. Le fichier en entrée utilisé par |
|---|
| 23 |
<application>initdb</application> est créé lors de la construction et de |
|---|
| 24 |
l'installation de <productname>PostgreSQL</productname> par un programme |
|---|
| 25 |
nommé <filename>genbki.sh</filename> qui lit les quelques fichiers d'en-têtes |
|---|
| 26 |
C spécialement formatés dans le répertoire |
|---|
| 27 |
<filename>src/include/catalog</filename> des sources. Le fichier |
|---|
| 28 |
<acronym>BKI</acronym> créé est appelé <filename>postgres.bki</filename> et |
|---|
| 29 |
est normalement installé dans le sous-répertoire <filename>share</filename> |
|---|
| 30 |
du répertoire d'installation. |
|---|
| 31 |
</para> |
|---|
| 32 |
|
|---|
| 33 |
<para> |
|---|
| 34 |
Des informations plus complètes sont disponibles dans la documentation pour |
|---|
| 35 |
<application>initdb</application>. |
|---|
| 36 |
</para> |
|---|
| 37 |
|
|---|
| 38 |
<sect1 id="bki-format"> |
|---|
| 39 |
<title>Format des fichiers <acronym>BKI</acronym></title> |
|---|
| 40 |
|
|---|
| 41 |
<para> |
|---|
| 42 |
Cette section décrit comment le serveur <productname>PostgreSQL</productname> |
|---|
| 43 |
interprète les fichiers <acronym>BKI</acronym>. Cette description |
|---|
| 44 |
sera plus simple à comprendre si le fichier <filename>postgres.bki</filename> |
|---|
| 45 |
se trouve à portée de main comme exemple. |
|---|
| 46 |
</para> |
|---|
| 47 |
|
|---|
| 48 |
<para> |
|---|
| 49 |
L'entrée <acronym>BKI</acronym> consiste en une séquence de commandes. Les |
|---|
| 50 |
commandes sont constituées d'un certain nombre d'éléments, suivant la syntaxe de |
|---|
| 51 |
la commande. Les éléments sont habituellement séparés par des espaces blancs |
|---|
| 52 |
mais n'ont pas besoin de l'être s'il n'y a pas d'ambiguïté. Il n'existe pas |
|---|
| 53 |
de séparateur spécial pour les commandes ; le prochain élément qui ne |
|---|
| 54 |
peut syntaxiquement pas appartenir à la commande précédente en lance une |
|---|
| 55 |
autre. (Habituellement, vous devriez mettre une nouvelle commande sur une |
|---|
| 56 |
nouvelle ligne pour plus de clarté.) Les éléments peuvent être certains mots |
|---|
| 57 |
clés, des caractères spéciaux (parenthèses, virgules, etc.), nombres ou |
|---|
| 58 |
chaînes de caractères entre guillemets doubles. Tous sont sensibles à la |
|---|
| 59 |
casse. |
|---|
| 60 |
</para> |
|---|
| 61 |
|
|---|
| 62 |
<para> |
|---|
| 63 |
Les lignes commençant avec un <literal>#</literal> sont ignorées. |
|---|
| 64 |
</para> |
|---|
| 65 |
|
|---|
| 66 |
</sect1> |
|---|
| 67 |
|
|---|
| 68 |
<sect1 id="bki-commands"> |
|---|
| 69 |
<title>Commandes <acronym>BKI</acronym></title> |
|---|
| 70 |
|
|---|
| 71 |
<variablelist> |
|---|
| 72 |
<varlistentry> |
|---|
| 73 |
<term> |
|---|
| 74 |
create |
|---|
| 75 |
<optional>bootstrap</optional> |
|---|
| 76 |
<optional>shared_relation</optional> |
|---|
| 77 |
<optional>without_oids</optional> |
|---|
| 78 |
<replaceable class="parameter">nomtable</replaceable> |
|---|
| 79 |
(<replaceable class="parameter">nom1</replaceable> = |
|---|
| 80 |
<replaceable class="parameter">type1</replaceable> <optional>, |
|---|
| 81 |
<replaceable class="parameter">nom2</replaceable> = <replaceable |
|---|
| 82 |
class="parameter">type2</replaceable>, ...</optional>) |
|---|
| 83 |
</term> |
|---|
| 84 |
|
|---|
| 85 |
<listitem> |
|---|
| 86 |
<para> |
|---|
| 87 |
Crée une table nommée <replaceable |
|---|
| 88 |
class="parameter">nomtable</replaceable> avec les colonnes données entre |
|---|
| 89 |
parenthèses. |
|---|
| 90 |
</para> |
|---|
| 91 |
|
|---|
| 92 |
<para> |
|---|
| 93 |
Les types de colonnes suivants sont supportés directement par |
|---|
| 94 |
<filename>bootstrap.c</>: <type>bool</type>, |
|---|
| 95 |
<type>bytea</type>, <type>char</type> (1 byte), |
|---|
| 96 |
<type>name</type>, <type>int2</type>, |
|---|
| 97 |
<type>int4</type>, <type>regproc</type>, <type>regclass</type>, |
|---|
| 98 |
<type>regtype</type>, <type>text</type>, |
|---|
| 99 |
<type>oid</type>, <type>tid</type>, <type>xid</type>, |
|---|
| 100 |
<type>cid</type>, <type>int2vector</type>, <type>oidvector</type>, |
|---|
| 101 |
<type>_int4</type> (array), <type>_text</type> (array), |
|---|
| 102 |
<type>_aclitem</type> (array). Bien qu'il soit possible de créer des |
|---|
| 103 |
tables contenant des colonnes d'autres types, ceci ne peut pas être fait |
|---|
| 104 |
tant que <structname>pg_type</> n'est pas créé et rempli avec les entrées |
|---|
| 105 |
appropriées. |
|---|
| 106 |
</para> |
|---|
| 107 |
|
|---|
| 108 |
<para> |
|---|
| 109 |
Quand <literal>bootstrap</> est spécifié, la table sera seulement |
|---|
| 110 |
construite sur disque ; rien n'est saisi dans |
|---|
| 111 |
<structname>pg_class</structname>, <structname>pg_attribute</structname>, |
|---|
| 112 |
etc, pour elle. Du coup, la table ne sera pas accessible par des |
|---|
| 113 |
opérations SQL standards jusqu'à ce que de nouvelles entrées sont |
|---|
| 114 |
réalisées (avec des commandes <literal>insert</>). Cette option est |
|---|
| 115 |
utilisée pour créer <structname>pg_class</structname>, etc. |
|---|
| 116 |
</para> |
|---|
| 117 |
|
|---|
| 118 |
<para> |
|---|
| 119 |
La table est créée comme partagée si <literal>shared_relation</> est |
|---|
| 120 |
spécifié. Elle aura des OID sauf si <literal>without_oids</> est spécifié. |
|---|
| 121 |
</para> |
|---|
| 122 |
</listitem> |
|---|
| 123 |
</varlistentry> |
|---|
| 124 |
|
|---|
| 125 |
<varlistentry> |
|---|
| 126 |
<term> |
|---|
| 127 |
open <replaceable class="parameter">nomtable</replaceable> |
|---|
| 128 |
</term> |
|---|
| 129 |
|
|---|
| 130 |
<listitem> |
|---|
| 131 |
<para> |
|---|
| 132 |
Ouvre la table nommée |
|---|
| 133 |
<replaceable class="parameter">nomtable</replaceable> |
|---|
| 134 |
pour plus de manipulations. |
|---|
| 135 |
</para> |
|---|
| 136 |
</listitem> |
|---|
| 137 |
</varlistentry> |
|---|
| 138 |
|
|---|
| 139 |
<varlistentry> |
|---|
| 140 |
<term> |
|---|
| 141 |
close <optional><replaceable class="parameter">nomtable</replaceable></optional> |
|---|
| 142 |
</term> |
|---|
| 143 |
|
|---|
| 144 |
<listitem> |
|---|
| 145 |
<para> |
|---|
| 146 |
Ferme la table ouverte appelée <replaceable |
|---|
| 147 |
class="parameter">nomtable</replaceable>. Une erreur survient si |
|---|
| 148 |
<replaceable class="parameter">nomtable</replaceable> n'est pas déjà |
|---|
| 149 |
ouverte. Si <replaceable class="parameter">nomtable</replaceable> n'est |
|---|
| 150 |
pas indiqué, alors la table actuellement ouverte est fermée. |
|---|
| 151 |
</para> |
|---|
| 152 |
</listitem> |
|---|
| 153 |
</varlistentry> |
|---|
| 154 |
|
|---|
| 155 |
<varlistentry> |
|---|
| 156 |
<term> |
|---|
| 157 |
insert <optional>OID = <replaceable class="parameter">valeur_oid</replaceable></optional> (<replaceable class="parameter">valeur1</replaceable> <replaceable class="parameter">valeur2</replaceable> ...) |
|---|
| 158 |
</term> |
|---|
| 159 |
|
|---|
| 160 |
<listitem> |
|---|
| 161 |
<para> |
|---|
| 162 |
Insère une nouvelle ligne dans la table ouverte en utilisant <replaceable |
|---|
| 163 |
class="parameter">valeur1</replaceable>, <replaceable |
|---|
| 164 |
class="parameter">valeur2</replaceable>, etc., comme valeurs de ses |
|---|
| 165 |
colonnes et <replaceable |
|---|
| 166 |
class="parameter">valeur_oid</replaceable> pour son OID. Si |
|---|
| 167 |
<replaceable class="parameter">valeur_oid</replaceable> vaut zéro |
|---|
| 168 |
(0) ou si la clause est omise, alors le prochain OID disponible est |
|---|
| 169 |
utilisé. |
|---|
| 170 |
</para> |
|---|
| 171 |
|
|---|
| 172 |
<para> |
|---|
| 173 |
Les valeurs NULL peuvent être indiquées en utilisant le mot clé spécial |
|---|
| 174 |
<literal>_null_</literal>. Les valeurs contenant des espaces doivent être |
|---|
| 175 |
entre des guillemets doubles. |
|---|
| 176 |
</para> |
|---|
| 177 |
</listitem> |
|---|
| 178 |
</varlistentry> |
|---|
| 179 |
|
|---|
| 180 |
<varlistentry> |
|---|
| 181 |
<term> |
|---|
| 182 |
declare <optional>unique</optional> index <replaceable |
|---|
| 183 |
class="parameter">nomindex</replaceable> on <replaceable |
|---|
| 184 |
class="parameter">nomtable</replaceable> using <replaceable |
|---|
| 185 |
class="parameter">nomma</replaceable> (<replaceable |
|---|
| 186 |
class="parameter">classeop1</replaceable> <replaceable |
|---|
| 187 |
class="parameter">nom1</replaceable> <optional>, ...</optional>) |
|---|
| 188 |
</term> |
|---|
| 189 |
|
|---|
| 190 |
<listitem> |
|---|
| 191 |
<para> |
|---|
| 192 |
Crée un index nommé <replaceable |
|---|
| 193 |
class="parameter">nomindex</replaceable> sur la table nommée |
|---|
| 194 |
<replaceable class="parameter">nomtable</replaceable> en utilisant la |
|---|
| 195 |
méthode d'accès nommée <replaceable class="parameter">nomma</replaceable>. |
|---|
| 196 |
Les champs de l'index sont appelés <replaceable |
|---|
| 197 |
class="parameter">nom1</replaceable>, <replaceable |
|---|
| 198 |
class="parameter">nom2</replaceable> etc., et les classes d'opérateur à |
|---|
| 199 |
utiliser sont respectivement <replaceable |
|---|
| 200 |
class="parameter">classeop1</replaceable>, <replaceable |
|---|
| 201 |
class="parameter">classeop2</replaceable> etc. |
|---|
| 202 |
Le fichier index est créé et les entrées du catalogue appropriées sont |
|---|
| 203 |
ajoutées pour lui, mais le contenu de l'index n'est pas initialisé par |
|---|
| 204 |
cette commande. |
|---|
| 205 |
</para> |
|---|
| 206 |
</listitem> |
|---|
| 207 |
</varlistentry> |
|---|
| 208 |
|
|---|
| 209 |
<varlistentry> |
|---|
| 210 |
<term>build indices</term> |
|---|
| 211 |
|
|---|
| 212 |
<listitem> |
|---|
| 213 |
<para> |
|---|
| 214 |
Remplit les index précédemment déclarés. |
|---|
| 215 |
</para> |
|---|
| 216 |
</listitem> |
|---|
| 217 |
</varlistentry> |
|---|
| 218 |
</variablelist> |
|---|
| 219 |
|
|---|
| 220 |
</sect1> |
|---|
| 221 |
|
|---|
| 222 |
<sect1 id="bki-example"> |
|---|
| 223 |
<title>Exemple</title> |
|---|
| 224 |
|
|---|
| 225 |
<para> |
|---|
| 226 |
La séquence suivante de commandes créera la table |
|---|
| 227 |
<literal>test_table</literal> avec deux colonnes |
|---|
| 228 |
<literal>cola</literal> et <literal>colb</literal> de type, respectivement, |
|---|
| 229 |
<type>int4</type> et <type>text</type> et insèrera deux lignes dans la |
|---|
| 230 |
table. |
|---|
| 231 |
<programlisting> |
|---|
| 232 |
create test_table (cola = int4, colb = text) |
|---|
| 233 |
open test_table |
|---|
| 234 |
insert OID=421 ( 1 "value1" ) |
|---|
| 235 |
insert OID=422 ( 2 _null_ ) |
|---|
| 236 |
close test_table |
|---|
| 237 |
</programlisting> |
|---|
| 238 |
</para> |
|---|
| 239 |
</sect1> |
|---|
| 240 |
</chapter> |
|---|
| 241 |
|
|---|
| 242 |
<!-- Keep this comment at the end of the file |
|---|
| 243 |
Local variables: |
|---|
| 244 |
mode:sgml |
|---|
| 245 |
sgml-omittag:nil |
|---|
| 246 |
sgml-shorttag:t |
|---|
| 247 |
sgml-minimize-attributes:nil |
|---|
| 248 |
sgml-always-quote-attributes:t |
|---|
| 249 |
sgml-indent-step:1 |
|---|
| 250 |
sgml-indent-data:t |
|---|
| 251 |
sgml-parent-document:nil |
|---|
| 252 |
sgml-default-dtd-file:"./reference.ced" |
|---|
| 253 |
sgml-exposed-tags:nil |
|---|
| 254 |
sgml-local-catalogs:("/usr/lib/sgml/catalog") |
|---|
| 255 |
sgml-local-ecat-files:nil |
|---|
| 256 |
End: |
|---|
| 257 |
--> |
|---|
| 258 |
|
|---|