Movatterモバイル変換


[0]ホーム

URL:



Facebook
Postgres Pro
Facebook
Downloads
Chapter 67. System Catalog Declarations and Initial Contents
Prev UpPart VII. InternalsHome Next

Chapter 67. System Catalog Declarations and Initial Contents

PostgreSQL uses many different system catalogs to keep track of the existence and properties of database objects, such as tables and functions. Physically there is no difference between a system catalog and a plain user table, but the backend C code knows the structure and properties of each catalog, and can manipulate it directly at a low level. Thus, for example, it is inadvisable to attempt to alter the structure of a catalog on-the-fly; that would break assumptions built into the C code about how rows of the catalog are laid out. But the structure of the catalogs can change between major versions.

The structures of the catalogs are declared in specially formatted C header files in thesrc/include/catalog/ directory of the source tree. For each catalog there is a header file named after the catalog (e.g.,pg_class.h forpg_class), which defines the set of columns the catalog has, as well as some other basic properties such as its OID.

Many of the catalogs have initial data that must be loaded into them during thebootstrap phase ofinitdb, to bring the system up to a point where it is capable of executing SQL commands. (For example,pg_class.h must contain an entry for itself, as well as one for each other system catalog and index.) This initial data is kept in editable form in data files that are also stored in thesrc/include/catalog/ directory. For example,pg_proc.dat describes all the initial rows that must be inserted into thepg_proc catalog.

To create the catalog files and load this initial data into them, a backend running in bootstrap mode reads aBKI (Backend Interface) file containing commands and initial data. Thepostgres.bki file used in this mode is prepared from the aforementioned header and data files, while building aPostgreSQL distribution, by a Perl script namedgenbki.pl. Although it's specific to a particularPostgreSQL release,postgres.bki is platform-independent and is installed in theshare subdirectory of the installation tree.

genbki.pl also produces a derived header file for each catalog, for examplepg_class_d.h for thepg_class catalog. This file contains automatically-generated macro definitions, and may contain other macros, enum declarations, and so on that can be useful for client C code that reads a particular catalog.

Most PostgreSQL developers don't need to be directly concerned with theBKI file, but almost any nontrivial feature addition in the backend will require modifying the catalog header files and/or initial data files. The rest of this chapter gives some information about that, and for completeness describes theBKI file format.


Prev Up Next
66.4. Two-Phase Transactions Home 67.1. System Catalog Declaration Rules
pdfepub
Go to PostgreSQL 17
By continuing to browse this website, you agree to the use of cookies. Go toPrivacy Policy.

[8]ページ先頭

©2009-2025 Movatter.jp