1#---------------------------------------------------------------------- 2# 3# pg_aggregate.dat 4# Initial contents of the pg_aggregate system catalog. 5# 6# Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group 7# Portions Copyright (c) 1994, Regents of the University of California 8# 9# src/include/catalog/pg_aggregate.dat 10# 11#---------------------------------------------------------------------- 12 13[ 14 15# avg 16{ aggfnoid => 'avg(int8)', aggtransfn => 'int8_avg_accum', 17 aggfinalfn => 'numeric_poly_avg', aggcombinefn => 'int8_avg_combine', 18 aggserialfn => 'int8_avg_serialize', aggdeserialfn => 'int8_avg_deserialize', 19 aggmtransfn => 'int8_avg_accum', aggminvtransfn => 'int8_avg_accum_inv', 20 aggmfinalfn => 'numeric_poly_avg', aggtranstype => 'internal', 21 aggtransspace => '48', aggmtranstype => 'internal', aggmtransspace => '48' }, 22{ aggfnoid => 'avg(int4)', aggtransfn => 'int4_avg_accum', 23 aggfinalfn => 'int8_avg', aggcombinefn => 'int4_avg_combine', 24 aggmtransfn => 'int4_avg_accum', aggminvtransfn => 'int4_avg_accum_inv', 25 aggmfinalfn => 'int8_avg', aggtranstype => '_int8', aggmtranstype => '_int8', 26 agginitval => '{0,0}', aggminitval => '{0,0}' }, 27{ aggfnoid => 'avg(int2)', aggtransfn => 'int2_avg_accum', 28 aggfinalfn => 'int8_avg', aggcombinefn => 'int4_avg_combine', 29 aggmtransfn => 'int2_avg_accum', aggminvtransfn => 'int2_avg_accum_inv', 30 aggmfinalfn => 'int8_avg', aggtranstype => '_int8', aggmtranstype => '_int8', 31 agginitval => '{0,0}', aggminitval => '{0,0}' }, 32{ aggfnoid => 'avg(numeric)', aggtransfn => 'numeric_avg_accum', 33 aggfinalfn => 'numeric_avg', aggcombinefn => 'numeric_avg_combine', 34 aggserialfn => 'numeric_avg_serialize', 35 aggdeserialfn => 'numeric_avg_deserialize', 36 aggmtransfn => 'numeric_avg_accum', aggminvtransfn => 'numeric_accum_inv', 37 aggmfinalfn => 'numeric_avg', aggtranstype => 'internal', 38 aggtransspace => '128', aggmtranstype => 'internal', 39 aggmtransspace => '128' }, 40{ aggfnoid => 'avg(float4)', aggtransfn => 'float4_accum', 41 aggfinalfn => 'float8_avg', aggcombinefn => 'float8_combine', 42 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 43{ aggfnoid => 'avg(float8)', aggtransfn => 'float8_accum', 44 aggfinalfn => 'float8_avg', aggcombinefn => 'float8_combine', 45 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 46{ aggfnoid => 'avg(interval)', aggtransfn => 'interval_accum', 47 aggfinalfn => 'interval_avg', aggcombinefn => 'interval_combine', 48 aggmtransfn => 'interval_accum', aggminvtransfn => 'interval_accum_inv', 49 aggmfinalfn => 'interval_avg', aggtranstype => '_interval', 50 aggmtranstype => '_interval', agginitval => '{0 second,0 second}', 51 aggminitval => '{0 second,0 second}' }, 52 53# sum 54{ aggfnoid => 'sum(int8)', aggtransfn => 'int8_avg_accum', 55 aggfinalfn => 'numeric_poly_sum', aggcombinefn => 'int8_avg_combine', 56 aggserialfn => 'int8_avg_serialize', aggdeserialfn => 'int8_avg_deserialize', 57 aggmtransfn => 'int8_avg_accum', aggminvtransfn => 'int8_avg_accum_inv', 58 aggmfinalfn => 'numeric_poly_sum', aggtranstype => 'internal', 59 aggtransspace => '48', aggmtranstype => 'internal', aggmtransspace => '48' }, 60{ aggfnoid => 'sum(int4)', aggtransfn => 'int4_sum', aggcombinefn => 'int8pl', 61 aggmtransfn => 'int4_avg_accum', aggminvtransfn => 'int4_avg_accum_inv', 62 aggmfinalfn => 'int2int4_sum', aggtranstype => 'int8', 63 aggmtranstype => '_int8', aggminitval => '{0,0}' }, 64{ aggfnoid => 'sum(int2)', aggtransfn => 'int2_sum', aggcombinefn => 'int8pl', 65 aggmtransfn => 'int2_avg_accum', aggminvtransfn => 'int2_avg_accum_inv', 66 aggmfinalfn => 'int2int4_sum', aggtranstype => 'int8', 67 aggmtranstype => '_int8', aggminitval => '{0,0}' }, 68{ aggfnoid => 'sum(float4)', aggtransfn => 'float4pl', 69 aggcombinefn => 'float4pl', aggtranstype => 'float4' }, 70{ aggfnoid => 'sum(float8)', aggtransfn => 'float8pl', 71 aggcombinefn => 'float8pl', aggtranstype => 'float8' }, 72{ aggfnoid => 'sum(money)', aggtransfn => 'cash_pl', aggcombinefn => 'cash_pl', 73 aggmtransfn => 'cash_pl', aggminvtransfn => 'cash_mi', 74 aggtranstype => 'money', aggmtranstype => 'money' }, 75{ aggfnoid => 'sum(interval)', aggtransfn => 'interval_pl', 76 aggcombinefn => 'interval_pl', aggmtransfn => 'interval_pl', 77 aggminvtransfn => 'interval_mi', aggtranstype => 'interval', 78 aggmtranstype => 'interval' }, 79{ aggfnoid => 'sum(numeric)', aggtransfn => 'numeric_avg_accum', 80 aggfinalfn => 'numeric_sum', aggcombinefn => 'numeric_avg_combine', 81 aggserialfn => 'numeric_avg_serialize', 82 aggdeserialfn => 'numeric_avg_deserialize', 83 aggmtransfn => 'numeric_avg_accum', aggminvtransfn => 'numeric_accum_inv', 84 aggmfinalfn => 'numeric_sum', aggtranstype => 'internal', 85 aggtransspace => '128', aggmtranstype => 'internal', 86 aggmtransspace => '128' }, 87 88# max 89{ aggfnoid => 'max(int8)', aggtransfn => 'int8larger', 90 aggcombinefn => 'int8larger', aggsortop => '>(int8,int8)', 91 aggtranstype => 'int8' }, 92{ aggfnoid => 'max(int4)', aggtransfn => 'int4larger', 93 aggcombinefn => 'int4larger', aggsortop => '>(int4,int4)', 94 aggtranstype => 'int4' }, 95{ aggfnoid => 'max(int2)', aggtransfn => 'int2larger', 96 aggcombinefn => 'int2larger', aggsortop => '>(int2,int2)', 97 aggtranstype => 'int2' }, 98{ aggfnoid => 'max(oid)', aggtransfn => 'oidlarger', 99 aggcombinefn => 'oidlarger', aggsortop => '>(oid,oid)', 100 aggtranstype => 'oid' }, 101{ aggfnoid => 'max(float4)', aggtransfn => 'float4larger', 102 aggcombinefn => 'float4larger', aggsortop => '>(float4,float4)', 103 aggtranstype => 'float4' }, 104{ aggfnoid => 'max(float8)', aggtransfn => 'float8larger', 105 aggcombinefn => 'float8larger', aggsortop => '>(float8,float8)', 106 aggtranstype => 'float8' }, 107{ aggfnoid => 'max(date)', aggtransfn => 'date_larger', 108 aggcombinefn => 'date_larger', aggsortop => '>(date,date)', 109 aggtranstype => 'date' }, 110{ aggfnoid => 'max(time)', aggtransfn => 'time_larger', 111 aggcombinefn => 'time_larger', aggsortop => '>(time,time)', 112 aggtranstype => 'time' }, 113{ aggfnoid => 'max(timetz)', aggtransfn => 'timetz_larger', 114 aggcombinefn => 'timetz_larger', aggsortop => '>(timetz,timetz)', 115 aggtranstype => 'timetz' }, 116{ aggfnoid => 'max(money)', aggtransfn => 'cashlarger', 117 aggcombinefn => 'cashlarger', aggsortop => '>(money,money)', 118 aggtranstype => 'money' }, 119{ aggfnoid => 'max(timestamp)', aggtransfn => 'timestamp_larger', 120 aggcombinefn => 'timestamp_larger', aggsortop => '>(timestamp,timestamp)', 121 aggtranstype => 'timestamp' }, 122{ aggfnoid => 'max(timestamptz)', aggtransfn => 'timestamptz_larger', 123 aggcombinefn => 'timestamptz_larger', 124 aggsortop => '>(timestamptz,timestamptz)', aggtranstype => 'timestamptz' }, 125{ aggfnoid => 'max(interval)', aggtransfn => 'interval_larger', 126 aggcombinefn => 'interval_larger', aggsortop => '>(interval,interval)', 127 aggtranstype => 'interval' }, 128{ aggfnoid => 'max(text)', aggtransfn => 'text_larger', 129 aggcombinefn => 'text_larger', aggsortop => '>(text,text)', 130 aggtranstype => 'text' }, 131{ aggfnoid => 'max(numeric)', aggtransfn => 'numeric_larger', 132 aggcombinefn => 'numeric_larger', aggsortop => '>(numeric,numeric)', 133 aggtranstype => 'numeric' }, 134{ aggfnoid => 'max(anyarray)', aggtransfn => 'array_larger', 135 aggcombinefn => 'array_larger', aggsortop => '>(anyarray,anyarray)', 136 aggtranstype => 'anyarray' }, 137{ aggfnoid => 'max(bpchar)', aggtransfn => 'bpchar_larger', 138 aggcombinefn => 'bpchar_larger', aggsortop => '>(bpchar,bpchar)', 139 aggtranstype => 'bpchar' }, 140{ aggfnoid => 'max(tid)', aggtransfn => 'tidlarger', 141 aggcombinefn => 'tidlarger', aggsortop => '>(tid,tid)', 142 aggtranstype => 'tid' }, 143{ aggfnoid => 'max(anyenum)', aggtransfn => 'enum_larger', 144 aggcombinefn => 'enum_larger', aggsortop => '>(anyenum,anyenum)', 145 aggtranstype => 'anyenum' }, 146{ aggfnoid => 'max(inet)', aggtransfn => 'network_larger', 147 aggcombinefn => 'network_larger', aggsortop => '>(inet,inet)', 148 aggtranstype => 'inet' }, 149{ aggfnoid => 'max(pg_lsn)', aggtransfn => 'pg_lsn_larger', 150 aggcombinefn => 'pg_lsn_larger', aggsortop => '>(pg_lsn,pg_lsn)', 151 aggtranstype => 'pg_lsn' }, 152 153# min 154{ aggfnoid => 'min(int8)', aggtransfn => 'int8smaller', 155 aggcombinefn => 'int8smaller', aggsortop => '<(int8,int8)', 156 aggtranstype => 'int8' }, 157{ aggfnoid => 'min(int4)', aggtransfn => 'int4smaller', 158 aggcombinefn => 'int4smaller', aggsortop => '<(int4,int4)', 159 aggtranstype => 'int4' }, 160{ aggfnoid => 'min(int2)', aggtransfn => 'int2smaller', 161 aggcombinefn => 'int2smaller', aggsortop => '<(int2,int2)', 162 aggtranstype => 'int2' }, 163{ aggfnoid => 'min(oid)', aggtransfn => 'oidsmaller', 164 aggcombinefn => 'oidsmaller', aggsortop => '<(oid,oid)', 165 aggtranstype => 'oid' }, 166{ aggfnoid => 'min(float4)', aggtransfn => 'float4smaller', 167 aggcombinefn => 'float4smaller', aggsortop => '<(float4,float4)', 168 aggtranstype => 'float4' }, 169{ aggfnoid => 'min(float8)', aggtransfn => 'float8smaller', 170 aggcombinefn => 'float8smaller', aggsortop => '<(float8,float8)', 171 aggtranstype => 'float8' }, 172{ aggfnoid => 'min(date)', aggtransfn => 'date_smaller', 173 aggcombinefn => 'date_smaller', aggsortop => '<(date,date)', 174 aggtranstype => 'date' }, 175{ aggfnoid => 'min(time)', aggtransfn => 'time_smaller', 176 aggcombinefn => 'time_smaller', aggsortop => '<(time,time)', 177 aggtranstype => 'time' }, 178{ aggfnoid => 'min(timetz)', aggtransfn => 'timetz_smaller', 179 aggcombinefn => 'timetz_smaller', aggsortop => '<(timetz,timetz)', 180 aggtranstype => 'timetz' }, 181{ aggfnoid => 'min(money)', aggtransfn => 'cashsmaller', 182 aggcombinefn => 'cashsmaller', aggsortop => '<(money,money)', 183 aggtranstype => 'money' }, 184{ aggfnoid => 'min(timestamp)', aggtransfn => 'timestamp_smaller', 185 aggcombinefn => 'timestamp_smaller', aggsortop => '<(timestamp,timestamp)', 186 aggtranstype => 'timestamp' }, 187{ aggfnoid => 'min(timestamptz)', aggtransfn => 'timestamptz_smaller', 188 aggcombinefn => 'timestamptz_smaller', 189 aggsortop => '<(timestamptz,timestamptz)', aggtranstype => 'timestamptz' }, 190{ aggfnoid => 'min(interval)', aggtransfn => 'interval_smaller', 191 aggcombinefn => 'interval_smaller', aggsortop => '<(interval,interval)', 192 aggtranstype => 'interval' }, 193{ aggfnoid => 'min(text)', aggtransfn => 'text_smaller', 194 aggcombinefn => 'text_smaller', aggsortop => '<(text,text)', 195 aggtranstype => 'text' }, 196{ aggfnoid => 'min(numeric)', aggtransfn => 'numeric_smaller', 197 aggcombinefn => 'numeric_smaller', aggsortop => '<(numeric,numeric)', 198 aggtranstype => 'numeric' }, 199{ aggfnoid => 'min(anyarray)', aggtransfn => 'array_smaller', 200 aggcombinefn => 'array_smaller', aggsortop => '<(anyarray,anyarray)', 201 aggtranstype => 'anyarray' }, 202{ aggfnoid => 'min(bpchar)', aggtransfn => 'bpchar_smaller', 203 aggcombinefn => 'bpchar_smaller', aggsortop => '<(bpchar,bpchar)', 204 aggtranstype => 'bpchar' }, 205{ aggfnoid => 'min(tid)', aggtransfn => 'tidsmaller', 206 aggcombinefn => 'tidsmaller', aggsortop => '<(tid,tid)', 207 aggtranstype => 'tid' }, 208{ aggfnoid => 'min(anyenum)', aggtransfn => 'enum_smaller', 209 aggcombinefn => 'enum_smaller', aggsortop => '<(anyenum,anyenum)', 210 aggtranstype => 'anyenum' }, 211{ aggfnoid => 'min(inet)', aggtransfn => 'network_smaller', 212 aggcombinefn => 'network_smaller', aggsortop => '<(inet,inet)', 213 aggtranstype => 'inet' }, 214{ aggfnoid => 'min(pg_lsn)', aggtransfn => 'pg_lsn_smaller', 215 aggcombinefn => 'pg_lsn_smaller', aggsortop => '<(pg_lsn,pg_lsn)', 216 aggtranstype => 'pg_lsn' }, 217 218# count 219{ aggfnoid => 'count(any)', aggtransfn => 'int8inc_any', 220 aggcombinefn => 'int8pl', aggmtransfn => 'int8inc_any', 221 aggminvtransfn => 'int8dec_any', aggtranstype => 'int8', 222 aggmtranstype => 'int8', agginitval => '0', aggminitval => '0' }, 223{ aggfnoid => 'count()', aggtransfn => 'int8inc', aggcombinefn => 'int8pl', 224 aggmtransfn => 'int8inc', aggminvtransfn => 'int8dec', aggtranstype => 'int8', 225 aggmtranstype => 'int8', agginitval => '0', aggminitval => '0' }, 226 227# var_pop 228{ aggfnoid => 'var_pop(int8)', aggtransfn => 'int8_accum', 229 aggfinalfn => 'numeric_var_pop', aggcombinefn => 'numeric_combine', 230 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 231 aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', 232 aggmfinalfn => 'numeric_var_pop', aggtranstype => 'internal', 233 aggtransspace => '128', aggmtranstype => 'internal', 234 aggmtransspace => '128' }, 235{ aggfnoid => 'var_pop(int4)', aggtransfn => 'int4_accum', 236 aggfinalfn => 'numeric_poly_var_pop', aggcombinefn => 'numeric_poly_combine', 237 aggserialfn => 'numeric_poly_serialize', 238 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', 239 aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_var_pop', 240 aggtranstype => 'internal', aggtransspace => '48', 241 aggmtranstype => 'internal', aggmtransspace => '48' }, 242{ aggfnoid => 'var_pop(int2)', aggtransfn => 'int2_accum', 243 aggfinalfn => 'numeric_poly_var_pop', aggcombinefn => 'numeric_poly_combine', 244 aggserialfn => 'numeric_poly_serialize', 245 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', 246 aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_var_pop', 247 aggtranstype => 'internal', aggtransspace => '48', 248 aggmtranstype => 'internal', aggmtransspace => '48' }, 249{ aggfnoid => 'var_pop(float4)', aggtransfn => 'float4_accum', 250 aggfinalfn => 'float8_var_pop', aggcombinefn => 'float8_combine', 251 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 252{ aggfnoid => 'var_pop(float8)', aggtransfn => 'float8_accum', 253 aggfinalfn => 'float8_var_pop', aggcombinefn => 'float8_combine', 254 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 255{ aggfnoid => 'var_pop(numeric)', aggtransfn => 'numeric_accum', 256 aggfinalfn => 'numeric_var_pop', aggcombinefn => 'numeric_combine', 257 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 258 aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', 259 aggmfinalfn => 'numeric_var_pop', aggtranstype => 'internal', 260 aggtransspace => '128', aggmtranstype => 'internal', 261 aggmtransspace => '128' }, 262 263# var_samp 264{ aggfnoid => 'var_samp(int8)', aggtransfn => 'int8_accum', 265 aggfinalfn => 'numeric_var_samp', aggcombinefn => 'numeric_combine', 266 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 267 aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', 268 aggmfinalfn => 'numeric_var_samp', aggtranstype => 'internal', 269 aggtransspace => '128', aggmtranstype => 'internal', 270 aggmtransspace => '128' }, 271{ aggfnoid => 'var_samp(int4)', aggtransfn => 'int4_accum', 272 aggfinalfn => 'numeric_poly_var_samp', aggcombinefn => 'numeric_poly_combine', 273 aggserialfn => 'numeric_poly_serialize', 274 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', 275 aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_var_samp', 276 aggtranstype => 'internal', aggtransspace => '48', 277 aggmtranstype => 'internal', aggmtransspace => '48' }, 278{ aggfnoid => 'var_samp(int2)', aggtransfn => 'int2_accum', 279 aggfinalfn => 'numeric_poly_var_samp', aggcombinefn => 'numeric_poly_combine', 280 aggserialfn => 'numeric_poly_serialize', 281 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', 282 aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_var_samp', 283 aggtranstype => 'internal', aggtransspace => '48', 284 aggmtranstype => 'internal', aggmtransspace => '48' }, 285{ aggfnoid => 'var_samp(float4)', aggtransfn => 'float4_accum', 286 aggfinalfn => 'float8_var_samp', aggcombinefn => 'float8_combine', 287 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 288{ aggfnoid => 'var_samp(float8)', aggtransfn => 'float8_accum', 289 aggfinalfn => 'float8_var_samp', aggcombinefn => 'float8_combine', 290 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 291{ aggfnoid => 'var_samp(numeric)', aggtransfn => 'numeric_accum', 292 aggfinalfn => 'numeric_var_samp', aggcombinefn => 'numeric_combine', 293 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 294 aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', 295 aggmfinalfn => 'numeric_var_samp', aggtranstype => 'internal', 296 aggtransspace => '128', aggmtranstype => 'internal', 297 aggmtransspace => '128' }, 298 299# variance: historical Postgres syntax for var_samp 300{ aggfnoid => 'variance(int8)', aggtransfn => 'int8_accum', 301 aggfinalfn => 'numeric_var_samp', aggcombinefn => 'numeric_combine', 302 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 303 aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', 304 aggmfinalfn => 'numeric_var_samp', aggtranstype => 'internal', 305 aggtransspace => '128', aggmtranstype => 'internal', 306 aggmtransspace => '128' }, 307{ aggfnoid => 'variance(int4)', aggtransfn => 'int4_accum', 308 aggfinalfn => 'numeric_poly_var_samp', aggcombinefn => 'numeric_poly_combine', 309 aggserialfn => 'numeric_poly_serialize', 310 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', 311 aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_var_samp', 312 aggtranstype => 'internal', aggtransspace => '48', 313 aggmtranstype => 'internal', aggmtransspace => '48' }, 314{ aggfnoid => 'variance(int2)', aggtransfn => 'int2_accum', 315 aggfinalfn => 'numeric_poly_var_samp', aggcombinefn => 'numeric_poly_combine', 316 aggserialfn => 'numeric_poly_serialize', 317 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', 318 aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_var_samp', 319 aggtranstype => 'internal', aggtransspace => '48', 320 aggmtranstype => 'internal', aggmtransspace => '48' }, 321{ aggfnoid => 'variance(float4)', aggtransfn => 'float4_accum', 322 aggfinalfn => 'float8_var_samp', aggcombinefn => 'float8_combine', 323 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 324{ aggfnoid => 'variance(float8)', aggtransfn => 'float8_accum', 325 aggfinalfn => 'float8_var_samp', aggcombinefn => 'float8_combine', 326 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 327{ aggfnoid => 'variance(numeric)', aggtransfn => 'numeric_accum', 328 aggfinalfn => 'numeric_var_samp', aggcombinefn => 'numeric_combine', 329 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 330 aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', 331 aggmfinalfn => 'numeric_var_samp', aggtranstype => 'internal', 332 aggtransspace => '128', aggmtranstype => 'internal', 333 aggmtransspace => '128' }, 334 335# stddev_pop 336{ aggfnoid => 'stddev_pop(int8)', aggtransfn => 'int8_accum', 337 aggfinalfn => 'numeric_stddev_pop', aggcombinefn => 'numeric_combine', 338 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 339 aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', 340 aggmfinalfn => 'numeric_stddev_pop', aggtranstype => 'internal', 341 aggtransspace => '128', aggmtranstype => 'internal', 342 aggmtransspace => '128' }, 343{ aggfnoid => 'stddev_pop(int4)', aggtransfn => 'int4_accum', 344 aggfinalfn => 'numeric_poly_stddev_pop', 345 aggcombinefn => 'numeric_poly_combine', 346 aggserialfn => 'numeric_poly_serialize', 347 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', 348 aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_stddev_pop', 349 aggtranstype => 'internal', aggtransspace => '48', 350 aggmtranstype => 'internal', aggmtransspace => '48' }, 351{ aggfnoid => 'stddev_pop(int2)', aggtransfn => 'int2_accum', 352 aggfinalfn => 'numeric_poly_stddev_pop', 353 aggcombinefn => 'numeric_poly_combine', 354 aggserialfn => 'numeric_poly_serialize', 355 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', 356 aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_stddev_pop', 357 aggtranstype => 'internal', aggtransspace => '48', 358 aggmtranstype => 'internal', aggmtransspace => '48' }, 359{ aggfnoid => 'stddev_pop(float4)', aggtransfn => 'float4_accum', 360 aggfinalfn => 'float8_stddev_pop', aggcombinefn => 'float8_combine', 361 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 362{ aggfnoid => 'stddev_pop(float8)', aggtransfn => 'float8_accum', 363 aggfinalfn => 'float8_stddev_pop', aggcombinefn => 'float8_combine', 364 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 365{ aggfnoid => 'stddev_pop(numeric)', aggtransfn => 'numeric_accum', 366 aggfinalfn => 'numeric_stddev_pop', aggcombinefn => 'numeric_combine', 367 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 368 aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', 369 aggmfinalfn => 'numeric_stddev_pop', aggtranstype => 'internal', 370 aggtransspace => '128', aggmtranstype => 'internal', 371 aggmtransspace => '128' }, 372 373# stddev_samp 374{ aggfnoid => 'stddev_samp(int8)', aggtransfn => 'int8_accum', 375 aggfinalfn => 'numeric_stddev_samp', aggcombinefn => 'numeric_combine', 376 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 377 aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', 378 aggmfinalfn => 'numeric_stddev_samp', aggtranstype => 'internal', 379 aggtransspace => '128', aggmtranstype => 'internal', 380 aggmtransspace => '128' }, 381{ aggfnoid => 'stddev_samp(int4)', aggtransfn => 'int4_accum', 382 aggfinalfn => 'numeric_poly_stddev_samp', 383 aggcombinefn => 'numeric_poly_combine', 384 aggserialfn => 'numeric_poly_serialize', 385 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', 386 aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_stddev_samp', 387 aggtranstype => 'internal', aggtransspace => '48', 388 aggmtranstype => 'internal', aggmtransspace => '48' }, 389{ aggfnoid => 'stddev_samp(int2)', aggtransfn => 'int2_accum', 390 aggfinalfn => 'numeric_poly_stddev_samp', 391 aggcombinefn => 'numeric_poly_combine', 392 aggserialfn => 'numeric_poly_serialize', 393 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', 394 aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_stddev_samp', 395 aggtranstype => 'internal', aggtransspace => '48', 396 aggmtranstype => 'internal', aggmtransspace => '48' }, 397{ aggfnoid => 'stddev_samp(float4)', aggtransfn => 'float4_accum', 398 aggfinalfn => 'float8_stddev_samp', aggcombinefn => 'float8_combine', 399 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 400{ aggfnoid => 'stddev_samp(float8)', aggtransfn => 'float8_accum', 401 aggfinalfn => 'float8_stddev_samp', aggcombinefn => 'float8_combine', 402 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 403{ aggfnoid => 'stddev_samp(numeric)', aggtransfn => 'numeric_accum', 404 aggfinalfn => 'numeric_stddev_samp', aggcombinefn => 'numeric_combine', 405 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 406 aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', 407 aggmfinalfn => 'numeric_stddev_samp', aggtranstype => 'internal', 408 aggtransspace => '128', aggmtranstype => 'internal', 409 aggmtransspace => '128' }, 410 411# stddev: historical Postgres syntax for stddev_samp 412{ aggfnoid => 'stddev(int8)', aggtransfn => 'int8_accum', 413 aggfinalfn => 'numeric_stddev_samp', aggcombinefn => 'numeric_combine', 414 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 415 aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', 416 aggmfinalfn => 'numeric_stddev_samp', aggtranstype => 'internal', 417 aggtransspace => '128', aggmtranstype => 'internal', 418 aggmtransspace => '128' }, 419{ aggfnoid => 'stddev(int4)', aggtransfn => 'int4_accum', 420 aggfinalfn => 'numeric_poly_stddev_samp', 421 aggcombinefn => 'numeric_poly_combine', 422 aggserialfn => 'numeric_poly_serialize', 423 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', 424 aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_stddev_samp', 425 aggtranstype => 'internal', aggtransspace => '48', 426 aggmtranstype => 'internal', aggmtransspace => '48' }, 427{ aggfnoid => 'stddev(int2)', aggtransfn => 'int2_accum', 428 aggfinalfn => 'numeric_poly_stddev_samp', 429 aggcombinefn => 'numeric_poly_combine', 430 aggserialfn => 'numeric_poly_serialize', 431 aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', 432 aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_stddev_samp', 433 aggtranstype => 'internal', aggtransspace => '48', 434 aggmtranstype => 'internal', aggmtransspace => '48' }, 435{ aggfnoid => 'stddev(float4)', aggtransfn => 'float4_accum', 436 aggfinalfn => 'float8_stddev_samp', aggcombinefn => 'float8_combine', 437 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 438{ aggfnoid => 'stddev(float8)', aggtransfn => 'float8_accum', 439 aggfinalfn => 'float8_stddev_samp', aggcombinefn => 'float8_combine', 440 aggtranstype => '_float8', agginitval => '{0,0,0}' }, 441{ aggfnoid => 'stddev(numeric)', aggtransfn => 'numeric_accum', 442 aggfinalfn => 'numeric_stddev_samp', aggcombinefn => 'numeric_combine', 443 aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', 444 aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', 445 aggmfinalfn => 'numeric_stddev_samp', aggtranstype => 'internal', 446 aggtransspace => '128', aggmtranstype => 'internal', 447 aggmtransspace => '128' }, 448 449# SQL2003 binary regression aggregates 450{ aggfnoid => 'regr_count', aggtransfn => 'int8inc_float8_float8', 451 aggcombinefn => 'int8pl', aggtranstype => 'int8', agginitval => '0' }, 452{ aggfnoid => 'regr_sxx', aggtransfn => 'float8_regr_accum', 453 aggfinalfn => 'float8_regr_sxx', aggcombinefn => 'float8_regr_combine', 454 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 455{ aggfnoid => 'regr_syy', aggtransfn => 'float8_regr_accum', 456 aggfinalfn => 'float8_regr_syy', aggcombinefn => 'float8_regr_combine', 457 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 458{ aggfnoid => 'regr_sxy', aggtransfn => 'float8_regr_accum', 459 aggfinalfn => 'float8_regr_sxy', aggcombinefn => 'float8_regr_combine', 460 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 461{ aggfnoid => 'regr_avgx', aggtransfn => 'float8_regr_accum', 462 aggfinalfn => 'float8_regr_avgx', aggcombinefn => 'float8_regr_combine', 463 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 464{ aggfnoid => 'regr_avgy', aggtransfn => 'float8_regr_accum', 465 aggfinalfn => 'float8_regr_avgy', aggcombinefn => 'float8_regr_combine', 466 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 467{ aggfnoid => 'regr_r2', aggtransfn => 'float8_regr_accum', 468 aggfinalfn => 'float8_regr_r2', aggcombinefn => 'float8_regr_combine', 469 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 470{ aggfnoid => 'regr_slope', aggtransfn => 'float8_regr_accum', 471 aggfinalfn => 'float8_regr_slope', aggcombinefn => 'float8_regr_combine', 472 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 473{ aggfnoid => 'regr_intercept', aggtransfn => 'float8_regr_accum', 474 aggfinalfn => 'float8_regr_intercept', aggcombinefn => 'float8_regr_combine', 475 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 476{ aggfnoid => 'covar_pop', aggtransfn => 'float8_regr_accum', 477 aggfinalfn => 'float8_covar_pop', aggcombinefn => 'float8_regr_combine', 478 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 479{ aggfnoid => 'covar_samp', aggtransfn => 'float8_regr_accum', 480 aggfinalfn => 'float8_covar_samp', aggcombinefn => 'float8_regr_combine', 481 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 482{ aggfnoid => 'corr', aggtransfn => 'float8_regr_accum', 483 aggfinalfn => 'float8_corr', aggcombinefn => 'float8_regr_combine', 484 aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, 485 486# boolean-and and boolean-or 487{ aggfnoid => 'bool_and', aggtransfn => 'booland_statefunc', 488 aggcombinefn => 'booland_statefunc', aggmtransfn => 'bool_accum', 489 aggminvtransfn => 'bool_accum_inv', aggmfinalfn => 'bool_alltrue', 490 aggsortop => '<(bool,bool)', aggtranstype => 'bool', 491 aggmtranstype => 'internal', aggmtransspace => '16' }, 492{ aggfnoid => 'bool_or', aggtransfn => 'boolor_statefunc', 493 aggcombinefn => 'boolor_statefunc', aggmtransfn => 'bool_accum', 494 aggminvtransfn => 'bool_accum_inv', aggmfinalfn => 'bool_anytrue', 495 aggsortop => '>(bool,bool)', aggtranstype => 'bool', 496 aggmtranstype => 'internal', aggmtransspace => '16' }, 497{ aggfnoid => 'every', aggtransfn => 'booland_statefunc', 498 aggcombinefn => 'booland_statefunc', aggmtransfn => 'bool_accum', 499 aggminvtransfn => 'bool_accum_inv', aggmfinalfn => 'bool_alltrue', 500 aggsortop => '<(bool,bool)', aggtranstype => 'bool', 501 aggmtranstype => 'internal', aggmtransspace => '16' }, 502 503# bitwise integer 504{ aggfnoid => 'bit_and(int2)', aggtransfn => 'int2and', 505 aggcombinefn => 'int2and', aggtranstype => 'int2' }, 506{ aggfnoid => 'bit_or(int2)', aggtransfn => 'int2or', aggcombinefn => 'int2or', 507 aggtranstype => 'int2' }, 508{ aggfnoid => 'bit_xor(int2)', aggtransfn => 'int2xor', 509 aggcombinefn => 'int2xor', aggtranstype => 'int2' }, 510{ aggfnoid => 'bit_and(int4)', aggtransfn => 'int4and', 511 aggcombinefn => 'int4and', aggtranstype => 'int4' }, 512{ aggfnoid => 'bit_or(int4)', aggtransfn => 'int4or', aggcombinefn => 'int4or', 513 aggtranstype => 'int4' }, 514{ aggfnoid => 'bit_xor(int4)', aggtransfn => 'int4xor', 515 aggcombinefn => 'int4xor', aggtranstype => 'int4' }, 516{ aggfnoid => 'bit_and(int8)', aggtransfn => 'int8and', 517 aggcombinefn => 'int8and', aggtranstype => 'int8' }, 518{ aggfnoid => 'bit_or(int8)', aggtransfn => 'int8or', aggcombinefn => 'int8or', 519 aggtranstype => 'int8' }, 520{ aggfnoid => 'bit_xor(int8)', aggtransfn => 'int8xor', 521 aggcombinefn => 'int8xor', aggtranstype => 'int8' }, 522{ aggfnoid => 'bit_and(bit)', aggtransfn => 'bitand', aggcombinefn => 'bitand', 523 aggtranstype => 'bit' }, 524{ aggfnoid => 'bit_or(bit)', aggtransfn => 'bitor', aggcombinefn => 'bitor', 525 aggtranstype => 'bit' }, 526{ aggfnoid => 'bit_xor(bit)', aggtransfn => 'bitxor', aggcombinefn => 'bitxor', 527 aggtranstype => 'bit' }, 528 529# xml 530{ aggfnoid => 'xmlagg', aggtransfn => 'xmlconcat2', aggtranstype => 'xml' }, 531 532# array 533{ aggfnoid => 'array_agg(anynonarray)', aggtransfn => 'array_agg_transfn', 534 aggfinalfn => 'array_agg_finalfn', aggfinalextra => 't', 535 aggtranstype => 'internal' }, 536{ aggfnoid => 'array_agg(anyarray)', aggtransfn => 'array_agg_array_transfn', 537 aggfinalfn => 'array_agg_array_finalfn', aggfinalextra => 't', 538 aggtranstype => 'internal' }, 539 540# text 541{ aggfnoid => 'string_agg(text,text)', aggtransfn => 'string_agg_transfn', 542 aggfinalfn => 'string_agg_finalfn', aggtranstype => 'internal' }, 543 544# bytea 545{ aggfnoid => 'string_agg(bytea,bytea)', 546 aggtransfn => 'bytea_string_agg_transfn', 547 aggfinalfn => 'bytea_string_agg_finalfn', aggtranstype => 'internal' }, 548 549# range 550{ aggfnoid => 'range_intersect_agg(anyrange)', 551 aggtransfn => 'range_intersect_agg_transfn', 552 aggcombinefn => 'range_intersect_agg_transfn', aggtranstype => 'anyrange' }, 553{ aggfnoid => 'range_intersect_agg(anymultirange)', 554 aggtransfn => 'multirange_intersect_agg_transfn', 555 aggcombinefn => 'multirange_intersect_agg_transfn', 556 aggtranstype => 'anymultirange' }, 557{ aggfnoid => 'range_agg(anyrange)', aggtransfn => 'range_agg_transfn', 558 aggfinalfn => 'range_agg_finalfn', aggfinalextra => 't', 559 aggtranstype => 'internal' }, 560 561# json 562{ aggfnoid => 'json_agg', aggtransfn => 'json_agg_transfn', 563 aggfinalfn => 'json_agg_finalfn', aggtranstype => 'internal' }, 564{ aggfnoid => 'json_object_agg', aggtransfn => 'json_object_agg_transfn', 565 aggfinalfn => 'json_object_agg_finalfn', aggtranstype => 'internal' }, 566 567# jsonb 568{ aggfnoid => 'jsonb_agg', aggtransfn => 'jsonb_agg_transfn', 569 aggfinalfn => 'jsonb_agg_finalfn', aggtranstype => 'internal' }, 570{ aggfnoid => 'jsonb_object_agg', aggtransfn => 'jsonb_object_agg_transfn', 571 aggfinalfn => 'jsonb_object_agg_finalfn', aggtranstype => 'internal' }, 572 573# ordered-set and hypothetical-set aggregates 574{ aggfnoid => 'percentile_disc(float8,anyelement)', aggkind => 'o', 575 aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', 576 aggfinalfn => 'percentile_disc_final', aggfinalextra => 't', 577 aggfinalmodify => 's', aggmfinalmodify => 's', aggtranstype => 'internal' }, 578{ aggfnoid => 'percentile_cont(float8,float8)', aggkind => 'o', 579 aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', 580 aggfinalfn => 'percentile_cont_float8_final', aggfinalmodify => 's', 581 aggmfinalmodify => 's', aggtranstype => 'internal' }, 582{ aggfnoid => 'percentile_cont(float8,interval)', aggkind => 'o', 583 aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', 584 aggfinalfn => 'percentile_cont_interval_final', aggfinalmodify => 's', 585 aggmfinalmodify => 's', aggtranstype => 'internal' }, 586{ aggfnoid => 'percentile_disc(_float8,anyelement)', aggkind => 'o', 587 aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', 588 aggfinalfn => 'percentile_disc_multi_final', aggfinalextra => 't', 589 aggfinalmodify => 's', aggmfinalmodify => 's', aggtranstype => 'internal' }, 590{ aggfnoid => 'percentile_cont(_float8,float8)', aggkind => 'o', 591 aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', 592 aggfinalfn => 'percentile_cont_float8_multi_final', aggfinalmodify => 's', 593 aggmfinalmodify => 's', aggtranstype => 'internal' }, 594{ aggfnoid => 'percentile_cont(_float8,interval)', aggkind => 'o', 595 aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', 596 aggfinalfn => 'percentile_cont_interval_multi_final', aggfinalmodify => 's', 597 aggmfinalmodify => 's', aggtranstype => 'internal' }, 598{ aggfnoid => 'mode', aggkind => 'o', aggtransfn => 'ordered_set_transition', 599 aggfinalfn => 'mode_final', aggfinalextra => 't', aggfinalmodify => 's', 600 aggmfinalmodify => 's', aggtranstype => 'internal' }, 601{ aggfnoid => 'rank(any)', aggkind => 'h', aggnumdirectargs => '1', 602 aggtransfn => 'ordered_set_transition_multi', aggfinalfn => 'rank_final', 603 aggfinalextra => 't', aggfinalmodify => 'w', aggmfinalmodify => 'w', 604 aggtranstype => 'internal' }, 605{ aggfnoid => 'percent_rank(any)', aggkind => 'h', aggnumdirectargs => '1', 606 aggtransfn => 'ordered_set_transition_multi', 607 aggfinalfn => 'percent_rank_final', aggfinalextra => 't', 608 aggfinalmodify => 'w', aggmfinalmodify => 'w', aggtranstype => 'internal' }, 609{ aggfnoid => 'cume_dist(any)', aggkind => 'h', aggnumdirectargs => '1', 610 aggtransfn => 'ordered_set_transition_multi', aggfinalfn => 'cume_dist_final', 611 aggfinalextra => 't', aggfinalmodify => 'w', aggmfinalmodify => 'w', 612 aggtranstype => 'internal' }, 613{ aggfnoid => 'dense_rank(any)', aggkind => 'h', aggnumdirectargs => '1', 614 aggtransfn => 'ordered_set_transition_multi', 615 aggfinalfn => 'dense_rank_final', aggfinalextra => 't', aggfinalmodify => 'w', 616 aggmfinalmodify => 'w', aggtranstype => 'internal' }, 617 618] 619