第 67 章 后端接口
后端接口(BKI)文件是这样一些脚本:它们是运行在特殊"引导"模式下的 Postgres
后端的输入,这种模式使后端能够在数据库系统尚不存在的情况下执行数据库功能。因此 BKI 文件可以用于最初创建数据库系统。initdb
正是使用 BKI 文件来完成这件事:创建数据库系统。不过,
initdb 的
BKI 文件是内部生成的。它使用
global1.bki.source 和 local1.template1.bki.source 这两个文件来生成它们,这两个文件可以在
Postgres 的"库"目录中找到。它们作为安装
Postgres 的一部分被安装到那里。这些 .source 文件作为 Postgres 构建过程的一部分,由一个名为
genbki 的构建程序构建。
genbki
接收 Postgres 源文件作为输入,这些源文件同时充当
genbki
的输入,用以构建表以及描述这些表的 C 头文件。
相关信息可以在下列文档中找到:
initdb、
createdb,以及 SQL 命令 CREATE DATABASE。
67.1. BKI 文件格式
Postgres 后端按下面的描述解释 BKI 文件。如果
global1.bki.source 文件在手边作为示例,这段说明会更容易理解。(如上面所解释的,这个 .source 文件并不完全是一个
BKI 文件,但你还是能猜出得到的
BKI 文件会是什么样子。)
命令由命令名后跟以空格分隔的参数组成。以 "$" 开头的命令参数会被特殊处理。如果前两个字符是 "$$",那么第一个 "$" 被忽略,该参数随后按正常方式处理。如果 "$" 后面跟的是空格,那么它被当作一个 NULL 值。否则,"$" 后面的字符被解释为一个宏的名字,使该参数被替换为该宏的值。如果这个宏未定义,则是一个错误。
宏用
define macro macro_name = macro_value
定义,用
undefine macro macro_name
取消定义,重新定义使用与 define 相同的语法。
下面是通用命令和宏命令的列表。