<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >BKI Backend Interface</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REV="MADE" HREF="mailto:pgsql-docs@postgresql.org"><LINK REL="HOME" TITLE="PostgreSQL 8.0.11 Documentation" HREF="index.html"><LINK REL="UP" TITLE="Internals" HREF="internals.html"><LINK REL="PREVIOUS" TITLE="Database Page Layout" HREF="storage-page-layout.html"><LINK REL="NEXT" TITLE="BKI Commands" HREF="bki-commands.html"><LINK REL="STYLESHEET" TYPE="text/css" HREF="stylesheet.css"><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"><META NAME="creation" CONTENT="2007-02-02T03:57:22"></HEAD ><BODY CLASS="CHAPTER" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="5" ALIGN="center" VALIGN="bottom" >PostgreSQL 8.0.11 Documentation</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="storage-page-layout.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="storage.html" >Fast Backward</A ></TD ><TD WIDTH="60%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="appendixes.html" >Fast Forward</A ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="bki-commands.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="CHAPTER" ><H1 ><A NAME="BKI" ></A >Chapter 50. <ACRONYM CLASS="ACRONYM" >BKI</ACRONYM > Backend Interface</H1 ><DIV CLASS="TOC" ><DL ><DT ><B >Table of Contents</B ></DT ><DT >50.1. <A HREF="bki.html#BKI-FORMAT" ><ACRONYM CLASS="ACRONYM" >BKI</ACRONYM > File Format</A ></DT ><DT >50.2. <A HREF="bki-commands.html" ><ACRONYM CLASS="ACRONYM" >BKI</ACRONYM > Commands</A ></DT ><DT >50.3. <A HREF="bki-example.html" >Example</A ></DT ></DL ></DIV ><P > Backend Interface (<ACRONYM CLASS="ACRONYM" >BKI</ACRONYM >) files are scripts in a special language that is understood by the <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > backend when running in the <SPAN CLASS="QUOTE" >"bootstrap"</SPAN > mode. The bootstrap mode allows system catalogs to be created and filled from scratch, whereas ordinary SQL commands require the catalogs to exist already. <ACRONYM CLASS="ACRONYM" >BKI</ACRONYM > files can therefore be used to create the database system in the first place. (And they are probably not useful for anything else.) </P ><P > <SPAN CLASS="APPLICATION" >initdb</SPAN > uses a <ACRONYM CLASS="ACRONYM" >BKI</ACRONYM > file to do part of its job when creating a new database cluster. The input file used by <SPAN CLASS="APPLICATION" >initdb</SPAN > is created as part of building and installing <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > by a program named <TT CLASS="FILENAME" >genbki.sh</TT >, which reads some specially formatted C header files in the <TT CLASS="FILENAME" >src/include/catalog/</TT > directory of the source tree. The created <ACRONYM CLASS="ACRONYM" >BKI</ACRONYM > file is called <TT CLASS="FILENAME" >postgres.bki</TT > and is normally installed in the <TT CLASS="FILENAME" >share</TT > subdirectory of the installation tree. </P ><P > Related information may be found in the documentation for <SPAN CLASS="APPLICATION" >initdb</SPAN >. </P ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="BKI-FORMAT" >50.1. <ACRONYM CLASS="ACRONYM" >BKI</ACRONYM > File Format</A ></H1 ><P > This section describes how the <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > backend interprets <ACRONYM CLASS="ACRONYM" >BKI</ACRONYM > files. This description will be easier to understand if the <TT CLASS="FILENAME" >postgres.bki</TT > file is at hand as an example. </P ><P > <ACRONYM CLASS="ACRONYM" >BKI</ACRONYM > input consists of a sequence of commands. Commands are made up of a number of tokens, depending on the syntax of the command. Tokens are usually separated by whitespace, but need not be if there is no ambiguity. There is no special command separator; the next token that syntactically cannot belong to the preceding command starts a new one. (Usually you would put a new command on a new line, for clarity.) Tokens can be certain key words, special characters (parentheses, commas, etc.), numbers, or double-quoted strings. Everything is case sensitive. </P ><P > Lines starting with a <TT CLASS="LITERAL" >#</TT > are ignored. </P ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="storage-page-layout.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="bki-commands.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Database Page Layout</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="internals.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><ACRONYM CLASS="ACRONYM" >BKI</ACRONYM > Commands</TD ></TR ></TABLE ></DIV ></BODY ></HTML >