Header And Logo

PostgreSQL
| The world's most advanced open source database.

Defines | Typedefs | Functions | Variables

pg_aggregate.h File Reference

#include "catalog/genbki.h"
#include "nodes/pg_list.h"
Include dependency graph for pg_aggregate.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define AggregateRelationId   2600
#define Natts_pg_aggregate   6
#define Anum_pg_aggregate_aggfnoid   1
#define Anum_pg_aggregate_aggtransfn   2
#define Anum_pg_aggregate_aggfinalfn   3
#define Anum_pg_aggregate_aggsortop   4
#define Anum_pg_aggregate_aggtranstype   5
#define Anum_pg_aggregate_agginitval   6

Typedefs

typedef FormData_pg_aggregateForm_pg_aggregate

Functions

 CATALOG (pg_aggregate, 2600) BKI_WITHOUT_OIDS
 DATA (insert(2100 int8_avg_accum numeric_avg0 1231"{0,0}"))
 DATA (insert(2101 int4_avg_accum int8_avg0 1016"{0,0}"))
 DATA (insert(2102 int2_avg_accum int8_avg0 1016"{0,0}"))
 DATA (insert(2103 numeric_avg_accum numeric_avg0 1231"{0,0}"))
 DATA (insert(2104 float4_accum float8_avg0 1022"{0,0,0}"))
 DATA (insert(2105 float8_accum float8_avg0 1022"{0,0,0}"))
 DATA (insert(2106 interval_accum interval_avg 0 1187"{0 second,0 second}"))
 DATA (insert(2107 int8_sum-0 1700 _null_))
 DATA (insert(2108 int4_sum-0 20_null_))
 DATA (insert(2109 int2_sum-0 20_null_))
 DATA (insert(2110 float4pl-0 700_null_))
 DATA (insert(2111 float8pl-0 701_null_))
 DATA (insert(2112 cash_pl-0 790_null_))
 DATA (insert(2113 interval_pl-0 1186 _null_))
 DATA (insert(2114 numeric_add-0 1700 _null_))
 DATA (insert(2115 int8larger-41320_null_))
 DATA (insert(2116 int4larger-52123_null_))
 DATA (insert(2117 int2larger-52021_null_))
 DATA (insert(2118 oidlarger-61026_null_))
 DATA (insert(2119 float4larger-623700_null_))
 DATA (insert(2120 float8larger-674701_null_))
 DATA (insert(2121 int4larger-563702_null_))
 DATA (insert(2122 date_larger-1097 1082 _null_))
 DATA (insert(2123 time_larger-1112 1083 _null_))
 DATA (insert(2124 timetz_larger-1554 1266 _null_))
 DATA (insert(2125 cashlarger-903790_null_))
 DATA (insert(2126 timestamp_larger-2064 1114 _null_))
 DATA (insert(2127 timestamptz_larger-1324 1184 _null_))
 DATA (insert(2128 interval_larger-1334 1186 _null_))
 DATA (insert(2129 text_larger-66625_null_))
 DATA (insert(2130 numeric_larger-1756 1700 _null_))
 DATA (insert(2050 array_larger-1073 2277 _null_))
 DATA (insert(2244 bpchar_larger-1060 1042 _null_))
 DATA (insert(2797 tidlarger-2800 27_null_))
 DATA (insert(3526 enum_larger-3519 3500 _null_))
 DATA (insert(2131 int8smaller-41220_null_))
 DATA (insert(2132 int4smaller-9723_null_))
 DATA (insert(2133 int2smaller-9521_null_))
 DATA (insert(2134 oidsmaller-60926_null_))
 DATA (insert(2135 float4smaller-622700_null_))
 DATA (insert(2136 float8smaller-672701_null_))
 DATA (insert(2137 int4smaller-562702_null_))
 DATA (insert(2138 date_smaller-1095 1082 _null_))
 DATA (insert(2139 time_smaller-1110 1083 _null_))
 DATA (insert(2140 timetz_smaller-1552 1266 _null_))
 DATA (insert(2141 cashsmaller-902790_null_))
 DATA (insert(2142 timestamp_smaller-2062 1114 _null_))
 DATA (insert(2143 timestamptz_smaller-1322 1184 _null_))
 DATA (insert(2144 interval_smaller-1332 1186 _null_))
 DATA (insert(2145 text_smaller-66425_null_))
 DATA (insert(2146 numeric_smaller-1754 1700 _null_))
 DATA (insert(2051 array_smaller-1072 2277 _null_))
 DATA (insert(2245 bpchar_smaller-1058 1042 _null_))
 DATA (insert(2798 tidsmaller-2799 27_null_))
 DATA (insert(3527 enum_smaller-3518 3500 _null_))
 DATA (insert(2147 int8inc_any-020"0"))
 DATA (insert(2803 int8inc-020"0"))
 DATA (insert(2718 int8_accum numeric_var_pop 0 1231"{0,0,0}"))
 DATA (insert(2719 int4_accum numeric_var_pop 0 1231"{0,0,0}"))
 DATA (insert(2720 int2_accum numeric_var_pop 0 1231"{0,0,0}"))
 DATA (insert(2721 float4_accum float8_var_pop 0 1022"{0,0,0}"))
 DATA (insert(2722 float8_accum float8_var_pop 0 1022"{0,0,0}"))
 DATA (insert(2723 numeric_accumnumeric_var_pop 0 1231"{0,0,0}"))
 DATA (insert(2641 int8_accum numeric_var_samp 0 1231"{0,0,0}"))
 DATA (insert(2642 int4_accum numeric_var_samp 0 1231"{0,0,0}"))
 DATA (insert(2643 int2_accum numeric_var_samp 0 1231"{0,0,0}"))
 DATA (insert(2644 float4_accum float8_var_samp 0 1022"{0,0,0}"))
 DATA (insert(2645 float8_accum float8_var_samp 0 1022"{0,0,0}"))
 DATA (insert(2646 numeric_accumnumeric_var_samp 0 1231"{0,0,0}"))
 DATA (insert(2148 int8_accum numeric_var_samp 0 1231"{0,0,0}"))
 DATA (insert(2149 int4_accum numeric_var_samp 0 1231"{0,0,0}"))
 DATA (insert(2150 int2_accum numeric_var_samp 0 1231"{0,0,0}"))
 DATA (insert(2151 float4_accum float8_var_samp 0 1022"{0,0,0}"))
 DATA (insert(2152 float8_accum float8_var_samp 0 1022"{0,0,0}"))
 DATA (insert(2153 numeric_accumnumeric_var_samp 0 1231"{0,0,0}"))
 DATA (insert(2724 int8_accum numeric_stddev_pop0 1231"{0,0,0}"))
 DATA (insert(2725 int4_accum numeric_stddev_pop0 1231"{0,0,0}"))
 DATA (insert(2726 int2_accum numeric_stddev_pop0 1231"{0,0,0}"))
 DATA (insert(2727 float4_accum float8_stddev_pop 0 1022"{0,0,0}"))
 DATA (insert(2728 float8_accum float8_stddev_pop 0 1022"{0,0,0}"))
 DATA (insert(2729 numeric_accum numeric_stddev_pop 0 1231"{0,0,0}"))
 DATA (insert(2712 int8_accum numeric_stddev_samp0 1231"{0,0,0}"))
 DATA (insert(2713 int4_accum numeric_stddev_samp0 1231"{0,0,0}"))
 DATA (insert(2714 int2_accum numeric_stddev_samp0 1231"{0,0,0}"))
 DATA (insert(2715 float4_accum float8_stddev_samp 0 1022"{0,0,0}"))
 DATA (insert(2716 float8_accum float8_stddev_samp 0 1022"{0,0,0}"))
 DATA (insert(2717 numeric_accum numeric_stddev_samp 0 1231"{0,0,0}"))
 DATA (insert(2154 int8_accum numeric_stddev_samp0 1231"{0,0,0}"))
 DATA (insert(2155 int4_accum numeric_stddev_samp0 1231"{0,0,0}"))
 DATA (insert(2156 int2_accum numeric_stddev_samp0 1231"{0,0,0}"))
 DATA (insert(2157 float4_accum float8_stddev_samp 0 1022"{0,0,0}"))
 DATA (insert(2158 float8_accum float8_stddev_samp 0 1022"{0,0,0}"))
 DATA (insert(2159 numeric_accum numeric_stddev_samp 0 1231"{0,0,0}"))
 DATA (insert(2818 int8inc_float8_float8-0 20"0"))
 DATA (insert(2819 float8_regr_accum float8_regr_sxx0 1022"{0,0,0,0,0,0}"))
 DATA (insert(2820 float8_regr_accum float8_regr_syy0 1022"{0,0,0,0,0,0}"))
 DATA (insert(2821 float8_regr_accum float8_regr_sxy0 1022"{0,0,0,0,0,0}"))
 DATA (insert(2822 float8_regr_accum float8_regr_avgx0 1022"{0,0,0,0,0,0}"))
 DATA (insert(2823 float8_regr_accum float8_regr_avgy0 1022"{0,0,0,0,0,0}"))
 DATA (insert(2824 float8_regr_accum float8_regr_r20 1022"{0,0,0,0,0,0}"))
 DATA (insert(2825 float8_regr_accum float8_regr_slope0 1022"{0,0,0,0,0,0}"))
 DATA (insert(2826 float8_regr_accum float8_regr_intercept 0 1022"{0,0,0,0,0,0}"))
 DATA (insert(2827 float8_regr_accum float8_covar_pop0 1022"{0,0,0,0,0,0}"))
 DATA (insert(2828 float8_regr_accum float8_covar_samp0 1022"{0,0,0,0,0,0}"))
 DATA (insert(2829 float8_regr_accum float8_corr0 1022"{0,0,0,0,0,0}"))
 DATA (insert(2517 booland_statefunc-58 16_null_))
 DATA (insert(2518 boolor_statefunc-59 16_null_))
 DATA (insert(2519 booland_statefunc-58 16_null_))
 DATA (insert(2236 int2and-0 21_null_))
 DATA (insert(2237 int2or-0 21_null_))
 DATA (insert(2238 int4and-0 23_null_))
 DATA (insert(2239 int4or-0 23_null_))
 DATA (insert(2240 int8and-0 20_null_))
 DATA (insert(2241 int8or-0 20_null_))
 DATA (insert(2242 bitand-0 1560 _null_))
 DATA (insert(2243 bitor-0 1560 _null_))
 DATA (insert(2901 xmlconcat2-0 142_null_))
 DATA (insert(2335 array_agg_transfn array_agg_finalfn0 2281 _null_))
 DATA (insert(3538 string_agg_transfn string_agg_finalfn0 2281 _null_))
 DATA (insert(3545 bytea_string_agg_transfn bytea_string_agg_finalfn0 2281 _null_))
 DATA (insert(3175 json_agg_transfn json_agg_finalfn0 2281 _null_))
