51.38. pg_proc
В каталоге pg_proc хранится информация об обычных функциях, процедурах, агрегатных и оконных функциях (в совокупности также называемых подпрограммами). За дополнительными сведениями обратитесь к описанию CREATE FUNCTION, CREATE PROCEDURE и Разделу 37.3.
Если prokind указывает, что данная запись описывает агрегатную функцию, в pg_aggregate должна быть соответствующая строка.
Таблица 51.38. Столбцы pg_proc
Тип столбца Описание |
|---|
Идентификатор строки |
Имя функции |
OID пространства имён, содержащего эту функцию |
Владелец функции |
Язык реализации или интерфейс вызова для этой функции |
Примерная стоимость выполнения (в единицах cpu_operator_cost); если установлен признак |
Примерное число возвращаемых строк (ноль, если признак |
Тип данных элементов переменного массива параметров, либо 0, если функция не принимает переменное число параметров |
Вспомогательная функция планировщика для данной функции (см. Раздел 37.11) или ноль, если её нет |
|
Функция определяет контекст безопасности (т. е. это функция «setuid») |
Функция не имеет побочных эффектов. Никакая информация о её аргументах не выдаётся, кроме как через возвращаемое значение. Любая функция, которая может выдать ошибку, в зависимости от значений аргументов, не является герметичной. |
Функция возвращает NULL, если любой из аргументов при вызове NULL. В этом случае функция фактически не будет вызываться вовсе. Функции, не являющиеся «строгими», должны быть готовы принять значения NULL. |
Функция возвращает множество (т. е. множество значений указанного типа данных) |
Свойство |
Свойство |
Число входных аргументов |
Число аргументов, для которых определены значения по умолчанию |
Тип данных возвращаемого значения |
Массив типов аргументов функции. В нём учитываются только входные аргументы функции (включая аргументы |
Массив типов аргументов функции. В нём учитываются все аргументы (включая аргументы |
Массив режимов аргументов функций, закодированных как |
Массив имён аргументов функции. Для аргументов без имени в этом массиве задаются пустые строки. Если все аргументы функции безымянные, это поле может содержать NULL. Заметьте, что позиции в этом массиве соответствуют позициям в |
Деревья выражений (в представлении |
Массив типов аргументов/результатов, к которым должны применяться трансформации (заданные в предложении |
Это значение говорит обработчику функции, как вызывать данную функцию. Это может быть собственно исходный код функции для интерпретируемых языков, объектный символ, имя файла или что-то другое, в зависимости от языка реализации/соглашения о вызовах. |
Дополнительная информация о том, как вызывать функцию. Интерпретация этого значения так же зависит от языка. |
Предварительно разобранное тело SQL-функции. Используется для функций на языке SQL, когда тело функции оформлено по стандарту SQL, а не в виде строки. В других случаях — NULL. |
Локальные присваивания конфигурационных переменных времени выполнения, действующие в рамках функции |
Права доступа; за подробностями обратитесь к Разделу 5.7. |
Для скомпилированных функций, как встроенных, так и динамически загружаемых, поле prosrc содержит имя функции на языке C (объектный символ). Для функций на языке SQL: если функция определена в виде строки, поле prosrc содержит исходный код функции; если же функция оформлена по стандарту SQL, поле prosrc не используется (обычно это пустая строка), а поле prosqlbody содержит предварительно разобранное определение функции. Для всех других известных сегодня языков поле prosrc содержит исходный код функции. Поле probin используется только для динамически загружаемых функций на C, для которых оно задаёт имя разделяемой библиотеки, содержащей эти функции.
51.38. pg_proc
The catalog pg_proc stores information about functions, procedures, aggregate functions, and window functions (collectively also known as routines). See CREATE FUNCTION, CREATE PROCEDURE, and Section 37.3 for more information.
If prokind indicates that the entry is for an aggregate function, there should be a matching row in pg_aggregate.
Table 51.38. pg_proc Columns
Column Type Description |
|---|
Row identifier |
Name of the function |
The OID of the namespace that contains this function |
Owner of the function |
Implementation language or call interface of this function |
Estimated execution cost (in units of cpu_operator_cost); if |
Estimated number of result rows (zero if not |
Data type of the variadic array parameter's elements, or zero if the function does not have a variadic parameter |
Planner support function for this function (see Section 37.11), or zero if none |
|
Function is a security definer (i.e., a “setuid” function) |
The function has no side effects. No information about the arguments is conveyed except via the return value. Any function that might throw an error depending on the values of its arguments is not leak-proof. |
Function returns null if any call argument is null. In that case the function won't actually be called at all. Functions that are not “strict” must be prepared to handle null inputs. |
Function returns a set (i.e., multiple values of the specified data type) |
|
|
Number of input arguments |
Number of arguments that have defaults |
Data type of the return value |
An array of the data types of the function arguments. This includes only input arguments (including |
An array of the data types of the function arguments. This includes all arguments (including |
An array of the modes of the function arguments, encoded as |
An array of the names of the function arguments. Arguments without a name are set to empty strings in the array. If none of the arguments have a name, this field will be null. Note that subscripts correspond to positions of |
Expression trees (in |
An array of the argument/result data type(s) for which to apply transforms (from the function's |
This tells the function handler how to invoke the function. It might be the actual source code of the function for interpreted languages, a link symbol, a file name, or just about anything else, depending on the implementation language/call convention. |
Additional information about how to invoke the function. Again, the interpretation is language-specific. |
Pre-parsed SQL function body. This is used for SQL-language functions when the body is given in SQL-standard notation rather than as a string literal. It's null in other cases. |
Function's local settings for run-time configuration variables |
Access privileges; see Section 5.7 for details |
For compiled functions, both built-in and dynamically loaded, prosrc contains the function's C-language name (link symbol). For SQL-language functions, prosrc contains the function's source text if that is specified as a string literal; but if the function body is specified in SQL-standard style, prosrc is unused (typically it's an empty string) and prosqlbody contains the pre-parsed definition. For all other currently-known language types, prosrc contains the function's source text. probin is null except for dynamically-loaded C functions, for which it gives the name of the shared library file containing the function.