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

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

Содержание

40. Расширение SQL
40.1. Как реализована расширяемость
40.2. Система типов Postgres Pro
40.3. Пользовательские функции
40.4. Пользовательские процедуры
40.5. Функции на языке запросов (SQL)
40.6. Перегрузка функций
40.7. Категории изменчивости функций
40.8. Функции на процедурных языках
40.9. Внутренние функции
40.10. Функции на языке C
40.11. Информация для оптимизации функций
40.12. Пользовательские агрегатные функции
40.13. Пользовательские типы
40.14. Пользовательские операторы
40.15. Информация для оптимизации операторов
40.16. Интерфейсы расширений для индексов
40.17. Упаковывание связанных объектов в расширение
40.18. Инфраструктура сборки расширений
41. Триггеры
41.1. Обзор механизма работы триггеров
41.2. Видимость изменений в данных
41.3. Триггерные функции на языке C
41.4. Полный пример триггера
42. Триггеры событий
42.1. Обзор механизма работы триггеров событий
42.2. Матрица срабатывания триггеров событий
42.3. Триггерные функции событий на языке C
42.4. Полный пример триггера события
42.5. Пример событийного триггера, обрабатывающего перезапись таблицы
42.6. Пример событийного триггера, обрабатывающего вход в базу данных
43. Система правил
43.1. Дерево запроса
43.2. Система правил и представления
43.3. Материализованные представления
43.4. Правила для INSERT, UPDATE и DELETE
43.5. Правила и права
43.6. Правила и статус команд
43.7. Сравнение правил и триггеров
44. Процедурные языки
44.1. Установка процедурных языков
45. PL/pgSQL — процедурный язык SQL
45.1. Обзор
45.2. Структура PL/pgSQL
45.3. Объявления
45.4. Выражения
45.5. Основные операторы
45.6. Управляющие структуры
45.7. Курсоры
45.8. Управление транзакциями
45.9. Сообщения и ошибки
45.10. Триггерные функции
45.11. Пакеты
45.12. PL/pgSQL изнутри
45.13. Советы по разработке на PL/pgSQL
45.14. Портирование из Oracle PL/SQL
46. PL/Tcl — процедурный язык Tcl
46.1. Обзор
46.2. Функции на PL/Tcl и их аргументы
46.3. Значения данных в PL/Tcl
46.4. Глобальные данные в PL/Tcl
46.5. Обращение к базе данных из PL/Tcl
46.6. Триггерные функции на PL/Tcl
46.7. Функции событийных триггеров в PL/Tcl
46.8. Обработка ошибок в PL/Tcl
46.9. Явные подтранзакции в PL/Tcl
46.10. Управление транзакциями
46.11. Конфигурация PL/Tcl
46.12. Имена процедур Tcl
47. PL/Perl — процедурный язык Perl
47.1. Функции на PL/Perl и их аргументы
47.2. Значения в PL/Perl
47.3. Встроенные функции
47.4. Глобальные значения в PL/Perl
47.5. Доверенный и недоверенный PL/Perl
47.6. Триггеры на PL/Perl
47.7. Событийные триггеры на PL/Perl
47.8. Внутренние особенности PL/Perl
48. PL/Python — процедурный язык Python
48.1. Функции на PL/Python
48.2. Значения данных
48.3. Совместное использование данных
48.4. Анонимные блоки кода
48.5. Триггерные функции
48.6. Обращение к базе данных
48.7. Явные подтранзакции
48.8. Управление транзакциями
48.9. Вспомогательные функции
48.10. Python 2 и Python 3
48.11. Переменные окружения
49. Интерфейс программирования сервера
49.1. Интерфейсные функции
49.2. Вспомогательные интерфейсные функции
49.3. Управление памятью
49.4. Управление транзакциями
49.5. Видимость изменений в данных
49.6. Примеры
50. Фоновые рабочие процессы
51. Логическое декодирование
51.1. Примеры логического декодирования
51.2. Концепции логического декодирования
51.3. Интерфейс протокола потоковой репликации
51.4. Интерфейс логического декодирования на уровне SQL
51.5. Системные каталоги, связанные с логическим декодированием
51.6. Модули вывода логического декодирования
51.7. Запись вывода логического декодирования
51.8. Поддержка синхронной репликации для логического декодирования
51.9. Передача больших транзакций для логического декодирования
51.10. Поддержка двухфазной фиксации для логического декодирования
52. Отслеживание прогресса репликации
53. Модули архивирования
53.1. Функции инициализации
53.2. Обработчики модулей архивирования