Oid AggregateCreate (const char *aggName, Oid aggNamespace, Oid *aggArgTypes, int numArgs, List *aggtransfnName, List *aggfinalfnName, List *aggsortopName, Oid aggTransType, const char *agginitval)

Variables

 FormData_pg_aggregate

Define Documentation

#define AggregateRelationId   2600

Definition at line 38 of file pg_aggregate.h.

Referenced by AggregateCreate(), and RemoveFunctionById().

#define Anum_pg_aggregate_aggfinalfn   3

Definition at line 68 of file pg_aggregate.h.

Referenced by AggregateCreate().

#define Anum_pg_aggregate_aggfnoid   1

Definition at line 66 of file pg_aggregate.h.

Referenced by AggregateCreate().

#define Anum_pg_aggregate_agginitval   6

Definition at line 71 of file pg_aggregate.h.

Referenced by AggregateCreate(), ExecInitAgg(), and initialize_peragg().

#define Anum_pg_aggregate_aggsortop   4

Definition at line 69 of file pg_aggregate.h.

Referenced by AggregateCreate().

#define Anum_pg_aggregate_aggtransfn   2

Definition at line 67 of file pg_aggregate.h.

Referenced by AggregateCreate().

#define Anum_pg_aggregate_aggtranstype   5

Definition at line 70 of file pg_aggregate.h.

