49.2. pg_aggregate
В каталоге pg_aggregate
хранится информация об агрегатных функциях. Агрегатная функция — это такая функция, которая работает с множеством значений (обычно, с содержимым одного столбца всех строк, удовлетворяющих условию запроса) и возвращает одно значение, вычисленное по этому множеству. Типичные агрегатные функции — sum
, count
и max
. Все записи в pg_aggregate
представляют собой дополнение записей в pg_proc
. Запись в pg_proc
определяет имя агрегатной функции, типы входных и выходных данных, а также другие свойства, подобные имеющимся у обычных функций.
Таблица 49.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. За дополнительными сведениями о разработке агрегатных функций, значении функций перехода и т. д. обратитесь к Разделу 35.12.