68.5. Структура файла BKI #

Команда open может применяться, только когда открываемая ей таблица существует и для неё имеются записи в каталогах. (Минимальный набор этих каталогов образуют pg_class, pg_attribute, pg_proc и pg_type.) Чтобы можно было заполнить сами эти таблицы, команда create с указанием bootstrap неявно открывает создаваемую таблицу для добавления данных.

Кроме того, команды declare index и declare toast нельзя применять, пока не будут созданы и заполнены системные каталоги.

Таким образом, файл postgres.bki должен иметь следующую структуру:

  1. create bootstrap (создание) одной из критичных таблиц

  2. insert (добавление) данных, описывающих как минимум критичные таблицы

  3. close

  4. Повторение для других критичных таблиц.

  5. create (создание) (без bootstrap) некритичной таблицы

  6. open

  7. insert (добавление) требуемых данных

  8. close

  9. Повторение для других некритичных таблиц.

  10. Определение индексов и таблиц TOAST.

  11. build indices

Несомненно есть и другие, недокументированные зависимости, диктующие определённый порядок.

68.5. Structure of the Bootstrap BKI File #

The open command cannot be used until the tables it uses exist and have entries for the table that is to be opened. (These minimum tables are pg_class, pg_attribute, pg_proc, and pg_type.) To allow those tables themselves to be filled, create with the bootstrap option implicitly opens the created table for data insertion.

Also, the declare index and declare toast commands cannot be used until the system catalogs they need have been created and filled in.

Thus, the structure of the postgres.bki file has to be:

  1. create bootstrap one of the critical tables

  2. insert data describing at least the critical tables

  3. close

  4. Repeat for the other critical tables.

  5. create (without bootstrap) a noncritical table

  6. open

  7. insert desired data

  8. close

  9. Repeat for the other noncritical tables.

  10. Define indexes and toast tables.

  11. build indices

There are doubtless other, undocumented ordering dependencies.

FAQ