Chapter 36. Extender SQL

Table of Contents

36.1. Cómo funciona la extensibilidad
36.2. El sistema de tipos de PostgreSQL
36.2.1. Tipos base
36.2.2. Tipos contenedores
36.2.3. Dominios
36.2.4. Pseudotipos
36.2.5. Tipos polimórficos
36.3. Funciones definidas por el usuario
36.4. Procedimientos definidos por el usuario
36.5. Funciones del lenguaje de consulta (SQL)
36.5.1. Argumentos para funciones SQL
36.5.2. Funciones SQL en tipos base
36.5.3. Funciones SQL en tipos compuestos
36.5.4. Funciones SQL con parámetros de salida
36.5.5. Procedimientos SQL con parámetros de salida
36.5.6. Funciones SQL con un número variable de argumentos
36.5.7. Funciones SQL con valores por omisión para argumentos
36.5.8. Funciones SQL como fuentes de tabla
36.5.9. Funciones SQL que devuelven conjuntos
36.5.10. Funciones SQL que devuelven TABLE
36.5.11. Funciones SQL polimórficas
36.5.12. Funciones SQL con ordenamientos (collations)
36.6. Sobrecarga de funciones
36.7. Categorías de volatilidad de las funciones
36.8. Funciones de lenguajes procedimentales
36.9. Funciones internas
36.10. Funciones en lenguaje C
36.10.1. Carga dinámica
36.10.2. Tipos base en funciones en lenguaje C
36.10.3. Convenciones de llamada de la versión 1
36.10.4. Escritura de código
36.10.5. Compilación y enlace de funciones cargadas dinámicamente
36.10.6. Guía de estabilidad de la API y ABI del servidor
36.10.7. Argumentos de tipo compuesto
36.10.8. Devolución de filas (tipos compuestos)
36.10.9. Devolución de conjuntos
36.10.10. Argumentos polimórficos y tipos de retorno
36.10.11. Memoria compartida
36.10.12. LWLocks
36.10.13. Eventos de espera personalizados
36.10.14. Puntos de inyección (injection points)
36.10.15. Estadísticas acumulativas personalizadas
36.10.16. Uso de C++ para extensibilidad
36.11. Información de optimización de funciones
36.12. Agregados definidos por el usuario
36.12.1. Modo de agregado móvil (Moving-Aggregate)
36.12.2. Agregados polimórficos y variádicos
36.12.3. Agregados de conjunto ordenado (Ordered-Set)
36.12.4. Agregación parcial
36.12.5. Funciones de soporte para agregados
36.13. Tipos definidos por el usuario
36.13.1. Consideraciones sobre TOAST
36.14. Operadores definidos por el usuario
36.15. Información de optimización de operadores
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. Acoplamiento de extensiones a índices
36.16.1. Métodos de indexación y clases de operadores
36.16.2. Estrategias de los métodos de indexación
36.16.3. Rutinas de soporte de los métodos de indexación
36.16.4. Un ejemplo
36.16.5. Clases de operadores y familias de operadores
36.16.6. Dependencias del sistema respecto a las clases de operadores
36.16.7. Operadores de ordenación
36.16.8. Características especiales de las clases de operadores
36.17. Empaquetar objetos relacionados en una extensión
36.17.1. Archivos de extensión
36.17.2. Reubicación de extensiones
36.17.3. Tablas de configuración de extensiones
36.17.4. Actualizaciones de extensiones
36.17.5. Instalación de extensiones utilizando scripts de actualización
36.17.6. Consideraciones de seguridad para extensiones
36.17.7. Ejemplo de extensión
36.18. Infraestructura de compilación de extensiones

En las secciones siguientes, analizaremos cómo puedes extender el lenguaje de consultas SQL de PostgreSQL agregando: