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

Содержание

37.1. Как реализована расширяемость
37.2. Система типов Postgres Pro
37.2.1. Базовые типы
37.2.2. Типы-контейнеры
37.2.3. Домены
37.2.4. Псевдотипы
37.2.5. Полиморфные типы
37.3. Пользовательские функции
37.4. Пользовательские процедуры
37.5. Функции на языке запросов (SQL)
37.5.1. Аргументы SQL-функций
37.5.2. Функции SQL с базовыми типами
37.5.3. Функции SQL с составными типами
37.5.4. Функции SQL с выходными параметрами
37.5.5. Процедуры SQL с выходными параметрами
37.5.6. Функции SQL с переменным числом аргументов
37.5.7. Функции SQL со значениями аргументов по умолчанию
37.5.8. Функции SQL, порождающие таблицы
37.5.9. Функции SQL, возвращающие множества
37.5.10. Функции SQL, возвращающие таблицы (TABLE)
37.5.11. Полиморфные функции SQL
37.5.12. Функции SQL с правилами сортировки
37.6. Перегрузка функций
37.7. Категории изменчивости функций
37.8. Функции на процедурных языках
37.9. Внутренние функции
37.10. Функции на языке C
37.10.1. Динамическая загрузка
37.10.2. Базовые типы в функциях на языке C
37.10.3. Соглашение о вызовах версии 1
37.10.4. Написание кода
37.10.5. Компиляция и компоновка динамически загружаемых функций
37.10.6. Аргументы составного типа
37.10.7. Возврат строк (составных типов)
37.10.8. Возврат множеств
37.10.9. Полиморфные типы аргументов и результата
37.10.10. Разделяемая память и лёгкие блокировки
37.10.11. Использование C++ для расширяемости
37.11. Информация для оптимизации функций
37.12. Пользовательские агрегатные функции
37.12.1. Режим движущегося агрегата
37.12.2. Агрегатные функции с полиморфными и переменными аргументами
37.12.3. Сортирующие агрегатные функции
37.12.4. Частичное агрегирование
37.12.5. Вспомогательные функции для агрегатов
37.13. Пользовательские типы
37.14. Пользовательские операторы
37.15. Информация для оптимизации операторов
37.15.1. COMMUTATOR
37.15.2. NEGATOR
37.15.3. RESTRICT
37.15.4. JOIN
37.15.5. HASHES
37.15.6. MERGES
37.16. Интерфейсы расширений для индексов
37.16.1. Методы индексов и классы операторов
37.16.2. Стратегии методов индексов
37.16.3. Опорные процедуры метода индекса
37.16.4. Пример
37.16.5. Семейства и классы операторов
37.16.6. Системные зависимости от классов операторов
37.16.7. Операторы упорядочивания
37.16.8. Особенности классов операторов
37.17. Упаковка связанных объектов в расширение
37.17.1. Файлы расширений
37.17.2. Перемещаемость расширений
37.17.3. Конфигурационные таблицы расширений
37.17.4. Обновление расширений
37.17.5. Установка расширений скриптами обновления
37.17.6. Замечания о безопасности расширений
37.17.7. Пример расширения
37.18. Инфраструктура сборки расширений

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

Chapter 37. Extending SQL

Table of Contents

37.1. How Extensibility Works
37.2. The Postgres Pro Type System
37.2.1. Base Types
37.2.2. Container Types
37.2.3. Domains
37.2.4. Pseudo-Types
37.2.5. Polymorphic Types
37.3. User-Defined Functions
37.4. User-Defined Procedures
37.5. Query Language (SQL) Functions
37.5.1. Arguments for SQL Functions
37.5.2. SQL Functions on Base Types
37.5.3. SQL Functions on Composite Types
37.5.4. SQL Functions with Output Parameters
37.5.5. SQL Procedures with Output Parameters
37.5.6. SQL Functions with Variable Numbers of Arguments
37.5.7. SQL Functions with Default Values for Arguments
37.5.8. SQL Functions as Table Sources
37.5.9. SQL Functions Returning Sets
37.5.10. SQL Functions Returning TABLE
37.5.11. Polymorphic SQL Functions
37.5.12. SQL Functions with Collations
37.6. Function Overloading
37.7. Function Volatility Categories
37.8. Procedural Language Functions
37.9. Internal Functions
37.10. C-Language Functions
37.10.1. Dynamic Loading
37.10.2. Base Types in C-Language Functions
37.10.3. Version 1 Calling Conventions
37.10.4. Writing Code
37.10.5. Compiling and Linking Dynamically-Loaded Functions
37.10.6. Composite-Type Arguments
37.10.7. Returning Rows (Composite Types)
37.10.8. Returning Sets
37.10.9. Polymorphic Arguments and Return Types
37.10.10. Shared Memory and LWLocks
37.10.11. Using C++ for Extensibility
37.11. Function Optimization Information
37.12. User-Defined Aggregates
37.12.1. Moving-Aggregate Mode
37.12.2. Polymorphic and Variadic Aggregates
37.12.3. Ordered-Set Aggregates
37.12.4. Partial Aggregation
37.12.5. Support Functions for Aggregates
37.13. User-Defined Types
37.14. User-Defined Operators
37.15. Operator Optimization Information
37.15.1. COMMUTATOR
37.15.2. NEGATOR
37.15.3. RESTRICT
37.15.4. JOIN
37.15.5. HASHES
37.15.6. MERGES
37.16. Interfacing Extensions to Indexes
37.16.1. Index Methods and Operator Classes
37.16.2. Index Method Strategies
37.16.3. Index Method Support Routines
37.16.4. An Example
37.16.5. Operator Classes and Operator Families
37.16.6. System Dependencies on Operator Classes
37.16.7. Ordering Operators
37.16.8. Special Features of Operator Classes
37.17. Packaging Related Objects into an Extension
37.17.1. Extension Files
37.17.2. Extension Relocatability
37.17.3. Extension Configuration Tables
37.17.4. Extension Updates
37.17.5. Installing Extensions Using Update Scripts
37.17.6. Security Considerations for Extensions
37.17.7. Extension Example
37.18. Extension Building Infrastructure

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

FAQ