Capítulo 36. Estendendo o SQL

Índice

36.1. Como funciona a extensibilidade
36.2. O sistema de tipos de dados do PostgreSQL
36.2.1. Tipos de dados base
36.2.2. Tipos de dados contenedores
36.2.3. Domínios
36.2.4. Pseudo tipos de dados
36.2.5. Tipos de dados polimórficos
36.3. Funções definidas pelo usuário
36.4. Procedimentos definidos pelo usuário
36.5. Funções na linguagem de consulta (SQL)
36.5.1. Argumentos para funções SQL
36.5.2. Funções SQL com tipos de dados base
36.5.3. Funções SQL com tipos de dados compostos
36.5.4. Funções SQL com parâmetros de saída
36.5.5. Procedimentos SQL com parâmetros de saída
36.5.6. Funções SQL com número variável de argumentos
36.5.7. Funções SQL com valor padrão para argumentos
36.5.8. Funções SQL como fonte de tabela
36.5.9. Funções SQL retornando conjuntos
36.5.10. Funções SQL retornando TABLE
36.5.11. Funções SQL polimórficas
36.5.12. Funções SQL com ordenação
36.6. Sobrecarga de função
36.7. Categorias de volatilidade de função
36.8. Funções em linguagem procedural
36.9. Funções internas
36.10. Funções na linguagem C
36.10.1. Carregamento dinâmico
36.10.2. Tipos de dados base em funções na linguagem C
36.10.3. Convenções de chamada versão 1
36.10.4. Escrita de código
36.10.5. Compilação e ligação de funções carregadas dinamicamente
36.10.6. Orientações sobre a estabilidade da API e da ABI do servidor
36.10.7. Argumentos de tipo de dados composto
36.10.8. Retorno de linhas (tipos compostos)
36.10.9. Retorno de conjuntos
36.10.10. Argumentos polimórficos e tipos de dados de retorno
36.10.11. Memória compartilhada
36.10.12. LWLocks
36.10.13. Eventos de espera personalizados
36.10.14. Pontos de injeção
36.10.15. Estatísticas cumulativas personalizadas
36.10.16. Uso do C++ para extensibilidade
36.11. Informação de otimização de função
36.12. Agregações definidas pelo usuário
36.12.1. Modo de agregação móvel
36.12.2. Agregações polimórficas e variádicas
36.12.3. Agregações de conjunto ordenado
36.12.4. Agregação parcial
36.12.5. Funções de suporte para agregação
36.13. Tipos de dados definidos pelo usuário
36.13.1. Considerações sobre TOAST
36.14. Operadores definidos pelo usuário
36.15. Informações de otimização do operador
36.15.1. COMMUTATOR
36.15.2. NEGATOR
36.15.3. RESTRICT
36.15.4. JOIN
36.15.5. HASHES
36.15.6. MERGES
36.16. Interligação de extensões a índices
36.16.1. Métodos de índice e classes de operador
36.16.2. Estratégias de método de índice
36.16.3. Rotinas de suporte a método de índice
36.16.4. Exemplo
36.16.5. Classes de operador e famílias de operador
36.16.6. Dependências do sistema em relação às classes de operador
36.16.7. Operadores de ordenação
36.16.8. Funcionalidades especiais das classes de operador
36.17. Empacotamento de objetos relacionados em uma extensão
36.17.1. Arquivos da extensão
36.17.2. Relocabilidade de extensão
36.17.3. Tabelas de configuração de extensão
36.17.4. Atualizações de extensão
36.17.5. Instalação de extensão usando scripts de atualização
36.17.6. Considerações sobre segurança para extensões
36.17.7. Exemplo de extensão
36.18. Infraestrutura para construção de extensão

Nas próximas seções é mostrado como estender a linguagem de consulta SQL do PostgreSQL adicionando: