Documentation PostgreSQL 9.6.24 > Internes > Interface du moteur, BKI | |
Emplacement des pages de la base de données | Commandes 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.pl 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.
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.