Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
bki.html56 linesDownload Raw Back to html
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 75. System Catalog Declarations and Initial Contents</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="two-phase.html" title="74.4. Two-Phase Transactions" /><link rel="next" href="system-catalog-declarations.html" title="75.1. System Catalog Declaration Rules" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">Chapter 75. System Catalog Declarations and Initial Contents</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="two-phase.html" title="74.4. Two-Phase Transactions">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="internals.html" title="Part VII. Internals">Up</a></td><th width="60%" align="center">Part VII. Internals</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="system-catalog-declarations.html" title="75.1. System Catalog Declaration Rules">Next</a></td></tr></table><hr /></div><div class="chapter" id="BKI"><div class="titlepage"><div><div><h2 class="title">Chapter 75. System Catalog Declarations and Initial Contents</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="system-catalog-declarations.html">75.1. System Catalog Declaration Rules</a></span></dt><dt><span class="sect1"><a href="system-catalog-initial-data.html">75.2. System Catalog Initial Data</a></span></dt><dd><dl><dt><span class="sect2"><a href="system-catalog-initial-data.html#SYSTEM-CATALOG-INITIAL-DATA-FORMAT">75.2.1. Data File Format</a></span></dt><dt><span class="sect2"><a href="system-catalog-initial-data.html#SYSTEM-CATALOG-OID-ASSIGNMENT">75.2.2. OID Assignment</a></span></dt><dt><span class="sect2"><a href="system-catalog-initial-data.html#SYSTEM-CATALOG-OID-REFERENCES">75.2.3. OID Reference Lookup</a></span></dt><dt><span class="sect2"><a href="system-catalog-initial-data.html#SYSTEM-CATALOG-AUTO-ARRAY-TYPES">75.2.4. Automatic Creation of Array Types</a></span></dt><dt><span class="sect2"><a href="system-catalog-initial-data.html#SYSTEM-CATALOG-RECIPES">75.2.5. Recipes for Editing Data Files</a></span></dt></dl></dd><dt><span class="sect1"><a href="bki-format.html">75.3. <acronym class="acronym">BKI</acronym> File Format</a></span></dt><dt><span class="sect1"><a href="bki-commands.html">75.4. <acronym class="acronym">BKI</acronym> Commands</a></span></dt><dt><span class="sect1"><a href="bki-structure.html">75.5. Structure of the Bootstrap <acronym class="acronym">BKI</acronym> File</a></span></dt><dt><span class="sect1"><a href="bki-example.html">75.6. BKI Example</a></span></dt></dl></div><p>3  <span class="productname">PostgreSQL</span> uses many different system catalogs4  to keep track of the existence and properties of database objects, such as5  tables and functions.  Physically there is no difference between a system6  catalog and a plain user table, but the backend C code knows the structure7  and properties of each catalog, and can manipulate it directly at a low8  level.  Thus, for example, it is inadvisable to attempt to alter the9  structure of a catalog on-the-fly; that would break assumptions built into10  the C code about how rows of the catalog are laid out.  But the structure11  of the catalogs can change between major versions.12 </p><p>13  The structures of the catalogs are declared in specially formatted C14  header files in the <code class="filename">src/include/catalog/</code> directory of15  the source tree.  For each catalog there is a header file16  named after the catalog (e.g., <code class="filename">pg_class.h</code>17  for <code class="structname">pg_class</code>), which defines the set of columns18  the catalog has, as well as some other basic properties such as its OID.19 </p><p>20  Many of the catalogs have initial data that must be loaded into them21  during the <span class="quote">“<span class="quote">bootstrap</span>”</span> phase22  of <span class="application">initdb</span>, to bring the system up to a point23  where it is capable of executing SQL commands.  (For24  example, <code class="filename">pg_class.h</code> must contain an entry for itself,25  as well as one for each other system catalog and index.)  This26  initial data is kept in editable form in data files that are also stored27  in the <code class="filename">src/include/catalog/</code> directory.  For example,28  <code class="filename">pg_proc.dat</code> describes all the initial rows that must29  be inserted into the <code class="structname">pg_proc</code> catalog.30 </p><p>31  To create the catalog files and load this initial data into them, a32  backend running in bootstrap mode reads a <acronym class="acronym">BKI</acronym>33  (Backend Interface) file containing commands and initial data.34  The <code class="filename">postgres.bki</code> file used in this mode is prepared35  from the aforementioned header and data files, while building36  a <span class="productname">PostgreSQL</span> distribution, by a Perl script37  named <code class="filename">genbki.pl</code>.38  Although it's specific to a particular <span class="productname">PostgreSQL</span>39  release, <code class="filename">postgres.bki</code> is platform-independent and is40  installed in the <code class="filename">share</code> subdirectory of the41  installation tree.42 </p><p>43  <code class="filename">genbki.pl</code> also produces a derived header file for44  each catalog, for example <code class="filename">pg_class_d.h</code> for45  the <code class="structname">pg_class</code> catalog.  This file contains46  automatically-generated macro definitions, and may contain other macros,47  enum declarations, and so on that can be useful for client C code that48  reads a particular catalog.49 </p><p>50  Most PostgreSQL developers don't need to be directly concerned with51  the <acronym class="acronym">BKI</acronym> file, but almost any nontrivial feature52  addition in the backend will require modifying the catalog header files53  and/or initial data files.  The rest of this chapter gives some54  information about that, and for completeness describes55  the <acronym class="acronym">BKI</acronym> file format.56 </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="two-phase.html" title="74.4. Two-Phase Transactions">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="internals.html" title="Part VII. Internals">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="system-catalog-declarations.html" title="75.1. System Catalog Declaration Rules">Next</a></td></tr><tr><td width="40%" align="left" valign="top">74.4. Two-Phase Transactions </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 75.1. System Catalog Declaration Rules</td></tr></table></div></body></html>
codekingpro/portable-devtools · Team Ai