PostgreSQL Source Code git master
Loading...
Searching...
No Matches
pg_range.h File Reference
#include "catalog/genbki.h"
#include "catalog/pg_range_d.h"
Include dependency graph for pg_range.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef FormData_pg_rangeForm_pg_range
 

Functions

 CATALOG (pg_range, 3541, RangeRelationId)
 
 DECLARE_UNIQUE_INDEX_PKEY (pg_range_rngtypid_index, 3542, RangeTypidIndexId, pg_range, btree(rngtypid oid_ops))
 
 DECLARE_UNIQUE_INDEX (pg_range_rngmultitypid_index, 2228, RangeMultirangeTypidIndexId, pg_range, btree(rngmultitypid oid_ops))
 
 MAKE_SYSCACHE (RANGETYPE, pg_range_rngtypid_index, 4)
 
 MAKE_SYSCACHE (RANGEMULTIRANGE, pg_range_rngmultitypid_index, 4)
 
void RangeCreate (Oid rangeTypeOid, Oid rangeSubType, Oid rangeCollation, Oid rangeSubOpclass, RegProcedure rangeCanonical, RegProcedure rangeSubDiff, Oid multirangeTypeOid, RegProcedure rangeConstruct2, RegProcedure rangeConstruct3, RegProcedure mltrngConstruct0, RegProcedure mltrngConstruct1, RegProcedure mltrngConstruct2)
 
void RangeDelete (Oid rangeTypeOid)
 

Variables

 FormData_pg_range
 

Typedef Documentation

◆ Form_pg_range

Definition at line 67 of file pg_range.h.

Function Documentation

◆ CATALOG()

CATALOG ( pg_range  ,
3541  ,
RangeRelationId   
)

Definition at line 29 of file pg_range.h.

