Documentation PostgreSQL 14.22 » Internes » Déclaration du catalogue système et contenu initial » Commandes BKI

Précédent | Niveau supérieur | Suivant
71.3. Format des fichiers BKI | Sommaire | 71.5. Structure du fichier BKI de « bootstrap »

## 71.4. Commandes BKI

`create` `tablename` `tableoid` [`bootstrap`] [`shared_relation`] [`rowtype_oid` `oid`] (`name1` = `type1` [FORCE NOT NULL | FORCE NULL ] [, `name2` = `type2` [FORCE NOT NULL | FORCE NULL ], ...])

  Crée une table nommée `nomtable`, possédant l'OID `tableoid` et composée des colonnes données entre parenthèses.

  Les types de colonnes suivants sont supportés directement par `bootstrap.c`: `bool`, `bytea`, `char` (1 byte), `name`, `int2`, `int4`, `regproc`, `regclass`, `regtype`, `text`, `oid`, `tid`, `xid`, `cid`, `int2vector`, `oidvector`, `_int4` (array), `_text` (array), `_oid` (array), `_char` (array), `_aclitem` (array). Bien qu'il soit possible de créer des tables contenant des colonnes d'autres types, cela ne peut pas être réalisé avant que `pg_type` ne soit créé et rempli avec les entrées appropriées. (Ce qui signifie en fait que seuls ces types de colonnes peuvent être utilisés dans les tables utilisant le « bootstrap » mais que les catalogues ne l'utilisant pas peuvent contenir tout type interne.)

  Quand `bootstrap` est précisé, la table est uniquement construite sur disque ; rien n'est entré dans `pg_class`, `pg_attribute`, etc, pour cette table. Du coup, la table n'est pas accessible par les opérations SQL standard tant que ces entrées ne sont pas réalisées en dur (à l'aide de commandes `insert`). Cette option est utilisée pour créer `pg_class`, etc.

  La table est créée partagée si `shared_relation` est indiqué. L'OID du type de ligne de la table (OID de `pg_type`) peut en option être indiquée via la clause `rowtype_oid` ; dans le cas contraire, un OID est automatiquement généré pour lui. (La clause `rowtype_oid` est inutile si `bootstrap` est spécifié, mais il peut néanmoins être fourni pour documentation.)

`open` `nomtable`

  Ouvre la table nommée `nomtable` pour l'ajout de données. Toute table alors ouverte est fermée.

`close` `nomtable`

  Ferme la table ouverte. Le nom de la table peut être indiqué pour vérification mais ce n'est pas nécessaire.

`insert` `(` [`valeur_oid`] `valeur1` `valeur2` ... `)`

  Insère une nouvelle ligne dans la table ouverte en utilisant `valeur1`, `valeur2`, etc., comme valeurs de colonnes.

  La valeur NULL peut être indiquée en utilisant le mot clé spécial `_null_`. Les valeurs qui ne ressemblent pas à des identifiants ou à des chaînes de nombres doivent être placées entre guillemets simples. (Pour inclure un guillemet simple dans une valeur, écrivez la deux fois. Les caractères d'échappement de chaîne (les antislash) sont aussi autorisés dans une chaîne.)

`declare` [`unique`] `index` `nomindex` `oidindex` `on` `nomtable` `using` `nomam` `(` `classeop1` `nom1` [, ...] `)`

  Crée un index nommé `nomindex`, d'OID `indexoid`, sur la table nommée `nomtable` en utilisant la méthode d'accès nommée `nomam`. Les champs à indexer sont appelés `nom1`, `nom2` etc., et les classes d'opérateurs à utiliser sont respectivement `classeop1`, `classeop2` etc. Le fichier index est créé et les entrées appropriées du catalogue sont ajoutées pour lui, mais le contenu de l'index n'est pas initialisé par cette commande.

`declare toast` `toasttableoid` `toastindexoid` `on` `nomtable`

  Crée une table TOAST pour la table nommée `nomtable`. La table TOAST se voit affecter l'OID `toasttableoid` et son index l'OID `toastindexoid`. Comme avec `declare index`, le remplissage de l'index est reporté.

`build indices`

  Remplit les index précédemment déclarés.