Referenced by AggregateCreate().

#define Natts_pg_aggregate   6

Definition at line 65 of file pg_aggregate.h.


Typedef Documentation

Definition at line 58 of file pg_aggregate.h.


Function Documentation

Oid AggregateCreate ( const char *  aggName,
Oid  aggNamespace,
Oid aggArgTypes,
int  numArgs,
List aggtransfnName,
List aggfinalfnName,
List aggsortopName,
Oid  aggTransType,
const char *  agginitval 
)

Definition at line 46 of file pg_aggregate.c.

References ACL_USAGE, aclcheck_error_type(), ACLCHECK_OK, AggregateRelationId, Anum_pg_aggregate_aggfinalfn, Anum_pg_aggregate_aggfnoid, Anum_pg_aggregate_agginitval, Anum_pg_aggregate_aggsortop, Anum_pg_aggregate_aggtransfn, Anum_pg_aggregate_aggtranstype, Assert, buildoidvector(), CatalogUpdateIndexes(), ObjectAddress::classId, CStringGetTextDatum, DEPENDENCY_NORMAL, elog, ereport, errcode(), errdetail(), errmsg(), ERROR, format_type_be(), GETSTRUCT, GetUserId(), heap_close, heap_form_tuple(), heap_open(), HeapTupleIsValid, i, INTERNALlanguageId, INTERNALOID, InvalidOid, IsBinaryCoercible(), IsPolymorphicType, lookup_agg_function(), LookupOperName(), NameListToString(), NIL, NULL, ObjectAddress::objectId, ObjectIdGetDatum, ObjectAddress::objectSubId, OidIsValid, palloc(), pg_type_aclcheck(), PointerGetDatum, ProcedureCreate(), PROCOID, PROVOLATILE_IMMUTABLE, RelationData::rd_att, recordDependencyOn(), ReleaseSysCache(), RowExclusiveLock, SearchSysCache1, simple_heap_insert(), and values.

