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
.