Глава 39. Расширение SQL

Содержание

39.1. Как реализована расширяемость
39.2. Система типов Postgres Pro
39.2.1. Базовые типы
39.2.2. Типы-контейнеры
39.2.3. Домены
39.2.4. Псевдотипы
39.2.5. Полиморфные типы
39.3. Пользовательские функции
39.4. Пользовательские процедуры
39.5. Функции на языке запросов (SQL)
39.5.1. Аргументы SQL-функций
39.5.2. Функции SQL с базовыми типами
39.5.3. Функции SQL со сложными типами
39.5.4. Функции SQL с выходными параметрами
39.5.5. Функции SQL с переменным числом аргументов
39.5.6. Функции SQL со значениями аргументов по умолчанию
39.5.7. Функции SQL, порождающие таблицы
39.5.8. Функции SQL, возвращающие множества
39.5.9. Функции SQL, возвращающие таблицы (TABLE)
39.5.10. Полиморфные функции SQL
39.5.11. Функции SQL с правилами сортировки
39.6. Перегрузка функций
39.7. Категории изменчивости функций
39.8. Функции на процедурных языках
39.9. Внутренние функции
39.10. Функции на языке C
39.10.1. Динамическая загрузка
39.10.2. Базовые типы в функциях на языке C
39.10.3. Соглашение о вызовах версии 1
39.10.4. Написание кода
39.10.5. Компиляция и компоновка динамически загружаемых функций
39.10.6. Аргументы составного типа
39.10.7. Возврат строк (составных типов)
39.10.8. Возврат множеств
39.10.9. Полиморфные типы аргументов и результата
39.10.10. Функции преобразования
39.10.11. Разделяемая память и лёгкие блокировки
39.10.12. Использование C++ для расширяемости
39.11. Пользовательские агрегатные функции
39.11.1. Режим движущегося агрегата
39.11.2. Агрегатные функции с полиморфными и переменными аргументами
39.11.3. Сортирующие агрегатные функции
39.11.4. Частичное агрегирование
39.11.5. Вспомогательные функции для агрегатов
39.12. Пользовательские типы
39.13. Пользовательские операторы
39.14. Информация для оптимизации операторов
39.14.1. COMMUTATOR
39.14.2. NEGATOR
39.14.3. RESTRICT
39.14.4. JOIN
39.14.5. HASHES
39.14.6. MERGES
39.15. Интерфейсы расширений для индексов
39.15.1. Методы индексов и классы операторов
39.15.2. Стратегии методов индексов
39.15.3. Опорные процедуры метода индекса
39.15.4. Пример
39.15.5. Семейства и классы операторов
39.15.6. Системные зависимости от классов операторов
39.15.7. Операторы упорядочивания
39.15.8. Особенности классов операторов
39.16. Упаковывание связанных объектов в расширение
39.16.1. Файлы расширений
39.16.2. Перемещаемость расширений
39.16.3. Конфигурационные таблицы расширений
39.16.4. Обновление расширений
39.16.5. Установка расширений скриптами обновления
39.16.6. Замечания о безопасности расширений
39.16.7. Пример расширения
39.17. Инфраструктура сборки расширений

В следующих разделах мы обсудим, как в Postgres Pro можно расширять язык запросов SQL, добавляя собственные:

Chapter 39. Extending SQL

Table of Contents

39.1. How Extensibility Works
39.2. The Postgres Pro Type System
39.2.1. Base Types
39.2.2. Container Types
39.2.3. Domains
39.2.4. Pseudo-Types
39.2.5. Polymorphic Types
39.3. User-defined Functions
39.4. User-defined Procedures
39.5. Query Language (SQL) Functions
39.5.1. Arguments for SQL Functions
39.5.2. SQL Functions on Base Types
39.5.3. SQL Functions on Composite Types
39.5.4. SQL Functions with Output Parameters
39.5.5. SQL Functions with Variable Numbers of Arguments
39.5.6. SQL Functions with Default Values for Arguments
39.5.7. SQL Functions as Table Sources
39.5.8. SQL Functions Returning Sets
39.5.9. SQL Functions Returning TABLE
39.5.10. Polymorphic SQL Functions
39.5.11. SQL Functions with Collations
39.6. Function Overloading
39.7. Function Volatility Categories
39.8. Procedural Language Functions
39.9. Internal Functions
39.10. C-Language Functions
39.10.1. Dynamic Loading
39.10.2. Base Types in C-Language Functions
39.10.3. Version 1 Calling Conventions
39.10.4. Writing Code
39.10.5. Compiling and Linking Dynamically-loaded Functions
39.10.6. Composite-type Arguments
39.10.7. Returning Rows (Composite Types)
39.10.8. Returning Sets
39.10.9. Polymorphic Arguments and Return Types
39.10.10. Transform Functions
39.10.11. Shared Memory and LWLocks
39.10.12. Using C++ for Extensibility
39.11. User-defined Aggregates
39.11.1. Moving-Aggregate Mode
39.11.2. Polymorphic and Variadic Aggregates
39.11.3. Ordered-Set Aggregates
39.11.4. Partial Aggregation
39.11.5. Support Functions for Aggregates
39.12. User-defined Types
39.13. User-defined Operators
39.14. Operator Optimization Information
39.14.1. COMMUTATOR
39.14.2. NEGATOR
39.14.3. RESTRICT
39.14.4. JOIN
39.14.5. HASHES
39.14.6. MERGES
39.15. Interfacing Extensions To Indexes
39.15.1. Index Methods and Operator Classes
39.15.2. Index Method Strategies
39.15.3. Index Method Support Routines
39.15.4. An Example
39.15.5. Operator Classes and Operator Families
39.15.6. System Dependencies on Operator Classes
39.15.7. Ordering Operators
39.15.8. Special Features of Operator Classes
39.16. Packaging Related Objects into an Extension
39.16.1. Extension Files
39.16.2. Extension Relocatability
39.16.3. Extension Configuration Tables
39.16.4. Extension Updates
39.16.5. Installing Extensions using Update Scripts
39.16.6. Security Considerations for Extensions
39.16.7. Extension Example
39.17. Extension Building Infrastructure

In the sections that follow, we will discuss how you can extend the Postgres Pro SQL query language by adding:

FAQ