Referenced by DefineAggregate().

{
    Relation    aggdesc;
    HeapTuple   tup;
    bool        nulls[Natts_pg_aggregate];
    Datum       values[Natts_pg_aggregate];
    Form_pg_proc proc;
    Oid         transfn;
    Oid         finalfn = InvalidOid;   /* can be omitted */
    Oid         sortop = InvalidOid;    /* can be omitted */
    bool        hasPolyArg;
    bool        hasInternalArg;
    Oid         rettype;
    Oid         finaltype;
    Oid        *fnArgs;
    int         nargs_transfn;
    Oid         procOid;
    TupleDesc   tupDesc;
    int         i;
    ObjectAddress myself,
                referenced;
    AclResult   aclresult;

    /* sanity checks (caller should have caught these) */
    if (!aggName)
        elog(ERROR, "no aggregate name supplied");

    if (!aggtransfnName)
        elog(ERROR, "aggregate must have a transition function");

    /* check for polymorphic and INTERNAL arguments */
    hasPolyArg = false;
    hasInternalArg = false;
    for (i = 0; i < numArgs; i++)
    {
        if (IsPolymorphicType(aggArgTypes[i]))
            hasPolyArg = true;
        else if (aggArgTypes[i] == INTERNALOID)
            hasInternalArg = true;
    }

    /*
     * If transtype is polymorphic, must have polymorphic argument also; else
     * we will have no way to deduce the actual transtype.
     */
    if (IsPolymorphicType(aggTransType) && !hasPolyArg)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
                 errmsg("cannot determine transition data type"),
                 errdetail("An aggregate using a polymorphic transition type must have at least one polymorphic argument.")));

    /* find the transfn */
    nargs_transfn = numArgs + 1;
    fnArgs = (Oid *) palloc(nargs_transfn * sizeof(Oid));
    fnArgs[0] = aggTransType;
    memcpy(fnArgs + 1, aggArgTypes, numArgs * sizeof(Oid));
    transfn = lookup_agg_function(aggtransfnName, nargs_transfn, fnArgs,
                                  &rettype);

    /*
     * Return type of transfn (possibly after refinement by
     * enforce_generic_type_consistency, if transtype isn't polymorphic) must
     * exactly match declared transtype.
     *
     * In the non-polymorphic-transtype case, it might be okay to allow a
     * rettype that's binary-coercible to transtype, but I'm not quite
     * convinced that it's either safe or useful.  When transtype is
     * polymorphic we *must* demand exact equality.
     */
    if (rettype != aggTransType)
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
                 errmsg("return type of transition function %s is not %s",
                        NameListToString(aggtransfnName),
                        format_type_be(aggTransType))));

    tup = SearchSysCache1(PROCOID, ObjectIdGetDatum(transfn));
    if (!HeapTupleIsValid(tup))
        elog(ERROR, "cache lookup failed for function %u", transfn);
    proc = (Form_pg_proc) GETSTRUCT(tup);

    /*
     * If the transfn is strict and the initval is NULL, make sure first input
     * type and transtype are the same (or at least binary-compatible), so
     * that it's OK to use the first input value as the initial transValue.
     */
    if (proc->proisstrict && agginitval == NULL)
    {
        if (numArgs < 1 ||
            !IsBinaryCoercible(aggArgTypes[0], aggTransType))
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
                     errmsg("must not omit initial value when transition function is strict and transition type is not compatible with input type")));
    }
    ReleaseSysCache(tup);

    /* handle finalfn, if supplied */
    if (aggfinalfnName)
    {
        fnArgs[0] = aggTransType;
        finalfn = lookup_agg_function(aggfinalfnName, 1, fnArgs,
                                      &finaltype);
    }
    else
    {
        /*
         * If no finalfn, aggregate result type is type of the state value
         */
        finaltype = aggTransType;
    }
    Assert(OidIsValid(finaltype));

    /*
     * If finaltype (i.e. aggregate return type) is polymorphic, inputs must
     * be polymorphic also, else parser will fail to deduce result type.
     * (Note: given the previous test on transtype and inputs, this cannot
     * happen, unless someone has snuck a finalfn definition into the catalogs
     * that itself violates the rule against polymorphic result with no
     * polymorphic input.)
     */
    if (IsPolymorphicType(finaltype) && !hasPolyArg)
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
                 errmsg("cannot determine result data type"),
                 errdetail("An aggregate returning a polymorphic type "
                           "must have at least one polymorphic argument.")));

    /*
     * Also, the return type can't be INTERNAL unless there's at least one
     * INTERNAL argument.  This is the same type-safety restriction we enforce
     * for regular functions, but at the level of aggregates.  We must test
     * this explicitly because we allow INTERNAL as the transtype.
     */
    if (finaltype == INTERNALOID && !hasInternalArg)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
                 errmsg("unsafe use of pseudo-type \"internal\""),
                 errdetail("A function returning \"internal\" must have at least one \"internal\" argument.")));

    /* handle sortop, if supplied */
    if (aggsortopName)
    {
        if (numArgs != 1)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
                     errmsg("sort operator can only be specified for single-argument aggregates")));
        sortop = LookupOperName(NULL, aggsortopName,
                                aggArgTypes[0], aggArgTypes[0],
                                false, -1);
    }

    /*
     * permission checks on used types
     */
    for (i = 0; i < numArgs; i++)
    {
        aclresult = pg_type_aclcheck(aggArgTypes[i], GetUserId(), ACL_USAGE);
        if (aclresult != ACLCHECK_OK)
            aclcheck_error_type(aclresult, aggArgTypes[i]);
    }

    aclresult = pg_type_aclcheck(aggTransType, GetUserId(), ACL_USAGE);
    if (aclresult != ACLCHECK_OK)
        aclcheck_error_type(aclresult, aggTransType);

    aclresult = pg_type_aclcheck(finaltype, GetUserId(), ACL_USAGE);
    if (aclresult != ACLCHECK_OK)
        aclcheck_error_type(aclresult, finaltype);


    /*
     * Everything looks okay.  Try to create the pg_proc entry for the
     * aggregate.  (This could fail if there's already a conflicting entry.)
     */

    procOid = ProcedureCreate(aggName,
                              aggNamespace,
                              false,    /* no replacement */
                              false,    /* doesn't return a set */
                              finaltype,        /* returnType */
                              GetUserId(),      /* proowner */
                              INTERNALlanguageId,       /* languageObjectId */
                              InvalidOid,       /* no validator */
                              "aggregate_dummy",        /* placeholder proc */
                              NULL,     /* probin */
                              true,     /* isAgg */
                              false,    /* isWindowFunc */
                              false,    /* security invoker (currently not
                                         * definable for agg) */
                              false,    /* isLeakProof */
                              false,    /* isStrict (not needed for agg) */
                              PROVOLATILE_IMMUTABLE,    /* volatility (not
                                                         * needed for agg) */
                              buildoidvector(aggArgTypes,
                                             numArgs),  /* paramTypes */
                              PointerGetDatum(NULL),    /* allParamTypes */
                              PointerGetDatum(NULL),    /* parameterModes */
                              PointerGetDatum(NULL),    /* parameterNames */
                              NIL,      /* parameterDefaults */
                              PointerGetDatum(NULL),    /* proconfig */
                              1,    /* procost */
                              0);       /* prorows */

    /*
     * Okay to create the pg_aggregate entry.
     */

    /* initialize nulls and values */
    for (i = 0; i < Natts_pg_aggregate; i++)
    {
        nulls[i] = false;
        values[i] = (Datum) NULL;
    }
    values[Anum_pg_aggregate_aggfnoid - 1] = ObjectIdGetDatum(procOid);
    values[Anum_pg_aggregate_aggtransfn - 1] = ObjectIdGetDatum(transfn);
    values[Anum_pg_aggregate_aggfinalfn - 1] = ObjectIdGetDatum(finalfn);
    values[Anum_pg_aggregate_aggsortop - 1] = ObjectIdGetDatum(sortop);
    values[Anum_pg_aggregate_aggtranstype - 1] = ObjectIdGetDatum(aggTransType);
    if (agginitval)
        values[Anum_pg_aggregate_agginitval - 1] = CStringGetTextDatum(agginitval);
    else
        nulls[Anum_pg_aggregate_agginitval - 1] = true;

    aggdesc = heap_open(AggregateRelationId, RowExclusiveLock);
    tupDesc = aggdesc->rd_att;

    tup = heap_form_tuple(tupDesc, values, nulls);
    simple_heap_insert(aggdesc, tup);

    CatalogUpdateIndexes(aggdesc, tup);

    heap_close(aggdesc, RowExclusiveLock);

    /*
     * Create dependencies for the aggregate (above and beyond those already
     * made by ProcedureCreate).  Note: we don't need an explicit dependency
     * on aggTransType since we depend on it indirectly through transfn.
     */
    myself.classId = ProcedureRelationId;
    myself.objectId = procOid;
    myself.objectSubId = 0;

    /* Depends on transition function */
    referenced.classId = ProcedureRelationId;
    referenced.objectId = transfn;
    referenced.objectSubId = 0;
    recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);

    /* Depends on final function, if any */
    if (OidIsValid(finalfn))
    {
        referenced.classId = ProcedureRelationId;
        referenced.objectId = finalfn;
        referenced.objectSubId = 0;
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }

    /* Depends on sort operator, if any */
    if (OidIsValid(sortop))
    {
        referenced.classId = OperatorRelationId;
        referenced.objectId = sortop;
        referenced.objectSubId = 0;
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }

    return procOid;
}

