Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postgres/src/include/catalog/   (Postgres Database Version 18.4©)  Datei vom 11.4.2026 mit Größe 5 kB image not shown  

Quelle  pg_aggregate.h

  Sprache: C
 

/*-------------------------------------------------------------------------
 *
 * pg_aggregate.h
 *   definition of the "aggregate" system catalog (pg_aggregate)
 *
 *
 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/catalog/pg_aggregate.h
 *
 * NOTES
 *   The Catalog.pm module reads this file and derives schema
 *   information.
 *
 *-------------------------------------------------------------------------
 */

#ifndef PG_AGGREGATE_H
#define PG_AGGREGATE_H

#include "catalog/genbki.h"
#include "catalog/pg_aggregate_d.h" /* IWYU pragma: export */

#include "catalog/objectaddress.h"
#include "nodes/pg_list.h"

/* ----------------------------------------------------------------
 *  pg_aggregate definition.
 *  cpp turns this into typedef struct FormData_pg_aggregate
 * ----------------------------------------------------------------
 */

CATALOG(pg_aggregate,2600,AggregateRelationId)
{
 /* pg_proc OID of the aggregate itself */
 regproc  aggfnoid BKI_LOOKUP(pg_proc);

 /* aggregate kind, see AGGKIND_ categories below */
 char  aggkind BKI_DEFAULT(n);

 /* number of arguments that are "direct" arguments */
 int16  aggnumdirectargs BKI_DEFAULT(0);

 /* transition function */
 regproc  aggtransfn BKI_LOOKUP(pg_proc);

 /* final function (0 if none) */
 regproc  aggfinalfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);

 /* combine function (0 if none) */
 regproc  aggcombinefn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);

 /* function to convert transtype to bytea (0 if none) */
 regproc  aggserialfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);

 /* function to convert bytea to transtype (0 if none) */
 regproc  aggdeserialfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);

 /* forward function for moving-aggregate mode (0 if none) */
 regproc  aggmtransfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);

 /* inverse function for moving-aggregate mode (0 if none) */
 regproc  aggminvtransfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);

 /* final function for moving-aggregate mode (0 if none) */
 regproc  aggmfinalfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);

 /* true to pass extra dummy arguments to aggfinalfn */
 bool  aggfinalextra BKI_DEFAULT(f);

 /* true to pass extra dummy arguments to aggmfinalfn */
 bool  aggmfinalextra BKI_DEFAULT(f);

 /* tells whether aggfinalfn modifies transition state */
 char  aggfinalmodify BKI_DEFAULT(r);

 /* tells whether aggmfinalfn modifies transition state */
 char  aggmfinalmodify BKI_DEFAULT(r);

 /* associated sort operator (0 if none) */
 Oid   aggsortop BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_operator);

 /* type of aggregate's transition (state) data */
 Oid   aggtranstype BKI_LOOKUP(pg_type);

 /* estimated size of state data (0 for default estimate) */
 int32  aggtransspace BKI_DEFAULT(0);

 /* type of moving-aggregate state data (0 if none) */
 Oid   aggmtranstype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);

 /* estimated size of moving-agg state (0 for default est) */
 int32  aggmtransspace BKI_DEFAULT(0);

#ifdef CATALOG_VARLEN   /* variable-length fields start here */

 /* initial value for transition state (can be NULL) */
 text  agginitval BKI_DEFAULT(_null_);

 /* initial value for moving-agg state (can be NULL) */
 text  aggminitval BKI_DEFAULT(_null_);
#endif
} FormData_pg_aggregate;

/* ----------------
 *  Form_pg_aggregate corresponds to a pointer to a tuple with
 *  the format of pg_aggregate relation.
 * ----------------
 */

typedef FormData_pg_aggregate *Form_pg_aggregate;

DECLARE_TOAST(pg_aggregate, 41594160);

DECLARE_UNIQUE_INDEX_PKEY(pg_aggregate_fnoid_index, 2650, AggregateFnoidIndexId, pg_aggregate, btree(aggfnoid oid_ops));

MAKE_SYSCACHE(AGGFNOID, pg_aggregate_fnoid_index, 16);

#ifdef EXPOSE_TO_CLIENT_CODE

/*
 * Symbolic values for aggkind column.  We distinguish normal aggregates
 * from ordered-set aggregates (which have two sets of arguments, namely
 * direct and aggregated arguments) and from hypothetical-set aggregates
 * (which are a subclass of ordered-set aggregates in which the last
 * direct arguments have to match up in number and datatypes with the
 * aggregated arguments).
 */

#define AGGKIND_NORMAL   'n'
#define AGGKIND_ORDERED_SET  'o'
#define AGGKIND_HYPOTHETICAL 'h'

/* Use this macro to test for "ordered-set agg including hypothetical case" */
#define AGGKIND_IS_ORDERED_SET(kind)  ((kind) != AGGKIND_NORMAL)

/*
 * Symbolic values for aggfinalmodify and aggmfinalmodify columns.
 * Preferably, finalfns do not modify the transition state value at all,
 * but in some cases that would cost too much performance.  We distinguish
 * "pure read only" and "trashes it arbitrarily" cases, as well as the
 * intermediate case where multiple finalfn calls are allowed but the
 * transfn cannot be applied anymore after the first finalfn call.
 */

#define AGGMODIFY_READ_ONLY   'r'
#define AGGMODIFY_SHAREABLE   's'
#define AGGMODIFY_READ_WRITE  'w'

#endif       /* EXPOSE_TO_CLIENT_CODE */


extern ObjectAddress AggregateCreate(const char *aggName,
          Oid aggNamespace,
          bool replace,
          char aggKind,
          int numArgs,
          int numDirectArgs,
          oidvector *parameterTypes,
          Datum allParameterTypes,
          Datum parameterModes,
          Datum parameterNames,
          List *parameterDefaults,
          Oid variadicArgType,
          List *aggtransfnName,
          List *aggfinalfnName,
          List *aggcombinefnName,
          List *aggserialfnName,
          List *aggdeserialfnName,
          List *aggmtransfnName,
          List *aggminvtransfnName,
          List *aggmfinalfnName,
          bool finalfnExtraArgs,
          bool mfinalfnExtraArgs,
          char finalfnModify,
          char mfinalfnModify,
          List *aggsortopName,
          Oid aggTransType,
          int32 aggTransSpace,
          Oid aggmTransType,
          int32 aggmTransSpace,
          const char *agginitval,
          const char *aggminitval,
          char proparallel);

#endif       /* PG_AGGREGATE_H */

Messung V0.5 in Prozent
C=93 H=94 G=93

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-08-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.