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 8 kB image not shown  

Quelle  pg_class.h

  Sprache: C
 

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

#ifndef PG_CLASS_H
#define PG_CLASS_H

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

/* ----------------
 *  pg_class definition.  cpp turns this into
 *  typedef struct FormData_pg_class
 *
 * Note that the BKI_DEFAULT values below are only used for rows describing
 * BKI_BOOTSTRAP catalogs, since only those rows appear in pg_class.dat.
 * ----------------
 */

CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,RelationRelation_Rowtype_Id) BKI_SCHEMA_MACRO
{
 /* oid */
 Oid   oid;

 /* class name */
 NameData relname;

 /* OID of namespace containing this class */
 Oid   relnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);

 /* OID of entry in pg_type for relation's implicit row type, if any */
 Oid   reltype BKI_LOOKUP_OPT(pg_type);

 /* OID of entry in pg_type for underlying composite type, if any */
 Oid   reloftype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);

 /* class owner */
 Oid   relowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);

 /* access method; 0 if not a table / index */
 Oid   relam BKI_DEFAULT(heap) BKI_LOOKUP_OPT(pg_am);

 /* identifier of physical storage file */
 /* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */
 Oid   relfilenode BKI_DEFAULT(0);

 /* identifier of table space for relation (0 means default for database) */
 Oid   reltablespace BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_tablespace);

 /* # of blocks (not always up-to-date) */
 int32  relpages BKI_DEFAULT(0);

 /* # of tuples (not always up-to-date; -1 means "unknown") */
 float4  reltuples BKI_DEFAULT(-1);

 /* # of all-visible blocks (not always up-to-date) */
 int32  relallvisible BKI_DEFAULT(0);

 /* # of all-frozen blocks (not always up-to-date) */
 int32  relallfrozen BKI_DEFAULT(0);

 /* OID of toast table; 0 if none */
 Oid   reltoastrelid BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_class);

 /* T if has (or has had) any indexes */
 bool  relhasindex BKI_DEFAULT(f);

 /* T if shared across databases */
 bool  relisshared BKI_DEFAULT(f);

 /* see RELPERSISTENCE_xxx constants below */
 char  relpersistence BKI_DEFAULT(p);

 /* see RELKIND_xxx constants below */
 char  relkind BKI_DEFAULT(r);

 /* number of user attributes */
 int16  relnatts BKI_DEFAULT(0); /* genbki.pl will fill this in */

 /*
  * Class pg_attribute must contain exactly "relnatts" user attributes
  * (with attnums ranging from 1 to relnatts) for this class.  It may also
  * contain entries with negative attnums for system attributes.
 */


 /* # of CHECK constraints for class */
 int16  relchecks BKI_DEFAULT(0);

 /* has (or has had) any rules */
 bool  relhasrules BKI_DEFAULT(f);

 /* has (or has had) any TRIGGERs */
 bool  relhastriggers BKI_DEFAULT(f);

 /* has (or has had) child tables or indexes */
 bool  relhassubclass BKI_DEFAULT(f);

 /* row security is enabled or not */
 bool  relrowsecurity BKI_DEFAULT(f);

 /* row security forced for owners or not */
 bool  relforcerowsecurity BKI_DEFAULT(f);

 /* matview currently holds query results */
 bool  relispopulated BKI_DEFAULT(t);

 /* see REPLICA_IDENTITY_xxx constants */
 char  relreplident BKI_DEFAULT(n);

 /* is relation a partition? */
 bool  relispartition BKI_DEFAULT(f);

 /* link to original rel during table rewrite; otherwise 0 */
 Oid   relrewrite BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_class);

 /* all Xids < this are frozen in this rel */
 TransactionId relfrozenxid BKI_DEFAULT(3); /* FirstNormalTransactionId */

 /* all multixacts in this rel are >= this; it is really a MultiXactId */
 TransactionId relminmxid BKI_DEFAULT(1); /* FirstMultiXactId */

#ifdef CATALOG_VARLEN   /* variable-length fields start here */
 /* NOTE: These fields are not present in a relcache entry's rd_rel field. */
 /* access permissions */
 aclitem  relacl[1] BKI_DEFAULT(_null_);

 /* access-method-specific options */
 text  reloptions[1] BKI_DEFAULT(_null_);

 /* partition bound node tree */
 pg_node_tree relpartbound BKI_DEFAULT(_null_);
#endif
} FormData_pg_class;

/* Size of fixed part of pg_class tuples, not counting var-length fields */
#define CLASS_TUPLE_SIZE \
  (offsetof(FormData_pg_class,relminmxid) + sizeof(TransactionId))

