1 /*-------------------------------------------------------------------------
2  *
3  * pg_range.h
4  *	  definition of the "range type" system catalog (pg_range)
5  *
6  *
7  * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/catalog/pg_range.h
11  *
12  * NOTES
13  *	  The Catalog.pm module reads this file and derives schema
14  *	  information.
15  *
16  *-------------------------------------------------------------------------
17  */
18 #ifndef PG_RANGE_H
19 #define PG_RANGE_H
20 
21 #include "catalog/genbki.h"
22 #include "catalog/pg_range_d.h"
23 
24 /* ----------------
25  *		pg_range definition.  cpp turns this into
26  *		typedef struct FormData_pg_range
27  * ----------------
28  */
29 CATALOG(pg_range,3541,RangeRelationId)
30 {
31 	/* OID of owning range type */
32 	Oid			rngtypid BKI_LOOKUP(pg_type);
33 
34 	/* OID of range's element type (subtype) */
35 	Oid			rngsubtype BKI_LOOKUP(pg_type);
36 
37 	/* OID of the range's multirange type */
38 	Oid			rngmultitypid BKI_LOOKUP(pg_type);
39 
40 	/* collation for this range type, or 0 */
41 	Oid			rngcollation BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_collation);
42 
43 	/* subtype's btree opclass */
44 	Oid			rngsubopc BKI_LOOKUP(pg_opclass);
45 
46 	/* canonicalize range, or 0 */
47 	regproc		rngcanonical BKI_LOOKUP_OPT(pg_proc);
48 
49 	/* subtype difference as a float8, or 0 */
50 	regproc		rngsubdiff BKI_LOOKUP_OPT(pg_proc);
51 } FormData_pg_range;
52 
53 /* ----------------
54  *		Form_pg_range corresponds to a pointer to a tuple with
55  *		the format of pg_range relation.
56  * ----------------
57  */
58 typedef FormData_pg_range *Form_pg_range;
59 
60 DECLARE_UNIQUE_INDEX_PKEY(pg_range_rngtypid_index, 3542, on pg_range using btree(rngtypid oid_ops));
61 #define RangeTypidIndexId					3542
62 
63 DECLARE_UNIQUE_INDEX(pg_range_rngmultitypid_index, 2228, on pg_range using btree(rngmultitypid oid_ops));
64 #define RangeMultirangeTypidIndexId			2228
65 
66 
67 /*
68  * prototypes for functions in pg_range.c
69  */
70 
71 extern void RangeCreate(Oid rangeTypeOid, Oid rangeSubType, Oid rangeCollation,
72 						Oid rangeSubOpclass, RegProcedure rangeCanonical,
73 						RegProcedure rangeSubDiff, Oid multirangeTypeOid);
74 extern void RangeDelete(Oid rangeTypeOid);
75 
76 #endif							/* PG_RANGE_H */
77