D.1. Поддерживаемые возможности
Идентификатор | Пакет | Описание | Комментарий |
---|---|---|---|
B012 | Встроенный C | ||
B021 | Непосредственный SQL | ||
E011 | Основа | Числовые типы данных | |
E011-01 | Основа | Типы данных INTEGER и SMALLINT | |
E011-02 | Основа | Типы данных REAL, DOUBLE PRECISION и FLOAT | |
E011-03 | Основа | Типы данных DECIMAL и NUMERIC | |
E011-04 | Основа | Арифметические операторы | |
E011-05 | Основа | Числовые сравнения | |
E011-06 | Основа | Неявные преобразования между числовыми типами данных | |
E021 | Основа | Символьные типы данных | |
E021-01 | Основа | Тип данных CHARACTER | |
E021-02 | Основа | Тип данных CHARACTER VARYING | |
E021-03 | Основа | Символьные строки | |
E021-04 | Основа | Функция CHARACTER_LENGTH | убирает завершающие пробелы из значений CHARACTER перед подсчётом символов |
E021-05 | Основа | Функция OCTET_LENGTH | |
E021-06 | Основа | Функция SUBSTRING | |
E021-07 | Основа | Конкатенация символьных строк | |
E021-08 | Основа | Функции UPPER и LOWER | |
E021-09 | Основа | Функция TRIM | |
E021-10 | Основа | Неявные преобразования между типами символьных строк | |
E021-11 | Основа | Функция POSITION | |
E021-12 | Основа | Сравнения символов | |
E031 | Основа | Идентификаторы | |
E031-01 | Основа | Идентификаторы с разделителями | |
E031-02 | Основа | Идентификаторы в нижнем регистре | |
E031-03 | Основа | Завершающее подчёркивание | |
E051 | Основа | Базовое определение запросов | |
E051-01 | Основа | SELECT DISTINCT | |
E051-02 | Основа | Предложение GROUP BY | |
E051-04 | Основа | GROUP BY может содержать столбцы не из <списка выборки> | |
E051-05 | Основа | Элементы списка выборки могут переименовываться | |
E051-06 | Основа | Предложение HAVING | |
E051-07 | Основа | Дополнение * в списке выборки | |
E051-08 | Основа | Корреляционные имена в предложении FROM | |
E051-09 | Основа | Переименование столбцов в предложении FROM | |
E061 | Основа | Базовые предикаты и условия поиска | |
E061-01 | Основа | Предикат сравнения | |
E061-02 | Основа | Предикат BETWEEN | |
E061-03 | Основа | Предикат IN со списком значений | |
E061-04 | Основа | Предикат LIKE | |
E061-05 | Основа | Предложение ESCAPE в предикате LIKE | |
E061-06 | Основа | Предикат NULL | |
E061-07 | Основа | Предикаты количественного сравнения | |
E061-08 | Основа | Предикат EXISTS | |
E061-09 | Основа | Подзапросы в предикате сравнения | |
E061-11 | Основа | Подзапросы в предикате IN | |
E061-12 | Основа | Подзапросы в предикате количественного сравнения | |
E061-13 | Основа | Коррелирующие подзапросы | |
E061-14 | Основа | Условие поиска | |
E071 | Основа | Простые выражения с запросами | |
E071-01 | Основа | Табличный оператор UNION DISTINCT | |
E071-02 | Основа | Табличный оператор UNION ALL | |
E071-03 | Основа | Табличный оператор EXCEPT DISTINCT | |
E071-05 | Основа | Столбцы, объединяемые табличными операторами, могут иметь разные типы данных | |
E071-06 | Основа | Табличные операторы в подзапросах | |
E081 | Основа | Основные права доступа | |
E081-01 | Основа | Право на SELECT | |
E081-02 | Основа | Право на DELETE | |
E081-03 | Основа | Право на INSERT на уровне таблицы | |
E081-04 | Основа | Право на UPDATE на уровне таблицы | |
E081-05 | Основа | Право на UPDATE на уровне столбцов | |
E081-06 | Основа | Право REFERENCES на уровне таблицы | |
E081-07 | Основа | Право REFERENCES на уровне столбцов | |
E081-08 | Основа | Предложение WITH GRANT OPTION | |
E081-09 | Основа | Право USAGE | |
E081-10 | Основа | Право на EXECUTE | |
E091 | Основа | Функции множеств | |
E091-01 | Основа | AVG | |
E091-02 | Основа | COUNT | |
E091-03 | Основа | MAX | |
E091-04 | Основа | MIN | |
E091-05 | Основа | SUM | |
E091-06 | Основа | Дополнение ALL | |
E091-07 | Основа | Дополнение DISTINCT | |
E101 | Основа | Базовая обработка данных | |
E101-01 | Основа | Оператор INSERT | |
E101-03 | Основа | Оператор UPDATE с критерием отбора | |
E101-04 | Основа | Оператор DELETE с критерием отбора | |
E111 | Основа | Оператор SELECT, возвращающий одну строку | |
E121 | Основа | Базовая поддержка курсоров | |
E121-01 | Основа | DECLARE CURSOR | |
E121-02 | Основа | Столбцы ORDER BY, отсутствующие в списке выборки | |
E121-03 | Основа | Выражения значений в предложении ORDER BY | |
E121-04 | Основа | Оператор OPEN | |
E121-06 | Основа | Оператор UPDATE с позиционированием | |
E121-07 | Основа | Оператор DELETE с позиционированием | |
E121-08 | Основа | Оператор CLOSE | |
E121-10 | Основа | Оператор FETCH с неявным NEXT | |
E121-17 | Основа | Курсоры WITH HOLD | |
E131 | Основа | Поддержка NULL (NULL вместо значений) | |
E141 | Основа | Основные ограничения целостности | |
E141-01 | Основа | Ограничения NOT NULL | |
E141-02 | Основа | Ограничения UNIQUE столбцов NOT NULL | |
E141-03 | Основа | Ограничения PRIMARY KEY | |
E141-04 | Основа | Базовое ограничение FOREIGN KEY без действия (NO ACTION) по умолчанию и для операций удаления со ссылками, и для операций изменения со ссылками | |
E141-06 | Основа | Ограничения CHECK | |
E141-07 | Основа | Значения столбцов по умолчанию | |
E141-08 | Основа | NOT NULL распространяется на PRIMARY KEY | |
E141-10 | Основа | Имена во внешнем ключе могут указываться в любом порядке | |
E151 | Основа | Поддержка транзакций | |
E151-01 | Основа | Оператор COMMIT | |
E151-02 | Основа | Оператор ROLLBACK | |
E152 | Основа | Базовый оператор SET TRANSACTION | |
E152-01 | Основа | Оператор SET TRANSACTION: предложение ISOLATION LEVEL SERIALIZABLE | |
E152-02 | Основа | Оператор SET TRANSACTION: предложения READ ONLY и READ WRITE | |
E153 | Основа | Запросы, изменяющие данные, с подзапросами | |
E161 | Основа | Комментарии SQL, начинающиеся с двух минусов | |
E171 | Основа | Поддержка SQLSTATE | |
F021 | Основа | Основная информационная схема | |
F021-01 | Основа | Представление COLUMNS | |
F021-02 | Основа | Представление TABLES | |
F021-03 | Основа | Представление VIEWS | |
F021-04 | Основа | Представление TABLE_CONSTRAINTS | |
F021-05 | Основа | Представление REFERENTIAL_CONSTRAINTS | |
F021-06 | Основа | Представление CHECK_CONSTRAINTS | |
F031 | Основа | Базовые манипуляции со схемой | |
F031-01 | Основа | Оператор CREATE TABLE создаёт хранимые основные таблицы | |
F031-02 | Основа | Представление CREATE VIEW | |
F031-03 | Основа | Оператор GRANT | |
F031-04 | Основа | Оператор ALTER TABLE: предложение ADD COLUMN | |
F031-13 | Основа | Оператор DROP TABLE: предложение RESTRICT | |
F031-16 | Основа | Оператор DROP VIEW: предложение RESTRICT | |
F031-19 | Основа | Оператор REVOKE: предложение RESTRICT | |
F032 | Каскадное удаление (CASCADE) | ||
F033 | Оператор ALTER TABLE: предложение DROP COLUMN | ||
F034 | Расширенный оператор REVOKE | ||
F034-01 | Оператор REVOKE может выполняться не только владельцем объекта схемы | ||
F034-02 | Оператор REVOKE: предложение GRANT OPTION FOR | ||
F034-03 | Оператор REVOKE отзывает право, данное субъекту с указанием WITH GRANT OPTION | ||
F041 | Основа | Базовое соединение таблиц | |
F041-01 | Основа | Внутреннее соединение (но не обязательно с ключевым словом INNER) | |
F041-02 | Основа | Ключевое слово INNER | |
F041-03 | Основа | LEFT OUTER JOIN | |
F041-04 | Основа | RIGHT OUTER JOIN | |
F041-05 | Основа | Внешние соединения могут быть вложенными | |
F041-07 | Основа | Внутренняя таблица с левой или правой стороны внешнего соединения может также участвовать во внутреннем соединении | |
F041-08 | Основа | Поддерживаются все операторы сравнения (а не только =) | |
F051 | Основа | Базовая поддержка даты и времени | |
F051-01 | Основа | Тип данных DATE (включая поддержку строк DATE) | |
F051-02 | Основа | Тип данных TIME (включая поддержку строк TIME) с точностью до секунд как минимум с 0 знаков после запятой | |
F051-03 | Основа | Тип данных TIMESTAMP (включая поддержку строк TIMESTAMP) с точностью до секунд как минимум с 0 и 6 знаками после запятой | |
F051-04 | Основа | Предикаты сравнения с типами данных DATE, TIME и TIMESTAMP | |
F051-05 | Основа | Явное приведение (CAST) между типами даты/времени и типами символьных строк | |
F051-06 | Основа | CURRENT_DATE | |
F051-07 | Основа | LOCALTIME | |
F051-08 | Основа | LOCALTIMESTAMP | |
F052 | Расширенные средства работы с датами/временем | Арифметика с интервалами и датами/временем | |
F053 | Предикат OVERLAPS | ||
F081 | Основа | UNION и EXCEPT в представлениях | |
F111 | Уровни изоляции, отличные от SERIALIZABLE | ||
F111-01 | Уровень изоляции READ UNCOMMITTED | ||
F111-02 | Уровень изоляции READ COMMITTED | ||
F111-03 | Уровень изоляции REPEATABLE READ | ||
F131 | Основа | Операции группировки | |
F131-01 | Основа | Предложения WHERE, GROUP BY и HAVING, поддерживаемые в запросах со сгруппированными представлениями | |
F131-02 | Основа | Поддержка нескольких таблиц в запросах со сгруппированными представлениями | |
F131-03 | Основа | Поддержка функций множеств в запросах со сгруппированными представлениями | |
F131-04 | Основа | Подзапросы с предложениями GROUP BY и HAVING и сгруппированные представления | |
F131-05 | Основа | SELECT, возвращающий одну строку, с предложениями GROUP BY и HAVING и сгруппированными представлениями | |
F171 | Несколько схем для одного пользователя | ||
F191 | Расширенное управление целостностью | Действия при удалении со ссылками | |
F200 | Оператор TRUNCATE TABLE | ||
F201 | Основа | Функция CAST | |
F221 | Основа | Явные значения по умолчанию | |
F222 | Оператор INSERT: предложение DEFAULT VALUES | ||
F231 | Таблицы прав | ||
F231-01 | Представление TABLE_PRIVILEGES | ||
F231-02 | Представление COLUMN_PRIVILEGES | ||
F231-03 | Представление USAGE_PRIVILEGES | ||
F251 | Поддержка доменов | ||
F261 | Основа | Выражение CASE | |
F261-01 | Основа | Простой оператор CASE | |
F261-02 | Основа | Оператор CASE с условиями | |
F261-03 | Основа | NULLIF | |
F261-04 | Основа | COALESCE | |
F262 | Расширенные выражения CASE | ||
F271 | Составные строки символов | ||
F281 | Улучшенный оператор LIKE | ||
F302 | Табличный оператор INTERSECT | ||
F302-01 | Табличный оператор INTERSECT DISTINCT | ||
F302-02 | Табличный оператор INTERSECT ALL | ||
F304 | Табличный оператор EXCEPT ALL | ||
F311-01 | Основа | CREATE SCHEMA | |
F311-02 | Основа | CREATE TABLE для хранимых основных таблиц | |
F311-03 | Основа | CREATE VIEW | |
F311-04 | Основа | CREATE VIEW: WITH CHECK OPTION | |
F311-05 | Основа | Оператор GRANT | |
F321 | Авторизация пользователей | ||
F361 | Поддержка подпрограмм | ||
F381 | Расширенные манипуляции со схемой | ||
F381-01 | Оператор ALTER TABLE: предложение ALTER COLUMN | ||
F381-02 | Оператор ALTER TABLE: предложение ADD CONSTRAINT | ||
F381-03 | Оператор ALTER TABLE: предложение DROP CONSTRAINT | ||
F382 | Изменение типа данных столбцов | ||
F383 | Предложение, устанавливающее NOT NULL для столбца | ||
F391 | Длинные идентификаторы | ||
F392 | Спецсимволы Unicode в идентификаторах | ||
F393 | Спецсимволы Unicode в текстовых строках | ||
F401 | Расширенное соединение таблиц | ||
F401-01 | NATURAL JOIN | ||
F401-02 | FULL OUTER JOIN | ||
F401-04 | CROSS JOIN | ||
F402 | Соединения по именам столбцов для больших объектов, массивов и мультимножеств | ||
F411 | Расширенные средства работы с датами/временем | Указание часового пояса | отличия в интерпретации строкового представления |
F421 | Национальные символы | ||
F431 | Прокручиваемые курсоры только для чтения | ||
F431-01 | FETCH с явным NEXT | ||
F431-02 | FETCH FIRST | ||
F431-03 | FETCH LAST | ||
F431-04 | FETCH PRIOR | ||
F431-05 | FETCH ABSOLUTE | ||
F431-06 | FETCH RELATIVE | ||
F441 | Расширенная поддержка функций множеств | ||
F442 | Смешанные ссылки на столбцы в функциях множеств | ||
F471 | Основа | Скалярные значения подзапросов | |
F481 | Основа | Расширенный предикат NULL | |
F491 | Расширенное управление целостностью | Управление ограничениями | |
F501 | Основа | Представления возможностей и совместимости | |
F501-01 | Основа | Представление SQL_FEATURES | |
F501-02 | Основа | Представление SQL_SIZING | |
F501-03 | Основа | Представление SQL_LANGUAGES | |
F502 | Таблицы расширенной документации | ||
F502-01 | Представление SQL_SIZING_PROFILES | ||
F502-02 | Представление SQL_IMPLEMENTATION_INFO | ||
F502-03 | Представление SQL_PACKAGES | ||
F531 | Временные таблицы | ||
F555 | Расширенные средства работы с датами/временем | Дополнительная точность в секундах | |
F561 | Полные выражения значений | ||
F571 | Проверки значений истинности | ||
F591 | Производные таблицы | ||
F611 | Типы данных для индикаторов | ||
F641 | Конструкторы строк и таблиц | ||
F651 | Дополнения имён каталогов | ||
F661 | Простые таблицы | ||
F672 | Ограничения-проверки с текущим временем | ||
F690 | Поддержка правил сортировки | но без поддержки наборов символов | |
F692 | Расширенная поддержка правил сортировки | ||
F701 | Расширенное управление целостностью | Действия при обновлении со ссылками | |
F711 | ALTER для домена | ||
F731 | Права на INSERT для столбцов | ||
F751 | Усовершенствования CHECK для представлений | ||
F761 | Управление сеансом | ||
F762 | CURRENT_CATALOG | ||
F763 | CURRENT_SCHEMA | ||
F771 | Управление соединением | ||
F781 | Самоссылающиеся операции | ||
F791 | Нечувствительные курсоры | ||
F801 | Полные функции множеств | ||
F850 | <Предложение order by > на верхнем уровне в <выражении запроса> | ||
F851 | <Предложение order by> в подзапросах | ||
F852 | <Предложение order by> на верхнем уровне в представлениях | ||
F855 | Вложенное <предложение order by> в <выражении запроса> | ||
F856 | Вложенное <предложение fetch first> в <предложении запроса> | ||
F857 | <Предложение fetch first> на верхнем уровне в <выражении запроса> | ||
F858 | <Предложение fetch first> в подзапросах | ||
F859 | <Предложение fetch first> на верхнем уровне в представлениях | ||
F860 | <Указание числа строк> в <предложении fetch first> | ||
F861 | <Предложение offset для результата> на верхнем уровне в <выражении запроса> | ||
F862 | <Предложение offset для результата> в подзапросах | ||
F863 | Вложенное <предложение offset для результата> в <выражении запроса> | ||
F864 | <Предложение offset для результата> на верхнем уровне в представлениях | ||
F865 | <Указание числа строк> с <предложением offset для результата> | ||
S071 | Расширенная поддержка объектов | SQL-пути при разрешении имён функций и типов | |
S092 | Массивы пользовательских типов | ||
S095 | Конструкторы массива из запроса | ||
S096 | Необязательное указание границ массива | ||
S098 | ARRAY_AGG | ||
S111 | Расширенная поддержка объектов | ONLY в выражениях запросов | |
S201 | Вызываемые из SQL подпрограммы, работающие с массивами | ||
S201-01 | Массивы в параметрах | ||
S201-02 | Массивы в качестве типа результата функций | ||
S211 | Расширенная поддержка объектов | Пользовательские функции приведений | |
S301 | Расширенный UNNEST | ||
T031 | Тип данных BOOLEAN | ||
T071 | Тип данных BIGINT | ||
T121 | WITH (без RECURSIVE) в выражении запроса | ||
T122 | WITH (с RECURSIVE) в подзапросе | ||
T131 | Рекурсивный запрос | ||
T132 | Рекурсивный запрос в подзапросе | ||
T141 | Предикат SIMILAR | ||
T151 | Предикат DISTINCT | ||
T152 | Предикат DISTINCT с отрицанием | ||
T171 | Предложение LIKE в определении таблицы | ||
T172 | Предложение подзапроса AS в определении таблицы | ||
T173 | Расширенное предложение LIKE в определении таблицы | ||
T191 | Расширенное управление целостностью | Действие RESTRICT при нарушении ссылок | |
T201 | Расширенное управление целостностью | Сравнимые типы данных для ссылочных ограничений | |
T211-01 | Активная база данных, улучшенное управление целостностью | Триггеры, активируемые при UPDATE, INSERT или DELETE в одной базовой таблице | |
T211-02 | Активная база данных, улучшенное управление целостностью | Триггеры BEFORE | |
T211-03 | Активная база данных, улучшенное управление целостностью | Триггеры AFTER | |
T211-04 | Активная база данных, улучшенное управление целостностью | Триггеры FOR EACH ROW | |
T211-05 | Активная база данных, улучшенное управление целостностью | Возможность задать условие поиска, которое должно быть истинным перед вызовом триггера | |
T211-07 | Активная база данных, улучшенное управление целостностью | Право TRIGGER | |
T212 | Расширенное управление целостностью | Расширенные возможности триггеров | |
T213 | Триггеры INSTEAD OF | ||
T231 | Чувствительные курсоры | ||
T241 | Оператор START TRANSACTION | ||
T271 | Точки сохранения | ||
T281 | Право SELECT на уровне столбцов | ||
T312 | Функция OVERLAY | ||
T321-01 | Основа | Пользовательские функции без перегрузки | |
T321-03 | Основа | Вызов функций | |
T321-06 | Основа | Представление ROUTINES | |
T321-07 | Основа | Представление PARAMETERS | |
T323 | Явное управление безопасностью внешних подпрограмм | ||
T325 | Дополненные указания параметров SQL | ||
T331 | Базовые роли | ||
T341 | Перегрузка вызываемых из SQL функций и процедур | ||
T351 | Блочные комментарии SQL (комментарии /*...*/) | ||
T431 | OLAP | Расширенные возможности группирования | |
T432 | Вложения и конкатенация GROUPING SETS | ||
T433 | Функция GROUPING с несколькими аргументами | ||
T441 | Функции ABS и MOD | ||
T461 | Симметричный предикат BETWEEN | ||
T491 | Производная таблица LATERAL | ||
T501 | Улучшенный предикат EXISTS | ||
T551 | Необязательные ключевые слова, подразумеваемые синтаксисом по умолчанию | ||
T581 | Функция подстроки по регулярному выражению | ||
T591 | Ограничения UNIQUE для столбцов, принимающих NULL | ||
T611 | OLAP | Элементарные операции OLAP | |
T613 | Получение выборки | ||
T614 | Функция NTILE | ||
T615 | Функции LEAD и LAG | ||
T617 | Функции FIRST_VALUE и LAST_VALUE | ||
T621 | Дополнительные численные функции | ||
T631 | Основа | Предикат IN с одним элементом списка | |
T651 | Операторы модификации схемы SQL в SQL-подпрограммах | ||
T655 | Циклически зависимые подпрограммы | ||
X010 | Тип XML | ||
X011 | Массивы типа XML | ||
X016 | Хранимые значения XML | ||
X020 | XMLConcat | ||
X031 | XMLElement | ||
X032 | XMLForest | ||
X034 | XMLAgg | ||
X035 | XMLAgg: параметр ORDER BY | ||
X036 | XMLComment | ||
X037 | XMLPI | ||
X040 | Базовое отображение таблиц | ||
X041 | Базовое отображение таблиц: значения NULL отсутствуют | ||
X042 | Базовое отображение таблиц: NULL в виде nil | ||
X043 | Базовое отображение таблиц: таблица в виде леса элементов | ||
X044 | Базовое отображение таблиц: таблица в виде элемента | ||
X045 | Базовое отображение таблиц: с целевым пространством имён | ||
X046 | Базовое отображение таблиц: отображение данных | ||
X047 | Базовое отображение таблиц: отображение метаданных | ||
X048 | Базовое отображение таблиц: кодирование двоичных строк в base64 | ||
X049 | Базовое отображение таблиц: кодирование двоичных строк в шестнадцатеричном виде | ||
X050 | Расширенное отображение таблиц | ||
X051 | Расширенное отображение таблиц: значения NULL отсутствуют | ||
X052 | Расширенное отображение таблиц: NULL в виде nil | ||
X053 | Расширенное отображение таблиц: таблица в виде леса элементов | ||
X054 | Расширенное отображение таблиц: таблица в виде элемента | ||
X055 | Расширенное отображение таблиц: с целевым пространством имён | ||
X056 | Расширенное отображение таблиц: отображение данных | ||
X057 | Расширенное отображение таблиц: отображение метаданных | ||
X058 | Расширенное отображение таблиц: кодирование двоичных строк в base64 | ||
X059 | Расширенное отображение таблиц: кодирование двоичных строк в шестнадцатеричном виде | ||
X060 | XMLParse: ввод символьных строк и вариант CONTENT | ||
X061 | XMLParse: ввод символьных строк и вариант DOCUMENT | ||
X070 | XMLSerialize: сериализация символьных строк и вариант CONTENT | ||
X071 | XMLSerialize: сериализация символьных строк и вариант DOCUMENT | ||
X072 | XMLSerialize: сериализация символьных строк | ||
X090 | Предикат XML-документа | ||
X120 | XML в параметрах SQL-подпрограмм | ||
X121 | XML в параметрах внешних подпрограмм | ||
X400 | Сопоставление имён и идентификаторов | ||
X410 | Изменение типа данных столбца: поддержка типа XML |
8.21. Pseudo-Types
The Postgres Pro type system contains a number of special-purpose entries that are collectively called pseudo-types. A pseudo-type cannot be used as a column data type, but it can be used to declare a function's argument or result type. Each of the available pseudo-types is useful in situations where a function's behavior does not correspond to simply taking or returning a value of a specific SQL data type. Table 8.27 lists the existing pseudo-types.
Table 8.27. Pseudo-Types
Name | Description |
---|---|
any | Indicates that a function accepts any input data type. |
anyelement | Indicates that a function accepts any data type (see Section 37.2.5). |
anyarray | Indicates that a function accepts any array data type (see Section 37.2.5). |
anynonarray | Indicates that a function accepts any non-array data type (see Section 37.2.5). |
anyenum | Indicates that a function accepts any enum data type (see Section 37.2.5 and Section 8.7). |
anyrange | Indicates that a function accepts any range data type (see Section 37.2.5 and Section 8.17). |
anymultirange | Indicates that a function accepts any multirange data type (see Section 37.2.5 and Section 8.17). |
anycompatible | Indicates that a function accepts any data type, with automatic promotion of multiple arguments to a common data type (see Section 37.2.5). |
anycompatiblearray | Indicates that a function accepts any array data type, with automatic promotion of multiple arguments to a common data type (see Section 37.2.5). |
anycompatiblenonarray | Indicates that a function accepts any non-array data type, with automatic promotion of multiple arguments to a common data type (see Section 37.2.5). |
anycompatiblerange | Indicates that a function accepts any range data type, with automatic promotion of multiple arguments to a common data type (see Section 37.2.5 and Section 8.17). |
anycompatiblemultirange | Indicates that a function accepts any multirange data type, with automatic promotion of multiple arguments to a common data type (see Section 37.2.5 and Section 8.17). |
cstring | Indicates that a function accepts or returns a null-terminated C string. |
internal | Indicates that a function accepts or returns a server-internal data type. |
language_handler | A procedural language call handler is declared to return language_handler . |
fdw_handler | A foreign-data wrapper handler is declared to return fdw_handler . |
table_am_handler | A table access method handler is declared to return table_am_handler . |
index_am_handler | An index access method handler is declared to return index_am_handler . |
tsm_handler | A tablesample method handler is declared to return tsm_handler . |
record | Identifies a function taking or returning an unspecified row type. |
trigger | A trigger function is declared to return trigger. |
event_trigger | An event trigger function is declared to return event_trigger. |
pg_ddl_command | Identifies a representation of DDL commands that is available to event triggers. |
void | Indicates that a function returns no value. |
unknown | Identifies a not-yet-resolved type, e.g., of an undecorated string literal. |
Functions coded in C (whether built-in or dynamically loaded) can be declared to accept or return any of these pseudo-types. It is up to the function author to ensure that the function will behave safely when a pseudo-type is used as an argument type.
Functions coded in procedural languages can use pseudo-types only as allowed by their implementation languages. At present most procedural languages forbid use of a pseudo-type as an argument type, and allow only void
and record
as a result type (plus trigger
or event_trigger
when the function is used as a trigger or event trigger). Some also support polymorphic functions using the polymorphic pseudo-types, which are shown above and discussed in detail in Section 37.2.5.
The internal
pseudo-type is used to declare functions that are meant only to be called internally by the database system, and not by direct invocation in an SQL query. If a function has at least one internal
-type argument then it cannot be called from SQL. To preserve the type safety of this restriction it is important to follow this coding rule: do not create any function that is declared to return internal
unless it has at least one internal
argument.