Part V. Programación del servidor

Esta parte trata sobre la extensión de la funcionalidad del servidor con funciones definidas por el usuario, tipos de datos, disparadores (triggers), etc. Estos son temas avanzados que deben abordarse solo después de haber comprendido toda la demás documentación de usuario sobre PostgreSQL. Los capítulos posteriores de esta parte describen los lenguajes de programación del lado del servidor disponibles en la distribución de PostgreSQL, así como temas generales relacionados con la programación del lado del servidor. Es fundamental leer al menos las secciones anteriores de Chapter 36 (que cubren las funciones) antes de sumergirse en el material sobre programación del lado del servidor.

Table of Contents

36. Extender SQL
36.1. Cómo funciona la extensibilidad
36.2. El sistema de tipos de PostgreSQL
36.3. Funciones definidas por el usuario
36.4. Procedimientos definidos por el usuario
36.5. Funciones del lenguaje de consulta (SQL)
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.11. Información de optimización de funciones
36.12. Agregados definidos por el usuario
36.13. Tipos definidos por el usuario
36.14. Operadores definidos por el usuario
36.15. Información de optimización de operadores
36.16. Acoplamiento de extensiones a índices
36.17. Empaquetar objetos relacionados en una extensión
36.18. Infraestructura de compilación de extensiones
37. Disparadores (Triggers)
37.1. Descripción general del comportamiento de los disparadores
37.2. Visibilidad de los cambios de datos
37.3. Escribir funciones de disparo en C
37.4. Un ejemplo completo de disparador
38. Disparadores de eventos
38.1. Descripción general del comportamiento de los disparadores de eventos
38.2. Escritura de funciones de disparador de eventos en C
38.3. Un ejemplo completo de disparador de eventos
38.4. Ejemplo de disparador de eventos de reescritura de tabla
38.5. Ejemplo de disparador de eventos de inicio de sesión de base de datos
39. El sistema de reglas
39.1. El árbol de consulta
39.2. Vistas y el sistema de reglas
39.3. Vistas materializadas
39.4. Reglas para INSERT, UPDATE y DELETE
39.5. Reglas y privilegios
39.6. Reglas y estado de los comandos
39.7. Reglas frente a disparadores (triggers)
40. Lenguajes procedimentales
40.1. Instalación de lenguajes procedimentales
41. PL/pgSQL — Lenguaje procedimental SQL
41.1. Descripción general
41.2. Estructura de PL/pgSQL
41.3. Declaraciones
41.4. Expresiones
41.5. Instrucciones básicas
41.6. Estructuras de control
41.7. Cursores
41.8. Gestión de transacciones
41.9. Errores y mensajes
41.10. Funciones disparadoras (triggers)
41.11. PL/pgSQL bajo el capó
41.12. Consejos para desarrollar en PL/pgSQL
41.13. Migración desde Oracle PL/SQL
42. PL/Tcl — Lenguaje procedimental Tcl
42.1. Introducción
42.2. Funciones y argumentos en PL/Tcl
42.3. Valores de datos en PL/Tcl
42.4. Datos globales en PL/Tcl
42.5. Acceso a la base de datos desde PL/Tcl
42.6. Funciones de disparo (Triggers) en PL/Tcl
42.7. Funciones de disparo de eventos en PL/Tcl
42.8. Manejo de errores en PL/Tcl
42.9. Subtransacciones explícitas en PL/Tcl
42.10. Gestión de transacciones
42.11. Configuración de PL/Tcl
42.12. Nombres de procedimientos de Tcl
43. PL/Perl — Lenguaje procedimental Perl
43.1. Funciones y argumentos de PL/Perl
43.2. Valores de datos en PL/Perl
43.3. Funciones incorporadas
43.4. Valores globales en PL/Perl
43.5. PL/Perl de confianza (trusted) y sin confianza (untrusted)
43.6. Disparadores (Triggers) de PL/Perl
43.7. Disparadores de eventos (Event Triggers) de PL/Perl
43.8. PL/Perl bajo el capó
44. PL/Python — Lenguaje procedimental Python
44.1. Funciones PL/Python
44.2. Valores de datos
44.3. Compartir datos
44.4. Bloques de código anónimos
44.5. Funciones de disparo (Triggers)
44.6. Acceso a la base de datos
44.7. Subtransacciones explícitas
44.8. Gestión de transacciones
44.9. Funciones de utilidad
44.10. Python 2 vs. Python 3
44.11. Variables de entorno
45. Server Programming Interface
45.1. Funciones de interfaz
45.2. Funciones de soporte de la interfaz
45.3. Gestión de memoria
45.4. Gestión de transacciones
45.5. Visibilidad de los cambios de datos
45.6. Ejemplos
46. Procesos de soporte en segundo plano (Background Workers)
47. Decodificación lógica
47.1. Ejemplos de decodificación lógica
47.2. Conceptos de decodificación lógica
47.3. Interfaz del protocolo de replicación en flujo
47.4. Interfaz SQL de decodificación lógica
47.5. Catálogos del sistema relacionados con la decodificación lógica
47.6. Plugins de salida de decodificación lógica
47.7. Escritores de salida de decodificación lógica
47.8. Soporte de replicación síncrona para la decodificación lógica
47.9. Transmisión de transacciones grandes para la decodificación lógica
47.10. Soporte de confirmación en dos fases para la decodificación lógica
48. Seguimiento del progreso de la replicación
49. Módulos de archivado
49.1. Funciones de inicialización
49.2. Retrollamadas del módulo de archivado
50. Módulos de validación de OAuth
50.1. Diseñar de forma segura un módulo validador
50.2. Funciones de inicialización
50.3. Devoluciones de llamada del validador de OAuth