open 命令打开的表需要系统事先存在另外一些基本的表,在这些表存在并拥有数据之前,不能使用 open 命令。这些最低限度必须存在的表是 pg_class, pg_attribute, pg_proc, pg_type 。为了允许这些表自己被填充,带 bootstrap 选项的 create 隐含打开所创建的表用于插入数据。
同样,declare index 和 declare toast 命令也不能在它们所需要系统表创建并填充之前使用。
因此,postgres.bki 文件的结构必须是这样的:
create bootstrap 其中一个关键表
insert 数据,这些数据至少描述这些关键表本身
close
重复创建和填充其它关键表
create(不带 bootstrap)一个非关键表
open
insert 需要的数据
close
重复创建其它非关键表
定义索引
build indices
当然,肯定还有其它未记录文档的顺序依赖关系。