53. Interface du moteur, BKI
Les fichiers d'interface du moteur (BKI pour
Backend Interface
) sont des scripts
écrits dans un langage spécial, compris par le serveur PostgreSQL™ lorsqu'il est exécuté en mode
« bootstrap ». Ce mode autorise
la création et le remplissage des catalogues systèmes
ab initio
, là
où les commandes SQL exigent leur existence préalable. Les fichiers
BKI peuvent donc être utilisés en
premier lieu pour créer le système de base de données. (Ils n'ont
probablement pas d'autre utilité.)
initdb utilise un fichier
BKI pour réaliser une partie de
son travail lors de la création d'un nouveau cluster de bases de
données. Le fichier d'entrée utilisé par initdb est créé, lors de la construction et de
l'installation de PostgreSQL™,
par un programme nommé genbki.sh qui lit
différents fichiers d'en-têtes C spécialement formatés à partir du
répertoire src/include/catalog des sources.
Le fichier BKI créé est appelé
postgres.bki et est normalement installé
dans le sous-répertoire share du répertoire
d'installation.
D'autres informations sont disponibles dans la documentation
d'initdb.
53.1. Format des fichiers BKI
Cette section décrit l'interprétation des fichiers BKI par le moteur de PostgreSQL™. Cette description est plus
facile à comprendre si le fichier postgres.bki est utilisé comme exemple.
L'entrée de BKI représente une
séquence de commandes. Les commandes sont constituées de lexèmes
(
tokens
) dont le nombre dépend de la
syntaxe de la commande. Les lexèmes sont habituellement séparés par
des espaces fines, mais en l'absence d'ambiguïté ce n'est pas
nécessaire. Il n'y a pas de séparateur spécial pour les commandes ;
le prochain lexème qui ne peut syntaxiquement pas appartenir à la
commande qui précède en lance une autre. (En général, il est
préférable, pour des raisons de clarté, de placer toute nouvelle
commande sur une nouvelle ligne.) Les lexèmes peuvent être des mots
clés, des caractères spéciaux (parenthèses, virgules, etc.),
nombres ou chaînes de caractères entre guillemets doubles. Tous
sont sensibles à la casse.
Les lignes qui débutent par # sont
ignorées.