Часть V. Серверное программирование

Эта часть документации посвящена расширению функциональности сервера путём реализации собственных функций, типов данных, триггеров и т. д. Это довольно сложные темы, для освоения которых рекомендуется предварительно изучить и понять всю остальную документацию для пользователей PostgreSQL. В последних главах этой части описываются языки программирования на стороне сервера, поддерживаемые дистрибутивом PostgreSQL, и рассматриваются общие вопросы, связанные с программированием на стороне сервера. Но прежде чем погружаться в этот материал, важно изучить предыдущие разделы Главы 36 (где освещаются функции).

Содержание

36. Расширение SQL
36.1. Как реализована расширяемость
36.2. Система типов PostgreSQL
36.3. Пользовательские функции
36.4. Функции на языке запросов (SQL)
36.5. Перегрузка функций
36.6. Категории изменчивости функций
36.7. Функции на процедурных языках
36.8. Внутренние функции
36.9. Функции на языке C
36.10. Пользовательские агрегатные функции
36.11. Пользовательские типы
36.12. Пользовательские операторы
36.13. Информация для оптимизации операторов
36.14. Интерфейсы расширений для индексов
36.15. Упаковывание связанных объектов в расширение
36.16. Инфраструктура сборки расширений
37. Триггеры
37.1. Обзор механизма работы триггеров
37.2. Видимость изменений в данных
37.3. Триггерные функции на языке C
37.4. Полный пример триггера
38. Триггеры событий
38.1. Обзор механизма работы триггеров событий
38.2. Матрица срабатывания триггеров событий
38.3. Триггерные функции событий на языке C
38.4. Полный пример триггера события
38.5. Пример событийного триггера, обрабатывающего перезапись таблицы
39. Система правил
39.1. Дерево запроса
39.2. Система правил и представления
39.3. Материализованные представления
39.4. Правила для INSERT, UPDATE и DELETE
39.5. Правила и права
39.6. Правила и статус команд
39.7. Сравнение правил и триггеров
40. Процедурные языки
40.1. Установка процедурных языков
41. PL/pgSQL — процедурный язык SQL
41.1. Обзор
41.2. Структура PL/pgSQL
41.3. Объявления
41.4. Выражения
41.5. Основные операторы
41.6. Управляющие структуры
41.7. Курсоры
41.8. Сообщения и ошибки
41.9. Триггерные процедуры
41.10. PL/pgSQL изнутри
41.11. Советы по разработке на PL/pgSQL
41.12. Портирование из Oracle PL/SQL
42. PL/Tcl — процедурный язык Tcl
42.1. Обзор
42.2. Функции на PL/Tcl и их аргументы
42.3. Значения данных в PL/Tcl
42.4. Глобальные данные в PL/Tcl
42.5. Обращение к базе данных из PL/Tcl
42.6. Процедуры триггеров на PL/Tcl
42.7. Процедуры событийных триггеров в PL/Tcl
42.8. Обработка ошибок в PL/Tcl
42.9. Модули и команда unknown
42.10. Имена процедур Tcl
43. PL/Perl — процедурный язык Perl
43.1. Функции на PL/Perl и их аргументы
43.2. Значения в PL/Perl
43.3. Встроенные функции
43.4. Глобальные значения в PL/Perl
43.5. Доверенный и недоверенный PL/Perl
43.6. Триггеры на PL/Perl
43.7. Событийные триггеры на PL/Perl
43.8. Внутренние особенности PL/Perl
44. PL/Python — процедурный язык Python
44.1. Python 2 и Python 3
44.2. Функции на PL/Python
44.3. Значения данных
44.4. Совместное использование данных
44.5. Анонимные блоки кода
44.6. Триггерные функции
44.7. Обращение к базе данных
44.8. Явные подтранзакции
44.9. Вспомогательные функции
44.10. Переменные окружения
45. Интерфейс программирования сервера
45.1. Интерфейсные функции
45.2. Вспомогательные интерфейсные функции
45.3. Управление памятью
45.4. Видимость изменений в данных
45.5. Примеры
46. Фоновые рабочие процессы
47. Логическое декодирование
47.1. Примеры логического декодирования
47.2. Концепции логического декодирования
47.3. Интерфейс протокола потоковой репликации
47.4. Интерфейс логического декодирования на уровне SQL
47.5. Системные каталоги, связанные с логическим декодированием
47.6. Модули вывода логического декодирования
47.7. Запись вывода логического декодирования
47.8. Поддержка синхронной репликации для логического декодирования
48. Отслеживание прогресса репликации