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.