30{
31 /* OID of owning range type */
33
34 /* OID of range's element type (subtype) */
36
37 /* OID of the range's multirange type */
39
40 /* collation for this range type, or 0 */
42
43 /* subtype's btree opclass */
45
46 /* range constructor functions */
49
50 /* multirange constructor functions */
54
55 /* canonicalize range, or 0 */
57
58 /* subtype difference as a float8, or 0 */
Oid regproc
Definition c.h:663
#define BKI_LOOKUP(catalog)
Definition genbki.h:46
#define BKI_DEFAULT(value)
Definition genbki.h:35
#define BKI_LOOKUP_OPT(catalog)
Definition genbki.h:47
FormData_pg_range
Definition pg_range.h:60
unsigned int Oid
static int fb(int x)

References BKI_DEFAULT, BKI_LOOKUP, BKI_LOOKUP_OPT, and fb().

◆ DECLARE_UNIQUE_INDEX()

DECLARE_UNIQUE_INDEX ( pg_range_rngmultitypid_index  ,
2228  ,
RangeMultirangeTypidIndexId  ,
pg_range  ,
btree(rngmultitypid oid_ops  
)

◆ DECLARE_UNIQUE_INDEX_PKEY()

DECLARE_UNIQUE_INDEX_PKEY ( pg_range_rngtypid_index  ,
3542  ,
RangeTypidIndexId  ,
pg_range  ,
btree(rngtypid oid_ops  
)

◆ MAKE_SYSCACHE() [1/2]

MAKE_SYSCACHE ( RANGEMULTIRANGE  ,
pg_range_rngmultitypid_index  ,
 
)

◆ MAKE_SYSCACHE() [2/2]

MAKE_SYSCACHE ( RANGETYPE  ,
pg_range_rngtypid_index  ,
 
)

◆ RangeCreate()

void RangeCreate ( Oid  rangeTypeOid,
Oid  rangeSubType,
Oid  rangeCollation,
Oid  rangeSubOpclass,
RegProcedure  rangeCanonical,
RegProcedure  rangeSubDiff,
Oid  multirangeTypeOid,
RegProcedure  rangeConstruct2,
RegProcedure  rangeConstruct3,
RegProcedure  mltrngConstruct0,
RegProcedure  mltrngConstruct1,
RegProcedure  mltrngConstruct2 
)
extern

Definition at line 36 of file pg_range.c.

41{
44 bool nulls[Natts_pg_range];
49 ObjectAddresses *addrs;
50
52
53 memset(nulls, 0, sizeof(nulls));
54
67
69
72
73 /* record type's dependencies on range-related items */
74 addrs = new_object_addresses();
75
77
80
83
85 {
88 }
89
91 {
94 }
95
97 {
100 }
101
104
105 /* record multirange type's dependency on the range type */
106 referencing.classId = TypeRelationId;
108 referencing.objectSubId = 0;
110
112}
static Datum values[MAXATTR]
Definition bootstrap.c:155
#define OidIsValid(objectId)
Definition c.h:788
void record_object_address_dependencies(const ObjectAddress *depender, ObjectAddresses *referenced, DependencyType behavior)
void add_exact_object_address(const ObjectAddress *object, ObjectAddresses *addrs)
ObjectAddresses * new_object_addresses(void)
void free_object_addresses(ObjectAddresses *addrs)
@ DEPENDENCY_INTERNAL
Definition dependency.h:35
@ DEPENDENCY_NORMAL
Definition dependency.h:33
HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull)
Definition heaptuple.c:1117
void heap_freetuple(HeapTuple htup)
Definition heaptuple.c:1435
void CatalogTupleInsert(Relation heapRel, HeapTuple tup)
Definition indexing.c:233
#define RowExclusiveLock
Definition lockdefs.h:38
#define ObjectAddressSet(addr, class_id, object_id)
void recordDependencyOn(const ObjectAddress *depender, const ObjectAddress *referenced, DependencyType behavior)
Definition pg_depend.c:45
static Datum ObjectIdGetDatum(Oid X)
Definition postgres.h:262
uint64_t Datum
Definition postgres.h:70
#define RelationGetDescr(relation)
Definition rel.h:540
void table_close(Relation relation, LOCKMODE lockmode)
Definition table.c:126
Relation table_open(Oid relationId, LOCKMODE lockmode)
Definition table.c:40

References add_exact_object_address(), CatalogTupleInsert(), DEPENDENCY_INTERNAL, DEPENDENCY_NORMAL, fb(), free_object_addresses(), heap_form_tuple(), heap_freetuple(), new_object_addresses(), ObjectAddressSet, ObjectIdGetDatum(), OidIsValid, record_object_address_dependencies(), recordDependencyOn(), RelationGetDescr, RowExclusiveLock, table_close(), table_open(), and values.

Referenced by DefineRange().

◆ RangeDelete()

void RangeDelete ( Oid  rangeTypeOid)
extern

Definition at line 120 of file pg_range.c.

121{
123 ScanKeyData key[1];
124 SysScanDesc scan;
126
128
129 ScanKeyInit(&key[0],
133
135 NULL, 1, key);
136
137 while (HeapTupleIsValid(tup = systable_getnext(scan)))
138 {
140 }
141
142 systable_endscan(scan);
143
145}
void systable_endscan(SysScanDesc sysscan)
Definition genam.c:603
HeapTuple systable_getnext(SysScanDesc sysscan)
Definition genam.c:514
SysScanDesc systable_beginscan(Relation heapRelation, Oid indexId, bool indexOK, Snapshot snapshot, int nkeys, ScanKey key)
Definition genam.c:388
#define HeapTupleIsValid(tuple)
Definition htup.h:78
void CatalogTupleDelete(Relation heapRel, const ItemPointerData *tid)
Definition indexing.c:365
void ScanKeyInit(ScanKey entry, AttrNumber attributeNumber, StrategyNumber strategy, RegProcedure procedure, Datum argument)
Definition scankey.c:76
#define BTEqualStrategyNumber
Definition stratnum.h:31

References BTEqualStrategyNumber, CatalogTupleDelete(), fb(), HeapTupleIsValid, ObjectIdGetDatum(), RowExclusiveLock, ScanKeyInit(), systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), and table_open().

Referenced by RemoveTypeById().

Variable Documentation

◆ FormData_pg_range

FormData_pg_range

Definition at line 60 of file pg_range.h.