Capítulo 71. Declarações do catálogo do sistema e conteúdo inicial

Índice

71.1. Regras de declaração do catálogo do sistema
71.2. Dados iniciais do catálogo do sistema
71.2.1. Formato do arquivo de dados
71.2.2. Atribuição de OID
71.2.3. Procura de referência de OID
71.2.4. Criação automática de tipos matriz
71.2.5. Receitas para editar arquivos de dados
71.3. Formato do arquivo da BKI
71.4. Comandos da BKI
71.5. Estrutura do arquivo de bootstrap BKI
71.6. Exemplo da BKI

O PostgreSQL usa muitos catálogos do sistema diferentes para controlar a existência e as propriedades de objetos de banco de dados, como tabelas e funções. Fisicamente não há diferença entre um catálogo do sistema e uma tabela de usuário simples, mas o código C do processo servidor conhece a estrutura e as propriedades de cada catálogo, podendo manipulá-lo diretamente em um nível baixo. Assim, por exemplo, não é aconselhável tentar alterar a estrutura de um catálogo em tempo real; isso quebraria as suposições construídas no código C sobre como as linhas do catálogo são dispostas. Mas a estrutura dos catálogos pode mudar entre versões principais.

As estruturas dos catálogos são declaradas em arquivos de cabeçalho C especialmente formatados no diretório src/include/catalog/ da árvore do código-fonte. Para cada catálogo há um arquivo de cabeçalho com o nome do catálogo (por exemplo, pg_class.h para pg_class), que define o conjunto de colunas que o catálogo possui, bem como algumas outras propriedades básicas, como seu OID.

Muitos dos catálogos possuem dados iniciais que devem ser carregados neles durante a fase de bootstrap (autoinício) do initdb, para levar o sistema a um ponto em que seja capaz de executar comandos SQL. (Por exemplo, pg_class.h deve conter uma entrada para si mesmo, bem como uma para cada outro catálogo e índice do sistema.) Esses dados iniciais são mantidos em formato editável em arquivos de dados que também são armazenados no diretório src/include/catalog/. Por exemplo, pg_proc.dat descreve todas as linhas iniciais que devem ser inseridas no catálogo pg_proc.

Para criar os arquivos do catálogo e carregar esses dados iniciais neles, um processo servidor rodando em modo bootstrap lê o arquivo BKI (Backend Interface) contendo comandos e dados iniciais. O arquivo postgres.bki usado nesse modo é preparado a partir dos arquivos de cabeçalho e de dados mencionados acima, durante a construção de uma distribuição do PostgreSQL, por um script Perl chamado genbki.pl. Embora seja específico para uma versão específica do PostgreSQL, o arquivo postgres.bki é independente de plataforma, sendo instalado no subdiretório share da árvore de instalação.

O arquivo genbki.pl também produz um arquivo de cabeçalho derivado para cada catálogo, por exemplo, pg_class_d.h para o catálogo pg_class. Esse arquivo contém definições de macro geradas automaticamente e pode conter outras macros, declarações de enum e assim por diante que podem ser úteis para o código C do cliente que lê um catálogo específico.

A maioria dos desenvolvedores do PostgreSQL não precisa se preocupar diretamente com o arquivo BKI, mas quase qualquer adição de recurso não trivial no processo servidor exigirá a modificação dos arquivos de cabeçalho do catálogo e/ou arquivos de dados iniciais. O restante desse capítulo fornece algumas informações sobre isso e, para completar, descreve o formato do arquivo BKI.

Contato

CSS válido!