71장. 토토 베이 카탈로그 선언 및 초기 콘텐츠

PostgreSQL다양한 토토 베이 카탈로그를 사용하여 테이블 및 함수와 같은 데이터베이스 개체의 존재 및 속성을 추적합니다. 물리적으로 토토 베이 카탈로그와 일반 사용자 테이블 사이에는 차이가 없지만 백엔드 C 코드는 각 카탈로그의 구조와 속성을 알고 있으며 하위 수준에서 직접 조작할 수 있습니다. 따라서 예를 들어 카탈로그의 구조를 즉석에서 변경하려고 시도하는 것은 바람직하지 않습니다. 이는 카탈로그 행이 어떻게 배치되는지에 대한 C 코드에 내장된 가정을 깨뜨릴 수 있습니다. 그러나 카탈로그의 구조는 주요 버전 간에 변경될 수 있습니다.

카탈로그의 구조는 특별히 형식화된 C 헤더 파일에서 선언됩니다.src/include/카탈로그/소스 트리의 디렉토리. 각 카탈로그에는 카탈로그 이름을 딴 헤더 파일이 있습니다(예:pg_class.hforpg_class)는 카탈로그에 있는 열 집합과 OID와 같은 기타 기본 속성을 정의합니다.

많은 카탈로그에는 작업 중에 로드해야 하는 초기 데이터가 있습니다.부트스트랩단계initdb, SQL 명령을 실행할 수 있는 지점까지 시스템을 가져옵니다. (예를 들어,pg_class.h자체에 대한 항목뿐만 아니라 서로의 시스템 카탈로그 및 색인에 대한 항목도 포함해야 합니다.) 이 초기 데이터는 다음에도 저장되는 데이터 파일에 편집 가능한 형식으로 보관됩니다.src/include/카탈로그/디렉토리. 예를 들어,pg_proc.dat에 삽입되어야 하는 모든 초기 행을 설명합니다.pg_proc카탈로그.

카탈로그 파일을 생성하고 이 초기 데이터를 여기에 로드하기 위해 부트스트랩 모드에서 실행되는 백엔드는 다음을 읽습니다.BKI15050_15120postgres.bki이 모드에서 사용되는 파일은 앞서 언급한 헤더와 데이터 파일로 준비됩니다.PostgreSQL배포, Perl 스크립트에 의한 이름genbki.pl. 특정 특정에만 적용되지만PostgreSQL출시,postgres.bki플랫폼 독립적이며 다음 위치에 설치됩니다.공유설치 트리의 하위 디렉터리.

genbki.pl또한 각 카탈로그에 대해 파생된 헤더 파일을 생성합니다. 예를 들어pg_class_d.h에 대한pg_class카탈로그. 이 파일에는 자동으로 생성된 매크로 정의가 포함되어 있으며 특정 카탈로그를 읽는 클라이언트 C 코드에 유용할 수 있는 다른 매크로, 열거형 선언 등이 포함될 수 있습니다.

대부분의 PostgreSQL 개발자는 다음 문제에 직접적으로 관심을 가질 필요가 없습니다.BKI파일이지만 백엔드에 추가되는 거의 모든 중요한 기능에는 카탈로그 헤더 파일 및/또는 초기 데이터 파일을 수정해야 합니다. 이 장의 나머지 부분에서는 이에 대한 몇 가지 정보를 제공하며, 완전성을 위해 다음 내용을 설명합니다.BKI파일 형식.

수정 사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.