1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*-------------------------------------------------------------------------
- *
- * pg_partitioned_table.h
- * definition of the "partitioned table" system catalog
- * (pg_partitioned_table)
- *
- *
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * src/include/catalog/pg_partitioned_table.h
- *
- * NOTES
- * The Catalog.pm module reads this file and derives schema
- * information.
- *
- *-------------------------------------------------------------------------
- */
- #ifndef PG_PARTITIONED_TABLE_H
- #define PG_PARTITIONED_TABLE_H
- #include "catalog/genbki.h"
- #include "catalog/pg_partitioned_table_d.h"
- /* ----------------
- * pg_partitioned_table definition. cpp turns this into
- * typedef struct FormData_pg_partitioned_table
- * ----------------
- */
- CATALOG(pg_partitioned_table,3350,PartitionedRelationId)
- {
- Oid partrelid BKI_LOOKUP(pg_class); /* partitioned table oid */
- char partstrat; /* partitioning strategy */
- int16 partnatts; /* number of partition key columns */
- Oid partdefid BKI_LOOKUP_OPT(pg_class); /* default partition oid;
- * 0 if there isn't one */
- /*
- * variable-length fields start here, but we allow direct access to
- * partattrs via the C struct. That's because the first variable-length
- * field of a heap tuple can be reliably accessed using its C struct
- * offset, as previous fields are all non-nullable fixed-length fields.
- */
- int2vector partattrs BKI_FORCE_NOT_NULL; /* each member of the array is
- * the attribute number of a
- * partition key column, or 0
- * if the column is actually
- * an expression */
- #ifdef CATALOG_VARLEN
- oidvector partclass BKI_LOOKUP(pg_opclass) BKI_FORCE_NOT_NULL; /* operator class to
- * compare keys */
- oidvector partcollation BKI_LOOKUP_OPT(pg_collation) BKI_FORCE_NOT_NULL; /* user-specified
- * collation for keys */
- pg_node_tree partexprs; /* list of expressions in the partition key;
- * one item for each zero entry in partattrs[] */
- #endif
- } FormData_pg_partitioned_table;
- /* ----------------
- * Form_pg_partitioned_table corresponds to a pointer to a tuple with
- * the format of pg_partitioned_table relation.
- * ----------------
- */
- typedef FormData_pg_partitioned_table *Form_pg_partitioned_table;
- DECLARE_TOAST(pg_partitioned_table, 4165, 4166);
- DECLARE_UNIQUE_INDEX_PKEY(pg_partitioned_table_partrelid_index, 3351, PartitionedRelidIndexId, on pg_partitioned_table using btree(partrelid oid_ops));
- /* partattrs can contain zero (InvalidAttrNumber) to represent expressions */
- DECLARE_ARRAY_FOREIGN_KEY_OPT((partrelid, partattrs), pg_attribute, (attrelid, attnum));
- #endif /* PG_PARTITIONED_TABLE_H */
|