PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
pg_partitioned_table.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * pg_partitioned_table.h
4 * definition of the "partitioned table" system catalog
5 * (pg_partitioned_table)
6 *
7 *
8 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
9 * Portions Copyright (c) 1994, Regents of the University of California
10 *
11 * src/include/catalog/pg_partitioned_table.h
12 *
13 * NOTES
14 * The Catalog.pm module reads this file and derives schema
15 * information.
16 *
17 *-------------------------------------------------------------------------
18 */
19#ifndef PG_PARTITIONED_TABLE_H
20#define PG_PARTITIONED_TABLE_H
21
22#include "catalog/genbki.h"
23#include "catalog/pg_partitioned_table_d.h" /* IWYU pragma: export */
24
25/* ----------------
26 * pg_partitioned_table definition. cpp turns this into
27 * typedef struct FormData_pg_partitioned_table
28 * ----------------
29 */
30CATALOG(pg_partitioned_table,3350,PartitionedRelationId)
31{
32 Oid partrelid BKI_LOOKUP(pg_class); /* partitioned table oid */
33 char partstrat; /* partitioning strategy */
34 int16 partnatts; /* number of partition key columns */
35 Oid partdefid BKI_LOOKUP_OPT(pg_class); /* default partition oid;
36 * 0 if there isn't one */
37
38 /*
39 * variable-length fields start here, but we allow direct access to
40 * partattrs via the C struct. That's because the first variable-length
41 * field of a heap tuple can be reliably accessed using its C struct
42 * offset, as previous fields are all non-nullable fixed-length fields.
43 */
44 int2vector partattrs BKI_FORCE_NOT_NULL; /* each member of the array is
45 * the attribute number of a
46 * partition key column, or 0
47 * if the column is actually
48 * an expression */
49
50#ifdef CATALOG_VARLEN
51 oidvector partclass BKI_LOOKUP(pg_opclass) BKI_FORCE_NOT_NULL; /* operator class to
52 * compare keys */
53 oidvector partcollation BKI_LOOKUP_OPT(pg_collation) BKI_FORCE_NOT_NULL; /* user-specified
54 * collation for keys */
55 pg_node_tree partexprs; /* list of expressions in the partition key;
56 * one item for each zero entry in partattrs[] */
57#endif
59
60/* ----------------
61 * Form_pg_partitioned_table corresponds to a pointer to a tuple with
62 * the format of pg_partitioned_table relation.
63 * ----------------
64 */
66
67DECLARE_TOAST(pg_partitioned_table, 4165, 4166);
68
69DECLARE_UNIQUE_INDEX_PKEY(pg_partitioned_table_partrelid_index, 3351, PartitionedRelidIndexId, pg_partitioned_table, btree(partrelid oid_ops));
70
71MAKE_SYSCACHE(PARTRELID, pg_partitioned_table_partrelid_index, 32);
72
73/* partattrs can contain zero (InvalidAttrNumber) to represent expressions */
74DECLARE_ARRAY_FOREIGN_KEY_OPT((partrelid, partattrs), pg_attribute, (attrelid, attnum));
75
76#endif /* PG_PARTITIONED_TABLE_H */
int16_t int16
Definition: c.h:483
#define BKI_LOOKUP(catalog)
Definition: genbki.h:46
#define BKI_LOOKUP_OPT(catalog)
Definition: genbki.h:47
#define BKI_FORCE_NOT_NULL
Definition: genbki.h:33
int16 attnum
Definition: pg_attribute.h:74
CATALOG(pg_partitioned_table, 3350, PartitionedRelationId)
MAKE_SYSCACHE(PARTRELID, pg_partitioned_table_partrelid_index, 32)
DECLARE_UNIQUE_INDEX_PKEY(pg_partitioned_table_partrelid_index, 3351, PartitionedRelidIndexId, pg_partitioned_table, btree(partrelid oid_ops))
FormData_pg_partitioned_table * Form_pg_partitioned_table
DECLARE_ARRAY_FOREIGN_KEY_OPT((partrelid, partattrs), pg_attribute,(attrelid, attnum))
FormData_pg_partitioned_table
DECLARE_TOAST(pg_partitioned_table, 4165, 4166)
unsigned int Oid
Definition: postgres_ext.h:32
Definition: c.h:672
Definition: c.h:683