52.2. pg_aggregate
В каталоге pg_aggregate хранится информация об агрегатных функциях. Агрегатная функция — это такая функция, которая работает с множеством значений (обычно, с содержимым одного столбца всех строк, удовлетворяющих условию запроса) и возвращает одно значение, вычисленное по этому множеству. Типичные агрегатные функции — sum, count и max. Все записи в pg_aggregate представляют собой дополнение записей в pg_proc. Запись в pg_proc определяет имя агрегатной функции, типы входных и выходных данных, а также другие свойства, подобные имеющимся у обычных функций.
Таблица 52.2. Столбцы pg_aggregate
| Имя | Тип | Ссылки | Описание | 
|---|---|---|---|
| aggfnoid | regproc |  | OID агрегатной функции в pg_proc | 
| aggkind | char | Тип агрегатной функции: n— обычная («normal»),o— сортирующая («ordered-set») илиh— гипотезирующая («hypothetical-set») | |
| aggnumdirectargs | int2 | Число непосредственных (не агрегируемых) аргументов для сортирующей или гипотезирующей агрегатной функции (переменный массив аргументов считается одним аргументом). Если равняется pronargs, агрегатная функция должна принимать переменный массив и этот массив описывает как агрегатные аргументы, так и окончательные непосредственные аргументы. Всегда равно нулю для обычных агрегатных функций. | |
| aggtransfn | regproc |  | Функция перехода | 
| aggfinalfn | regproc |  | Функция завершения (ноль, если её нет) | 
| aggcombinefn | regproc |  | Комбинирующая функция (ноль, если её нет) | 
| aggserialfn | regproc |  | Функция сериализации (ноль, если её нет) | 
| aggdeserialfn | regproc |  | Функция десериализации (ноль, если её нет) | 
| aggmtransfn | regproc |  | Функция прямого перехода для режима движущегося агрегата (ноль, если её нет) | 
| aggminvtransfn | regproc |  | Функция обратного перехода для режима движущегося агрегата (ноль, если её нет) | 
| aggmfinalfn | regproc |  | Функция завершения для режима движущегося агрегата (ноль, если её нет) | 
| aggfinalextra | bool | Со значением True в aggfinalfnпередаются дополнительные фиктивные аргументы | |
| aggmfinalextra | bool | Со значением True в aggmfinalfnпередаются дополнительные фиктивные аргументы | |
| aggfinalmodify | char | Признак модифицирования переходного состояния функцией aggfinalfn:r, если состояние только читается;s, если функциюaggtransfnнельзя применять послеaggfinalfn; иw, если состояние перезаписывается | |
| aggmfinalmodify | char | Аналогично aggfinalmodify, но дляaggmfinalfn | |
| aggsortop | oid |  | Связанный оператор сортировки (ноль, если его нет) | 
| aggtranstype | oid |  | Тип данных внутреннего состояния (перехода) агрегатной функции | 
| aggtransspace | int4 | Приблизительный средний размер (в байтах) данных состояния перехода, либо ноль для выбора значения по умолчанию | |
| aggmtranstype | oid |  | Тип данных внутреннего состояния (перехода) для агрегатной функции в режиме движущегося агрегата (ноль в случае отсутствия) | 
| aggmtransspace | int4 | Приблизительный средний размер (в байтах) данных состояния перехода для режима движущегося агрегата, либо ноль для выбора значения по умолчанию | |
| agginitval | text | Начальное значение для состояния перехода. Это текстовое поле, содержащее значение в виде внешнего строкового представления. Если это поле содержит NULL, начальным значением состояния перехода будет NULL. | |
| aggminitval | text | Начальное значение для состояния перехода в режиме движущегося агрегата. Это текстовое поле, содержащее значение в виде внешнего строкового представления. Если это поле содержит NULL, начальным значением состояния перехода будет NULL. | 
Новые агрегатные функции создаются командой CREATE AGGREGATE. За дополнительными сведениями о разработке агрегатных функций, значении функций перехода и т. д. обратитесь к Разделу 38.11.