51.2. pg_aggregate

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

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

NameТипСсылкиОписание
aggfnoidregprocpg_proc.oidOID агрегатной функции в pg_proc
aggkindchar Тип агрегатной функции: n — обычная («normal»), o — сортирующая («ordered-set») или h — гипотезирующая («hypothetical-set»)
aggnumdirectargsint2 Число непосредственных (не агрегируемых) аргументов для сортирующей или гипотезирующей агрегатной функции (переменный массив аргументов считается одним аргументом). Если равняется pronargs, агрегатная функция должна принимать переменный массив и этот массив описывает как агрегатные аргументы, так и окончательные непосредственные аргументы. Всегда равно нулю для обычных агрегатных функций.
aggtransfnregprocpg_proc.oidФункция перехода
aggfinalfnregprocpg_proc.oidФункция завершения (ноль, если её нет)
aggcombinefnregprocpg_proc.oidКомбинирующая функция (ноль, если её нет)
aggserialfnregprocpg_proc.oidФункция сериализации (ноль, если её нет)
aggdeserialfnregprocpg_proc.oidФункция десериализации (ноль, если её нет)
aggmtransfnregprocpg_proc.oidФункция прямого перехода для режима движущегося агрегата (ноль, если её нет)
aggminvtransfnregprocpg_proc.oidФункция обратного перехода для режима движущегося агрегата (ноль, если её нет)
aggmfinalfnregprocpg_proc.oidФункция завершения для режима движущегося агрегата (ноль, если её нет)
aggfinalextrabool Со значением True в aggfinalfn передаются дополнительные фиктивные аргументы
aggmfinalextrabool Со значением True в aggmfinalfn передаются дополнительные фиктивные аргументы
aggfinalmodifychar Признак модифицирования переходного состояния функцией aggfinalfn: r, если состояние только читается; s, если функцию aggtransfn нельзя применять после aggfinalfn; и w, если состояние перезаписывается
aggmfinalmodifychar Аналогично aggfinalmodify, но для aggmfinalfn
aggsortopoidpg_operator.oidСвязанный оператор сортировки (ноль, если его нет)
aggtranstypeoidpg_type.oidТип данных внутреннего состояния (перехода) агрегатной функции
aggtransspaceint4 Приблизительный средний размер (в байтах) данных состояния перехода, либо ноль для выбора значения по умолчанию
aggmtranstypeoidpg_type.oidТип данных внутреннего состояния (перехода) для агрегатной функции в режиме движущегося агрегата (ноль в случае отсутствия)
aggmtransspaceint4 Приблизительный средний размер (в байтах) данных состояния перехода для режима движущегося агрегата, либо ноль для выбора значения по умолчанию
agginitvaltext Начальное значение для состояния перехода. Это текстовое поле, содержащее значение в виде внешнего строкового представления. Если это поле содержит NULL, начальным значением состояния перехода будет NULL.
aggminitvaltext Начальное значение для состояния перехода в режиме движущегося агрегата. Это текстовое поле, содержащее значение в виде внешнего строкового представления. Если это поле содержит NULL, начальным значением состояния перехода будет NULL.

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