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-2019, 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  Oid oid; /* oid */
35 
36  /* name of operator */
37  NameData oprname;
38 
39  /* OID of namespace containing this oper */
40  Oid oprnamespace BKI_DEFAULT(PGNSP);
41 
42  /* operator owner */
43  Oid oprowner BKI_DEFAULT(PGUID);
44 
45  /* 'l', 'r', or 'b' */
46  char oprkind BKI_DEFAULT(b);
47 
48  /* can be used in merge join? */
49  bool oprcanmerge BKI_DEFAULT(f);
50 
51  /* can be used in hash join? */
52  bool oprcanhash BKI_DEFAULT(f);
53 
54  /* left arg type, or 0 if 'l' oprkind */
55  Oid oprleft BKI_LOOKUP(pg_type);
56 
57  /* right arg type, or 0 if 'r' oprkind */
58  Oid oprright BKI_LOOKUP(pg_type);
59 
60  /* result datatype */
61  Oid oprresult BKI_LOOKUP(pg_type);
62 
63  /* OID of commutator oper, or 0 if none */
64  Oid oprcom BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
65 
66  /* OID of negator oper, or 0 if none */
67  Oid oprnegate BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
68 
69  /* OID of underlying function */
70  regproc oprcode BKI_LOOKUP(pg_proc);
71 
72  /* OID of restriction estimator, or 0 */
73  regproc oprrest BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
74 
75  /* OID of join estimator, or 0 */
76  regproc oprjoin BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
78 
79 /* ----------------
80  * Form_pg_operator corresponds to a pointer to a tuple with
81  * the format of pg_operator relation.
82  * ----------------
83  */
85 
86 
87 extern ObjectAddress OperatorCreate(const char *operatorName,
88  Oid operatorNamespace,
89  Oid leftTypeId,
90  Oid rightTypeId,
91  Oid procedureId,
92  List *commutatorName,
93  List *negatorName,
94  Oid restrictionId,
95  Oid joinId,
96  bool canMerge,
97  bool canHash);
98 
99 extern ObjectAddress makeOperatorDependencies(HeapTuple tuple, bool isUpdate);
100 
101 extern void OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete);
102 
103 #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:35
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:327
FormData_pg_operator
Definition: pg_operator.h:77
Definition: c.h:603
ObjectAddress makeOperatorDependencies(HeapTuple tuple, bool isUpdate)
Definition: pg_operator.c:773
#define BKI_LOOKUP(catalog)
Definition: genbki.h:42
void OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete)
Definition: pg_operator.c:654
FormData_pg_operator * Form_pg_operator
Definition: pg_operator.h:84
Oid regproc
Definition: c.h:504
Definition: pg_list.h:50