PostgreSQL Source Code  git master
pg_operator.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * pg_operator.h
4  * definition of the "operator" system catalog (pg_operator)
5  *
6  *
7  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/catalog/pg_operator.h
11  *
12  * NOTES
13  * The Catalog.pm module reads this file and derives schema
14  * information.
15  *
16  *-------------------------------------------------------------------------
17  */
18 #ifndef PG_OPERATOR_H
19 #define PG_OPERATOR_H
20 
21 #include "catalog/genbki.h"
22 #include "catalog/pg_operator_d.h"
23 
24 #include "catalog/objectaddress.h"
25 #include "nodes/pg_list.h"
26 
27 /* ----------------
28  * pg_operator definition. cpp turns this into
29  * typedef struct FormData_pg_operator
30  * ----------------
31  */
32 CATALOG(pg_operator,2617,OperatorRelationId)
33 {
34  /* name of operator */
35  NameData oprname;
36 
37  /* OID of namespace containing this oper */
38  Oid oprnamespace BKI_DEFAULT(PGNSP);
39 
40  /* operator owner */
41  Oid oprowner BKI_DEFAULT(PGUID);
42 
43  /* 'l', 'r', or 'b' */
44  char oprkind BKI_DEFAULT(b);
45 
46  /* can be used in merge join? */
47  bool oprcanmerge BKI_DEFAULT(f);
48 
49  /* can be used in hash join? */
50  bool oprcanhash BKI_DEFAULT(f);
51 
52  /* left arg type, or 0 if 'l' oprkind */
53  Oid oprleft BKI_LOOKUP(pg_type);
54 
55  /* right arg type, or 0 if 'r' oprkind */
56  Oid oprright BKI_LOOKUP(pg_type);
57 
58  /* result datatype */
59  Oid oprresult BKI_LOOKUP(pg_type);
60 
61  /* OID of commutator oper, or 0 if none */
62  Oid oprcom BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
63 
64  /* OID of negator oper, or 0 if none */
65  Oid oprnegate BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
66 
67  /* OID of underlying function */
68  regproc oprcode BKI_LOOKUP(pg_proc);
69 
70  /* OID of restriction estimator, or 0 */
71  regproc oprrest BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
72 
73  /* OID of join estimator, or 0 */
74  regproc oprjoin BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
76 
77 /* ----------------
78  * Form_pg_operator corresponds to a pointer to a tuple with
79  * the format of pg_operator relation.
80  * ----------------
81  */
83 
84 
85 extern ObjectAddress OperatorCreate(const char *operatorName,
86  Oid operatorNamespace,
87  Oid leftTypeId,
88  Oid rightTypeId,
89  Oid procedureId,
90  List *commutatorName,
91  List *negatorName,
92  Oid restrictionId,
93  Oid joinId,
94  bool canMerge,
95  bool canHash);
96 
97 extern ObjectAddress makeOperatorDependencies(HeapTuple tuple, bool isUpdate);
98 
99 extern void OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete);
100 
101 #endif /* PG_OPERATOR_H */
CATALOG(pg_operator, 2617, OperatorRelationId)
Definition: pg_operator.h:32
unsigned int Oid
Definition: postgres_ext.h:31
#define BKI_DEFAULT(value)
Definition: genbki.h:36
ObjectAddress OperatorCreate(const char *operatorName, Oid operatorNamespace, Oid leftTypeId, Oid rightTypeId, Oid procedureId, List *commutatorName, List *negatorName, Oid restrictionId, Oid joinId, bool canMerge, bool canHash)
Definition: pg_operator.c:323
FormData_pg_operator
Definition: pg_operator.h:75
Definition: c.h:570
ObjectAddress makeOperatorDependencies(HeapTuple tuple, bool isUpdate)
Definition: pg_operator.c:763
#define BKI_LOOKUP(catalog)
Definition: genbki.h:38
void OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete)
Definition: pg_operator.c:644
FormData_pg_operator * Form_pg_operator
Definition: pg_operator.h:82
Oid regproc
Definition: c.h:471
Definition: pg_list.h:45