Capítulo 31. Estendendo a linguagem SQL

Sumário
31.1. Como funciona a capacidade de extensão
31.2. O sistema de tipos de dado do PostgreSQL
31.2.1. Tipos base
31.2.2. Tipos compostos
31.2.3. Domínios
31.2.4. Pseudotipos
31.2.5. Tipos polimórficos
31.3. Funções definidas pelo usuário
31.4. Funções na linguagem de comando (SQL)
31.4.1. Funções SQL com tipos base
31.4.2. Funções SQL com tipos compostos
31.4.3. Funções SQL como fontes de tabela
31.4.4. Funções SQL que retornam conjunto
31.4.5. Funções SQL polimórficas
31.5. Sobrecarga de função
31.6. Categorias de volatilidade de função
31.7. Funções nas linguagens procedurais
31.8. Funções internas
31.9. Funções na linguagem C
31.9.1. Carregamento dinâmico
31.9.2. Tipos base em funções na linguagem C
31.9.3. Convenções de chamada Versão-0 para funções na linguagem C
31.9.4. Convenções de chamada Versão-1 para as funções na linguagem C
31.9.5. Escrita de código
31.9.6. Compilar e ligar as funções carregadas dinamicamente
31.9.7. Infraestrutura de construção de extensão
31.9.8. Argumentos de tipo composto em funções na linguagem C
31.9.9. Retorno de linhas (tipos compostos) por funções na linguagem C
31.9.10. Retorno de conjunto a partir de funções na linguagem C
31.9.11. Tipos polimórficos em argumentos e retorno
31.9.12. Exemplos de funções escritas em C
31.10. Agregações definidas pelo usuário
31.11. Tipos definidos pelo usuário
31.12. Operadores definidos pelo usuário
31.13. Informações de otimização do operador
31.13.1. COMMUTATOR
31.13.2. NEGATOR
31.13.3. RESTRICT
31.13.4. JOIN
31.13.5. HASHES
31.13.6. MERGES (SORT1, SORT2, LTCMP, GTCMP)
31.14. Interfacing Extensions To Indexes
31.14.1. Index Methods and Operator Classes
31.14.2. Index Method Strategies
31.14.3. Index Method Support Routines
31.14.4. An Example
31.14.5. Cross-Data-Type Operator Classes
31.14.6. System Dependencies on Operator Classes
31.14.7. Special Features of Operator Classes

Nas próximas seções será mostrado como se pode estender a linguagem de comandos SQL do PostgreSQL pela adição de:

31.1. Como funciona a capacidade de extensão

O PostgreSQL pode ser estendido, porque sua operação é dirigida pelo catálogo (catalog-driven). Quem está familiarizado com sistemas de banco de dados relacionais padrão com certeza sabe que estes armazenam informações sobre bancos de dados, tabelas, colunas, etc., no que é comumente conhecido por catálogos do sistema (Alguns sistemas chamam de dicionário de dados). Os catálogos são vistos pelo usuário como qualquer outra tabela, mas o SGBD armazena suas informações internas nestas tabelas. Uma diferença chave entre o PostgreSQL e os sistemas de banco de dados relacionais padrão é que o PostgreSQL armazena muito mais informação em seus catálogos: não apenas informações sobre tabelas e colunas, mas também informações sobre tipos de dado, funções, métodos de acesso, etc. Estas tabelas podem ser modificadas pelo usuário e, uma vez que as operações do PostgreSQL são baseadas nestas tabelas, isto significa que o PostgreSQL pode ser estendido pelos usuários. Em comparação, os sistemas de banco de dados convencionais só podem ser estendidos alterando os procedimentos presentes no código fonte, ou pela carga de módulos escritos pelo fornecedor do SGBD.

Além disso, o servidor PostgreSQL pode incorporar código escrito pelo usuário através de carregamento dinâmico, ou seja, o usuário especifica um arquivo contendo código objeto (por exemplo, uma biblioteca compartilhada implementando um novo tipo de dado ou função), e o PostgreSQL fará a carga deste módulo quando houver necessidade. O código escrito na linguagem SQL é ainda mais simples de ser adicionado ao servidor. Esta capacidade de modificar sua operação "em tempo de execução" (on the fly) torna o PostgreSQL especialmente indicado para a prototipação rápida de novos aplicativos e estruturas de armazenamento.

SourceForge.net Logo CSS válido!