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_type.) To allow those tables themselves to be filled,
create with the
bootstrap option implicitly opens the created table for data insertion.
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:
create bootstrap one of the critical tables
insert data describing at least the critical tables
Repeat for the other critical tables.
bootstrap) a noncritical table
insert desired data
Repeat for the other noncritical tables.
Define indexes and toast tables.
There are doubtless other, undocumented ordering dependencies.