第六十七章. 后端接口
后端接口(
BKI)文件是一些脚本,这些脚本输入到
Postgres
后端以特殊的 "bootstrap"(引导)模式运行,这种模式允许在不存在数据库系统的情况下执行数据库函数.
BKI
文件因此可以在第一时间用于创建数据库系统.
initdb
使用
BKI 文件来做一件事:创建一个数据库.不过
initdb
的
BKI 文件是内部生成的.它用文件
global1.bki.source 和
local1.template1.bki.source 生成,这些文件放在
Postgres
"library" 目录.这些文件是做为
Postgres
安装的一部分安装的.这些 .source 文件是作为
Postgres
制作过程的一部分制作的,是用一个叫
genbki
的制作程序制作的.
genbki把一个
Postgres
源文件作为输入,把这个输入分成两份作为
genbki
输入来制作描述那些表的表和 C 头文件.
相关的信息可以在有关 initdb,createdb,以及 SQL
命令 CREATE DATABASE 的文档中找到.
BKI 文件格式
Postgres 后端按下面描述的方法理解
BKI
文件.如果把
global1.bki.source 文件拿来做为例子,这些描述会变得容易理解些.(像我们上面解释的,这些
.source 文件并不是一个
BKI 文件,但你能够通过它们推导出它们生成的
BKI
文件是什么).
命令是由命令名称后面跟着用空白隔开的参数组成的.用 “$” 开头的命令参数被特殊对待.如果“$$”
是头两个字符,那么第一个 “$” 被忽略,并且参数正常处理.如果 “$” 后跟着空白,那么它被当成空(NULL)值.否则跟在
“$” 后面的字符被解释成宏的名称,并因此而导致用宏的值替换参数.如果这个宏没有定义则是一个错误.
宏是用下面语法定义的
define macro macro_name = macro_value
并且用下面语法取消定义
undefine macro macro_name
重新定义用的语法和定义时是一样的.
通用命令和宏命令的列表在后面.