50.2. pg_aggregate

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

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

Тип столбца

Описание

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

OID агрегатной функции в pg_proc

aggkindchar

Тип агрегатной функции: n — обычная («normal»), o — сортирующая («ordered-set») или h — гипотезирующая («hypothetical-set»)

aggnumdirectargsint2

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

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

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

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

Функция завершения (ноль, если её нет)

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

Комбинирующая функция (ноль, если её нет)

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

Функция сериализации (ноль, если её нет)

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

Функция десериализации (ноль, если её нет)

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

Функция прямого перехода для режима движущегося агрегата (ноль, если её нет)

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

Функция обратного перехода для режима движущегося агрегата (ноль, если её нет)

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

Функция завершения для режима движущегося агрегата (ноль, если её нет)

aggfinalextrabool

Со значением True в aggfinalfn передаются дополнительные фиктивные аргументы

aggmfinalextrabool

Со значением True в aggmfinalfn передаются дополнительные фиктивные аргументы

aggfinalmodifychar

Признак модифицирования переходного состояния функцией aggfinalfn: r, если состояние только читается; s, если функцию aggtransfn нельзя применять после aggfinalfn; и w, если состояние перезаписывается

aggmfinalmodifychar

Аналогично aggfinalmodify, но для aggmfinalfn

aggsortopoid (ссылается на pg_operator.oid)

Связанный оператор сортировки (ноль, если его нет)

aggtranstypeoid (ссылается на pg_type.oid)

Тип данных внутреннего состояния (перехода) агрегатной функции

aggtransspaceint4

Приблизительный средний размер (в байтах) данных состояния перехода, либо ноль для выбора значения по умолчанию

aggmtranstypeoid (ссылается на pg_type.oid)

Тип данных внутреннего состояния (перехода) для агрегатной функции в режиме движущегося агрегата (ноль в случае отсутствия)

aggmtransspaceint4

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

agginitvaltext

Начальное значение для состояния перехода. Это текстовое поле, содержащее значение в виде внешнего строкового представления. Если это поле содержит NULL, начальным значением состояния перехода будет NULL.

aggminitvaltext

Начальное значение для состояния перехода в режиме движущегося агрегата. Это текстовое поле, содержащее значение в виде внешнего строкового представления. Если это поле содержит NULL, начальным значением состояния перехода будет NULL.


Новые агрегатные функции создаются командой CREATE AGGREGATE. За дополнительными сведениями о разработке агрегатных функций, значении функций перехода и т. д. обратитесь к Разделу 36.12.

close