CATALOG ( pg_aggregate  ,
2600   
)

Definition at line 40 of file pg_aggregate.h.

{
    regproc     aggfnoid;
    regproc     aggtransfn;
    regproc     aggfinalfn;
    Oid         aggsortop;
    Oid         aggtranstype;

#ifdef CATALOG_VARLEN           /* variable-length fields start here */
    text        agginitval;
#endif
} FormData_pg_aggregate;

DATA ( insert(3175 json_agg_transfn json_agg_finalfn0 2281 _null_)   ) 
DATA ( insert(3545 bytea_string_agg_transfn bytea_string_agg_finalfn0 2281 _null_)   ) 
DATA ( insert(3538 string_agg_transfn string_agg_finalfn0 2281 _null_)   ) 
DATA ( insert(2335 array_agg_transfn array_agg_finalfn0 2281 _null_)   ) 
DATA ( insert(2901 xmlconcat2-0 142_null_)   ) 
DATA ( insert(2243 bitor-0 1560 _null_)   ) 
DATA ( insert(2242 bitand-0 1560 _null_)   ) 
DATA ( insert(2241 int8or-0 20_null_)   ) 
DATA ( insert(2240 int8and-0 20_null_)   ) 
DATA ( insert(2239 int4or-0 23_null_)   ) 
DATA ( insert(2238 int4and-0 23_null_)   ) 
DATA ( insert(2237 int2or-0 21_null_)   ) 
DATA ( insert(2236 int2and-0 21_null_)   ) 
DATA ( insert(2519 booland_statefunc-58 16_null_)   ) 
DATA ( insert(2518 boolor_statefunc-59 16_null_)   ) 
DATA ( insert(2517 booland_statefunc-58 16_null_)   ) 
DATA ( insert(2829 float8_regr_accum float8_corr0 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2828 float8_regr_accum float8_covar_samp0 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2827 float8_regr_accum float8_covar_pop0 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2826 float8_regr_accum float8_regr_intercept 0 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2825 float8_regr_accum float8_regr_slope0 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2824 float8_regr_accum float8_regr_r20 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2823 float8_regr_accum float8_regr_avgy0 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2822 float8_regr_accum float8_regr_avgx0 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2821 float8_regr_accum float8_regr_sxy0 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2820 float8_regr_accum float8_regr_syy0 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2819 float8_regr_accum float8_regr_sxx0 1022"{0,0,0,0,0,0}")   ) 
DATA ( insert(2818 int8inc_float8_float8-0 20"0")   ) 
DATA ( insert(2159 numeric_accum numeric_stddev_samp 0 1231"{0,0,0}")   ) 
DATA ( insert(2158 float8_accum float8_stddev_samp 0 1022"{0,0,0}")   ) 
DATA ( insert(2157 float4_accum float8_stddev_samp 0 1022"{0,0,0}")   ) 
DATA ( insert(2156 int2_accum numeric_stddev_samp0 1231"{0,0,0}")   ) 
DATA ( insert(2155 int4_accum numeric_stddev_samp0 1231"{0,0,0}")   ) 
DATA ( insert(2154 int8_accum numeric_stddev_samp0 1231"{0,0,0}")   ) 
DATA ( insert(2717 numeric_accum numeric_stddev_samp 0 1231"{0,0,0}")   ) 
DATA ( insert(2716 float8_accum float8_stddev_samp 0 1022"{0,0,0}")   ) 
DATA ( insert(2715 float4_accum float8_stddev_samp 0 1022"{0,0,0}")   ) 
DATA ( insert(2714 int2_accum numeric_stddev_samp0 1231"{0,0,0}")   ) 
DATA ( insert(2713 int4_accum numeric_stddev_samp0 1231"{0,0,0}")   ) 
DATA ( insert(2712 int8_accum numeric_stddev_samp0 1231"{0,0,0}")   ) 
DATA ( insert(2729 numeric_accum numeric_stddev_pop 0 1231"{0,0,0}")   ) 
DATA ( insert(2728 float8_accum float8_stddev_pop 0 1022"{0,0,0}")   ) 
DATA ( insert(2727 float4_accum float8_stddev_pop 0 1022"{0,0,0}")   ) 
DATA ( insert(2726 int2_accum numeric_stddev_pop0 1231"{0,0,0}")   ) 
DATA ( insert(2725 int4_accum numeric_stddev_pop0 1231"{0,0,0}")   ) 
DATA ( insert(2724 int8_accum numeric_stddev_pop0 1231"{0,0,0}")   ) 
DATA ( insert(2153 numeric_accumnumeric_var_samp 0 1231"{0,0,0}")   ) 
DATA ( insert(2152 float8_accum float8_var_samp 0 1022"{0,0,0}")   ) 
DATA ( insert(2151 float4_accum float8_var_samp 0 1022"{0,0,0}")   ) 
DATA ( insert(2150 int2_accum numeric_var_samp 0 1231"{0,0,0}")   ) 
DATA ( insert(2149 int4_accum numeric_var_samp 0 1231"{0,0,0}")   ) 
DATA ( insert(2148 int8_accum numeric_var_samp 0 1231"{0,0,0}")   ) 
DATA ( insert(2646 numeric_accumnumeric_var_samp 0 1231"{0,0,0}")   ) 
DATA ( insert(2645 float8_accum float8_var_samp 0 1022"{0,0,0}")   ) 
DATA ( insert(2644 float4_accum float8_var_samp 0 1022"{0,0,0}")   ) 
DATA ( insert(2643 int2_accum numeric_var_samp 0 1231"{0,0,0}")   ) 
DATA ( insert(2642 int4_accum numeric_var_samp 0 1231"{0,0,0}")   ) 
DATA ( insert(2641 int8_accum numeric_var_samp 0 1231"{0,0,0}")   ) 
DATA ( insert(2723 numeric_accumnumeric_var_pop 0 1231"{0,0,0}")   ) 
DATA ( insert(2722 float8_accum float8_var_pop 0 1022"{0,0,0}")   ) 
DATA ( insert(2721 float4_accum float8_var_pop 0 1022"{0,0,0}")   ) 
DATA ( insert(2128 interval_larger-1334 1186 _null_)   ) 
DATA ( insert(2719 int4_accum numeric_var_pop 0 1231"{0,0,0}")   ) 
DATA ( insert(2718 int8_accum numeric_var_pop 0 1231"{0,0,0}")   ) 
DATA ( insert(2803 int8inc-020"0")   ) 
DATA ( insert(2147 int8inc_any-020"0")   ) 
DATA ( insert(3527 enum_smaller-3518 3500 _null_)   ) 
DATA ( insert(2798 tidsmaller-2799 27_null_)   ) 
DATA ( insert(2245 bpchar_smaller-1058 1042 _null_)   ) 
DATA ( insert(2051 array_smaller-1072 2277 _null_)   ) 
DATA ( insert(2146 numeric_smaller-1754 1700 _null_)   ) 
DATA ( insert(2145 text_smaller-66425_null_)   ) 
DATA ( insert(2144 interval_smaller-1332 1186 _null_)   ) 
DATA ( insert(2143 timestamptz_smaller-1322 1184 _null_)   ) 
DATA ( insert(2142 timestamp_smaller-2062 1114 _null_)   ) 
DATA ( insert(2141 cashsmaller-902790_null_)   ) 
DATA ( insert(2140 timetz_smaller-1552 1266 _null_)   ) 
DATA ( insert(2139 time_smaller-1110 1083 _null_)   ) 
DATA ( insert(2138 date_smaller-1095 1082 _null_)   ) 
DATA ( insert(2137 int4smaller-562702_null_)   ) 
DATA ( insert(2136 float8smaller-672701_null_)   ) 
DATA ( insert(2135 float4smaller-622700_null_)   ) 
DATA ( insert(2134 oidsmaller-60926_null_)   ) 
DATA ( insert(2133 int2smaller-9521_null_)   ) 
DATA ( insert(2132 int4smaller-9723_null_)   ) 
DATA ( insert(2131 int8smaller-41220_null_)   ) 
DATA ( insert(3526 enum_larger-3519 3500 _null_)   ) 
DATA ( insert(2797 tidlarger-2800 27_null_)   ) 
DATA ( insert(2244 bpchar_larger-1060 1042 _null_)   ) 
DATA ( insert(2050 array_larger-1073 2277 _null_)   ) 
DATA ( insert(2130 numeric_larger-1756 1700 _null_)   ) 
DATA ( insert(2129 text_larger-66625_null_)   ) 
DATA ( insert(2113 interval_pl-0 1186 _null_)   ) 
DATA ( insert(2127 timestamptz_larger-1324 1184 _null_)   ) 
DATA ( insert(2126 timestamp_larger-2064 1114 _null_)   ) 
DATA ( insert(2125 cashlarger-903790_null_)   ) 
DATA ( insert(2124 timetz_larger-1554 1266 _null_)   ) 
DATA ( insert(2123 time_larger-1112 1083 _null_)   ) 
DATA ( insert(2122 date_larger-1097 1082 _null_)   ) 
DATA ( insert(2121 int4larger-563702_null_)   ) 
DATA ( insert(2120 float8larger-674701_null_)   ) 
DATA ( insert(2119 float4larger-623700_null_)   ) 
DATA ( insert(2118 oidlarger-61026_null_)   ) 
DATA ( insert(2117 int2larger-52021_null_)   ) 
DATA ( insert(2116 int4larger-52123_null_)   ) 
DATA ( insert(2115 int8larger-41320_null_)   ) 
DATA ( insert(2114 numeric_add-0 1700 _null_)   ) 
DATA ( insert(2105 float8_accum float8_avg0 1022"{0,0,0}")   ) 
DATA ( insert(2112 cash_pl-0 790_null_)   ) 
DATA ( insert(2111 float8pl-0 701_null_)   ) 
DATA ( insert(2110 float4pl-0 700_null_)   ) 
DATA ( insert(2109 int2_sum-0 20_null_)   ) 
DATA ( insert(2108 int4_sum-0 20_null_)   ) 
DATA ( insert(2107 int8_sum-0 1700 _null_)   ) 
DATA ( insert(2106 interval_accum interval_avg 0 1187"{0 second,0 second}")   ) 
DATA ( insert(2101 int4_avg_accum int8_avg0 1016"{0,0}")   ) 
DATA ( insert(2104 float4_accum float8_avg0 1022"{0,0,0}")   ) 
DATA ( insert(2103 numeric_avg_accum numeric_avg0 1231"{0,0}")   ) 
DATA ( insert(2102 int2_avg_accum int8_avg0 1016"{0,0}")   ) 
DATA ( insert(2720 int2_accum numeric_var_pop 0 1231"{0,0,0}")   ) 
DATA ( insert(2100 int8_avg_accum numeric_avg0 1231"{0,0}")   ) 

Variable Documentation

Definition at line 51 of file pg_aggregate.h.