53.38. pg_proc
В каталоге pg_proc
хранится информация об обычных функциях, процедурах, агрегатных и оконных функциях (в совокупности также называемых подпрограммами). За дополнительными сведениями обратитесь к описанию CREATE FUNCTION, CREATE PROCEDURE и Разделу 39.3.
Если prokind
указывает, что данная запись описывает агрегатную функцию, в pg_aggregate
должна быть соответствующая строка.
Таблица 53.38. Столбцы pg_proc
Тип столбца Описание |
---|
Идентификатор строки |
Имя функции |
OID пространства имён, содержащего эту функцию |
Владелец функции |
Язык реализации или интерфейс вызова для этой функции |
Примерная стоимость выполнения (в единицах cpu_operator_cost); если установлен признак |
Примерное число возвращаемых строк (ноль, если признак |
Тип данных элементов переменного массива параметров, либо 0, если функция не принимает переменное число параметров |
Вспомогательная функция планировщика для данной функции (см. Раздел 39.11) или ноль, если её нет |
|
Функция определяет контекст безопасности (т. е. это функция «setuid») |
Функция не имеет побочных эффектов. Никакая информация о её аргументах не выдаётся, кроме как через возвращаемое значение. Любая функция, которая может выдать ошибку, в зависимости от значений аргументов, не является герметичной. |
Функция возвращает NULL, если любой из аргументов при вызове NULL. В этом случае функция фактически не будет вызываться вовсе. Функции, не являющиеся «строгими», должны быть готовы принять значения NULL. |
Функция возвращает множество (т. е. множество значений указанного типа данных) |
Свойство |
Свойство |
Число входных аргументов |
Число аргументов, для которых определены значения по умолчанию |
Тип данных возвращаемого значения |
Массив типов аргументов функции. В нём учитываются только входные аргументы функции (включая аргументы |
Массив типов аргументов функции. В нём учитываются все аргументы (включая аргументы |
Массив режимов аргументов функций, закодированных как |
Массив имён аргументов функции. Для аргументов без имени в этом массиве задаются пустые строки. Если все аргументы функции безымянные, это поле может содержать NULL. Заметьте, что позиции в этом массиве соответствуют позициям в |
Деревья выражений (в представлении |
Массив типов аргументов/результатов, к которым должны применяться трансформации (заданные в предложении |
Это значение говорит обработчику функции, как вызывать данную функцию. Это может быть собственно исходный код функции для интерпретируемых языков, объектный символ, имя файла или что-то другое, в зависимости от языка реализации/соглашения о вызовах. |
Дополнительная информация о том, как вызывать функцию. Интерпретация этого значения так же зависит от языка. |
Предварительно разобранное тело SQL-функции. Используется для функций на языке SQL, когда тело функции оформлено по стандарту SQL, а не в виде строки. В других случаях — NULL. |
Локальные присваивания конфигурационных переменных времени выполнения, действующие в рамках функции |
Права доступа; за подробностями обратитесь к Разделу 5.7. |
Для скомпилированных функций, как встроенных, так и динамически загружаемых, поле prosrc
содержит имя функции на языке C (объектный символ). Для функций на языке SQL: если функция определена в виде строки, поле prosrc
содержит исходный код функции; если же функция оформлена по стандарту SQL, поле prosrc
не используется (обычно это пустая строка), а поле prosqlbody
содержит предварительно разобранное определение функции. Для всех других известных сегодня языков поле prosrc
содержит исходный код функции. Поле probin
используется только для динамически загружаемых функций на C, для которых оно задаёт имя разделяемой библиотеки, содержащей эти функции.