]> granicus.if.org Git - postgresql/blob - src/include/catalog/pg_operator.h
f587f5b198df3741a3ea4e2a18d907a947a90fff
[postgresql] / src / include / catalog / pg_operator.h
1 /*-------------------------------------------------------------------------
2  *
3  * pg_operator.h
4  *        definition of the system "operator" relation (pg_operator)
5  *        along with the relation's initial contents.
6  *
7  *
8  * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
9  * Portions Copyright (c) 1994, Regents of the University of California
10  *
11  * src/include/catalog/pg_operator.h
12  *
13  * NOTES
14  *        the genbki.pl script reads this file and generates .bki
15  *        information from the DATA() statements.
16  *
17  *        XXX do NOT break up DATA() statements into multiple lines!
18  *                the scripts are not as smart as you might think...
19  *
20  *-------------------------------------------------------------------------
21  */
22 #ifndef PG_OPERATOR_H
23 #define PG_OPERATOR_H
24
25 #include "catalog/genbki.h"
26 #include "nodes/pg_list.h"
27
28 /* ----------------
29  *              pg_operator definition.  cpp turns this into
30  *              typedef struct FormData_pg_operator
31  * ----------------
32  */
33 #define OperatorRelationId      2617
34
35 CATALOG(pg_operator,2617)
36 {
37         NameData        oprname;                /* name of operator */
38         Oid                     oprnamespace;   /* OID of namespace containing this oper */
39         Oid                     oprowner;               /* operator owner */
40         char            oprkind;                /* 'l', 'r', or 'b' */
41         bool            oprcanmerge;    /* can be used in merge join? */
42         bool            oprcanhash;             /* can be used in hash join? */
43         Oid                     oprleft;                /* left arg type, or 0 if 'l' oprkind */
44         Oid                     oprright;               /* right arg type, or 0 if 'r' oprkind */
45         Oid                     oprresult;              /* result datatype */
46         Oid                     oprcom;                 /* OID of commutator oper, or 0 if none */
47         Oid                     oprnegate;              /* OID of negator oper, or 0 if none */
48         regproc         oprcode;                /* OID of underlying function */
49         regproc         oprrest;                /* OID of restriction estimator, or 0 */
50         regproc         oprjoin;                /* OID of join estimator, or 0 */
51 } FormData_pg_operator;
52
53 /* ----------------
54  *              Form_pg_operator corresponds to a pointer to a tuple with
55  *              the format of pg_operator relation.
56  * ----------------
57  */
58 typedef FormData_pg_operator *Form_pg_operator;
59
60 /* ----------------
61  *              compiler constants for pg_operator
62  * ----------------
63  */
64
65 #define Natts_pg_operator                               14
66 #define Anum_pg_operator_oprname                1
67 #define Anum_pg_operator_oprnamespace   2
68 #define Anum_pg_operator_oprowner               3
69 #define Anum_pg_operator_oprkind                4
70 #define Anum_pg_operator_oprcanmerge    5
71 #define Anum_pg_operator_oprcanhash             6
72 #define Anum_pg_operator_oprleft                7
73 #define Anum_pg_operator_oprright               8
74 #define Anum_pg_operator_oprresult              9
75 #define Anum_pg_operator_oprcom                 10
76 #define Anum_pg_operator_oprnegate              11
77 #define Anum_pg_operator_oprcode                12
78 #define Anum_pg_operator_oprrest                13
79 #define Anum_pg_operator_oprjoin                14
80
81 /* ----------------
82  *              initial contents of pg_operator
83  * ----------------
84  */
85
86 /*
87  * Note: every entry in pg_operator.h is expected to have a DESCR() comment.
88  * If the operator is a deprecated equivalent of some other entry, be sure
89  * to comment it as such so that initdb doesn't think it's a preferred name
90  * for the underlying function.
91  */
92
93 DATA(insert OID =  15 ( "="                PGNSP PGUID b t t    23      20      16 416  36 int48eq eqsel eqjoinsel ));
94 DESCR("equal");
95 DATA(insert OID =  36 ( "<>"       PGNSP PGUID b f f    23      20      16 417  15 int48ne neqsel neqjoinsel ));
96 DESCR("not equal");
97 DATA(insert OID =  37 ( "<"                PGNSP PGUID b f f    23      20      16 419  82 int48lt scalarltsel scalarltjoinsel ));
98 DESCR("less than");
99 DATA(insert OID =  76 ( ">"                PGNSP PGUID b f f    23      20      16 418  80 int48gt scalargtsel scalargtjoinsel ));
100 DESCR("greater than");
101 DATA(insert OID =  80 ( "<="       PGNSP PGUID b f f    23      20      16 430  76 int48le scalarltsel scalarltjoinsel ));
102 DESCR("less than or equal");
103 DATA(insert OID =  82 ( ">="       PGNSP PGUID b f f    23      20      16 420  37 int48ge scalargtsel scalargtjoinsel ));
104 DESCR("greater than or equal");
105
106 DATA(insert OID =  58 ( "<"                PGNSP PGUID b f f    16      16      16      59      1695 boollt scalarltsel scalarltjoinsel ));
107 DESCR("less than");
108 DATA(insert OID =  59 ( ">"                PGNSP PGUID b f f    16      16      16      58      1694 boolgt scalargtsel scalargtjoinsel ));
109 DESCR("greater than");
110 DATA(insert OID =  85 ( "<>"       PGNSP PGUID b f f    16      16      16      85      91 boolne neqsel neqjoinsel ));
111 DESCR("not equal");
112 #define BooleanNotEqualOperator   85
113 DATA(insert OID =  91 ( "="                PGNSP PGUID b t t    16      16      16      91      85 booleq eqsel eqjoinsel ));
114 DESCR("equal");
115 #define BooleanEqualOperator   91
116 DATA(insert OID = 1694 (  "<="     PGNSP PGUID b f f    16      16      16 1695 59 boolle scalarltsel scalarltjoinsel ));
117 DESCR("less than or equal");
118 DATA(insert OID = 1695 (  ">="     PGNSP PGUID b f f    16      16      16 1694 58 boolge scalargtsel scalargtjoinsel ));
119 DESCR("greater than or equal");
120
121 DATA(insert OID =  92 ( "="                PGNSP PGUID b t t    18      18      16      92 630 chareq eqsel eqjoinsel ));
122 DESCR("equal");
123 DATA(insert OID =  93 ( "="                PGNSP PGUID b t t    19      19      16      93 643 nameeq eqsel eqjoinsel ));
124 DESCR("equal");
125 DATA(insert OID =  94 ( "="                PGNSP PGUID b t t    21      21      16      94 519 int2eq eqsel eqjoinsel ));
126 DESCR("equal");
127 DATA(insert OID =  95 ( "<"                PGNSP PGUID b f f    21      21      16 520 524 int2lt scalarltsel scalarltjoinsel ));
128 DESCR("less than");
129 DATA(insert OID =  96 ( "="                PGNSP PGUID b t t    23      23      16      96 518 int4eq eqsel eqjoinsel ));
130 DESCR("equal");
131 DATA(insert OID =  97 ( "<"                PGNSP PGUID b f f    23      23      16 521 525 int4lt scalarltsel scalarltjoinsel ));
132 DESCR("less than");
133 DATA(insert OID =  98 ( "="                PGNSP PGUID b t t    25      25      16      98 531 texteq eqsel eqjoinsel ));
134 DESCR("equal");
135 #define TextEqualOperator       98
136
137 DATA(insert OID = 349 (  "||"      PGNSP PGUID b f f 2277 2283 2277 0 0 array_append   -           -     ));
138 DESCR("append element onto end of array");
139 DATA(insert OID = 374 (  "||"      PGNSP PGUID b f f 2283 2277 2277 0 0 array_prepend  -           -     ));
140 DESCR("prepend element onto front of array");
141 DATA(insert OID = 375 (  "||"      PGNSP PGUID b f f 2277 2277 2277 0 0 array_cat          -       -     ));
142 DESCR("concatenate");
143
144 DATA(insert OID = 352 (  "="       PGNSP PGUID b f t    28      28      16 352   0 xideq eqsel eqjoinsel ));
145 DESCR("equal");
146 DATA(insert OID = 353 (  "="       PGNSP PGUID b f f    28      23      16       0       0 xideqint4 eqsel eqjoinsel ));
147 DESCR("equal");
148 DATA(insert OID = 388 (  "!"       PGNSP PGUID r f f    20       0      1700  0  0 numeric_fac - - ));
149 DESCR("factorial");
150 DATA(insert OID = 389 (  "!!"      PGNSP PGUID l f f     0      20      1700  0  0 numeric_fac - - ));
151 DESCR("deprecated, use ! instead");
152 DATA(insert OID = 385 (  "="       PGNSP PGUID b f t    29      29      16 385   0 cideq eqsel eqjoinsel ));
153 DESCR("equal");
154 DATA(insert OID = 386 (  "="       PGNSP PGUID b f t    22      22      16 386   0 int2vectoreq eqsel eqjoinsel ));
155 DESCR("equal");
156
157 DATA(insert OID = 387 (  "="       PGNSP PGUID b t f    27      27      16 387 402 tideq eqsel eqjoinsel ));
158 DESCR("equal");
159 #define TIDEqualOperator   387
160 DATA(insert OID = 402 (  "<>"      PGNSP PGUID b f f    27      27      16 402 387 tidne neqsel neqjoinsel ));
161 DESCR("not equal");
162 DATA(insert OID = 2799 (  "<"      PGNSP PGUID b f f    27      27      16 2800 2802 tidlt scalarltsel scalarltjoinsel ));
163 DESCR("less than");
164 #define TIDLessOperator    2799
165 DATA(insert OID = 2800 (  ">"      PGNSP PGUID b f f    27      27      16 2799 2801 tidgt scalargtsel scalargtjoinsel ));
166 DESCR("greater than");
167 DATA(insert OID = 2801 (  "<="     PGNSP PGUID b f f    27      27      16 2802 2800 tidle scalarltsel scalarltjoinsel ));
168 DESCR("less than or equal");
169 DATA(insert OID = 2802 (  ">="     PGNSP PGUID b f f    27      27      16 2801 2799 tidge scalargtsel scalargtjoinsel ));
170 DESCR("greater than or equal");
171
172 DATA(insert OID = 410 ( "="                PGNSP PGUID b t t    20      20      16 410 411 int8eq eqsel eqjoinsel ));
173 DESCR("equal");
174 DATA(insert OID = 411 ( "<>"       PGNSP PGUID b f f    20      20      16 411 410 int8ne neqsel neqjoinsel ));
175 DESCR("not equal");
176 DATA(insert OID = 412 ( "<"                PGNSP PGUID b f f    20      20      16 413 415 int8lt scalarltsel scalarltjoinsel ));
177 DESCR("less than");
178 DATA(insert OID = 413 ( ">"                PGNSP PGUID b f f    20      20      16 412 414 int8gt scalargtsel scalargtjoinsel ));
179 DESCR("greater than");
180 DATA(insert OID = 414 ( "<="       PGNSP PGUID b f f    20      20      16 415 413 int8le scalarltsel scalarltjoinsel ));
181 DESCR("less than or equal");
182 DATA(insert OID = 415 ( ">="       PGNSP PGUID b f f    20      20      16 414 412 int8ge scalargtsel scalargtjoinsel ));
183 DESCR("greater than or equal");
184
185 DATA(insert OID = 416 ( "="                PGNSP PGUID b t t    20      23      16      15 417 int84eq eqsel eqjoinsel ));
186 DESCR("equal");
187 DATA(insert OID = 417 ( "<>"       PGNSP PGUID b f f    20      23      16      36 416 int84ne neqsel neqjoinsel ));
188 DESCR("not equal");
189 DATA(insert OID = 418 ( "<"                PGNSP PGUID b f f    20      23      16      76 430 int84lt scalarltsel scalarltjoinsel ));
190 DESCR("less than");
191 DATA(insert OID = 419 ( ">"                PGNSP PGUID b f f    20      23      16      37 420 int84gt scalargtsel scalargtjoinsel ));
192 DESCR("greater than");
193 DATA(insert OID = 420 ( "<="       PGNSP PGUID b f f    20      23      16      82 419 int84le scalarltsel scalarltjoinsel ));
194 DESCR("less than or equal");
195 DATA(insert OID = 430 ( ">="       PGNSP PGUID b f f    20      23      16      80 418 int84ge scalargtsel scalargtjoinsel ));
196 DESCR("greater than or equal");
197 DATA(insert OID = 439 (  "%"       PGNSP PGUID b f f    20      20      20       0       0 int8mod - - ));
198 DESCR("modulus");
199 DATA(insert OID = 473 (  "@"       PGNSP PGUID l f f     0      20      20       0       0 int8abs - - ));
200 DESCR("absolute value");
201
202 DATA(insert OID = 484 (  "-"       PGNSP PGUID l f f     0      20      20       0       0 int8um - - ));
203 DESCR("negate");
204 DATA(insert OID = 485 (  "<<"      PGNSP PGUID b f f 604 604    16       0       0 poly_left positionsel positionjoinsel ));
205 DESCR("is left of");
206 DATA(insert OID = 486 (  "&<"      PGNSP PGUID b f f 604 604    16       0       0 poly_overleft positionsel positionjoinsel ));
207 DESCR("overlaps or is left of");
208 DATA(insert OID = 487 (  "&>"      PGNSP PGUID b f f 604 604    16       0       0 poly_overright positionsel positionjoinsel ));
209 DESCR("overlaps or is right of");
210 DATA(insert OID = 488 (  ">>"      PGNSP PGUID b f f 604 604    16       0       0 poly_right positionsel positionjoinsel ));
211 DESCR("is right of");
212 DATA(insert OID = 489 (  "<@"      PGNSP PGUID b f f 604 604    16 490   0 poly_contained contsel contjoinsel ));
213 DESCR("is contained by");
214 DATA(insert OID = 490 (  "@>"      PGNSP PGUID b f f 604 604    16 489   0 poly_contain contsel contjoinsel ));
215 DESCR("contains");
216 DATA(insert OID = 491 (  "~="      PGNSP PGUID b f f 604 604    16 491   0 poly_same eqsel eqjoinsel ));
217 DESCR("same as");
218 DATA(insert OID = 492 (  "&&"      PGNSP PGUID b f f 604 604    16 492   0 poly_overlap areasel areajoinsel ));
219 DESCR("overlaps");
220 DATA(insert OID = 493 (  "<<"      PGNSP PGUID b f f 603 603    16       0       0 box_left positionsel positionjoinsel ));
221 DESCR("is left of");
222 DATA(insert OID = 494 (  "&<"      PGNSP PGUID b f f 603 603    16       0       0 box_overleft positionsel positionjoinsel ));
223 DESCR("overlaps or is left of");
224 DATA(insert OID = 495 (  "&>"      PGNSP PGUID b f f 603 603    16       0       0 box_overright positionsel positionjoinsel ));
225 DESCR("overlaps or is right of");
226 DATA(insert OID = 496 (  ">>"      PGNSP PGUID b f f 603 603    16       0       0 box_right positionsel positionjoinsel ));
227 DESCR("is right of");
228 DATA(insert OID = 497 (  "<@"      PGNSP PGUID b f f 603 603    16 498   0 box_contained contsel contjoinsel ));
229 DESCR("is contained by");
230 DATA(insert OID = 498 (  "@>"      PGNSP PGUID b f f 603 603    16 497   0 box_contain contsel contjoinsel ));
231 DESCR("contains");
232 DATA(insert OID = 499 (  "~="      PGNSP PGUID b f f 603 603    16 499   0 box_same eqsel eqjoinsel ));
233 DESCR("same as");
234 DATA(insert OID = 500 (  "&&"      PGNSP PGUID b f f 603 603    16 500   0 box_overlap areasel areajoinsel ));
235 DESCR("overlaps");
236 DATA(insert OID = 501 (  ">="      PGNSP PGUID b f f 603 603    16 505 504 box_ge areasel areajoinsel ));
237 DESCR("greater than or equal by area");
238 DATA(insert OID = 502 (  ">"       PGNSP PGUID b f f 603 603    16 504 505 box_gt areasel areajoinsel ));
239 DESCR("greater than by area");
240 DATA(insert OID = 503 (  "="       PGNSP PGUID b f f 603 603    16 503   0 box_eq eqsel eqjoinsel ));
241 DESCR("equal by area");
242 DATA(insert OID = 504 (  "<"       PGNSP PGUID b f f 603 603    16 502 501 box_lt areasel areajoinsel ));
243 DESCR("less than by area");
244 DATA(insert OID = 505 (  "<="      PGNSP PGUID b f f 603 603    16 501 502 box_le areasel areajoinsel ));
245 DESCR("less than or equal by area");
246 DATA(insert OID = 506 (  ">^"      PGNSP PGUID b f f 600 600    16       0       0 point_above positionsel positionjoinsel ));
247 DESCR("is above");
248 DATA(insert OID = 507 (  "<<"      PGNSP PGUID b f f 600 600    16       0       0 point_left positionsel positionjoinsel ));
249 DESCR("is left of");
250 DATA(insert OID = 508 (  ">>"      PGNSP PGUID b f f 600 600    16       0       0 point_right positionsel positionjoinsel ));
251 DESCR("is right of");
252 DATA(insert OID = 509 (  "<^"      PGNSP PGUID b f f 600 600    16       0       0 point_below positionsel positionjoinsel ));
253 DESCR("is below");
254 DATA(insert OID = 510 (  "~="      PGNSP PGUID b f f 600 600    16 510 713 point_eq eqsel eqjoinsel ));
255 DESCR("same as");
256 DATA(insert OID = 511 (  "<@"      PGNSP PGUID b f f 600 603    16 433   0 on_pb contsel contjoinsel ));
257 DESCR("point inside box");
258 DATA(insert OID = 433 (  "@>"      PGNSP PGUID b f f 603 600    16 511   0 box_contain_pt contsel contjoinsel ));
259 DESCR("contains");
260 DATA(insert OID = 512 (  "<@"      PGNSP PGUID b f f 600 602    16 755   0 on_ppath - - ));
261 DESCR("point within closed path, or point on open path");
262 DATA(insert OID = 513 (  "@@"      PGNSP PGUID l f f     0 603 600       0       0 box_center - - ));
263 DESCR("center of");
264 DATA(insert OID = 514 (  "*"       PGNSP PGUID b f f    23      23      23 514   0 int4mul - - ));
265 DESCR("multiply");
266 DATA(insert OID = 517 (  "<->"     PGNSP PGUID b f f 600 600 701 517     0 point_distance - - ));
267 DESCR("distance between");
268 DATA(insert OID = 518 (  "<>"      PGNSP PGUID b f f    23      23      16 518  96 int4ne neqsel neqjoinsel ));
269 DESCR("not equal");
270 DATA(insert OID = 519 (  "<>"      PGNSP PGUID b f f    21      21      16 519  94 int2ne neqsel neqjoinsel ));
271 DESCR("not equal");
272 DATA(insert OID = 520 (  ">"       PGNSP PGUID b f f    21      21      16      95 522 int2gt scalargtsel scalargtjoinsel ));
273 DESCR("greater than");
274 DATA(insert OID = 521 (  ">"       PGNSP PGUID b f f    23      23      16      97 523 int4gt scalargtsel scalargtjoinsel ));
275 DESCR("greater than");
276 DATA(insert OID = 522 (  "<="      PGNSP PGUID b f f    21      21      16 524 520 int2le scalarltsel scalarltjoinsel ));
277 DESCR("less than or equal");
278 DATA(insert OID = 523 (  "<="      PGNSP PGUID b f f    23      23      16 525 521 int4le scalarltsel scalarltjoinsel ));
279 DESCR("less than or equal");
280 DATA(insert OID = 524 (  ">="      PGNSP PGUID b f f    21      21      16 522  95 int2ge scalargtsel scalargtjoinsel ));
281 DESCR("greater than or equal");
282 DATA(insert OID = 525 (  ">="      PGNSP PGUID b f f    23      23      16 523  97 int4ge scalargtsel scalargtjoinsel ));
283 DESCR("greater than or equal");
284 DATA(insert OID = 526 (  "*"       PGNSP PGUID b f f    21      21      21 526   0 int2mul - - ));
285 DESCR("multiply");
286 DATA(insert OID = 527 (  "/"       PGNSP PGUID b f f    21      21      21       0       0 int2div - - ));
287 DESCR("divide");
288 DATA(insert OID = 528 (  "/"       PGNSP PGUID b f f    23      23      23       0       0 int4div - - ));
289 DESCR("divide");
290 DATA(insert OID = 529 (  "%"       PGNSP PGUID b f f    21      21      21       0       0 int2mod - - ));
291 DESCR("modulus");
292 DATA(insert OID = 530 (  "%"       PGNSP PGUID b f f    23      23      23       0       0 int4mod - - ));
293 DESCR("modulus");
294 DATA(insert OID = 531 (  "<>"      PGNSP PGUID b f f    25      25      16 531  98 textne neqsel neqjoinsel ));
295 DESCR("not equal");
296 DATA(insert OID = 532 (  "="       PGNSP PGUID b t t    21      23      16 533 538 int24eq eqsel eqjoinsel ));
297 DESCR("equal");
298 DATA(insert OID = 533 (  "="       PGNSP PGUID b t t    23      21      16 532 539 int42eq eqsel eqjoinsel ));
299 DESCR("equal");
300 DATA(insert OID = 534 (  "<"       PGNSP PGUID b f f    21      23      16 537 542 int24lt scalarltsel scalarltjoinsel ));
301 DESCR("less than");
302 DATA(insert OID = 535 (  "<"       PGNSP PGUID b f f    23      21      16 536 543 int42lt scalarltsel scalarltjoinsel ));
303 DESCR("less than");
304 DATA(insert OID = 536 (  ">"       PGNSP PGUID b f f    21      23      16 535 540 int24gt scalargtsel scalargtjoinsel ));
305 DESCR("greater than");
306 DATA(insert OID = 537 (  ">"       PGNSP PGUID b f f    23      21      16 534 541 int42gt scalargtsel scalargtjoinsel ));
307 DESCR("greater than");
308 DATA(insert OID = 538 (  "<>"      PGNSP PGUID b f f    21      23      16 539 532 int24ne neqsel neqjoinsel ));
309 DESCR("not equal");
310 DATA(insert OID = 539 (  "<>"      PGNSP PGUID b f f    23      21      16 538 533 int42ne neqsel neqjoinsel ));
311 DESCR("not equal");
312 DATA(insert OID = 540 (  "<="      PGNSP PGUID b f f    21      23      16 543 536 int24le scalarltsel scalarltjoinsel ));
313 DESCR("less than or equal");
314 DATA(insert OID = 541 (  "<="      PGNSP PGUID b f f    23      21      16 542 537 int42le scalarltsel scalarltjoinsel ));
315 DESCR("less than or equal");
316 DATA(insert OID = 542 (  ">="      PGNSP PGUID b f f    21      23      16 541 534 int24ge scalargtsel scalargtjoinsel ));
317 DESCR("greater than or equal");
318 DATA(insert OID = 543 (  ">="      PGNSP PGUID b f f    23      21      16 540 535 int42ge scalargtsel scalargtjoinsel ));
319 DESCR("greater than or equal");
320 DATA(insert OID = 544 (  "*"       PGNSP PGUID b f f    21      23      23 545   0 int24mul - - ));
321 DESCR("multiply");
322 DATA(insert OID = 545 (  "*"       PGNSP PGUID b f f    23      21      23 544   0 int42mul - - ));
323 DESCR("multiply");
324 DATA(insert OID = 546 (  "/"       PGNSP PGUID b f f    21      23      23       0       0 int24div - - ));
325 DESCR("divide");
326 DATA(insert OID = 547 (  "/"       PGNSP PGUID b f f    23      21      23       0       0 int42div - - ));
327 DESCR("divide");
328 DATA(insert OID = 550 (  "+"       PGNSP PGUID b f f    21      21      21 550   0 int2pl - - ));
329 DESCR("add");
330 DATA(insert OID = 551 (  "+"       PGNSP PGUID b f f    23      23      23 551   0 int4pl - - ));
331 DESCR("add");
332 DATA(insert OID = 552 (  "+"       PGNSP PGUID b f f    21      23      23 553   0 int24pl - - ));
333 DESCR("add");
334 DATA(insert OID = 553 (  "+"       PGNSP PGUID b f f    23      21      23 552   0 int42pl - - ));
335 DESCR("add");
336 DATA(insert OID = 554 (  "-"       PGNSP PGUID b f f    21      21      21       0       0 int2mi - - ));
337 DESCR("subtract");
338 DATA(insert OID = 555 (  "-"       PGNSP PGUID b f f    23      23      23       0       0 int4mi - - ));
339 DESCR("subtract");
340 DATA(insert OID = 556 (  "-"       PGNSP PGUID b f f    21      23      23       0       0 int24mi - - ));
341 DESCR("subtract");
342 DATA(insert OID = 557 (  "-"       PGNSP PGUID b f f    23      21      23       0       0 int42mi - - ));
343 DESCR("subtract");
344 DATA(insert OID = 558 (  "-"       PGNSP PGUID l f f     0      23      23       0       0 int4um - - ));
345 DESCR("negate");
346 DATA(insert OID = 559 (  "-"       PGNSP PGUID l f f     0      21      21       0       0 int2um - - ));
347 DESCR("negate");
348 DATA(insert OID = 560 (  "="       PGNSP PGUID b t t 702 702    16 560 561 abstimeeq eqsel eqjoinsel ));
349 DESCR("equal");
350 DATA(insert OID = 561 (  "<>"      PGNSP PGUID b f f 702 702    16 561 560 abstimene neqsel neqjoinsel ));
351 DESCR("not equal");
352 DATA(insert OID = 562 (  "<"       PGNSP PGUID b f f 702 702    16 563 565 abstimelt scalarltsel scalarltjoinsel ));
353 DESCR("less than");
354 DATA(insert OID = 563 (  ">"       PGNSP PGUID b f f 702 702    16 562 564 abstimegt scalargtsel scalargtjoinsel ));
355 DESCR("greater than");
356 DATA(insert OID = 564 (  "<="      PGNSP PGUID b f f 702 702    16 565 563 abstimele scalarltsel scalarltjoinsel ));
357 DESCR("less than or equal");
358 DATA(insert OID = 565 (  ">="      PGNSP PGUID b f f 702 702    16 564 562 abstimege scalargtsel scalargtjoinsel ));
359 DESCR("greater than or equal");
360 DATA(insert OID = 566 (  "="       PGNSP PGUID b t t 703 703    16 566 567 reltimeeq eqsel eqjoinsel ));
361 DESCR("equal");
362 DATA(insert OID = 567 (  "<>"      PGNSP PGUID b f f 703 703    16 567 566 reltimene neqsel neqjoinsel ));
363 DESCR("not equal");
364 DATA(insert OID = 568 (  "<"       PGNSP PGUID b f f 703 703    16 569 571 reltimelt scalarltsel scalarltjoinsel ));
365 DESCR("less than");
366 DATA(insert OID = 569 (  ">"       PGNSP PGUID b f f 703 703    16 568 570 reltimegt scalargtsel scalargtjoinsel ));
367 DESCR("greater than");
368 DATA(insert OID = 570 (  "<="      PGNSP PGUID b f f 703 703    16 571 569 reltimele scalarltsel scalarltjoinsel ));
369 DESCR("less than or equal");
370 DATA(insert OID = 571 (  ">="      PGNSP PGUID b f f 703 703    16 570 568 reltimege scalargtsel scalargtjoinsel ));
371 DESCR("greater than or equal");
372 DATA(insert OID = 572 (  "~="      PGNSP PGUID b f f 704 704    16 572   0 tintervalsame eqsel eqjoinsel ));
373 DESCR("same as");
374 DATA(insert OID = 573 (  "<<"      PGNSP PGUID b f f 704 704    16       0       0 tintervalct - - ));
375 DESCR("contains");
376 DATA(insert OID = 574 (  "&&"      PGNSP PGUID b f f 704 704    16 574   0 tintervalov - - ));
377 DESCR("overlaps");
378 DATA(insert OID = 575 (  "#="      PGNSP PGUID b f f 704 703    16       0 576 tintervalleneq - - ));
379 DESCR("equal by length");
380 DATA(insert OID = 576 (  "#<>"     PGNSP PGUID b f f 704 703    16       0 575 tintervallenne - - ));
381 DESCR("not equal by length");
382 DATA(insert OID = 577 (  "#<"      PGNSP PGUID b f f 704 703    16       0 580 tintervallenlt - - ));
383 DESCR("less than by length");
384 DATA(insert OID = 578 (  "#>"      PGNSP PGUID b f f 704 703    16       0 579 tintervallengt - - ));
385 DESCR("greater than by length");
386 DATA(insert OID = 579 (  "#<="     PGNSP PGUID b f f 704 703    16       0 578 tintervallenle - - ));
387 DESCR("less than or equal by length");
388 DATA(insert OID = 580 (  "#>="     PGNSP PGUID b f f 704 703    16       0 577 tintervallenge - - ));
389 DESCR("greater than or equal by length");
390 DATA(insert OID = 581 (  "+"       PGNSP PGUID b f f 702 703 702         0       0 timepl - - ));
391 DESCR("add");
392 DATA(insert OID = 582 (  "-"       PGNSP PGUID b f f 702 703 702         0       0 timemi - - ));
393 DESCR("subtract");
394 DATA(insert OID = 583 (  "<?>"     PGNSP PGUID b f f 702 704    16       0       0 intinterval - - ));
395 DESCR("is contained by");
396 DATA(insert OID = 584 (  "-"       PGNSP PGUID l f f     0 700 700       0       0 float4um - - ));
397 DESCR("negate");
398 DATA(insert OID = 585 (  "-"       PGNSP PGUID l f f     0 701 701       0       0 float8um - - ));
399 DESCR("negate");
400 DATA(insert OID = 586 (  "+"       PGNSP PGUID b f f 700 700 700 586     0 float4pl - - ));
401 DESCR("add");
402 DATA(insert OID = 587 (  "-"       PGNSP PGUID b f f 700 700 700         0       0 float4mi - - ));
403 DESCR("subtract");
404 DATA(insert OID = 588 (  "/"       PGNSP PGUID b f f 700 700 700         0       0 float4div - - ));
405 DESCR("divide");
406 DATA(insert OID = 589 (  "*"       PGNSP PGUID b f f 700 700 700 589     0 float4mul - - ));
407 DESCR("multiply");
408 DATA(insert OID = 590 (  "@"       PGNSP PGUID l f f     0 700 700       0       0 float4abs - - ));
409 DESCR("absolute value");
410 DATA(insert OID = 591 (  "+"       PGNSP PGUID b f f 701 701 701 591     0 float8pl - - ));
411 DESCR("add");
412 DATA(insert OID = 592 (  "-"       PGNSP PGUID b f f 701 701 701         0       0 float8mi - - ));
413 DESCR("subtract");
414 DATA(insert OID = 593 (  "/"       PGNSP PGUID b f f 701 701 701         0       0 float8div - - ));
415 DESCR("divide");
416 DATA(insert OID = 594 (  "*"       PGNSP PGUID b f f 701 701 701 594     0 float8mul - - ));
417 DESCR("multiply");
418 DATA(insert OID = 595 (  "@"       PGNSP PGUID l f f     0 701 701       0       0 float8abs - - ));
419 DESCR("absolute value");
420 DATA(insert OID = 596 (  "|/"      PGNSP PGUID l f f     0 701 701       0       0 dsqrt - - ));
421 DESCR("square root");
422 DATA(insert OID = 597 (  "||/"     PGNSP PGUID l f f     0 701 701       0       0 dcbrt - - ));
423 DESCR("cube root");
424 DATA(insert OID = 1284 (  "|"      PGNSP PGUID l f f     0 704 702       0       0 tintervalstart - - ));
425 DESCR("start of interval");
426 DATA(insert OID = 606 (  "<#>"     PGNSP PGUID b f f 702 702 704         0       0 mktinterval - - ));
427 DESCR("convert to tinterval");
428
429 DATA(insert OID = 607 (  "="       PGNSP PGUID b t t    26      26      16 607 608 oideq eqsel eqjoinsel ));
430 DESCR("equal");
431 DATA(insert OID = 608 (  "<>"      PGNSP PGUID b f f    26      26      16 608 607 oidne neqsel neqjoinsel ));
432 DESCR("not equal");
433 DATA(insert OID = 609 (  "<"       PGNSP PGUID b f f    26      26      16 610 612 oidlt scalarltsel scalarltjoinsel ));
434 DESCR("less than");
435 DATA(insert OID = 610 (  ">"       PGNSP PGUID b f f    26      26      16 609 611 oidgt scalargtsel scalargtjoinsel ));
436 DESCR("greater than");
437 DATA(insert OID = 611 (  "<="      PGNSP PGUID b f f    26      26      16 612 610 oidle scalarltsel scalarltjoinsel ));
438 DESCR("less than or equal");
439 DATA(insert OID = 612 (  ">="      PGNSP PGUID b f f    26      26      16 611 609 oidge scalargtsel scalargtjoinsel ));
440 DESCR("greater than or equal");
441
442 DATA(insert OID = 644 (  "<>"      PGNSP PGUID b f f    30      30      16 644 649 oidvectorne neqsel neqjoinsel ));
443 DESCR("not equal");
444 DATA(insert OID = 645 (  "<"       PGNSP PGUID b f f    30      30      16 646 648 oidvectorlt scalarltsel scalarltjoinsel ));
445 DESCR("less than");
446 DATA(insert OID = 646 (  ">"       PGNSP PGUID b f f    30      30      16 645 647 oidvectorgt scalargtsel scalargtjoinsel ));
447 DESCR("greater than");
448 DATA(insert OID = 647 (  "<="      PGNSP PGUID b f f    30      30      16 648 646 oidvectorle scalarltsel scalarltjoinsel ));
449 DESCR("less than or equal");
450 DATA(insert OID = 648 (  ">="      PGNSP PGUID b f f    30      30      16 647 645 oidvectorge scalargtsel scalargtjoinsel ));
451 DESCR("greater than or equal");
452 DATA(insert OID = 649 (  "="       PGNSP PGUID b t t    30      30      16 649 644 oidvectoreq eqsel eqjoinsel ));
453 DESCR("equal");
454
455 DATA(insert OID = 613 (  "<->"     PGNSP PGUID b f f 600 628 701         0       0 dist_pl - - ));
456 DESCR("distance between");
457 DATA(insert OID = 614 (  "<->"     PGNSP PGUID b f f 600 601 701         0       0 dist_ps - - ));
458 DESCR("distance between");
459 DATA(insert OID = 615 (  "<->"     PGNSP PGUID b f f 600 603 701         0       0 dist_pb - - ));
460 DESCR("distance between");
461 DATA(insert OID = 616 (  "<->"     PGNSP PGUID b f f 601 628 701         0       0 dist_sl - - ));
462 DESCR("distance between");
463 DATA(insert OID = 617 (  "<->"     PGNSP PGUID b f f 601 603 701         0       0 dist_sb - - ));
464 DESCR("distance between");
465 DATA(insert OID = 618 (  "<->"     PGNSP PGUID b f f 600 602 701         0       0 dist_ppath - - ));
466 DESCR("distance between");
467
468 DATA(insert OID = 620 (  "="       PGNSP PGUID b t t    700  700        16 620 621 float4eq eqsel eqjoinsel ));
469 DESCR("equal");
470 DATA(insert OID = 621 (  "<>"      PGNSP PGUID b f f    700  700        16 621 620 float4ne neqsel neqjoinsel ));
471 DESCR("not equal");
472 DATA(insert OID = 622 (  "<"       PGNSP PGUID b f f    700  700        16 623 625 float4lt scalarltsel scalarltjoinsel ));
473 DESCR("less than");
474 DATA(insert OID = 623 (  ">"       PGNSP PGUID b f f    700  700        16 622 624 float4gt scalargtsel scalargtjoinsel ));
475 DESCR("greater than");
476 DATA(insert OID = 624 (  "<="      PGNSP PGUID b f f    700  700        16 625 623 float4le scalarltsel scalarltjoinsel ));
477 DESCR("less than or equal");
478 DATA(insert OID = 625 (  ">="      PGNSP PGUID b f f    700  700        16 624 622 float4ge scalargtsel scalargtjoinsel ));
479 DESCR("greater than or equal");
480 DATA(insert OID = 630 (  "<>"      PGNSP PGUID b f f    18      18              16 630  92      charne neqsel neqjoinsel ));
481 DESCR("not equal");
482
483 DATA(insert OID = 631 (  "<"       PGNSP PGUID b f f    18      18      16 633 634 charlt scalarltsel scalarltjoinsel ));
484 DESCR("less than");
485 DATA(insert OID = 632 (  "<="      PGNSP PGUID b f f    18      18      16 634 633 charle scalarltsel scalarltjoinsel ));
486 DESCR("less than or equal");
487 DATA(insert OID = 633 (  ">"       PGNSP PGUID b f f    18      18      16 631 632 chargt scalargtsel scalargtjoinsel ));
488 DESCR("greater than");
489 DATA(insert OID = 634 (  ">="      PGNSP PGUID b f f    18      18      16 632 631 charge scalargtsel scalargtjoinsel ));
490 DESCR("greater than or equal");
491
492 DATA(insert OID = 639 (  "~"       PGNSP PGUID b f f    19      25      16 0 640 nameregexeq regexeqsel regexeqjoinsel ));
493 DESCR("matches regular expression, case-sensitive");
494 #define OID_NAME_REGEXEQ_OP             639
495 DATA(insert OID = 640 (  "!~"      PGNSP PGUID b f f    19      25      16 0 639 nameregexne regexnesel regexnejoinsel ));
496 DESCR("does not match regular expression, case-sensitive");
497 DATA(insert OID = 641 (  "~"       PGNSP PGUID b f f    25      25      16 0 642 textregexeq regexeqsel regexeqjoinsel ));
498 DESCR("matches regular expression, case-sensitive");
499 #define OID_TEXT_REGEXEQ_OP             641
500 DATA(insert OID = 642 (  "!~"      PGNSP PGUID b f f    25      25      16 0 641 textregexne regexnesel regexnejoinsel ));
501 DESCR("does not match regular expression, case-sensitive");
502 DATA(insert OID = 643 (  "<>"      PGNSP PGUID b f f    19      19      16 643 93 namene neqsel neqjoinsel ));
503 DESCR("not equal");
504 DATA(insert OID = 654 (  "||"      PGNSP PGUID b f f    25      25      25       0 0 textcat - - ));
505 DESCR("concatenate");
506
507 DATA(insert OID = 660 (  "<"       PGNSP PGUID b f f    19      19      16 662 663 namelt scalarltsel scalarltjoinsel ));
508 DESCR("less than");
509 DATA(insert OID = 661 (  "<="      PGNSP PGUID b f f    19      19      16 663 662 namele scalarltsel scalarltjoinsel ));
510 DESCR("less than or equal");
511 DATA(insert OID = 662 (  ">"       PGNSP PGUID b f f    19      19      16 660 661 namegt scalargtsel scalargtjoinsel ));
512 DESCR("greater than");
513 DATA(insert OID = 663 (  ">="      PGNSP PGUID b f f    19      19      16 661 660 namege scalargtsel scalargtjoinsel ));
514 DESCR("greater than or equal");
515 DATA(insert OID = 664 (  "<"       PGNSP PGUID b f f    25      25      16 666 667 text_lt scalarltsel scalarltjoinsel ));
516 DESCR("less than");
517 DATA(insert OID = 665 (  "<="      PGNSP PGUID b f f    25      25      16 667 666 text_le scalarltsel scalarltjoinsel ));
518 DESCR("less than or equal");
519 DATA(insert OID = 666 (  ">"       PGNSP PGUID b f f    25      25      16 664 665 text_gt scalargtsel scalargtjoinsel ));
520 DESCR("greater than");
521 DATA(insert OID = 667 (  ">="      PGNSP PGUID b f f    25      25      16 665 664 text_ge scalargtsel scalargtjoinsel ));
522 DESCR("greater than or equal");
523
524 DATA(insert OID = 670 (  "="       PGNSP PGUID b t t    701  701        16 670 671 float8eq eqsel eqjoinsel ));
525 DESCR("equal");
526 DATA(insert OID = 671 (  "<>"      PGNSP PGUID b f f    701  701        16 671 670 float8ne neqsel neqjoinsel ));
527 DESCR("not equal");
528 DATA(insert OID = 672 (  "<"       PGNSP PGUID b f f    701  701        16 674 675 float8lt scalarltsel scalarltjoinsel ));
529 DESCR("less than");
530 DATA(insert OID = 673 (  "<="      PGNSP PGUID b f f    701  701        16 675 674 float8le scalarltsel scalarltjoinsel ));
531 DESCR("less than or equal");
532 DATA(insert OID = 674 (  ">"       PGNSP PGUID b f f    701  701        16 672 673 float8gt scalargtsel scalargtjoinsel ));
533 DESCR("greater than");
534 DATA(insert OID = 675 (  ">="      PGNSP PGUID b f f    701  701        16 673 672 float8ge scalargtsel scalargtjoinsel ));
535 DESCR("greater than or equal");
536
537 DATA(insert OID = 682 (  "@"       PGNSP PGUID l f f     0      21      21       0       0 int2abs - - ));
538 DESCR("absolute value");
539 DATA(insert OID = 684 (  "+"       PGNSP PGUID b f f    20      20      20 684   0 int8pl - - ));
540 DESCR("add");
541 DATA(insert OID = 685 (  "-"       PGNSP PGUID b f f    20      20      20       0       0 int8mi - - ));
542 DESCR("subtract");
543 DATA(insert OID = 686 (  "*"       PGNSP PGUID b f f    20      20      20 686   0 int8mul - - ));
544 DESCR("multiply");
545 DATA(insert OID = 687 (  "/"       PGNSP PGUID b f f    20      20      20       0       0 int8div - - ));
546 DESCR("divide");
547
548 DATA(insert OID = 688 (  "+"       PGNSP PGUID b f f    20      23      20 692   0 int84pl - - ));
549 DESCR("add");
550 DATA(insert OID = 689 (  "-"       PGNSP PGUID b f f    20      23      20       0       0 int84mi - - ));
551 DESCR("subtract");
552 DATA(insert OID = 690 (  "*"       PGNSP PGUID b f f    20      23      20 694   0 int84mul - - ));
553 DESCR("multiply");
554 DATA(insert OID = 691 (  "/"       PGNSP PGUID b f f    20      23      20       0       0 int84div - - ));
555 DESCR("divide");
556 DATA(insert OID = 692 (  "+"       PGNSP PGUID b f f    23      20      20 688   0 int48pl - - ));
557 DESCR("add");
558 DATA(insert OID = 693 (  "-"       PGNSP PGUID b f f    23      20      20       0       0 int48mi - - ));
559 DESCR("subtract");
560 DATA(insert OID = 694 (  "*"       PGNSP PGUID b f f    23      20      20 690   0 int48mul - - ));
561 DESCR("multiply");
562 DATA(insert OID = 695 (  "/"       PGNSP PGUID b f f    23      20      20       0       0 int48div - - ));
563 DESCR("divide");
564
565 DATA(insert OID = 818 (  "+"       PGNSP PGUID b f f    20      21      20 822   0 int82pl - - ));
566 DESCR("add");
567 DATA(insert OID = 819 (  "-"       PGNSP PGUID b f f    20      21      20       0       0 int82mi - - ));
568 DESCR("subtract");
569 DATA(insert OID = 820 (  "*"       PGNSP PGUID b f f    20      21      20 824   0 int82mul - - ));
570 DESCR("multiply");
571 DATA(insert OID = 821 (  "/"       PGNSP PGUID b f f    20      21      20       0       0 int82div - - ));
572 DESCR("divide");
573 DATA(insert OID = 822 (  "+"       PGNSP PGUID b f f    21      20      20 818   0 int28pl - - ));
574 DESCR("add");
575 DATA(insert OID = 823 (  "-"       PGNSP PGUID b f f    21      20      20       0       0 int28mi - - ));
576 DESCR("subtract");
577 DATA(insert OID = 824 (  "*"       PGNSP PGUID b f f    21      20      20 820   0 int28mul - - ));
578 DESCR("multiply");
579 DATA(insert OID = 825 (  "/"       PGNSP PGUID b f f    21      20      20       0       0 int28div - - ));
580 DESCR("divide");
581
582 DATA(insert OID = 706 (  "<->"     PGNSP PGUID b f f 603 603 701 706     0 box_distance - - ));
583 DESCR("distance between");
584 DATA(insert OID = 707 (  "<->"     PGNSP PGUID b f f 602 602 701 707     0 path_distance - - ));
585 DESCR("distance between");
586 DATA(insert OID = 708 (  "<->"     PGNSP PGUID b f f 628 628 701 708     0 line_distance - - ));
587 DESCR("distance between");
588 DATA(insert OID = 709 (  "<->"     PGNSP PGUID b f f 601 601 701 709     0 lseg_distance - - ));
589 DESCR("distance between");
590 DATA(insert OID = 712 (  "<->"     PGNSP PGUID b f f 604 604 701 712     0 poly_distance - - ));
591 DESCR("distance between");
592
593 DATA(insert OID = 713 (  "<>"      PGNSP PGUID b f f 600 600    16 713 510 point_ne neqsel neqjoinsel ));
594 DESCR("not equal");
595
596 /* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */
597 DATA(insert OID = 731 (  "+"       PGNSP PGUID b f f    600  600        600  731  0 point_add - - ));
598 DESCR("add points (translate)");
599 DATA(insert OID = 732 (  "-"       PGNSP PGUID b f f    600  600        600    0  0 point_sub - - ));
600 DESCR("subtract points (translate)");
601 DATA(insert OID = 733 (  "*"       PGNSP PGUID b f f    600  600        600  733  0 point_mul - - ));
602 DESCR("multiply points (scale/rotate)");
603 DATA(insert OID = 734 (  "/"       PGNSP PGUID b f f    600  600        600    0  0 point_div - - ));
604 DESCR("divide points (scale/rotate)");
605 DATA(insert OID = 735 (  "+"       PGNSP PGUID b f f    602  602        602  735  0 path_add - - ));
606 DESCR("concatenate");
607 DATA(insert OID = 736 (  "+"       PGNSP PGUID b f f    602  600        602    0  0 path_add_pt - - ));
608 DESCR("add (translate path)");
609 DATA(insert OID = 737 (  "-"       PGNSP PGUID b f f    602  600        602    0  0 path_sub_pt - - ));
610 DESCR("subtract (translate path)");
611 DATA(insert OID = 738 (  "*"       PGNSP PGUID b f f    602  600        602    0  0 path_mul_pt - - ));
612 DESCR("multiply (rotate/scale path)");
613 DATA(insert OID = 739 (  "/"       PGNSP PGUID b f f    602  600        602    0  0 path_div_pt - - ));
614 DESCR("divide (rotate/scale path)");
615 DATA(insert OID = 755 (  "@>"      PGNSP PGUID b f f    602  600         16  512  0 path_contain_pt - - ));
616 DESCR("contains");
617 DATA(insert OID = 756 (  "<@"      PGNSP PGUID b f f    600  604         16  757  0 pt_contained_poly contsel contjoinsel ));
618 DESCR("is contained by");
619 DATA(insert OID = 757 (  "@>"      PGNSP PGUID b f f    604  600         16  756  0 poly_contain_pt contsel contjoinsel ));
620 DESCR("contains");
621 DATA(insert OID = 758 (  "<@"      PGNSP PGUID b f f    600  718         16  759  0 pt_contained_circle contsel contjoinsel ));
622 DESCR("is contained by");
623 DATA(insert OID = 759 (  "@>"      PGNSP PGUID b f f    718  600         16  758  0 circle_contain_pt contsel contjoinsel ));
624 DESCR("contains");
625
626 DATA(insert OID = 773 (  "@"       PGNSP PGUID l f f     0      23      23       0       0 int4abs - - ));
627 DESCR("absolute value");
628
629 /* additional operators for geometric types - thomas 1997-07-09 */
630 DATA(insert OID =  792 (  "="      PGNSP PGUID b f f    602  602         16  792  0 path_n_eq eqsel eqjoinsel ));
631 DESCR("equal");
632 DATA(insert OID =  793 (  "<"      PGNSP PGUID b f f    602  602         16  794  0 path_n_lt - - ));
633 DESCR("less than");
634 DATA(insert OID =  794 (  ">"      PGNSP PGUID b f f    602  602         16  793  0 path_n_gt - - ));
635 DESCR("greater than");
636 DATA(insert OID =  795 (  "<="     PGNSP PGUID b f f    602  602         16  796  0 path_n_le - - ));
637 DESCR("less than or equal");
638 DATA(insert OID =  796 (  ">="     PGNSP PGUID b f f    602  602         16  795  0 path_n_ge - - ));
639 DESCR("greater than or equal");
640 DATA(insert OID =  797 (  "#"      PGNSP PGUID l f f    0        602     23    0  0 path_npoints - - ));
641 DESCR("number of points");
642 DATA(insert OID =  798 (  "?#"     PGNSP PGUID b f f    602  602         16    0  0 path_inter - - ));
643 DESCR("intersect");
644 DATA(insert OID =  799 (  "@-@"    PGNSP PGUID l f f    0        602    701    0  0 path_length - - ));
645 DESCR("sum of path segment lengths");
646 DATA(insert OID =  800 (  ">^"     PGNSP PGUID b f f    603  603         16    0  0 box_above_eq positionsel positionjoinsel ));
647 DESCR("is above (allows touching)");
648 DATA(insert OID =  801 (  "<^"     PGNSP PGUID b f f    603  603         16    0  0 box_below_eq positionsel positionjoinsel ));
649 DESCR("is below (allows touching)");
650 DATA(insert OID =  802 (  "?#"     PGNSP PGUID b f f    603  603         16    0  0 box_overlap areasel areajoinsel ));
651 DESCR("deprecated, use && instead");
652 DATA(insert OID =  803 (  "#"      PGNSP PGUID b f f    603  603        603    0  0 box_intersect - - ));
653 DESCR("box intersection");
654 DATA(insert OID =  804 (  "+"      PGNSP PGUID b f f    603  600        603    0  0 box_add - - ));
655 DESCR("add point to box (translate)");
656 DATA(insert OID =  805 (  "-"      PGNSP PGUID b f f    603  600        603    0  0 box_sub - - ));
657 DESCR("subtract point from box (translate)");
658 DATA(insert OID =  806 (  "*"      PGNSP PGUID b f f    603  600        603    0  0 box_mul - - ));
659 DESCR("multiply box by point (scale)");
660 DATA(insert OID =  807 (  "/"      PGNSP PGUID b f f    603  600        603    0  0 box_div - - ));
661 DESCR("divide box by point (scale)");
662 DATA(insert OID =  808 (  "?-"     PGNSP PGUID b f f    600  600         16  808  0 point_horiz - - ));
663 DESCR("horizontally aligned");
664 DATA(insert OID =  809 (  "?|"     PGNSP PGUID b f f    600  600         16  809  0 point_vert - - ));
665 DESCR("vertically aligned");
666
667 DATA(insert OID = 811 (  "="       PGNSP PGUID b t f 704 704    16 811 812 tintervaleq eqsel eqjoinsel ));
668 DESCR("equal");
669 DATA(insert OID = 812 (  "<>"      PGNSP PGUID b f f 704 704    16 812 811 tintervalne neqsel neqjoinsel ));
670 DESCR("not equal");
671 DATA(insert OID = 813 (  "<"       PGNSP PGUID b f f 704 704    16 814 816 tintervallt scalarltsel scalarltjoinsel ));
672 DESCR("less than");
673 DATA(insert OID = 814 (  ">"       PGNSP PGUID b f f 704 704    16 813 815 tintervalgt scalargtsel scalargtjoinsel ));
674 DESCR("greater than");
675 DATA(insert OID = 815 (  "<="      PGNSP PGUID b f f 704 704    16 816 814 tintervalle scalarltsel scalarltjoinsel ));
676 DESCR("less than or equal");
677 DATA(insert OID = 816 (  ">="      PGNSP PGUID b f f 704 704    16 815 813 tintervalge scalargtsel scalargtjoinsel ));
678 DESCR("greater than or equal");
679
680 DATA(insert OID = 843 (  "*"       PGNSP PGUID b f f    790  700        790 845   0 cash_mul_flt4 - - ));
681 DESCR("multiply");
682 DATA(insert OID = 844 (  "/"       PGNSP PGUID b f f    790  700        790   0   0 cash_div_flt4 - - ));
683 DESCR("divide");
684 DATA(insert OID = 845 (  "*"       PGNSP PGUID b f f    700  790        790 843   0 flt4_mul_cash - - ));
685 DESCR("multiply");
686
687 DATA(insert OID = 900 (  "="       PGNSP PGUID b t f    790  790        16 900 901 cash_eq eqsel eqjoinsel ));
688 DESCR("equal");
689 DATA(insert OID = 901 (  "<>"      PGNSP PGUID b f f    790  790        16 901 900 cash_ne neqsel neqjoinsel ));
690 DESCR("not equal");
691 DATA(insert OID = 902 (  "<"       PGNSP PGUID b f f    790  790        16 903 905 cash_lt scalarltsel scalarltjoinsel ));
692 DESCR("less than");
693 DATA(insert OID = 903 (  ">"       PGNSP PGUID b f f    790  790        16 902 904 cash_gt scalargtsel scalargtjoinsel ));
694 DESCR("greater than");
695 DATA(insert OID = 904 (  "<="      PGNSP PGUID b f f    790  790        16 905 903 cash_le scalarltsel scalarltjoinsel ));
696 DESCR("less than or equal");
697 DATA(insert OID = 905 (  ">="      PGNSP PGUID b f f    790  790        16 904 902 cash_ge scalargtsel scalargtjoinsel ));
698 DESCR("greater than or equal");
699 DATA(insert OID = 906 (  "+"       PGNSP PGUID b f f    790  790        790 906   0 cash_pl - - ));
700 DESCR("add");
701 DATA(insert OID = 907 (  "-"       PGNSP PGUID b f f    790  790        790   0   0 cash_mi - - ));
702 DESCR("subtract");
703 DATA(insert OID = 908 (  "*"       PGNSP PGUID b f f    790  701        790 916   0 cash_mul_flt8 - - ));
704 DESCR("multiply");
705 DATA(insert OID = 909 (  "/"       PGNSP PGUID b f f    790  701        790   0   0 cash_div_flt8 - - ));
706 DESCR("divide");
707 DATA(insert OID = 912 (  "*"       PGNSP PGUID b f f    790  23         790 917   0 cash_mul_int4 - - ));
708 DESCR("multiply");
709 DATA(insert OID = 913 (  "/"       PGNSP PGUID b f f    790  23         790   0   0 cash_div_int4 - - ));
710 DESCR("divide");
711 DATA(insert OID = 914 (  "*"       PGNSP PGUID b f f    790  21         790 918   0 cash_mul_int2 - - ));
712 DESCR("multiply");
713 DATA(insert OID = 915 (  "/"       PGNSP PGUID b f f    790  21         790   0   0 cash_div_int2 - - ));
714 DESCR("divide");
715 DATA(insert OID = 916 (  "*"       PGNSP PGUID b f f    701  790        790 908   0 flt8_mul_cash - - ));
716 DESCR("multiply");
717 DATA(insert OID = 917 (  "*"       PGNSP PGUID b f f    23      790             790 912   0 int4_mul_cash - - ));
718 DESCR("multiply");
719 DATA(insert OID = 918 (  "*"       PGNSP PGUID b f f    21      790             790 914   0 int2_mul_cash - - ));
720 DESCR("multiply");
721 DATA(insert OID = 3825 ( "/"       PGNSP PGUID b f f    790 790         701   0   0 cash_div_cash - - ));
722 DESCR("divide");
723
724 DATA(insert OID = 965 (  "^"       PGNSP PGUID b f f    701  701        701 0 0 dpow - - ));
725 DESCR("exponentiation");
726 DATA(insert OID = 966 (  "+"       PGNSP PGUID b f f 1034 1033 1034 0 0 aclinsert - - ));
727 DESCR("add/update ACL item");
728 DATA(insert OID = 967 (  "-"       PGNSP PGUID b f f 1034 1033 1034 0 0 aclremove - - ));
729 DESCR("remove ACL item");
730 DATA(insert OID = 968 (  "@>"      PGNSP PGUID b f f 1034 1033   16 0 0 aclcontains - - ));
731 DESCR("contains");
732 DATA(insert OID = 974 (  "="       PGNSP PGUID b f t 1033 1033   16 974 0 aclitemeq eqsel eqjoinsel ));
733 DESCR("equal");
734
735 /* additional geometric operators - thomas 1997-07-09 */
736 DATA(insert OID =  969 (  "@@"     PGNSP PGUID l f f    0  601  600    0  0 lseg_center - - ));
737 DESCR("center of");
738 DATA(insert OID =  970 (  "@@"     PGNSP PGUID l f f    0  602  600    0  0 path_center - - ));
739 DESCR("center of");
740 DATA(insert OID =  971 (  "@@"     PGNSP PGUID l f f    0  604  600    0  0 poly_center - - ));
741 DESCR("center of");
742
743 DATA(insert OID = 1054 ( "="       PGNSP PGUID b t t 1042 1042   16 1054 1057 bpchareq eqsel eqjoinsel ));
744 DESCR("equal");
745
746 DATA(insert OID = 1055 ( "~"       PGNSP PGUID b f f 1042 25     16    0 1056 bpcharregexeq regexeqsel regexeqjoinsel ));
747 DESCR("matches regular expression, case-sensitive");
748 #define OID_BPCHAR_REGEXEQ_OP           1055
749 DATA(insert OID = 1056 ( "!~"      PGNSP PGUID b f f 1042 25     16    0 1055 bpcharregexne regexnesel regexnejoinsel ));
750 DESCR("does not match regular expression, case-sensitive");
751 DATA(insert OID = 1057 ( "<>"      PGNSP PGUID b f f 1042 1042   16 1057 1054 bpcharne neqsel neqjoinsel ));
752 DESCR("not equal");
753 DATA(insert OID = 1058 ( "<"       PGNSP PGUID b f f 1042 1042   16 1060 1061 bpcharlt scalarltsel scalarltjoinsel ));
754 DESCR("less than");
755 DATA(insert OID = 1059 ( "<="      PGNSP PGUID b f f 1042 1042   16 1061 1060 bpcharle scalarltsel scalarltjoinsel ));
756 DESCR("less than or equal");
757 DATA(insert OID = 1060 ( ">"       PGNSP PGUID b f f 1042 1042   16 1058 1059 bpchargt scalargtsel scalargtjoinsel ));
758 DESCR("greater than");
759 DATA(insert OID = 1061 ( ">="      PGNSP PGUID b f f 1042 1042   16 1059 1058 bpcharge scalargtsel scalargtjoinsel ));
760 DESCR("greater than or equal");
761
762 /* generic array comparison operators */
763 DATA(insert OID = 1070 (  "="      PGNSP PGUID b t t 2277 2277 16 1070 1071 array_eq eqsel eqjoinsel ));
764 DESCR("equal");
765 #define ARRAY_EQ_OP 1070
766 DATA(insert OID = 1071 (  "<>"     PGNSP PGUID b f f 2277 2277 16 1071 1070 array_ne neqsel neqjoinsel ));
767 DESCR("not equal");
768 DATA(insert OID = 1072 (  "<"      PGNSP PGUID b f f 2277 2277 16 1073 1075 array_lt scalarltsel scalarltjoinsel ));
769 DESCR("less than");
770 #define ARRAY_LT_OP 1072
771 DATA(insert OID = 1073 (  ">"      PGNSP PGUID b f f 2277 2277 16 1072 1074 array_gt scalargtsel scalargtjoinsel ));
772 DESCR("greater than");
773 #define ARRAY_GT_OP 1073
774 DATA(insert OID = 1074 (  "<="     PGNSP PGUID b f f 2277 2277 16 1075 1073 array_le scalarltsel scalarltjoinsel ));
775 DESCR("less than or equal");
776 DATA(insert OID = 1075 (  ">="     PGNSP PGUID b f f 2277 2277 16 1074 1072 array_ge scalargtsel scalargtjoinsel ));
777 DESCR("greater than or equal");
778
779 /* date operators */
780 DATA(insert OID = 1076 ( "+"       PGNSP PGUID b f f    1082    1186 1114 2551 0 date_pl_interval - - ));
781 DESCR("add");
782 DATA(insert OID = 1077 ( "-"       PGNSP PGUID b f f    1082    1186 1114 0 0 date_mi_interval - - ));
783 DESCR("subtract");
784 DATA(insert OID = 1093 ( "="       PGNSP PGUID b t t    1082    1082   16 1093 1094 date_eq eqsel eqjoinsel ));
785 DESCR("equal");
786 DATA(insert OID = 1094 ( "<>"      PGNSP PGUID b f f    1082    1082   16 1094 1093 date_ne neqsel neqjoinsel ));
787 DESCR("not equal");
788 DATA(insert OID = 1095 ( "<"       PGNSP PGUID b f f    1082    1082   16 1097 1098 date_lt scalarltsel scalarltjoinsel ));
789 DESCR("less than");
790 DATA(insert OID = 1096 ( "<="      PGNSP PGUID b f f    1082    1082   16 1098 1097 date_le scalarltsel scalarltjoinsel ));
791 DESCR("less than or equal");
792 DATA(insert OID = 1097 ( ">"       PGNSP PGUID b f f    1082    1082   16 1095 1096 date_gt scalargtsel scalargtjoinsel ));
793 DESCR("greater than");
794 DATA(insert OID = 1098 ( ">="      PGNSP PGUID b f f    1082    1082   16 1096 1095 date_ge scalargtsel scalargtjoinsel ));
795 DESCR("greater than or equal");
796 DATA(insert OID = 1099 ( "-"       PGNSP PGUID b f f    1082    1082   23 0 0 date_mi - - ));
797 DESCR("subtract");
798 DATA(insert OID = 1100 ( "+"       PGNSP PGUID b f f    1082      23 1082 2555 0 date_pli - - ));
799 DESCR("add");
800 DATA(insert OID = 1101 ( "-"       PGNSP PGUID b f f    1082      23 1082 0 0 date_mii - - ));
801 DESCR("subtract");
802
803 /* time operators */
804 DATA(insert OID = 1108 ( "="       PGNSP PGUID b t t    1083    1083  16 1108 1109 time_eq eqsel eqjoinsel ));
805 DESCR("equal");
806 DATA(insert OID = 1109 ( "<>"      PGNSP PGUID b f f    1083    1083  16 1109 1108 time_ne neqsel neqjoinsel ));
807 DESCR("not equal");
808 DATA(insert OID = 1110 ( "<"       PGNSP PGUID b f f    1083    1083  16 1112 1113 time_lt scalarltsel scalarltjoinsel ));
809 DESCR("less than");
810 DATA(insert OID = 1111 ( "<="      PGNSP PGUID b f f    1083    1083  16 1113 1112 time_le scalarltsel scalarltjoinsel ));
811 DESCR("less than or equal");
812 DATA(insert OID = 1112 ( ">"       PGNSP PGUID b f f    1083    1083  16 1110 1111 time_gt scalargtsel scalargtjoinsel ));
813 DESCR("greater than");
814 DATA(insert OID = 1113 ( ">="      PGNSP PGUID b f f    1083    1083  16 1111 1110 time_ge scalargtsel scalargtjoinsel ));
815 DESCR("greater than or equal");
816
817 /* timetz operators */
818 DATA(insert OID = 1550 ( "="       PGNSP PGUID b t t    1266 1266       16 1550 1551 timetz_eq eqsel eqjoinsel ));
819 DESCR("equal");
820 DATA(insert OID = 1551 ( "<>"      PGNSP PGUID b f f    1266 1266       16 1551 1550 timetz_ne neqsel neqjoinsel ));
821 DESCR("not equal");
822 DATA(insert OID = 1552 ( "<"       PGNSP PGUID b f f    1266 1266       16 1554 1555 timetz_lt scalarltsel scalarltjoinsel ));
823 DESCR("less than");
824 DATA(insert OID = 1553 ( "<="      PGNSP PGUID b f f    1266 1266       16 1555 1554 timetz_le scalarltsel scalarltjoinsel ));
825 DESCR("less than or equal");
826 DATA(insert OID = 1554 ( ">"       PGNSP PGUID b f f    1266 1266       16 1552 1553 timetz_gt scalargtsel scalargtjoinsel ));
827 DESCR("greater than");
828 DATA(insert OID = 1555 ( ">="      PGNSP PGUID b f f    1266 1266       16 1553 1552 timetz_ge scalargtsel scalargtjoinsel ));
829 DESCR("greater than or equal");
830
831 /* float48 operators */
832 DATA(insert OID = 1116 (  "+"           PGNSP PGUID b f f 700 701 701 1126       0 float48pl - - ));
833 DESCR("add");
834 DATA(insert OID = 1117 (  "-"           PGNSP PGUID b f f 700 701 701  0         0 float48mi - - ));
835 DESCR("subtract");
836 DATA(insert OID = 1118 (  "/"           PGNSP PGUID b f f 700 701 701  0         0 float48div - - ));
837 DESCR("divide");
838 DATA(insert OID = 1119 (  "*"           PGNSP PGUID b f f 700 701 701 1129       0 float48mul - - ));
839 DESCR("multiply");
840 DATA(insert OID = 1120 (  "="           PGNSP PGUID b t t  700  701  16 1130 1121 float48eq eqsel eqjoinsel ));
841 DESCR("equal");
842 DATA(insert OID = 1121 (  "<>"          PGNSP PGUID b f f  700  701  16 1131 1120 float48ne neqsel neqjoinsel ));
843 DESCR("not equal");
844 DATA(insert OID = 1122 (  "<"           PGNSP PGUID b f f  700  701  16 1133 1125 float48lt scalarltsel scalarltjoinsel ));
845 DESCR("less than");
846 DATA(insert OID = 1123 (  ">"           PGNSP PGUID b f f  700  701  16 1132 1124 float48gt scalargtsel scalargtjoinsel ));
847 DESCR("greater than");
848 DATA(insert OID = 1124 (  "<="          PGNSP PGUID b f f  700  701  16 1135 1123 float48le scalarltsel scalarltjoinsel ));
849 DESCR("less than or equal");
850 DATA(insert OID = 1125 (  ">="          PGNSP PGUID b f f  700  701  16 1134 1122 float48ge scalargtsel scalargtjoinsel ));
851 DESCR("greater than or equal");
852
853 /* float84 operators */
854 DATA(insert OID = 1126 (  "+"           PGNSP PGUID b f f 701 700 701 1116       0 float84pl - - ));
855 DESCR("add");
856 DATA(insert OID = 1127 (  "-"           PGNSP PGUID b f f 701 700 701  0         0 float84mi - - ));
857 DESCR("subtract");
858 DATA(insert OID = 1128 (  "/"           PGNSP PGUID b f f 701 700 701  0         0 float84div - - ));
859 DESCR("divide");
860 DATA(insert OID = 1129 (  "*"           PGNSP PGUID b f f 701 700 701 1119       0 float84mul - - ));
861 DESCR("multiply");
862 DATA(insert OID = 1130 (  "="           PGNSP PGUID b t t  701  700  16 1120 1131 float84eq eqsel eqjoinsel ));
863 DESCR("equal");
864 DATA(insert OID = 1131 (  "<>"          PGNSP PGUID b f f  701  700  16 1121 1130 float84ne neqsel neqjoinsel ));
865 DESCR("not equal");
866 DATA(insert OID = 1132 (  "<"           PGNSP PGUID b f f  701  700  16 1123 1135 float84lt scalarltsel scalarltjoinsel ));
867 DESCR("less than");
868 DATA(insert OID = 1133 (  ">"           PGNSP PGUID b f f  701  700  16 1122 1134 float84gt scalargtsel scalargtjoinsel ));
869 DESCR("greater than");
870 DATA(insert OID = 1134 (  "<="          PGNSP PGUID b f f  701  700  16 1125 1133 float84le scalarltsel scalarltjoinsel ));
871 DESCR("less than or equal");
872 DATA(insert OID = 1135 (  ">="          PGNSP PGUID b f f  701  700  16 1124 1132 float84ge scalargtsel scalargtjoinsel ));
873 DESCR("greater than or equal");
874
875
876 /* LIKE hacks by Keith Parks. */
877 DATA(insert OID = 1207 (  "~~"    PGNSP PGUID b f f  19 25      16 0 1208 namelike likesel likejoinsel ));
878 DESCR("matches LIKE expression");
879 #define OID_NAME_LIKE_OP                1207
880 DATA(insert OID = 1208 (  "!~~"   PGNSP PGUID b f f  19 25      16 0 1207 namenlike nlikesel nlikejoinsel ));
881 DESCR("does not match LIKE expression");
882 DATA(insert OID = 1209 (  "~~"    PGNSP PGUID b f f  25 25      16 0 1210 textlike likesel likejoinsel ));
883 DESCR("matches LIKE expression");
884 #define OID_TEXT_LIKE_OP                1209
885 DATA(insert OID = 1210 (  "!~~"   PGNSP PGUID b f f  25 25      16 0 1209 textnlike nlikesel nlikejoinsel ));
886 DESCR("does not match LIKE expression");
887 DATA(insert OID = 1211 (  "~~"    PGNSP PGUID b f f  1042 25    16 0 1212 bpcharlike likesel likejoinsel ));
888 DESCR("matches LIKE expression");
889 #define OID_BPCHAR_LIKE_OP              1211
890 DATA(insert OID = 1212 (  "!~~"   PGNSP PGUID b f f  1042 25    16 0 1211 bpcharnlike nlikesel nlikejoinsel ));
891 DESCR("does not match LIKE expression");
892
893 /* case-insensitive regex hacks */
894 DATA(insert OID = 1226 (  "~*"           PGNSP PGUID b f f      19      25      16 0 1227 nameicregexeq icregexeqsel icregexeqjoinsel ));
895 DESCR("matches regular expression, case-insensitive");
896 #define OID_NAME_ICREGEXEQ_OP           1226
897 DATA(insert OID = 1227 (  "!~*"          PGNSP PGUID b f f      19      25      16 0 1226 nameicregexne icregexnesel icregexnejoinsel ));
898 DESCR("does not match regular expression, case-insensitive");
899 DATA(insert OID = 1228 (  "~*"           PGNSP PGUID b f f      25      25      16 0 1229 texticregexeq icregexeqsel icregexeqjoinsel ));
900 DESCR("matches regular expression, case-insensitive");
901 #define OID_TEXT_ICREGEXEQ_OP           1228
902 DATA(insert OID = 1229 (  "!~*"          PGNSP PGUID b f f      25      25      16 0 1228 texticregexne icregexnesel icregexnejoinsel ));
903 DESCR("does not match regular expression, case-insensitive");
904 DATA(insert OID = 1234 (  "~*"          PGNSP PGUID b f f  1042  25  16 0 1235 bpcharicregexeq icregexeqsel icregexeqjoinsel ));
905 DESCR("matches regular expression, case-insensitive");
906 #define OID_BPCHAR_ICREGEXEQ_OP         1234
907 DATA(insert OID = 1235 ( "!~*"          PGNSP PGUID b f f  1042  25  16 0 1234 bpcharicregexne icregexnesel icregexnejoinsel ));
908 DESCR("does not match regular expression, case-insensitive");
909
910 /* timestamptz operators */
911 DATA(insert OID = 1320 (  "="      PGNSP PGUID b t t 1184 1184   16 1320 1321 timestamptz_eq eqsel eqjoinsel ));
912 DESCR("equal");
913 DATA(insert OID = 1321 (  "<>"     PGNSP PGUID b f f 1184 1184   16 1321 1320 timestamptz_ne neqsel neqjoinsel ));
914 DESCR("not equal");
915 DATA(insert OID = 1322 (  "<"      PGNSP PGUID b f f 1184 1184   16 1324 1325 timestamptz_lt scalarltsel scalarltjoinsel ));
916 DESCR("less than");
917 DATA(insert OID = 1323 (  "<="     PGNSP PGUID b f f 1184 1184   16 1325 1324 timestamptz_le scalarltsel scalarltjoinsel ));
918 DESCR("less than or equal");
919 DATA(insert OID = 1324 (  ">"      PGNSP PGUID b f f 1184 1184   16 1322 1323 timestamptz_gt scalargtsel scalargtjoinsel ));
920 DESCR("greater than");
921 DATA(insert OID = 1325 (  ">="     PGNSP PGUID b f f 1184 1184   16 1323 1322 timestamptz_ge scalargtsel scalargtjoinsel ));
922 DESCR("greater than or equal");
923 DATA(insert OID = 1327 (  "+"      PGNSP PGUID b f f 1184 1186 1184  2554 0 timestamptz_pl_interval - - ));
924 DESCR("add");
925 DATA(insert OID = 1328 (  "-"      PGNSP PGUID b f f 1184 1184 1186  0  0 timestamptz_mi - - ));
926 DESCR("subtract");
927 DATA(insert OID = 1329 (  "-"      PGNSP PGUID b f f 1184 1186 1184  0  0 timestamptz_mi_interval - - ));
928 DESCR("subtract");
929
930 /* interval operators */
931 DATA(insert OID = 1330 (  "="      PGNSP PGUID b t t 1186 1186   16 1330 1331 interval_eq eqsel eqjoinsel ));
932 DESCR("equal");
933 DATA(insert OID = 1331 (  "<>"     PGNSP PGUID b f f 1186 1186   16 1331 1330 interval_ne neqsel neqjoinsel ));
934 DESCR("not equal");
935 DATA(insert OID = 1332 (  "<"      PGNSP PGUID b f f 1186 1186   16 1334 1335 interval_lt scalarltsel scalarltjoinsel ));
936 DESCR("less than");
937 DATA(insert OID = 1333 (  "<="     PGNSP PGUID b f f 1186 1186   16 1335 1334 interval_le scalarltsel scalarltjoinsel ));
938 DESCR("less than or equal");
939 DATA(insert OID = 1334 (  ">"      PGNSP PGUID b f f 1186 1186   16 1332 1333 interval_gt scalargtsel scalargtjoinsel ));
940 DESCR("greater than");
941 DATA(insert OID = 1335 (  ">="     PGNSP PGUID b f f 1186 1186   16 1333 1332 interval_ge scalargtsel scalargtjoinsel ));
942 DESCR("greater than or equal");
943
944 DATA(insert OID = 1336 (  "-"      PGNSP PGUID l f f    0 1186 1186    0        0 interval_um - - ));
945 DESCR("negate");
946 DATA(insert OID = 1337 (  "+"      PGNSP PGUID b f f 1186 1186 1186 1337        0 interval_pl - - ));
947 DESCR("add");
948 DATA(insert OID = 1338 (  "-"      PGNSP PGUID b f f 1186 1186 1186    0        0 interval_mi - - ));
949 DESCR("subtract");
950
951 DATA(insert OID = 1360 (  "+"      PGNSP PGUID b f f 1082 1083 1114 1363 0 datetime_pl - - ));
952 DESCR("convert date and time to timestamp");
953 DATA(insert OID = 1361 (  "+"      PGNSP PGUID b f f 1082 1266 1184 1366 0 datetimetz_pl - - ));
954 DESCR("convert date and time with time zone to timestamp with time zone");
955 DATA(insert OID = 1363 (  "+"      PGNSP PGUID b f f 1083 1082 1114 1360 0 timedate_pl - - ));
956 DESCR("convert time and date to timestamp");
957 DATA(insert OID = 1366 (  "+"      PGNSP PGUID b f f 1266 1082 1184 1361 0 timetzdate_pl - - ));
958 DESCR("convert time with time zone and date to timestamp with time zone");
959
960 DATA(insert OID = 1399 (  "-"      PGNSP PGUID b f f 1083 1083 1186  0  0 time_mi_time - - ));
961 DESCR("subtract");
962
963 /* additional geometric operators - thomas 97/04/18 */
964 DATA(insert OID = 1420 (  "@@"    PGNSP PGUID l f f  0  718 600   0    0 circle_center - - ));
965 DESCR("center of");
966 DATA(insert OID = 1500 (  "="     PGNSP PGUID b f f  718        718 16 1500 1501 circle_eq eqsel eqjoinsel ));
967 DESCR("equal by area");
968 DATA(insert OID = 1501 (  "<>"    PGNSP PGUID b f f  718        718 16 1501 1500 circle_ne neqsel neqjoinsel ));
969 DESCR("not equal by area");
970 DATA(insert OID = 1502 (  "<"     PGNSP PGUID b f f  718        718 16 1503 1505 circle_lt areasel areajoinsel ));
971 DESCR("less than by area");
972 DATA(insert OID = 1503 (  ">"     PGNSP PGUID b f f  718        718 16 1502 1504 circle_gt areasel areajoinsel ));
973 DESCR("greater than by area");
974 DATA(insert OID = 1504 (  "<="    PGNSP PGUID b f f  718        718 16 1505 1503 circle_le areasel areajoinsel ));
975 DESCR("less than or equal by area");
976 DATA(insert OID = 1505 (  ">="    PGNSP PGUID b f f  718        718 16 1504 1502 circle_ge areasel areajoinsel ));
977 DESCR("greater than or equal by area");
978
979 DATA(insert OID = 1506 (  "<<"    PGNSP PGUID b f f  718        718 16    0    0 circle_left positionsel positionjoinsel ));
980 DESCR("is left of");
981 DATA(insert OID = 1507 (  "&<"    PGNSP PGUID b f f  718        718 16    0    0 circle_overleft positionsel positionjoinsel ));
982 DESCR("overlaps or is left of");
983 DATA(insert OID = 1508 (  "&>"    PGNSP PGUID b f f  718        718 16    0    0 circle_overright positionsel positionjoinsel ));
984 DESCR("overlaps or is right of");
985 DATA(insert OID = 1509 (  ">>"    PGNSP PGUID b f f  718        718 16    0    0 circle_right positionsel positionjoinsel ));
986 DESCR("is right of");
987 DATA(insert OID = 1510 (  "<@"    PGNSP PGUID b f f  718        718 16 1511    0 circle_contained contsel contjoinsel ));
988 DESCR("is contained by");
989 DATA(insert OID = 1511 (  "@>"    PGNSP PGUID b f f  718        718 16 1510    0 circle_contain contsel contjoinsel ));
990 DESCR("contains");
991 DATA(insert OID = 1512 (  "~="    PGNSP PGUID b f f  718        718 16 1512    0 circle_same eqsel eqjoinsel ));
992 DESCR("same as");
993 DATA(insert OID = 1513 (  "&&"    PGNSP PGUID b f f  718        718 16 1513    0 circle_overlap areasel areajoinsel ));
994 DESCR("overlaps");
995 DATA(insert OID = 1514 (  "|>>"   PGNSP PGUID b f f  718        718 16    0    0 circle_above positionsel positionjoinsel ));
996 DESCR("is above");
997 DATA(insert OID = 1515 (  "<<|"   PGNSP PGUID b f f  718        718 16    0    0 circle_below positionsel positionjoinsel ));
998 DESCR("is below");
999
1000 DATA(insert OID = 1516 (  "+"     PGNSP PGUID b f f  718        600  718          0    0 circle_add_pt - - ));
1001 DESCR("add");
1002 DATA(insert OID = 1517 (  "-"     PGNSP PGUID b f f  718        600  718          0    0 circle_sub_pt - - ));
1003 DESCR("subtract");
1004 DATA(insert OID = 1518 (  "*"     PGNSP PGUID b f f  718        600  718          0    0 circle_mul_pt - - ));
1005 DESCR("multiply");
1006 DATA(insert OID = 1519 (  "/"     PGNSP PGUID b f f  718        600  718          0    0 circle_div_pt - - ));
1007 DESCR("divide");
1008
1009 DATA(insert OID = 1520 (  "<->"   PGNSP PGUID b f f  718        718  701   1520    0 circle_distance - - ));
1010 DESCR("distance between");
1011 DATA(insert OID = 1521 (  "#"     PGNSP PGUID l f f  0          604   23          0    0 poly_npoints - - ));
1012 DESCR("number of points");
1013 DATA(insert OID = 1522 (  "<->"   PGNSP PGUID b f f  600        718  701          0    0 dist_pc - - ));
1014 DESCR("distance between");
1015 DATA(insert OID = 1523 (  "<->"   PGNSP PGUID b f f  718        604  701          0    0 dist_cpoly - - ));
1016 DESCR("distance between");
1017
1018 /* additional geometric operators - thomas 1997-07-09 */
1019 DATA(insert OID = 1524 (  "<->"   PGNSP PGUID b f f  628        603  701          0  0 dist_lb - - ));
1020 DESCR("distance between");
1021
1022 DATA(insert OID = 1525 (  "?#"    PGNSP PGUID b f f  601        601 16 1525  0 lseg_intersect - - ));
1023 DESCR("intersect");
1024 DATA(insert OID = 1526 (  "?||"   PGNSP PGUID b f f  601        601 16 1526  0 lseg_parallel - - ));
1025 DESCR("parallel");
1026 DATA(insert OID = 1527 (  "?-|"   PGNSP PGUID b f f  601        601 16 1527  0 lseg_perp - - ));
1027 DESCR("perpendicular");
1028 DATA(insert OID = 1528 (  "?-"    PGNSP PGUID l f f  0  601 16    0  0 lseg_horizontal - - ));
1029 DESCR("horizontal");
1030 DATA(insert OID = 1529 (  "?|"    PGNSP PGUID l f f  0  601 16    0  0 lseg_vertical - - ));
1031 DESCR("vertical");
1032 DATA(insert OID = 1535 (  "="     PGNSP PGUID b f f  601        601 16 1535 1586 lseg_eq eqsel eqjoinsel ));
1033 DESCR("equal");
1034 DATA(insert OID = 1536 (  "#"     PGNSP PGUID b f f  601        601  600 1536  0 lseg_interpt - - ));
1035 DESCR("intersection point");
1036 DATA(insert OID = 1537 (  "?#"    PGNSP PGUID b f f  601        628 16    0  0 inter_sl - - ));
1037 DESCR("intersect");
1038 DATA(insert OID = 1538 (  "?#"    PGNSP PGUID b f f  601        603 16    0  0 inter_sb - - ));
1039 DESCR("intersect");
1040 DATA(insert OID = 1539 (  "?#"    PGNSP PGUID b f f  628        603 16    0  0 inter_lb - - ));
1041 DESCR("intersect");
1042
1043 DATA(insert OID = 1546 (  "<@"    PGNSP PGUID b f f  600        628 16    0  0 on_pl - - ));
1044 DESCR("point on line");
1045 DATA(insert OID = 1547 (  "<@"    PGNSP PGUID b f f  600        601 16    0  0 on_ps - - ));
1046 DESCR("is contained by");
1047 DATA(insert OID = 1548 (  "<@"    PGNSP PGUID b f f  601        628 16    0  0 on_sl - - ));
1048 DESCR("lseg on line");
1049 DATA(insert OID = 1549 (  "<@"    PGNSP PGUID b f f  601        603 16    0  0 on_sb - - ));
1050 DESCR("is contained by");
1051
1052 DATA(insert OID = 1557 (  "##"    PGNSP PGUID b f f  600        628  600          0  0 close_pl - - ));
1053 DESCR("closest point to A on B");
1054 DATA(insert OID = 1558 (  "##"    PGNSP PGUID b f f  600        601  600          0  0 close_ps - - ));
1055 DESCR("closest point to A on B");
1056 DATA(insert OID = 1559 (  "##"    PGNSP PGUID b f f  600        603  600          0  0 close_pb - - ));
1057 DESCR("closest point to A on B");
1058
1059 DATA(insert OID = 1566 (  "##"    PGNSP PGUID b f f  601        628  600          0  0 close_sl - - ));
1060 DESCR("closest point to A on B");
1061 DATA(insert OID = 1567 (  "##"    PGNSP PGUID b f f  601        603  600          0  0 close_sb - - ));
1062 DESCR("closest point to A on B");
1063 DATA(insert OID = 1568 (  "##"    PGNSP PGUID b f f  628        603  600          0  0 close_lb - - ));
1064 DESCR("closest point to A on B");
1065 DATA(insert OID = 1577 (  "##"    PGNSP PGUID b f f  628        601  600          0  0 close_ls - - ));
1066 DESCR("closest point to A on B");
1067 DATA(insert OID = 1578 (  "##"    PGNSP PGUID b f f  601        601  600          0  0 close_lseg - - ));
1068 DESCR("closest point to A on B");
1069 DATA(insert OID = 1583 (  "*"     PGNSP PGUID b f f 1186        701 1186        1584 0 interval_mul - - ));
1070 DESCR("multiply");
1071 DATA(insert OID = 1584 (  "*"     PGNSP PGUID b f f  701 1186 1186      1583 0 mul_d_interval - - ));
1072 DESCR("multiply");
1073 DATA(insert OID = 1585 (  "/"     PGNSP PGUID b f f 1186        701 1186          0  0 interval_div - - ));
1074 DESCR("divide");
1075
1076 DATA(insert OID = 1586 (  "<>"    PGNSP PGUID b f f  601        601 16 1586 1535 lseg_ne neqsel neqjoinsel ));
1077 DESCR("not equal");
1078 DATA(insert OID = 1587 (  "<"     PGNSP PGUID b f f  601        601 16 1589 1590 lseg_lt - - ));
1079 DESCR("less than by length");
1080 DATA(insert OID = 1588 (  "<="    PGNSP PGUID b f f  601        601 16 1590 1589 lseg_le - - ));
1081 DESCR("less than or equal by length");
1082 DATA(insert OID = 1589 (  ">"     PGNSP PGUID b f f  601        601 16 1587 1588 lseg_gt - - ));
1083 DESCR("greater than by length");
1084 DATA(insert OID = 1590 (  ">="    PGNSP PGUID b f f  601        601 16 1588 1587 lseg_ge - - ));
1085 DESCR("greater than or equal by length");
1086
1087 DATA(insert OID = 1591 (  "@-@"   PGNSP PGUID l f f 0  601      701    0  0 lseg_length - - ));
1088 DESCR("distance between endpoints");
1089
1090 DATA(insert OID = 1611 (  "?#"    PGNSP PGUID b f f  628        628 16 1611  0 line_intersect - - ));
1091 DESCR("intersect");
1092 DATA(insert OID = 1612 (  "?||"   PGNSP PGUID b f f  628        628 16 1612  0 line_parallel - - ));
1093 DESCR("parallel");
1094 DATA(insert OID = 1613 (  "?-|"   PGNSP PGUID b f f  628        628 16 1613  0 line_perp - - ));
1095 DESCR("perpendicular");
1096 DATA(insert OID = 1614 (  "?-"    PGNSP PGUID l f f  0  628 16    0  0 line_horizontal - - ));
1097 DESCR("horizontal");
1098 DATA(insert OID = 1615 (  "?|"    PGNSP PGUID l f f  0  628 16    0  0 line_vertical - - ));
1099 DESCR("vertical");
1100 DATA(insert OID = 1616 (  "="     PGNSP PGUID b f f  628        628 16 1616  0 line_eq eqsel eqjoinsel ));
1101 DESCR("equal");
1102 DATA(insert OID = 1617 (  "#"     PGNSP PGUID b f f  628        628  600 1617  0 line_interpt - - ));
1103 DESCR("intersection point");
1104
1105 /* MAC type */
1106 DATA(insert OID = 1220 (  "="      PGNSP PGUID b t t 829 829     16 1220 1221 macaddr_eq eqsel eqjoinsel ));
1107 DESCR("equal");
1108 DATA(insert OID = 1221 (  "<>"     PGNSP PGUID b f f 829 829     16 1221 1220 macaddr_ne neqsel neqjoinsel ));
1109 DESCR("not equal");
1110 DATA(insert OID = 1222 (  "<"      PGNSP PGUID b f f 829 829     16 1224 1225 macaddr_lt scalarltsel scalarltjoinsel ));
1111 DESCR("less than");
1112 DATA(insert OID = 1223 (  "<="     PGNSP PGUID b f f 829 829     16 1225 1224 macaddr_le scalarltsel scalarltjoinsel ));
1113 DESCR("less than or equal");
1114 DATA(insert OID = 1224 (  ">"      PGNSP PGUID b f f 829 829     16 1222 1223 macaddr_gt scalargtsel scalargtjoinsel ));
1115 DESCR("greater than");
1116 DATA(insert OID = 1225 (  ">="     PGNSP PGUID b f f 829 829     16 1223 1222 macaddr_ge scalargtsel scalargtjoinsel ));
1117 DESCR("greater than or equal");
1118
1119 /* INET type (these also support CIDR via implicit cast) */
1120 DATA(insert OID = 1201 (  "="      PGNSP PGUID b t t 869 869     16 1201 1202 network_eq eqsel eqjoinsel ));
1121 DESCR("equal");
1122 DATA(insert OID = 1202 (  "<>"     PGNSP PGUID b f f 869 869     16 1202 1201 network_ne neqsel neqjoinsel ));
1123 DESCR("not equal");
1124 DATA(insert OID = 1203 (  "<"      PGNSP PGUID b f f 869 869     16 1205 1206 network_lt scalarltsel scalarltjoinsel ));
1125 DESCR("less than");
1126 DATA(insert OID = 1204 (  "<="     PGNSP PGUID b f f 869 869     16 1206 1205 network_le scalarltsel scalarltjoinsel ));
1127 DESCR("less than or equal");
1128 DATA(insert OID = 1205 (  ">"      PGNSP PGUID b f f 869 869     16 1203 1204 network_gt scalargtsel scalargtjoinsel ));
1129 DESCR("greater than");
1130 DATA(insert OID = 1206 (  ">="     PGNSP PGUID b f f 869 869     16 1204 1203 network_ge scalargtsel scalargtjoinsel ));
1131 DESCR("greater than or equal");
1132 DATA(insert OID = 931  (  "<<"     PGNSP PGUID b f f 869 869     16 933         0 network_sub - - ));
1133 DESCR("is subnet");
1134 #define OID_INET_SUB_OP                           931
1135 DATA(insert OID = 932  (  "<<="    PGNSP PGUID b f f 869 869     16 934         0 network_subeq - - ));
1136 DESCR("is subnet or equal");
1137 #define OID_INET_SUBEQ_OP                               932
1138 DATA(insert OID = 933  (  ">>"     PGNSP PGUID b f f 869 869     16 931         0 network_sup - - ));
1139 DESCR("is supernet");
1140 #define OID_INET_SUP_OP                           933
1141 DATA(insert OID = 934  (  ">>="    PGNSP PGUID b f f 869 869     16 932         0 network_supeq - - ));
1142 DESCR("is supernet or equal");
1143 #define OID_INET_SUPEQ_OP                               934
1144
1145 DATA(insert OID = 2634 (  "~"      PGNSP PGUID l f f      0 869 869 0 0 inetnot - - ));
1146 DESCR("bitwise not");
1147 DATA(insert OID = 2635 (  "&"      PGNSP PGUID b f f    869 869 869 0 0 inetand - - ));
1148 DESCR("bitwise and");
1149 DATA(insert OID = 2636 (  "|"      PGNSP PGUID b f f    869 869 869 0 0 inetor - - ));
1150 DESCR("bitwise or");
1151 DATA(insert OID = 2637 (  "+"      PGNSP PGUID b f f    869  20 869 2638 0 inetpl - - ));
1152 DESCR("add");
1153 DATA(insert OID = 2638 (  "+"      PGNSP PGUID b f f     20 869 869 2637 0 int8pl_inet - - ));
1154 DESCR("add");
1155 DATA(insert OID = 2639 (  "-"      PGNSP PGUID b f f    869  20 869 0 0 inetmi_int8 - - ));
1156 DESCR("subtract");
1157 DATA(insert OID = 2640 (  "-"      PGNSP PGUID b f f    869 869  20 0 0 inetmi - - ));
1158 DESCR("subtract");
1159
1160 /* case-insensitive LIKE hacks */
1161 DATA(insert OID = 1625 (  "~~*"   PGNSP PGUID b f f  19 25      16 0 1626 nameiclike iclikesel iclikejoinsel ));
1162 DESCR("matches LIKE expression, case-insensitive");
1163 #define OID_NAME_ICLIKE_OP              1625
1164 DATA(insert OID = 1626 (  "!~~*"  PGNSP PGUID b f f  19 25      16 0 1625 nameicnlike icnlikesel icnlikejoinsel ));
1165 DESCR("does not match LIKE expression, case-insensitive");
1166 DATA(insert OID = 1627 (  "~~*"   PGNSP PGUID b f f  25 25      16 0 1628 texticlike iclikesel iclikejoinsel ));
1167 DESCR("matches LIKE expression, case-insensitive");
1168 #define OID_TEXT_ICLIKE_OP              1627
1169 DATA(insert OID = 1628 (  "!~~*"  PGNSP PGUID b f f  25 25      16 0 1627 texticnlike icnlikesel icnlikejoinsel ));
1170 DESCR("does not match LIKE expression, case-insensitive");
1171 DATA(insert OID = 1629 (  "~~*"   PGNSP PGUID b f f  1042 25    16 0 1630 bpchariclike iclikesel iclikejoinsel ));
1172 DESCR("matches LIKE expression, case-insensitive");
1173 #define OID_BPCHAR_ICLIKE_OP    1629
1174 DATA(insert OID = 1630 (  "!~~*"  PGNSP PGUID b f f  1042 25    16 0 1629 bpcharicnlike icnlikesel icnlikejoinsel ));
1175 DESCR("does not match LIKE expression, case-insensitive");
1176
1177 /* NUMERIC type - OID's 1700-1799 */
1178 DATA(insert OID = 1751 (  "-"      PGNSP PGUID l f f    0 1700 1700    0        0 numeric_uminus - - ));
1179 DESCR("negate");
1180 DATA(insert OID = 1752 (  "="      PGNSP PGUID b t t 1700 1700   16 1752 1753 numeric_eq eqsel eqjoinsel ));
1181 DESCR("equal");
1182 DATA(insert OID = 1753 (  "<>"     PGNSP PGUID b f f 1700 1700   16 1753 1752 numeric_ne neqsel neqjoinsel ));
1183 DESCR("not equal");
1184 DATA(insert OID = 1754 (  "<"      PGNSP PGUID b f f 1700 1700   16 1756 1757 numeric_lt scalarltsel scalarltjoinsel ));
1185 DESCR("less than");
1186 DATA(insert OID = 1755 (  "<="     PGNSP PGUID b f f 1700 1700   16 1757 1756 numeric_le scalarltsel scalarltjoinsel ));
1187 DESCR("less than or equal");
1188 DATA(insert OID = 1756 (  ">"      PGNSP PGUID b f f 1700 1700   16 1754 1755 numeric_gt scalargtsel scalargtjoinsel ));
1189 DESCR("greater than");
1190 DATA(insert OID = 1757 (  ">="     PGNSP PGUID b f f 1700 1700   16 1755 1754 numeric_ge scalargtsel scalargtjoinsel ));
1191 DESCR("greater than or equal");
1192 DATA(insert OID = 1758 (  "+"      PGNSP PGUID b f f 1700 1700 1700 1758        0 numeric_add - - ));
1193 DESCR("add");
1194 DATA(insert OID = 1759 (  "-"      PGNSP PGUID b f f 1700 1700 1700    0        0 numeric_sub - - ));
1195 DESCR("subtract");
1196 DATA(insert OID = 1760 (  "*"      PGNSP PGUID b f f 1700 1700 1700 1760        0 numeric_mul - - ));
1197 DESCR("multiply");
1198 DATA(insert OID = 1761 (  "/"      PGNSP PGUID b f f 1700 1700 1700    0        0 numeric_div - - ));
1199 DESCR("divide");
1200 DATA(insert OID = 1762 (  "%"      PGNSP PGUID b f f 1700 1700 1700    0        0 numeric_mod - - ));
1201 DESCR("modulus");
1202 DATA(insert OID = 1038 (  "^"      PGNSP PGUID b f f 1700 1700 1700    0        0 numeric_power - - ));
1203 DESCR("exponentiation");
1204 DATA(insert OID = 1763 (  "@"      PGNSP PGUID l f f    0 1700 1700    0        0 numeric_abs - - ));
1205 DESCR("absolute value");
1206
1207 DATA(insert OID = 1784 (  "="     PGNSP PGUID b t f 1560 1560 16 1784 1785 biteq eqsel eqjoinsel ));
1208 DESCR("equal");
1209 DATA(insert OID = 1785 (  "<>"    PGNSP PGUID b f f 1560 1560 16 1785 1784 bitne neqsel neqjoinsel ));
1210 DESCR("not equal");
1211 DATA(insert OID = 1786 (  "<"     PGNSP PGUID b f f 1560 1560 16 1787 1789 bitlt scalarltsel scalarltjoinsel ));
1212 DESCR("less than");
1213 DATA(insert OID = 1787 (  ">"     PGNSP PGUID b f f 1560 1560 16 1786 1788 bitgt scalargtsel scalargtjoinsel ));
1214 DESCR("greater than");
1215 DATA(insert OID = 1788 (  "<="    PGNSP PGUID b f f 1560 1560 16 1789 1787 bitle scalarltsel scalarltjoinsel ));
1216 DESCR("less than or equal");
1217 DATA(insert OID = 1789 (  ">="    PGNSP PGUID b f f 1560 1560 16 1788 1786 bitge scalargtsel scalargtjoinsel ));
1218 DESCR("greater than or equal");
1219 DATA(insert OID = 1791 (  "&"     PGNSP PGUID b f f 1560 1560 1560 1791  0 bitand - - ));
1220 DESCR("bitwise and");
1221 DATA(insert OID = 1792 (  "|"     PGNSP PGUID b f f 1560 1560 1560 1792  0 bitor - - ));
1222 DESCR("bitwise or");
1223 DATA(insert OID = 1793 (  "#"     PGNSP PGUID b f f 1560 1560 1560 1793  0 bitxor - - ));
1224 DESCR("bitwise exclusive or");
1225 DATA(insert OID = 1794 (  "~"     PGNSP PGUID l f f    0 1560 1560        0  0 bitnot - - ));
1226 DESCR("bitwise not");
1227 DATA(insert OID = 1795 (  "<<"    PGNSP PGUID b f f 1560   23 1560        0  0 bitshiftleft - - ));
1228 DESCR("bitwise shift left");
1229 DATA(insert OID = 1796 (  ">>"    PGNSP PGUID b f f 1560   23 1560        0  0 bitshiftright - - ));
1230 DESCR("bitwise shift right");
1231 DATA(insert OID = 1797 (  "||"    PGNSP PGUID b f f 1562 1562 1562        0  0 bitcat - - ));
1232 DESCR("concatenate");
1233
1234 DATA(insert OID = 1800 (  "+"      PGNSP PGUID b f f 1083 1186 1083  1849 0 time_pl_interval - - ));
1235 DESCR("add");
1236 DATA(insert OID = 1801 (  "-"      PGNSP PGUID b f f 1083 1186 1083  0  0 time_mi_interval - - ));
1237 DESCR("subtract");
1238 DATA(insert OID = 1802 (  "+"      PGNSP PGUID b f f 1266 1186 1266  2552 0 timetz_pl_interval - - ));
1239 DESCR("add");
1240 DATA(insert OID = 1803 (  "-"      PGNSP PGUID b f f 1266 1186 1266  0  0 timetz_mi_interval - - ));
1241 DESCR("subtract");
1242
1243 DATA(insert OID = 1804 (  "="     PGNSP PGUID b t f 1562 1562 16 1804 1805 varbiteq eqsel eqjoinsel ));
1244 DESCR("equal");
1245 DATA(insert OID = 1805 (  "<>"    PGNSP PGUID b f f 1562 1562 16 1805 1804 varbitne neqsel neqjoinsel ));
1246 DESCR("not equal");
1247 DATA(insert OID = 1806 (  "<"     PGNSP PGUID b f f 1562 1562 16 1807 1809 varbitlt scalarltsel scalarltjoinsel ));
1248 DESCR("less than");
1249 DATA(insert OID = 1807 (  ">"     PGNSP PGUID b f f 1562 1562 16 1806 1808 varbitgt scalargtsel scalargtjoinsel ));
1250 DESCR("greater than");
1251 DATA(insert OID = 1808 (  "<="    PGNSP PGUID b f f 1562 1562 16 1809 1807 varbitle scalarltsel scalarltjoinsel ));
1252 DESCR("less than or equal");
1253 DATA(insert OID = 1809 (  ">="    PGNSP PGUID b f f 1562 1562 16 1808 1806 varbitge scalargtsel scalargtjoinsel ));
1254 DESCR("greater than or equal");
1255
1256 DATA(insert OID = 1849 (  "+"      PGNSP PGUID b f f 1186 1083 1083  1800 0 interval_pl_time - - ));
1257 DESCR("add");
1258
1259 DATA(insert OID = 1862 ( "="       PGNSP PGUID b t t    21      20      16 1868  1863 int28eq eqsel eqjoinsel ));
1260 DESCR("equal");
1261 DATA(insert OID = 1863 ( "<>"      PGNSP PGUID b f f    21      20      16 1869  1862 int28ne neqsel neqjoinsel ));
1262 DESCR("not equal");
1263 DATA(insert OID = 1864 ( "<"       PGNSP PGUID b f f    21      20      16 1871  1867 int28lt scalarltsel scalarltjoinsel ));
1264 DESCR("less than");
1265 DATA(insert OID = 1865 ( ">"       PGNSP PGUID b f f    21      20      16 1870  1866 int28gt scalargtsel scalargtjoinsel ));
1266 DESCR("greater than");
1267 DATA(insert OID = 1866 ( "<="      PGNSP PGUID b f f    21      20      16 1873  1865 int28le scalarltsel scalarltjoinsel ));
1268 DESCR("less than or equal");
1269 DATA(insert OID = 1867 ( ">="      PGNSP PGUID b f f    21      20      16 1872  1864 int28ge scalargtsel scalargtjoinsel ));
1270 DESCR("greater than or equal");
1271
1272 DATA(insert OID = 1868 ( "="       PGNSP PGUID b t t    20      21      16      1862 1869 int82eq eqsel eqjoinsel ));
1273 DESCR("equal");
1274 DATA(insert OID = 1869 ( "<>"      PGNSP PGUID b f f    20      21      16      1863 1868 int82ne neqsel neqjoinsel ));
1275 DESCR("not equal");
1276 DATA(insert OID = 1870 ( "<"       PGNSP PGUID b f f    20      21      16      1865 1873 int82lt scalarltsel scalarltjoinsel ));
1277 DESCR("less than");
1278 DATA(insert OID = 1871 ( ">"       PGNSP PGUID b f f    20      21      16      1864 1872 int82gt scalargtsel scalargtjoinsel ));
1279 DESCR("greater than");
1280 DATA(insert OID = 1872 ( "<="      PGNSP PGUID b f f    20      21      16      1867 1871 int82le scalarltsel scalarltjoinsel ));
1281 DESCR("less than or equal");
1282 DATA(insert OID = 1873 ( ">="      PGNSP PGUID b f f    20      21      16      1866 1870 int82ge scalargtsel scalargtjoinsel ));
1283 DESCR("greater than or equal");
1284
1285 DATA(insert OID = 1874 ( "&"       PGNSP PGUID b f f    21      21      21      1874  0 int2and - - ));
1286 DESCR("bitwise and");
1287 DATA(insert OID = 1875 ( "|"       PGNSP PGUID b f f    21      21      21      1875  0 int2or - - ));
1288 DESCR("bitwise or");
1289 DATA(insert OID = 1876 ( "#"       PGNSP PGUID b f f    21      21      21      1876  0 int2xor - - ));
1290 DESCR("bitwise exclusive or");
1291 DATA(insert OID = 1877 ( "~"       PGNSP PGUID l f f     0      21      21       0        0 int2not - - ));
1292 DESCR("bitwise not");
1293 DATA(insert OID = 1878 ( "<<"      PGNSP PGUID b f f    21      23      21       0        0 int2shl - - ));
1294 DESCR("bitwise shift left");
1295 DATA(insert OID = 1879 ( ">>"      PGNSP PGUID b f f    21      23      21       0        0 int2shr - - ));
1296 DESCR("bitwise shift right");
1297
1298 DATA(insert OID = 1880 ( "&"       PGNSP PGUID b f f    23      23      23      1880  0 int4and - - ));
1299 DESCR("bitwise and");
1300 DATA(insert OID = 1881 ( "|"       PGNSP PGUID b f f    23      23      23      1881  0 int4or - - ));
1301 DESCR("bitwise or");
1302 DATA(insert OID = 1882 ( "#"       PGNSP PGUID b f f    23      23      23      1882  0 int4xor - - ));
1303 DESCR("bitwise exclusive or");
1304 DATA(insert OID = 1883 ( "~"       PGNSP PGUID l f f     0      23      23       0        0 int4not - - ));
1305 DESCR("bitwise not");
1306 DATA(insert OID = 1884 ( "<<"      PGNSP PGUID b f f    23      23      23       0        0 int4shl - - ));
1307 DESCR("bitwise shift left");
1308 DATA(insert OID = 1885 ( ">>"      PGNSP PGUID b f f    23      23      23       0        0 int4shr - - ));
1309 DESCR("bitwise shift right");
1310
1311 DATA(insert OID = 1886 ( "&"       PGNSP PGUID b f f    20      20      20      1886  0 int8and - - ));
1312 DESCR("bitwise and");
1313 DATA(insert OID = 1887 ( "|"       PGNSP PGUID b f f    20      20      20      1887  0 int8or - - ));
1314 DESCR("bitwise or");
1315 DATA(insert OID = 1888 ( "#"       PGNSP PGUID b f f    20      20      20      1888  0 int8xor - - ));
1316 DESCR("bitwise exclusive or");
1317 DATA(insert OID = 1889 ( "~"       PGNSP PGUID l f f     0      20      20       0        0 int8not - - ));
1318 DESCR("bitwise not");
1319 DATA(insert OID = 1890 ( "<<"      PGNSP PGUID b f f    20      23      20       0        0 int8shl - - ));
1320 DESCR("bitwise shift left");
1321 DATA(insert OID = 1891 ( ">>"      PGNSP PGUID b f f    20      23      20       0        0 int8shr - - ));
1322 DESCR("bitwise shift right");
1323
1324 DATA(insert OID = 1916 (  "+"      PGNSP PGUID l f f     0      20      20      0       0 int8up - - ));
1325 DESCR("unary plus");
1326 DATA(insert OID = 1917 (  "+"      PGNSP PGUID l f f     0      21      21      0       0 int2up - - ));
1327 DESCR("unary plus");
1328 DATA(insert OID = 1918 (  "+"      PGNSP PGUID l f f     0      23      23      0       0 int4up - - ));
1329 DESCR("unary plus");
1330 DATA(insert OID = 1919 (  "+"      PGNSP PGUID l f f     0      700 700 0       0 float4up - - ));
1331 DESCR("unary plus");
1332 DATA(insert OID = 1920 (  "+"      PGNSP PGUID l f f     0      701 701 0       0 float8up - - ));
1333 DESCR("unary plus");
1334 DATA(insert OID = 1921 (  "+"      PGNSP PGUID l f f     0 1700 1700    0       0 numeric_uplus - - ));
1335 DESCR("unary plus");
1336
1337 /* bytea operators */
1338 DATA(insert OID = 1955 ( "="       PGNSP PGUID b t t 17 17      16 1955 1956 byteaeq eqsel eqjoinsel ));
1339 DESCR("equal");
1340 DATA(insert OID = 1956 ( "<>"      PGNSP PGUID b f f 17 17      16 1956 1955 byteane neqsel neqjoinsel ));
1341 DESCR("not equal");
1342 DATA(insert OID = 1957 ( "<"       PGNSP PGUID b f f 17 17      16 1959 1960 bytealt scalarltsel scalarltjoinsel ));
1343 DESCR("less than");
1344 DATA(insert OID = 1958 ( "<="      PGNSP PGUID b f f 17 17      16 1960 1959 byteale scalarltsel scalarltjoinsel ));
1345 DESCR("less than or equal");
1346 DATA(insert OID = 1959 ( ">"       PGNSP PGUID b f f 17 17      16 1957 1958 byteagt scalargtsel scalargtjoinsel ));
1347 DESCR("greater than");
1348 DATA(insert OID = 1960 ( ">="      PGNSP PGUID b f f 17 17      16 1958 1957 byteage scalargtsel scalargtjoinsel ));
1349 DESCR("greater than or equal");
1350
1351 DATA(insert OID = 2016 (  "~~"     PGNSP PGUID b f f 17 17      16 0    2017 bytealike likesel likejoinsel ));
1352 DESCR("matches LIKE expression");
1353 #define OID_BYTEA_LIKE_OP               2016
1354 DATA(insert OID = 2017 (  "!~~"    PGNSP PGUID b f f 17 17      16 0    2016 byteanlike nlikesel nlikejoinsel ));
1355 DESCR("does not match LIKE expression");
1356 DATA(insert OID = 2018 (  "||"     PGNSP PGUID b f f 17 17      17 0    0        byteacat - - ));
1357 DESCR("concatenate");
1358
1359 /* timestamp operators */
1360 DATA(insert OID = 2060 (  "="      PGNSP PGUID b t t 1114 1114   16 2060 2061 timestamp_eq eqsel eqjoinsel ));
1361 DESCR("equal");
1362 DATA(insert OID = 2061 (  "<>"     PGNSP PGUID b f f 1114 1114   16 2061 2060 timestamp_ne neqsel neqjoinsel ));
1363 DESCR("not equal");
1364 DATA(insert OID = 2062 (  "<"      PGNSP PGUID b f f 1114 1114   16 2064 2065 timestamp_lt scalarltsel scalarltjoinsel ));
1365 DESCR("less than");
1366 DATA(insert OID = 2063 (  "<="     PGNSP PGUID b f f 1114 1114   16 2065 2064 timestamp_le scalarltsel scalarltjoinsel ));
1367 DESCR("less than or equal");
1368 DATA(insert OID = 2064 (  ">"      PGNSP PGUID b f f 1114 1114   16 2062 2063 timestamp_gt scalargtsel scalargtjoinsel ));
1369 DESCR("greater than");
1370 DATA(insert OID = 2065 (  ">="     PGNSP PGUID b f f 1114 1114   16 2063 2062 timestamp_ge scalargtsel scalargtjoinsel ));
1371 DESCR("greater than or equal");
1372 DATA(insert OID = 2066 (  "+"      PGNSP PGUID b f f 1114 1186 1114  2553 0 timestamp_pl_interval - - ));
1373 DESCR("add");
1374 DATA(insert OID = 2067 (  "-"      PGNSP PGUID b f f 1114 1114 1186  0  0 timestamp_mi - - ));
1375 DESCR("subtract");
1376 DATA(insert OID = 2068 (  "-"      PGNSP PGUID b f f 1114 1186 1114  0  0 timestamp_mi_interval - - ));
1377 DESCR("subtract");
1378
1379 /* character-by-character (not collation order) comparison operators for character types */
1380
1381 DATA(insert OID = 2314 ( "~<~"  PGNSP PGUID b f f 25 25 16 2318 2317 text_pattern_lt scalarltsel scalarltjoinsel ));
1382 DESCR("less than");
1383 DATA(insert OID = 2315 ( "~<=~" PGNSP PGUID b f f 25 25 16 2317 2318 text_pattern_le scalarltsel scalarltjoinsel ));
1384 DESCR("less than or equal");
1385 DATA(insert OID = 2317 ( "~>=~" PGNSP PGUID b f f 25 25 16 2315 2314 text_pattern_ge scalargtsel scalargtjoinsel ));
1386 DESCR("greater than or equal");
1387 DATA(insert OID = 2318 ( "~>~"  PGNSP PGUID b f f 25 25 16 2314 2315 text_pattern_gt scalargtsel scalargtjoinsel ));
1388 DESCR("greater than");
1389
1390 DATA(insert OID = 2326 ( "~<~"  PGNSP PGUID b f f 1042 1042 16 2330 2329 bpchar_pattern_lt scalarltsel scalarltjoinsel ));
1391 DESCR("less than");
1392 DATA(insert OID = 2327 ( "~<=~" PGNSP PGUID b f f 1042 1042 16 2329 2330 bpchar_pattern_le scalarltsel scalarltjoinsel ));
1393 DESCR("less than or equal");
1394 DATA(insert OID = 2329 ( "~>=~" PGNSP PGUID b f f 1042 1042 16 2327 2326 bpchar_pattern_ge scalargtsel scalargtjoinsel ));
1395 DESCR("greater than or equal");
1396 DATA(insert OID = 2330 ( "~>~"  PGNSP PGUID b f f 1042 1042 16 2326 2327 bpchar_pattern_gt scalargtsel scalargtjoinsel ));
1397 DESCR("greater than");
1398
1399 /* crosstype operations for date vs. timestamp and timestamptz */
1400
1401 DATA(insert OID = 2345 ( "<"       PGNSP PGUID b f f    1082    1114   16 2375 2348 date_lt_timestamp scalarltsel scalarltjoinsel ));
1402 DESCR("less than");
1403 DATA(insert OID = 2346 ( "<="      PGNSP PGUID b f f    1082    1114   16 2374 2349 date_le_timestamp scalarltsel scalarltjoinsel ));
1404 DESCR("less than or equal");
1405 DATA(insert OID = 2347 ( "="       PGNSP PGUID b t f    1082    1114   16 2373 2350 date_eq_timestamp eqsel eqjoinsel ));
1406 DESCR("equal");
1407 DATA(insert OID = 2348 ( ">="      PGNSP PGUID b f f    1082    1114   16 2372 2345 date_ge_timestamp scalargtsel scalargtjoinsel ));
1408 DESCR("greater than or equal");
1409 DATA(insert OID = 2349 ( ">"       PGNSP PGUID b f f    1082    1114   16 2371 2346 date_gt_timestamp scalargtsel scalargtjoinsel ));
1410 DESCR("greater than");
1411 DATA(insert OID = 2350 ( "<>"      PGNSP PGUID b f f    1082    1114   16 2376 2347 date_ne_timestamp neqsel neqjoinsel ));
1412 DESCR("not equal");
1413
1414 DATA(insert OID = 2358 ( "<"       PGNSP PGUID b f f    1082    1184   16 2388 2361 date_lt_timestamptz scalarltsel scalarltjoinsel ));
1415 DESCR("less than");
1416 DATA(insert OID = 2359 ( "<="      PGNSP PGUID b f f    1082    1184   16 2387 2362 date_le_timestamptz scalarltsel scalarltjoinsel ));
1417 DESCR("less than or equal");
1418 DATA(insert OID = 2360 ( "="       PGNSP PGUID b t f    1082    1184   16 2386 2363 date_eq_timestamptz eqsel eqjoinsel ));
1419 DESCR("equal");
1420 DATA(insert OID = 2361 ( ">="      PGNSP PGUID b f f    1082    1184   16 2385 2358 date_ge_timestamptz scalargtsel scalargtjoinsel ));
1421 DESCR("greater than or equal");
1422 DATA(insert OID = 2362 ( ">"       PGNSP PGUID b f f    1082    1184   16 2384 2359 date_gt_timestamptz scalargtsel scalargtjoinsel ));
1423 DESCR("greater than");
1424 DATA(insert OID = 2363 ( "<>"      PGNSP PGUID b f f    1082    1184   16 2389 2360 date_ne_timestamptz neqsel neqjoinsel ));
1425 DESCR("not equal");
1426
1427 DATA(insert OID = 2371 ( "<"       PGNSP PGUID b f f    1114    1082   16 2349 2374 timestamp_lt_date scalarltsel scalarltjoinsel ));
1428 DESCR("less than");
1429 DATA(insert OID = 2372 ( "<="      PGNSP PGUID b f f    1114    1082   16 2348 2375 timestamp_le_date scalarltsel scalarltjoinsel ));
1430 DESCR("less than or equal");
1431 DATA(insert OID = 2373 ( "="       PGNSP PGUID b t f    1114    1082   16 2347 2376 timestamp_eq_date eqsel eqjoinsel ));
1432 DESCR("equal");
1433 DATA(insert OID = 2374 ( ">="      PGNSP PGUID b f f    1114    1082   16 2346 2371 timestamp_ge_date scalargtsel scalargtjoinsel ));
1434 DESCR("greater than or equal");
1435 DATA(insert OID = 2375 ( ">"       PGNSP PGUID b f f    1114    1082   16 2345 2372 timestamp_gt_date scalargtsel scalargtjoinsel ));
1436 DESCR("greater than");
1437 DATA(insert OID = 2376 ( "<>"      PGNSP PGUID b f f    1114    1082   16 2350 2373 timestamp_ne_date neqsel neqjoinsel ));
1438 DESCR("not equal");
1439
1440 DATA(insert OID = 2384 ( "<"       PGNSP PGUID b f f    1184    1082   16 2362 2387 timestamptz_lt_date scalarltsel scalarltjoinsel ));
1441 DESCR("less than");
1442 DATA(insert OID = 2385 ( "<="      PGNSP PGUID b f f    1184    1082   16 2361 2388 timestamptz_le_date scalarltsel scalarltjoinsel ));
1443 DESCR("less than or equal");
1444 DATA(insert OID = 2386 ( "="       PGNSP PGUID b t f    1184    1082   16 2360 2389 timestamptz_eq_date eqsel eqjoinsel ));
1445 DESCR("equal");
1446 DATA(insert OID = 2387 ( ">="      PGNSP PGUID b f f    1184    1082   16 2359 2384 timestamptz_ge_date scalargtsel scalargtjoinsel ));
1447 DESCR("greater than or equal");
1448 DATA(insert OID = 2388 ( ">"       PGNSP PGUID b f f    1184    1082   16 2358 2385 timestamptz_gt_date scalargtsel scalargtjoinsel ));
1449 DESCR("greater than");
1450 DATA(insert OID = 2389 ( "<>"      PGNSP PGUID b f f    1184    1082   16 2363 2386 timestamptz_ne_date neqsel neqjoinsel ));
1451 DESCR("not equal");
1452
1453 /* crosstype operations for timestamp vs. timestamptz */
1454
1455 DATA(insert OID = 2534 ( "<"       PGNSP PGUID b f f    1114    1184   16 2544 2537 timestamp_lt_timestamptz scalarltsel scalarltjoinsel ));
1456 DESCR("less than");
1457 DATA(insert OID = 2535 ( "<="      PGNSP PGUID b f f    1114    1184   16 2543 2538 timestamp_le_timestamptz scalarltsel scalarltjoinsel ));
1458 DESCR("less than or equal");
1459 DATA(insert OID = 2536 ( "="       PGNSP PGUID b t f    1114    1184   16 2542 2539 timestamp_eq_timestamptz eqsel eqjoinsel ));
1460 DESCR("equal");
1461 DATA(insert OID = 2537 ( ">="      PGNSP PGUID b f f    1114    1184   16 2541 2534 timestamp_ge_timestamptz scalargtsel scalargtjoinsel ));
1462 DESCR("greater than or equal");
1463 DATA(insert OID = 2538 ( ">"       PGNSP PGUID b f f    1114    1184   16 2540 2535 timestamp_gt_timestamptz scalargtsel scalargtjoinsel ));
1464 DESCR("greater than");
1465 DATA(insert OID = 2539 ( "<>"      PGNSP PGUID b f f    1114    1184   16 2545 2536 timestamp_ne_timestamptz neqsel neqjoinsel ));
1466 DESCR("not equal");
1467
1468 DATA(insert OID = 2540 ( "<"       PGNSP PGUID b f f    1184    1114   16 2538 2543 timestamptz_lt_timestamp scalarltsel scalarltjoinsel ));
1469 DESCR("less than");
1470 DATA(insert OID = 2541 ( "<="      PGNSP PGUID b f f    1184    1114   16 2537 2544 timestamptz_le_timestamp scalarltsel scalarltjoinsel ));
1471 DESCR("less than or equal");
1472 DATA(insert OID = 2542 ( "="       PGNSP PGUID b t f    1184    1114   16 2536 2545 timestamptz_eq_timestamp eqsel eqjoinsel ));
1473 DESCR("equal");
1474 DATA(insert OID = 2543 ( ">="      PGNSP PGUID b f f    1184    1114   16 2535 2540 timestamptz_ge_timestamp scalargtsel scalargtjoinsel ));
1475 DESCR("greater than or equal");
1476 DATA(insert OID = 2544 ( ">"       PGNSP PGUID b f f    1184    1114   16 2534 2541 timestamptz_gt_timestamp scalargtsel scalargtjoinsel ));
1477 DESCR("greater than");
1478 DATA(insert OID = 2545 ( "<>"      PGNSP PGUID b f f    1184    1114   16 2539 2542 timestamptz_ne_timestamp neqsel neqjoinsel ));
1479 DESCR("not equal");
1480
1481 /* formerly-missing interval + datetime operators */
1482 DATA(insert OID = 2551 (  "+"      PGNSP PGUID b f f    1186 1082 1114 1076 0 interval_pl_date - - ));
1483 DESCR("add");
1484 DATA(insert OID = 2552 (  "+"      PGNSP PGUID b f f    1186 1266 1266 1802 0 interval_pl_timetz - - ));
1485 DESCR("add");
1486 DATA(insert OID = 2553 (  "+"      PGNSP PGUID b f f    1186 1114 1114 2066 0 interval_pl_timestamp - - ));
1487 DESCR("add");
1488 DATA(insert OID = 2554 (  "+"      PGNSP PGUID b f f    1186 1184 1184 1327 0 interval_pl_timestamptz - - ));
1489 DESCR("add");
1490 DATA(insert OID = 2555 (  "+"      PGNSP PGUID b f f    23       1082 1082 1100 0 integer_pl_date - - ));
1491 DESCR("add");
1492
1493 /* new operators for Y-direction rtree opfamilies */
1494 DATA(insert OID = 2570 (  "<<|"    PGNSP PGUID b f f 603 603    16       0       0 box_below positionsel positionjoinsel ));
1495 DESCR("is below");
1496 DATA(insert OID = 2571 (  "&<|"    PGNSP PGUID b f f 603 603    16       0       0 box_overbelow positionsel positionjoinsel ));
1497 DESCR("overlaps or is below");
1498 DATA(insert OID = 2572 (  "|&>"    PGNSP PGUID b f f 603 603    16       0       0 box_overabove positionsel positionjoinsel ));
1499 DESCR("overlaps or is above");
1500 DATA(insert OID = 2573 (  "|>>"    PGNSP PGUID b f f 603 603    16       0       0 box_above positionsel positionjoinsel ));
1501 DESCR("is above");
1502 DATA(insert OID = 2574 (  "<<|"    PGNSP PGUID b f f 604 604    16       0       0 poly_below positionsel positionjoinsel ));
1503 DESCR("is below");
1504 DATA(insert OID = 2575 (  "&<|"    PGNSP PGUID b f f 604 604    16       0       0 poly_overbelow positionsel positionjoinsel ));
1505 DESCR("overlaps or is below");
1506 DATA(insert OID = 2576 (  "|&>"    PGNSP PGUID b f f 604 604    16       0       0 poly_overabove positionsel positionjoinsel ));
1507 DESCR("overlaps or is above");
1508 DATA(insert OID = 2577 (  "|>>"    PGNSP PGUID b f f 604 604    16       0       0 poly_above positionsel positionjoinsel ));
1509 DESCR("is above");
1510 DATA(insert OID = 2589 (  "&<|"    PGNSP PGUID b f f 718 718    16       0       0 circle_overbelow positionsel positionjoinsel ));
1511 DESCR("overlaps or is below");
1512 DATA(insert OID = 2590 (  "|&>"    PGNSP PGUID b f f 718 718    16       0       0 circle_overabove positionsel positionjoinsel ));
1513 DESCR("overlaps or is above");
1514
1515 /* overlap/contains/contained for arrays */
1516 DATA(insert OID = 2750 (  "&&"     PGNSP PGUID b f f 2277 2277  16 2750  0 arrayoverlap areasel areajoinsel ));
1517 DESCR("overlaps");
1518 DATA(insert OID = 2751 (  "@>"     PGNSP PGUID b f f 2277 2277  16 2752  0 arraycontains contsel contjoinsel ));
1519 DESCR("contains");
1520 DATA(insert OID = 2752 (  "<@"     PGNSP PGUID b f f 2277 2277  16 2751  0 arraycontained contsel contjoinsel ));
1521 DESCR("is contained by");
1522
1523 /* capturing operators to preserve pre-8.3 behavior of text concatenation */
1524 DATA(insert OID = 2779 (  "||"     PGNSP PGUID b f f 25 2776    25       0 0 textanycat - - ));
1525 DESCR("concatenate");
1526 DATA(insert OID = 2780 (  "||"     PGNSP PGUID b f f 2776 25    25       0 0 anytextcat - - ));
1527 DESCR("concatenate");
1528
1529 /* obsolete names for contains/contained-by operators; remove these someday */
1530 DATA(insert OID = 2860 (  "@"      PGNSP PGUID b f f 604 604    16 2861  0 poly_contained contsel contjoinsel ));
1531 DESCR("deprecated, use <@ instead");
1532 DATA(insert OID = 2861 (  "~"      PGNSP PGUID b f f 604 604    16 2860  0 poly_contain contsel contjoinsel ));
1533 DESCR("deprecated, use @> instead");
1534 DATA(insert OID = 2862 (  "@"      PGNSP PGUID b f f 603 603    16 2863  0 box_contained contsel contjoinsel ));
1535 DESCR("deprecated, use <@ instead");
1536 DATA(insert OID = 2863 (  "~"      PGNSP PGUID b f f 603 603    16 2862  0 box_contain contsel contjoinsel ));
1537 DESCR("deprecated, use @> instead");
1538 DATA(insert OID = 2864 (  "@"      PGNSP PGUID b f f 718 718    16 2865  0 circle_contained contsel contjoinsel ));
1539 DESCR("deprecated, use <@ instead");
1540 DATA(insert OID = 2865 (  "~"      PGNSP PGUID b f f 718 718    16 2864  0 circle_contain contsel contjoinsel ));
1541 DESCR("deprecated, use @> instead");
1542 DATA(insert OID = 2866 (  "@"      PGNSP PGUID b f f 600 603    16       0       0 on_pb - - ));
1543 DESCR("deprecated, use <@ instead");
1544 DATA(insert OID = 2867 (  "@"      PGNSP PGUID b f f 600 602    16 2868  0 on_ppath - - ));
1545 DESCR("deprecated, use <@ instead");
1546 DATA(insert OID = 2868 (  "~"      PGNSP PGUID b f f 602 600     16  2867  0 path_contain_pt - - ));
1547 DESCR("deprecated, use @> instead");
1548 DATA(insert OID = 2869 (  "@"      PGNSP PGUID b f f 600 604     16  2870  0 pt_contained_poly - - ));
1549 DESCR("deprecated, use <@ instead");
1550 DATA(insert OID = 2870 (  "~"      PGNSP PGUID b f f 604 600     16  2869  0 poly_contain_pt - - ));
1551 DESCR("deprecated, use @> instead");
1552 DATA(insert OID = 2871 (  "@"      PGNSP PGUID b f f 600 718     16  2872  0 pt_contained_circle - - ));
1553 DESCR("deprecated, use <@ instead");
1554 DATA(insert OID = 2872 (  "~"      PGNSP PGUID b f f 718 600     16  2871  0 circle_contain_pt - - ));
1555 DESCR("deprecated, use @> instead");
1556 DATA(insert OID = 2873 (  "@"      PGNSP PGUID b f f 600 628 16   0  0 on_pl - - ));
1557 DESCR("deprecated, use <@ instead");
1558 DATA(insert OID = 2874 (  "@"      PGNSP PGUID b f f 600 601 16   0  0 on_ps - - ));
1559 DESCR("deprecated, use <@ instead");
1560 DATA(insert OID = 2875 (  "@"      PGNSP PGUID b f f 601 628 16   0  0 on_sl - - ));
1561 DESCR("deprecated, use <@ instead");
1562 DATA(insert OID = 2876 (  "@"      PGNSP PGUID b f f 601 603 16   0  0 on_sb - - ));
1563 DESCR("deprecated, use <@ instead");
1564 DATA(insert OID = 2877 (  "~"      PGNSP PGUID b f f 1034 1033   16 0 0 aclcontains - - ));
1565 DESCR("deprecated, use @> instead");
1566
1567 /* uuid operators */
1568 DATA(insert OID = 2972 (  "="      PGNSP PGUID b t t 2950 2950 16 2972 2973 uuid_eq eqsel eqjoinsel ));
1569 DESCR("equal");
1570 DATA(insert OID = 2973 (  "<>"     PGNSP PGUID b f f 2950 2950 16 2973 2972 uuid_ne neqsel neqjoinsel ));
1571 DESCR("not equal");
1572 DATA(insert OID = 2974 (  "<"      PGNSP PGUID b f f 2950 2950 16 2975 2977 uuid_lt scalarltsel scalarltjoinsel ));
1573 DESCR("less than");
1574 DATA(insert OID = 2975 (  ">"      PGNSP PGUID b f f 2950 2950 16 2974 2976 uuid_gt scalargtsel scalargtjoinsel ));
1575 DESCR("greater than");
1576 DATA(insert OID = 2976 (  "<="     PGNSP PGUID b f f 2950 2950 16 2977 2975 uuid_le scalarltsel scalarltjoinsel ));
1577 DESCR("less than or equal");
1578 DATA(insert OID = 2977 (  ">="     PGNSP PGUID b f f 2950 2950 16 2976 2974 uuid_ge scalargtsel scalargtjoinsel ));
1579 DESCR("greater than or equal");
1580
1581 /* enum operators */
1582 DATA(insert OID = 3516 (  "="      PGNSP PGUID b t t 3500 3500 16 3516 3517 enum_eq eqsel eqjoinsel ));
1583 DESCR("equal");
1584 DATA(insert OID = 3517 (  "<>"     PGNSP PGUID b f f 3500 3500 16 3517 3516 enum_ne neqsel neqjoinsel ));
1585 DESCR("not equal");
1586 DATA(insert OID = 3518 (  "<"      PGNSP PGUID b f f 3500 3500 16 3519 3521 enum_lt scalarltsel scalarltjoinsel ));
1587 DESCR("less than");
1588 DATA(insert OID = 3519 (  ">"      PGNSP PGUID b f f 3500 3500 16 3518 3520 enum_gt scalargtsel scalargtjoinsel ));
1589 DESCR("greater than");
1590 DATA(insert OID = 3520 (  "<="     PGNSP PGUID b f f 3500 3500 16 3521 3519 enum_le scalarltsel scalarltjoinsel ));
1591 DESCR("less than or equal");
1592 DATA(insert OID = 3521 (  ">="     PGNSP PGUID b f f 3500 3500 16 3520 3518 enum_ge scalargtsel scalargtjoinsel ));
1593 DESCR("greater than or equal");
1594
1595 /*
1596  * tsearch operations
1597  */
1598 DATA(insert OID = 3627 (  "<"      PGNSP PGUID b f f 3614        3614    16 3632 3631    tsvector_lt scalarltsel scalarltjoinsel ));
1599 DESCR("less than");
1600 DATA(insert OID = 3628 (  "<="     PGNSP PGUID b f f 3614        3614    16 3631 3632    tsvector_le scalarltsel scalarltjoinsel ));
1601 DESCR("less than or equal");
1602 DATA(insert OID = 3629 (  "="      PGNSP PGUID b t f 3614        3614    16 3629 3630    tsvector_eq eqsel eqjoinsel ));
1603 DESCR("equal");
1604 DATA(insert OID = 3630 (  "<>"     PGNSP PGUID b f f 3614        3614    16 3630 3629    tsvector_ne neqsel neqjoinsel ));
1605 DESCR("not equal");
1606 DATA(insert OID = 3631 (  ">="     PGNSP PGUID b f f 3614        3614    16 3628 3627    tsvector_ge scalargtsel scalargtjoinsel ));
1607 DESCR("greater than or equal");
1608 DATA(insert OID = 3632 (  ">"      PGNSP PGUID b f f 3614        3614    16 3627 3628    tsvector_gt scalargtsel scalargtjoinsel ));
1609 DESCR("greater than");
1610 DATA(insert OID = 3633 (  "||"     PGNSP PGUID b f f 3614        3614    3614  0        0        tsvector_concat   -    -         ));
1611 DESCR("concatenate");
1612 DATA(insert OID = 3636 (  "@@"     PGNSP PGUID b f f 3614        3615    16 3637        0        ts_match_vq   tsmatchsel tsmatchjoinsel ));
1613 DESCR("text search match");
1614 DATA(insert OID = 3637 (  "@@"     PGNSP PGUID b f f 3615        3614    16 3636        0        ts_match_qv   tsmatchsel tsmatchjoinsel ));
1615 DESCR("text search match");
1616 DATA(insert OID = 3660 (  "@@@"    PGNSP PGUID b f f 3614        3615    16 3661        0        ts_match_vq   tsmatchsel tsmatchjoinsel ));
1617 DESCR("deprecated, use @@ instead");
1618 DATA(insert OID = 3661 (  "@@@"    PGNSP PGUID b f f 3615        3614    16 3660        0        ts_match_qv   tsmatchsel tsmatchjoinsel ));
1619 DESCR("deprecated, use @@ instead");
1620 DATA(insert OID = 3674 (  "<"      PGNSP PGUID b f f 3615        3615    16 3679 3678    tsquery_lt scalarltsel scalarltjoinsel ));
1621 DESCR("less than");
1622 DATA(insert OID = 3675 (  "<="     PGNSP PGUID b f f 3615        3615    16 3678 3679    tsquery_le scalarltsel scalarltjoinsel ));
1623 DESCR("less than or equal");
1624 DATA(insert OID = 3676 (  "="      PGNSP PGUID b t f 3615        3615    16 3676 3677    tsquery_eq eqsel eqjoinsel ));
1625 DESCR("equal");
1626 DATA(insert OID = 3677 (  "<>"     PGNSP PGUID b f f 3615        3615    16 3677 3676    tsquery_ne neqsel neqjoinsel ));
1627 DESCR("not equal");
1628 DATA(insert OID = 3678 (  ">="     PGNSP PGUID b f f 3615        3615    16 3675 3674    tsquery_ge scalargtsel scalargtjoinsel ));
1629 DESCR("greater than or equal");
1630 DATA(insert OID = 3679 (  ">"      PGNSP PGUID b f f 3615        3615    16 3674 3675    tsquery_gt scalargtsel scalargtjoinsel ));
1631 DESCR("greater than");
1632 DATA(insert OID = 3680 (  "&&"     PGNSP PGUID b f f 3615        3615    3615  0        0        tsquery_and   -        -         ));
1633 DESCR("AND-concatenate");
1634 DATA(insert OID = 3681 (  "||"     PGNSP PGUID b f f 3615        3615    3615  0        0        tsquery_or   -         -         ));
1635 DESCR("OR-concatenate");
1636 DATA(insert OID = 3682 (  "!!"     PGNSP PGUID l f f 0           3615    3615  0        0        tsquery_not   -        -         ));
1637 DESCR("NOT tsquery");
1638 DATA(insert OID = 3693 (  "@>"     PGNSP PGUID b f f 3615        3615    16 3694        0        tsq_mcontains  contsel    contjoinsel   ));
1639 DESCR("contains");
1640 DATA(insert OID = 3694 (  "<@"     PGNSP PGUID b f f 3615        3615    16 3693        0        tsq_mcontained contsel    contjoinsel   ));
1641 DESCR("is contained by");
1642 DATA(insert OID = 3762 (  "@@"     PGNSP PGUID b f f 25          25              16    0        0        ts_match_tt    contsel    contjoinsel   ));
1643 DESCR("text search match");
1644 DATA(insert OID = 3763 (  "@@"     PGNSP PGUID b f f 25          3615    16    0        0        ts_match_tq    contsel    contjoinsel   ));
1645 DESCR("text search match");
1646
1647 /* generic record comparison operators */
1648 DATA(insert OID = 2988 (  "="      PGNSP PGUID b t f 2249 2249 16 2988 2989 record_eq eqsel eqjoinsel ));
1649 DESCR("equal");
1650 #define RECORD_EQ_OP 2988
1651 DATA(insert OID = 2989 (  "<>"     PGNSP PGUID b f f 2249 2249 16 2989 2988 record_ne neqsel neqjoinsel ));
1652 DESCR("not equal");
1653 DATA(insert OID = 2990 (  "<"      PGNSP PGUID b f f 2249 2249 16 2991 2993 record_lt scalarltsel scalarltjoinsel ));
1654 DESCR("less than");
1655 #define RECORD_LT_OP 2990
1656 DATA(insert OID = 2991 (  ">"      PGNSP PGUID b f f 2249 2249 16 2990 2992 record_gt scalargtsel scalargtjoinsel ));
1657 DESCR("greater than");
1658 #define RECORD_GT_OP 2991
1659 DATA(insert OID = 2992 (  "<="     PGNSP PGUID b f f 2249 2249 16 2993 2991 record_le scalarltsel scalarltjoinsel ));
1660 DESCR("less than or equal");
1661 DATA(insert OID = 2993 (  ">="     PGNSP PGUID b f f 2249 2249 16 2992 2990 record_ge scalargtsel scalargtjoinsel ));
1662 DESCR("greater than or equal");
1663
1664 /* generic range type operators */
1665 DATA(insert OID = 3882 (  "="      PGNSP PGUID b t t 3831 3831 16 3882 3883 range_eq eqsel eqjoinsel ));
1666 DESCR("equal");
1667 DATA(insert OID = 3883 (  "<>"     PGNSP PGUID b f f 3831 3831 16 3883 3882 range_ne neqsel neqjoinsel ));
1668 DESCR("not equal");
1669 DATA(insert OID = 3884 (  "<"      PGNSP PGUID b f f 3831 3831 16 3887 3886 range_lt scalarltsel scalarltjoinsel ));
1670 DESCR("less than");
1671 DATA(insert OID = 3885 (  "<="     PGNSP PGUID b f f 3831 3831 16 3886 3887 range_le scalarltsel scalarltjoinsel ));
1672 DESCR("less than or equal");
1673 DATA(insert OID = 3886 (  ">="     PGNSP PGUID b f f 3831 3831 16 3885 3884 range_ge scalargtsel scalargtjoinsel ));
1674 DESCR("greater than or equal");
1675 DATA(insert OID = 3887 (  ">"      PGNSP PGUID b f f 3831 3831 16 3884 3885 range_gt scalargtsel scalargtjoinsel ));
1676 DESCR("greater than");
1677 DATA(insert OID = 3888 (  "&&"     PGNSP PGUID b f f 3831 3831 16 3888 0 3857 - - ));
1678 DESCR("overlaps");
1679 DATA(insert OID = 3889 (  "@>"     PGNSP PGUID b f f 3831 2776 16 3891 0 3858 - - ));
1680 DESCR("contains");
1681 DATA(insert OID = 3890 (  "@>"     PGNSP PGUID b f f 3831 3831 16 3892 0 3859 - - ));
1682 DESCR("contains");
1683 DATA(insert OID = 3891 (  "<@"     PGNSP PGUID b f f 2776 3831 16 3889 0 3860 - - ));
1684 DESCR("contained by");
1685 DATA(insert OID = 3892 (  "<@"     PGNSP PGUID b f f 3831 3831 16 3890 0 3861 - - ));
1686 DESCR("contained by");
1687 DATA(insert OID = 3893 (  "<<"     PGNSP PGUID b f f 3831 3831 16 0 0 before scalarltsel scalarltjoinsel ));
1688 DESCR("left of");
1689 DATA(insert OID = 3894 (  ">>"     PGNSP PGUID b f f 3831 3831 16 0 0 after scalargtsel scalargtjoinsel ));
1690 DESCR("right of");
1691 DATA(insert OID = 3895 (  "&<"     PGNSP PGUID b f f 3831 3831 16 0 0 overleft scalarltsel scalarltjoinsel ));
1692 DESCR("overlaps to left");
1693 DATA(insert OID = 3896 (  "&>"     PGNSP PGUID b f f 3831 3831 16 0 0 overright scalargtsel scalargtjoinsel ));
1694 DESCR("overlaps to right");
1695 DATA(insert OID = 3897 (  "-|-"    PGNSP PGUID b f f 3831 3831 16 3897 0 adjacent - - ));
1696 DESCR("adjacent");
1697 DATA(insert OID = 3898 (  "+"      PGNSP PGUID b f f 3831 3831 3831 3898 0 range_union - - ));
1698 DESCR("range union");
1699 DATA(insert OID = 3899 (  "-"      PGNSP PGUID b f f 3831 3831 3831 0 0 minus - - ));
1700 DESCR("range difference");
1701 DATA(insert OID = 3900 (  "*"      PGNSP PGUID b f f 3831 3831 3831 3900 0 range_intersect - - ));
1702 DESCR("intersection");
1703
1704 /*
1705  * function prototypes
1706  */
1707 extern void OperatorCreate(const char *operatorName,
1708                            Oid operatorNamespace,
1709                            Oid leftTypeId,
1710                            Oid rightTypeId,
1711                            Oid procedureId,
1712                            List *commutatorName,
1713                            List *negatorName,
1714                            Oid restrictionId,
1715                            Oid joinId,
1716                            bool canMerge,
1717                            bool canHash);
1718
1719 #endif   /* PG_OPERATOR_H */