/* ----------------
 *  Form_pg_class corresponds to a pointer to a tuple with
 *  the format of pg_class relation.
 * ----------------
 */

typedef FormData_pg_class *Form_pg_class;

DECLARE_UNIQUE_INDEX_PKEY(pg_class_oid_index, 2662, ClassOidIndexId, pg_class, btree(oid oid_ops));
DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, ClassNameNspIndexId, pg_class, btree(relname name_ops, relnamespace oid_ops));
DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, ClassTblspcRelfilenodeIndexId, pg_class, btree(reltablespace oid_ops, relfilenode oid_ops));

MAKE_SYSCACHE(RELOID, pg_class_oid_index, 128);
MAKE_SYSCACHE(RELNAMENSP, pg_class_relname_nsp_index, 128);

#ifdef EXPOSE_TO_CLIENT_CODE

#define    RELKIND_RELATION    'r' /* ordinary table */
#define    RELKIND_INDEX     'i' /* secondary index */
#define    RELKIND_SEQUENCE    'S' /* sequence object */
#define    RELKIND_TOASTVALUE   't' /* for out-of-line values */
#define    RELKIND_VIEW     'v' /* view */
#define    RELKIND_MATVIEW    'm' /* materialized view */
#define    RELKIND_COMPOSITE_TYPE  'c' /* composite type */
#define    RELKIND_FOREIGN_TABLE   'f' /* foreign table */
#define    RELKIND_PARTITIONED_TABLE 'p' /* partitioned table */
#define    RELKIND_PARTITIONED_INDEX 'I' /* partitioned index */

#define    RELPERSISTENCE_PERMANENT 'p' /* regular table */
#define    RELPERSISTENCE_UNLOGGED 'u' /* unlogged permanent table */
#define    RELPERSISTENCE_TEMP  't' /* temporary table */

/* default selection for replica identity (primary key or nothing) */
#define    REPLICA_IDENTITY_DEFAULT 'd'
/* no replica identity is logged for this relation */
#define    REPLICA_IDENTITY_NOTHING 'n'
/* all columns are logged as replica identity */
#define    REPLICA_IDENTITY_FULL  'f'
/*
 * an explicitly chosen candidate key's columns are used as replica identity.
 * Note this will still be set if the index has been dropped; in that case it
 * has the same meaning as 'n'.
 */

#define    REPLICA_IDENTITY_INDEX 'i'

/*
 * Relation kinds that have physical storage. These relations normally have
 * relfilenode set to non-zero, but it can also be zero if the relation is
 * mapped.
 */

#define RELKIND_HAS_STORAGE(relkind) \
 ((relkind) == RELKIND_RELATION || \
  (relkind) == RELKIND_INDEX || \
  (relkind) == RELKIND_SEQUENCE || \
  (relkind) == RELKIND_TOASTVALUE || \
  (relkind) == RELKIND_MATVIEW)

#define RELKIND_HAS_PARTITIONS(relkind) \
 ((relkind) == RELKIND_PARTITIONED_TABLE || \
  (relkind) == RELKIND_PARTITIONED_INDEX)

/*
 * Relation kinds that support tablespaces: All relation kinds with storage
 * support tablespaces, except that we don't support moving sequences around
 * into different tablespaces.  Partitioned tables and indexes don't have
 * physical storage, but they have a tablespace settings so that their
 * children can inherit it.
 */

#define RELKIND_HAS_TABLESPACE(relkind) \
 ((RELKIND_HAS_STORAGE(relkind) || RELKIND_HAS_PARTITIONS(relkind)) \
  && (relkind) != RELKIND_SEQUENCE)

/*
 * Relation kinds with a table access method (rd_tableam).  Although sequences
 * use the heap table AM, they are enough of a special case in most uses that
 * they are not included here.  Likewise, partitioned tables can have an access
 * method defined so that their partitions can inherit it, but they do not set
 * rd_tableam; hence, this is handled specially outside of this macro.
 */

#define RELKIND_HAS_TABLE_AM(relkind) \
 ((relkind) == RELKIND_RELATION || \
  (relkind) == RELKIND_TOASTVALUE || \
  (relkind) == RELKIND_MATVIEW)

#endif       /* EXPOSE_TO_CLIENT_CODE */

extern int errdetail_relkind_not_supported(char relkind);

#endif       /* PG_CLASS_H */

Messung V0.5 in Prozent
C=91 H=97 G=93

¤ Dauer der Verarbeitung: 0.13 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.