pg_aggregate#
В каталоге pg_aggregate хранится информация об агрегатных функциях. Агрегатная функция – это функция, которая работает с набором значений (обычно по одному столбцу из каждой строки, соответствующей условию запроса) и возвращает одно значение, вычисленное из всех этих значений. Типичными агрегатными функциями являются sum, count и max. Каждая запись в pg_aggregate является расширением записи в pg_proc. Запись pg_proc содержит имя агрегата, типы входных и выходных данных и другую информацию, аналогичную обычным функциям.
Столбец |
Тип данных |
Описание |
|---|---|---|
aggfnoid |
regproc (ссылается на pg_proc.oid) |
OID агрегатной функции pg_proc |
aggkind |
char |
Вид агрегата: n - «обычные» агрегаты, o - «агрегаты с упорядоченным набором» или h - «агрегаты с гипотетическим набором» |
aggnumdirectargs |
int2 |
Количество прямых (неагрегированных) аргументов упорядоченно-множественного или гипотетическо-множественного агрегата, считая переменный массив за один аргумент. Если равно pronargs, то агрегат должен быть переменным, и переменный массив описывает агрегированные аргументы, а также конечные прямые аргументы. Всегда равно нулю для обычных агрегатов |
aggtransfn |
regproc (ссылается на pg_proc.oid) |
Переходная функция |
aggfinalfn |
regproc (ссылается на pg_proc.oid) |
Заключительная функция (нулевая, если ее нет) |
aggcombinefn |
regproc (ссылается на pg_proc.oid) |
Комбинированная функция (нулевая, если нет) |
aggserialfn |
regproc (ссылается на pg_proc.oid) |
Функция сериализации (нулевая, если ее нет) |
aggdeserialfn |
regproc (ссылается на pg_proc.oid) |
Функция десериализации (нулевая, если ее нет) |
aggmtransfn |
regproc (ссылается на pg_proc.oid) |
Функция перехода вперед для режима подвижного агрегата (ноль, если нет) |
aggminvtransfn |
regproc (ссылается на pg_proc.oid) |
Инверсная функция перехода для режима подвижного агрегата (ноль, если нет) |
aggmfinalfn |
regproc (ссылается на pg_proc.oid) |
Конечная функция для режима «перемещение-агрегат» (ноль, если нет) |
aggfinalextra |
bool |
True для передачи дополнительных фиктивных аргументов в aggfinalfn |
aggmfinalextra |
bool |
True для передачи дополнительных фиктивных аргументов в aggmfinalfn |
aggfinalmodify |
char |
Изменяет ли aggfinalfn значение состояния перехода: r - если оно доступно только для чтения, s - если aggtransfn не может быть применен после aggfinalfn, или w, если он записывает на значение |
aggmfinalmodify |
char |
Как aggfinalmodify, но для aggmfinalfn |
aggsortop |
oid (ссылается на pg_operator.oid) |
Ассоциированный оператор сортировки (нулевой, если его нет) |
aggtranstype |
oid (ссылается на на pg_type.oid) |
Тип данных внутреннего перехода (состояния) агрегатной функции |
aggtransspace |
int4 |
Приблизительный средний размер (в байтах) данных о состоянии перехода, или ноль, чтобы использовать оценку по умолчанию |
aggmtranstype |
oid (ссылается на на pg_type.oid) |
Тип данных внутреннего перехода (состояния) агрегатной функции для режима подвижной агрегации (ноль, если нет) |
aggmtransspace |
int4 |
Приблизительный средний размер (в байтах) данных о состоянии перехода для режима «перемещение-агрегат», или ноль, чтобы использовать оценку по умолчанию |
agginitval |
text |
Начальное значение состояния перехода. Это текстовое поле, содержащее начальное значение в его внешнем строковом представлении. Если это поле равно null, то значение состояния перехода начинается с null |
aggminitval |
text |
Начальное значение состояния перехода для режима «перемещение-агрегат». Это текстовое поле, содержащее начальное значение в его внешнем строковом представлении. Если это поле равно null, то значение состояния перехода начинается с null |
Новые агрегатные функции регистрируются с помощью команды CREATE AGGREGATE.