50.2. pg_aggregate#

50.2. pg_aggregate

50.2. pg_aggregate #

Каталог pg_aggregate хранит информацию об агрегатных функциях. Агрегатная функция - это функция, которая работает с набором значений (обычно один столбец из каждой строки, соответствующей условию запроса) и возвращает одно значение, вычисленное из всех этих значений. Типичные агрегатные функции - sum, count и max. Каждая запись в pg_aggregate является расширением записи в pg_proc. Запись pg_proc содержит имя агрегата, типы входных и выходных данных и другую информацию, аналогичную обычным функциям.

Таблица 50.2. pg_aggregate Столбцы

Тип столбца

Описание

aggfnoid regproc (ссылается на pg_proc.oid)

pg_proc OID функции-агрегата

aggkind char

Вид агрегата: n для обычных агрегатов, o для агрегатов с отсортированным набором, и h для агрегатных функций с гипотетическим набором.

aggnumdirectargs int2

Количество прямых (неагрегированных) аргументов упорядоченного или гипотетизирующого агрегата, считая вариативный массив как один аргумент. Если равно pronargs, то агрегат должен быть вариативным, и вариативный массив описывает как агрегированные аргументы, так и конечные прямые аргументы. Всегда равно нулю для обычных агрегатов.

aggtransfn regproc (ссылается на pg_proc.oid)

Функция перехода

aggfinalfn regproc (ссылается на pg_proc.oid)

Финальная функция (ноль, если отсутствует)

aggcombinefn regproc (ссылается на pg_proc.oid)

Функция Combine (ноль, если нет)

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. См. Раздел 35.11 для получения дополнительной информации о написании агрегатных функций и значении функций перехода и т.д.