1 #----------------------------------------------------------------------
4 # Initial contents of the pg_operator system catalog.
6 # Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
7 # Portions Copyright (c) 1994, Regents of the University of California
9 # src/include/catalog/pg_operator.dat
11 #----------------------------------------------------------------------
15 # Note: every entry in pg_operator.dat is expected to have a 'descr' comment.
16 # If the operator is a deprecated equivalent of some other entry, be sure
17 # to comment it as such so that initdb doesn't think it's a preferred name
18 # for the underlying function.
20 { oid
=> '15', descr
=> 'equal',
21 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'int4',
22 oprright
=> 'int8', oprresult
=> 'bool', oprcom
=> '=(int8,int4)',
23 oprnegate
=> '<>(int4,int8)', oprcode
=> 'int48eq', oprrest
=> 'eqsel',
24 oprjoin
=> 'eqjoinsel' },
25 { oid
=> '36', descr
=> 'not equal',
26 oprname
=> '<>', oprleft
=> 'int4', oprright
=> 'int8', oprresult
=> 'bool',
27 oprcom
=> '<>(int8,int4)', oprnegate
=> '=(int4,int8)', oprcode
=> 'int48ne',
28 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
29 { oid
=> '37', descr
=> 'less than',
30 oprname
=> '<', oprleft
=> 'int4', oprright
=> 'int8', oprresult
=> 'bool',
31 oprcom
=> '>(int8,int4)', oprnegate
=> '>=(int4,int8)', oprcode
=> 'int48lt',
32 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
33 { oid
=> '76', descr
=> 'greater than',
34 oprname
=> '>', oprleft
=> 'int4', oprright
=> 'int8', oprresult
=> 'bool',
35 oprcom
=> '<(int8,int4)', oprnegate
=> '<=(int4,int8)', oprcode
=> 'int48gt',
36 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
37 { oid
=> '80', descr
=> 'less than or equal',
38 oprname
=> '<=', oprleft
=> 'int4', oprright
=> 'int8', oprresult
=> 'bool',
39 oprcom
=> '>=(int8,int4)', oprnegate
=> '>(int4,int8)', oprcode
=> 'int48le',
40 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
41 { oid
=> '82', descr
=> 'greater than or equal',
42 oprname
=> '>=', oprleft
=> 'int4', oprright
=> 'int8', oprresult
=> 'bool',
43 oprcom
=> '<=(int8,int4)', oprnegate
=> '<(int4,int8)', oprcode
=> 'int48ge',
44 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
46 { oid
=> '58', descr
=> 'less than',
47 oprname
=> '<', oprleft
=> 'bool', oprright
=> 'bool', oprresult
=> 'bool',
48 oprcom
=> '>(bool,bool)', oprnegate
=> '>=(bool,bool)', oprcode
=> 'boollt',
49 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
50 { oid
=> '59', descr
=> 'greater than',
51 oprname
=> '>', oprleft
=> 'bool', oprright
=> 'bool', oprresult
=> 'bool',
52 oprcom
=> '<(bool,bool)', oprnegate
=> '<=(bool,bool)', oprcode
=> 'boolgt',
53 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
54 { oid
=> '85', oid_symbol
=> 'BooleanNotEqualOperator', descr
=> 'not equal',
55 oprname
=> '<>', oprleft
=> 'bool', oprright
=> 'bool', oprresult
=> 'bool',
56 oprcom
=> '<>(bool,bool)', oprnegate
=> '=(bool,bool)', oprcode
=> 'boolne',
57 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
58 { oid
=> '91', oid_symbol
=> 'BooleanEqualOperator', descr
=> 'equal',
59 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'bool',
60 oprright
=> 'bool', oprresult
=> 'bool', oprcom
=> '=(bool,bool)',
61 oprnegate
=> '<>(bool,bool)', oprcode
=> 'booleq', oprrest
=> 'eqsel',
62 oprjoin
=> 'eqjoinsel' },
63 { oid
=> '1694', descr
=> 'less than or equal',
64 oprname
=> '<=', oprleft
=> 'bool', oprright
=> 'bool', oprresult
=> 'bool',
65 oprcom
=> '>=(bool,bool)', oprnegate
=> '>(bool,bool)', oprcode
=> 'boolle',
66 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
67 { oid
=> '1695', descr
=> 'greater than or equal',
68 oprname
=> '>=', oprleft
=> 'bool', oprright
=> 'bool', oprresult
=> 'bool',
69 oprcom
=> '<=(bool,bool)', oprnegate
=> '<(bool,bool)', oprcode
=> 'boolge',
70 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
72 { oid
=> '92', descr
=> 'equal',
73 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'char',
74 oprright
=> 'char', oprresult
=> 'bool', oprcom
=> '=(char,char)',
75 oprnegate
=> '<>(char,char)', oprcode
=> 'chareq', oprrest
=> 'eqsel',
76 oprjoin
=> 'eqjoinsel' },
77 { oid
=> '93', descr
=> 'equal',
78 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'name',
79 oprright
=> 'name', oprresult
=> 'bool', oprcom
=> '=(name,name)',
80 oprnegate
=> '<>(name,name)', oprcode
=> 'nameeq', oprrest
=> 'eqsel',
81 oprjoin
=> 'eqjoinsel' },
82 { oid
=> '94', descr
=> 'equal',
83 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'int2',
84 oprright
=> 'int2', oprresult
=> 'bool', oprcom
=> '=(int2,int2)',
85 oprnegate
=> '<>(int2,int2)', oprcode
=> 'int2eq', oprrest
=> 'eqsel',
86 oprjoin
=> 'eqjoinsel' },
87 { oid
=> '95', descr
=> 'less than',
88 oprname
=> '<', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'bool',
89 oprcom
=> '>(int2,int2)', oprnegate
=> '>=(int2,int2)', oprcode
=> 'int2lt',
90 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
91 { oid
=> '96', oid_symbol
=> 'Int4EqualOperator', descr
=> 'equal',
92 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'int4',
93 oprright
=> 'int4', oprresult
=> 'bool', oprcom
=> '=(int4,int4)',
94 oprnegate
=> '<>(int4,int4)', oprcode
=> 'int4eq', oprrest
=> 'eqsel',
95 oprjoin
=> 'eqjoinsel' },
96 { oid
=> '97', oid_symbol
=> 'Int4LessOperator', descr
=> 'less than',
97 oprname
=> '<', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'bool',
98 oprcom
=> '>(int4,int4)', oprnegate
=> '>=(int4,int4)', oprcode
=> 'int4lt',
99 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
100 { oid
=> '98', oid_symbol
=> 'TextEqualOperator', descr
=> 'equal',
101 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'text',
102 oprright
=> 'text', oprresult
=> 'bool', oprcom
=> '=(text,text)',
103 oprnegate
=> '<>(text,text)', oprcode
=> 'texteq', oprrest
=> 'eqsel',
104 oprjoin
=> 'eqjoinsel' },
105 { oid
=> '3877', oid_symbol
=> 'TextPrefixOperator', descr
=> 'starts with',
106 oprname
=> '^@', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
107 oprcode
=> 'starts_with', oprrest
=> 'prefixsel',
108 oprjoin
=> 'prefixjoinsel' },
110 { oid
=> '254', oid_symbol
=> 'NameEqualTextOperator', descr
=> 'equal',
111 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'name',
112 oprright
=> 'text', oprresult
=> 'bool', oprcom
=> '=(text,name)',
113 oprnegate
=> '<>(name,text)', oprcode
=> 'nameeqtext', oprrest
=> 'eqsel',
114 oprjoin
=> 'eqjoinsel' },
115 { oid
=> '255', oid_symbol
=> 'NameLessTextOperator', descr
=> 'less than',
116 oprname
=> '<', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
117 oprcom
=> '>(text,name)', oprnegate
=> '>=(name,text)',
118 oprcode
=> 'namelttext', oprrest
=> 'scalarltsel',
119 oprjoin
=> 'scalarltjoinsel' },
120 { oid
=> '256', descr
=> 'less than or equal',
121 oprname
=> '<=', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
122 oprcom
=> '>=(text,name)', oprnegate
=> '>(name,text)',
123 oprcode
=> 'nameletext', oprrest
=> 'scalarlesel',
124 oprjoin
=> 'scalarlejoinsel' },
125 { oid
=> '257', oid_symbol
=> 'NameGreaterEqualTextOperator',
126 descr
=> 'greater than or equal',
127 oprname
=> '>=', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
128 oprcom
=> '<=(text,name)', oprnegate
=> '<(name,text)',
129 oprcode
=> 'namegetext', oprrest
=> 'scalargesel',
130 oprjoin
=> 'scalargejoinsel' },
131 { oid
=> '258', descr
=> 'greater than',
132 oprname
=> '>', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
133 oprcom
=> '<(text,name)', oprnegate
=> '<=(name,text)',
134 oprcode
=> 'namegttext', oprrest
=> 'scalargtsel',
135 oprjoin
=> 'scalargtjoinsel' },
136 { oid
=> '259', descr
=> 'not equal',
137 oprname
=> '<>', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
138 oprcom
=> '<>(text,name)', oprnegate
=> '=(name,text)',
139 oprcode
=> 'namenetext', oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
140 { oid
=> '260', descr
=> 'equal',
141 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'text',
142 oprright
=> 'name', oprresult
=> 'bool', oprcom
=> '=(name,text)',
143 oprnegate
=> '<>(text,name)', oprcode
=> 'texteqname', oprrest
=> 'eqsel',
144 oprjoin
=> 'eqjoinsel' },
145 { oid
=> '261', descr
=> 'less than',
146 oprname
=> '<', oprleft
=> 'text', oprright
=> 'name', oprresult
=> 'bool',
147 oprcom
=> '>(name,text)', oprnegate
=> '>=(text,name)',
148 oprcode
=> 'textltname', oprrest
=> 'scalarltsel',
149 oprjoin
=> 'scalarltjoinsel' },
150 { oid
=> '262', descr
=> 'less than or equal',
151 oprname
=> '<=', oprleft
=> 'text', oprright
=> 'name', oprresult
=> 'bool',
152 oprcom
=> '>=(name,text)', oprnegate
=> '>(text,name)',
153 oprcode
=> 'textlename', oprrest
=> 'scalarlesel',
154 oprjoin
=> 'scalarlejoinsel' },
155 { oid
=> '263', descr
=> 'greater than or equal',
156 oprname
=> '>=', oprleft
=> 'text', oprright
=> 'name', oprresult
=> 'bool',
157 oprcom
=> '<=(name,text)', oprnegate
=> '<(text,name)',
158 oprcode
=> 'textgename', oprrest
=> 'scalargesel',
159 oprjoin
=> 'scalargejoinsel' },
160 { oid
=> '264', descr
=> 'greater than',
161 oprname
=> '>', oprleft
=> 'text', oprright
=> 'name', oprresult
=> 'bool',
162 oprcom
=> '<(name,text)', oprnegate
=> '<=(text,name)',
163 oprcode
=> 'textgtname', oprrest
=> 'scalargtsel',
164 oprjoin
=> 'scalargtjoinsel' },
165 { oid
=> '265', descr
=> 'not equal',
166 oprname
=> '<>', oprleft
=> 'text', oprright
=> 'name', oprresult
=> 'bool',
167 oprcom
=> '<>(name,text)', oprnegate
=> '=(text,name)',
168 oprcode
=> 'textnename', oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
170 { oid
=> '349', descr
=> 'append element onto end of array',
171 oprname
=> '||', oprleft
=> 'anycompatiblearray', oprright
=> 'anycompatible',
172 oprresult
=> 'anycompatiblearray', oprcode
=> 'array_append' },
173 { oid
=> '374', descr
=> 'prepend element onto front of array',
174 oprname
=> '||', oprleft
=> 'anycompatible', oprright
=> 'anycompatiblearray',
175 oprresult
=> 'anycompatiblearray', oprcode
=> 'array_prepend' },
176 { oid
=> '375', descr
=> 'concatenate',
177 oprname
=> '||', oprleft
=> 'anycompatiblearray',
178 oprright
=> 'anycompatiblearray', oprresult
=> 'anycompatiblearray',
179 oprcode
=> 'array_cat' },
181 { oid
=> '352', descr
=> 'equal',
182 oprname
=> '=', oprcanhash
=> 't', oprleft
=> 'xid', oprright
=> 'xid',
183 oprresult
=> 'bool', oprcom
=> '=(xid,xid)', oprnegate
=> '<>(xid,xid)',
184 oprcode
=> 'xideq', oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
185 { oid
=> '353', descr
=> 'equal',
186 oprname
=> '=', oprleft
=> 'xid', oprright
=> 'int4', oprresult
=> 'bool',
187 oprnegate
=> '<>(xid,int4)', oprcode
=> 'xideqint4', oprrest
=> 'eqsel',
188 oprjoin
=> 'eqjoinsel' },
189 { oid
=> '3315', descr
=> 'not equal',
190 oprname
=> '<>', oprleft
=> 'xid', oprright
=> 'xid', oprresult
=> 'bool',
191 oprcom
=> '<>(xid,xid)', oprnegate
=> '=(xid,xid)', oprcode
=> 'xidneq',
192 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
193 { oid
=> '3316', descr
=> 'not equal',
194 oprname
=> '<>', oprleft
=> 'xid', oprright
=> 'int4', oprresult
=> 'bool',
195 oprnegate
=> '=(xid,int4)', oprcode
=> 'xidneqint4', oprrest
=> 'neqsel',
196 oprjoin
=> 'neqjoinsel' },
197 { oid
=> '5068', descr
=> 'equal',
198 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'xid8',
199 oprright
=> 'xid8', oprresult
=> 'bool', oprcom
=> '=(xid8,xid8)',
200 oprnegate
=> '<>(xid8,xid8)', oprcode
=> 'xid8eq', oprrest
=> 'eqsel',
201 oprjoin
=> 'eqjoinsel' },
202 { oid
=> '5072', descr
=> 'not equal',
203 oprname
=> '<>', oprleft
=> 'xid8', oprright
=> 'xid8', oprresult
=> 'bool',
204 oprcom
=> '<>(xid8,xid8)', oprnegate
=> '=(xid8,xid8)', oprcode
=> 'xid8ne',
205 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
206 { oid
=> '5073', descr
=> 'less than',
207 oprname
=> '<', oprleft
=> 'xid8', oprright
=> 'xid8', oprresult
=> 'bool',
208 oprcom
=> '>(xid8,xid8)', oprnegate
=> '>=(xid8,xid8)', oprcode
=> 'xid8lt',
209 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
210 { oid
=> '5074', descr
=> 'greater than',
211 oprname
=> '>', oprleft
=> 'xid8', oprright
=> 'xid8', oprresult
=> 'bool',
212 oprcom
=> '<(xid8,xid8)', oprnegate
=> '<=(xid8,xid8)', oprcode
=> 'xid8gt',
213 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
214 { oid
=> '5075', descr
=> 'less than or equal',
215 oprname
=> '<=', oprleft
=> 'xid8', oprright
=> 'xid8', oprresult
=> 'bool',
216 oprcom
=> '>=(xid8,xid8)', oprnegate
=> '>(xid8,xid8)', oprcode
=> 'xid8le',
217 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
218 { oid
=> '5076', descr
=> 'greater than or equal',
219 oprname
=> '>=', oprleft
=> 'xid8', oprright
=> 'xid8', oprresult
=> 'bool',
220 oprcom
=> '<=(xid8,xid8)', oprnegate
=> '<(xid8,xid8)', oprcode
=> 'xid8ge',
221 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
222 { oid
=> '385', descr
=> 'equal',
223 oprname
=> '=', oprcanhash
=> 't', oprleft
=> 'cid', oprright
=> 'cid',
224 oprresult
=> 'bool', oprcom
=> '=(cid,cid)', oprcode
=> 'cideq',
225 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
227 { oid
=> '387', oid_symbol
=> 'TIDEqualOperator', descr
=> 'equal',
228 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'tid',
229 oprright
=> 'tid', oprresult
=> 'bool', oprcom
=> '=(tid,tid)',
230 oprnegate
=> '<>(tid,tid)', oprcode
=> 'tideq', oprrest
=> 'eqsel',
231 oprjoin
=> 'eqjoinsel' },
232 { oid
=> '402', descr
=> 'not equal',
233 oprname
=> '<>', oprleft
=> 'tid', oprright
=> 'tid', oprresult
=> 'bool',
234 oprcom
=> '<>(tid,tid)', oprnegate
=> '=(tid,tid)', oprcode
=> 'tidne',
235 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
236 { oid
=> '2799', oid_symbol
=> 'TIDLessOperator', descr
=> 'less than',
237 oprname
=> '<', oprleft
=> 'tid', oprright
=> 'tid', oprresult
=> 'bool',
238 oprcom
=> '>(tid,tid)', oprnegate
=> '>=(tid,tid)', oprcode
=> 'tidlt',
239 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
240 { oid
=> '2800', oid_symbol
=> 'TIDGreaterOperator', descr
=> 'greater than',
241 oprname
=> '>', oprleft
=> 'tid', oprright
=> 'tid', oprresult
=> 'bool',
242 oprcom
=> '<(tid,tid)', oprnegate
=> '<=(tid,tid)', oprcode
=> 'tidgt',
243 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
244 { oid
=> '2801', oid_symbol
=> 'TIDLessEqOperator',
245 descr
=> 'less than or equal',
246 oprname
=> '<=', oprleft
=> 'tid', oprright
=> 'tid', oprresult
=> 'bool',
247 oprcom
=> '>=(tid,tid)', oprnegate
=> '>(tid,tid)', oprcode
=> 'tidle',
248 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
249 { oid
=> '2802', oid_symbol
=> 'TIDGreaterEqOperator',
250 descr
=> 'greater than or equal',
251 oprname
=> '>=', oprleft
=> 'tid', oprright
=> 'tid', oprresult
=> 'bool',
252 oprcom
=> '<=(tid,tid)', oprnegate
=> '<(tid,tid)', oprcode
=> 'tidge',
253 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
255 { oid
=> '410', descr
=> 'equal',
256 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'int8',
257 oprright
=> 'int8', oprresult
=> 'bool', oprcom
=> '=(int8,int8)',
258 oprnegate
=> '<>(int8,int8)', oprcode
=> 'int8eq', oprrest
=> 'eqsel',
259 oprjoin
=> 'eqjoinsel' },
260 { oid
=> '411', descr
=> 'not equal',
261 oprname
=> '<>', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'bool',
262 oprcom
=> '<>(int8,int8)', oprnegate
=> '=(int8,int8)', oprcode
=> 'int8ne',
263 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
264 { oid
=> '412', oid_symbol
=> 'Int8LessOperator', descr
=> 'less than',
265 oprname
=> '<', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'bool',
266 oprcom
=> '>(int8,int8)', oprnegate
=> '>=(int8,int8)', oprcode
=> 'int8lt',
267 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
268 { oid
=> '413', descr
=> 'greater than',
269 oprname
=> '>', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'bool',
270 oprcom
=> '<(int8,int8)', oprnegate
=> '<=(int8,int8)', oprcode
=> 'int8gt',
271 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
272 { oid
=> '414', descr
=> 'less than or equal',
273 oprname
=> '<=', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'bool',
274 oprcom
=> '>=(int8,int8)', oprnegate
=> '>(int8,int8)', oprcode
=> 'int8le',
275 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
276 { oid
=> '415', descr
=> 'greater than or equal',
277 oprname
=> '>=', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'bool',
278 oprcom
=> '<=(int8,int8)', oprnegate
=> '<(int8,int8)', oprcode
=> 'int8ge',
279 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
281 { oid
=> '416', descr
=> 'equal',
282 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'int8',
283 oprright
=> 'int4', oprresult
=> 'bool', oprcom
=> '=(int4,int8)',
284 oprnegate
=> '<>(int8,int4)', oprcode
=> 'int84eq', oprrest
=> 'eqsel',
285 oprjoin
=> 'eqjoinsel' },
286 { oid
=> '417', descr
=> 'not equal',
287 oprname
=> '<>', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'bool',
288 oprcom
=> '<>(int4,int8)', oprnegate
=> '=(int8,int4)', oprcode
=> 'int84ne',
289 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
290 { oid
=> '418', descr
=> 'less than',
291 oprname
=> '<', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'bool',
292 oprcom
=> '>(int4,int8)', oprnegate
=> '>=(int8,int4)', oprcode
=> 'int84lt',
293 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
294 { oid
=> '419', descr
=> 'greater than',
295 oprname
=> '>', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'bool',
296 oprcom
=> '<(int4,int8)', oprnegate
=> '<=(int8,int4)', oprcode
=> 'int84gt',
297 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
298 { oid
=> '420', descr
=> 'less than or equal',
299 oprname
=> '<=', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'bool',
300 oprcom
=> '>=(int4,int8)', oprnegate
=> '>(int8,int4)', oprcode
=> 'int84le',
301 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
302 { oid
=> '430', descr
=> 'greater than or equal',
303 oprname
=> '>=', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'bool',
304 oprcom
=> '<=(int4,int8)', oprnegate
=> '<(int8,int4)', oprcode
=> 'int84ge',
305 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
306 { oid
=> '439', descr
=> 'modulus',
307 oprname
=> '%', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'int8',
308 oprcode
=> 'int8mod' },
309 { oid
=> '473', descr
=> 'absolute value',
310 oprname
=> '@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int8',
311 oprresult
=> 'int8', oprcode
=> 'int8abs' },
313 { oid
=> '484', descr
=> 'negate',
314 oprname
=> '-', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int8',
315 oprresult
=> 'int8', oprcode
=> 'int8um' },
316 { oid
=> '485', descr
=> 'is left of',
317 oprname
=> '<<', oprleft
=> 'polygon', oprright
=> 'polygon',
318 oprresult
=> 'bool', oprcode
=> 'poly_left', oprrest
=> 'positionsel',
319 oprjoin
=> 'positionjoinsel' },
320 { oid
=> '486', descr
=> 'overlaps or is left of',
321 oprname
=> '&<', oprleft
=> 'polygon', oprright
=> 'polygon',
322 oprresult
=> 'bool', oprcode
=> 'poly_overleft', oprrest
=> 'positionsel',
323 oprjoin
=> 'positionjoinsel' },
324 { oid
=> '487', descr
=> 'overlaps or is right of',
325 oprname
=> '&>', oprleft
=> 'polygon', oprright
=> 'polygon',
326 oprresult
=> 'bool', oprcode
=> 'poly_overright', oprrest
=> 'positionsel',
327 oprjoin
=> 'positionjoinsel' },
328 { oid
=> '488', descr
=> 'is right of',
329 oprname
=> '>>', oprleft
=> 'polygon', oprright
=> 'polygon',
330 oprresult
=> 'bool', oprcode
=> 'poly_right', oprrest
=> 'positionsel',
331 oprjoin
=> 'positionjoinsel' },
332 { oid
=> '489', descr
=> 'is contained by',
333 oprname
=> '<@', oprleft
=> 'polygon', oprright
=> 'polygon',
334 oprresult
=> 'bool', oprcom
=> '@>(polygon,polygon)',
335 oprcode
=> 'poly_contained', oprrest
=> 'contsel', oprjoin
=> 'contjoinsel' },
336 { oid
=> '490', descr
=> 'contains',
337 oprname
=> '@>', oprleft
=> 'polygon', oprright
=> 'polygon',
338 oprresult
=> 'bool', oprcom
=> '<@(polygon,polygon)',
339 oprcode
=> 'poly_contain', oprrest
=> 'contsel', oprjoin
=> 'contjoinsel' },
340 { oid
=> '491', descr
=> 'same as',
341 oprname
=> '~=', oprleft
=> 'polygon', oprright
=> 'polygon',
342 oprresult
=> 'bool', oprcom
=> '~=(polygon,polygon)', oprcode
=> 'poly_same',
343 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
344 { oid
=> '492', descr
=> 'overlaps',
345 oprname
=> '&&', oprleft
=> 'polygon', oprright
=> 'polygon',
346 oprresult
=> 'bool', oprcom
=> '&&(polygon,polygon)',
347 oprcode
=> 'poly_overlap', oprrest
=> 'areasel', oprjoin
=> 'areajoinsel' },
348 { oid
=> '493', descr
=> 'is left of',
349 oprname
=> '<<', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
350 oprcode
=> 'box_left', oprrest
=> 'positionsel',
351 oprjoin
=> 'positionjoinsel' },
352 { oid
=> '494', descr
=> 'overlaps or is left of',
353 oprname
=> '&<', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
354 oprcode
=> 'box_overleft', oprrest
=> 'positionsel',
355 oprjoin
=> 'positionjoinsel' },
356 { oid
=> '495', descr
=> 'overlaps or is right of',
357 oprname
=> '&>', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
358 oprcode
=> 'box_overright', oprrest
=> 'positionsel',
359 oprjoin
=> 'positionjoinsel' },
360 { oid
=> '496', descr
=> 'is right of',
361 oprname
=> '>>', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
362 oprcode
=> 'box_right', oprrest
=> 'positionsel',
363 oprjoin
=> 'positionjoinsel' },
364 { oid
=> '497', descr
=> 'is contained by',
365 oprname
=> '<@', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
366 oprcom
=> '@>(box,box)', oprcode
=> 'box_contained', oprrest
=> 'contsel',
367 oprjoin
=> 'contjoinsel' },
368 { oid
=> '498', descr
=> 'contains',
369 oprname
=> '@>', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
370 oprcom
=> '<@(box,box)', oprcode
=> 'box_contain', oprrest
=> 'contsel',
371 oprjoin
=> 'contjoinsel' },
372 { oid
=> '499', descr
=> 'same as',
373 oprname
=> '~=', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
374 oprcom
=> '~=(box,box)', oprcode
=> 'box_same', oprrest
=> 'eqsel',
375 oprjoin
=> 'eqjoinsel' },
376 { oid
=> '500', descr
=> 'overlaps',
377 oprname
=> '&&', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
378 oprcom
=> '&&(box,box)', oprcode
=> 'box_overlap', oprrest
=> 'areasel',
379 oprjoin
=> 'areajoinsel' },
380 { oid
=> '501', descr
=> 'greater than or equal by area',
381 oprname
=> '>=', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
382 oprcom
=> '<=(box,box)', oprnegate
=> '<(box,box)', oprcode
=> 'box_ge',
383 oprrest
=> 'areasel', oprjoin
=> 'areajoinsel' },
384 { oid
=> '502', descr
=> 'greater than by area',
385 oprname
=> '>', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
386 oprcom
=> '<(box,box)', oprnegate
=> '<=(box,box)', oprcode
=> 'box_gt',
387 oprrest
=> 'areasel', oprjoin
=> 'areajoinsel' },
388 { oid
=> '503', descr
=> 'equal by area',
389 oprname
=> '=', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
390 oprcom
=> '=(box,box)', oprcode
=> 'box_eq', oprrest
=> 'eqsel',
391 oprjoin
=> 'eqjoinsel' },
392 { oid
=> '504', descr
=> 'less than by area',
393 oprname
=> '<', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
394 oprcom
=> '>(box,box)', oprnegate
=> '>=(box,box)', oprcode
=> 'box_lt',
395 oprrest
=> 'areasel', oprjoin
=> 'areajoinsel' },
396 { oid
=> '505', descr
=> 'less than or equal by area',
397 oprname
=> '<=', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
398 oprcom
=> '>=(box,box)', oprnegate
=> '>(box,box)', oprcode
=> 'box_le',
399 oprrest
=> 'areasel', oprjoin
=> 'areajoinsel' },
400 { oid
=> '506', descr
=> 'deprecated, use |>> instead',
401 oprname
=> '>^', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'bool',
402 oprcode
=> 'point_above', oprrest
=> 'positionsel',
403 oprjoin
=> 'positionjoinsel' },
404 { oid
=> '507', descr
=> 'is left of',
405 oprname
=> '<<', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'bool',
406 oprcode
=> 'point_left', oprrest
=> 'positionsel',
407 oprjoin
=> 'positionjoinsel' },
408 { oid
=> '508', descr
=> 'is right of',
409 oprname
=> '>>', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'bool',
410 oprcode
=> 'point_right', oprrest
=> 'positionsel',
411 oprjoin
=> 'positionjoinsel' },
412 { oid
=> '509', descr
=> 'deprecated, use <<| instead',
413 oprname
=> '<^', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'bool',
414 oprcode
=> 'point_below', oprrest
=> 'positionsel',
415 oprjoin
=> 'positionjoinsel' },
416 { oid
=> '510', descr
=> 'same as',
417 oprname
=> '~=', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'bool',
418 oprcom
=> '~=(point,point)', oprnegate
=> '<>(point,point)',
419 oprcode
=> 'point_eq', oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
420 { oid
=> '511', descr
=> 'point inside box',
421 oprname
=> '<@', oprleft
=> 'point', oprright
=> 'box', oprresult
=> 'bool',
422 oprcom
=> '@>(box,point)', oprcode
=> 'on_pb', oprrest
=> 'contsel',
423 oprjoin
=> 'contjoinsel' },
424 { oid
=> '433', descr
=> 'contains',
425 oprname
=> '@>', oprleft
=> 'box', oprright
=> 'point', oprresult
=> 'bool',
426 oprcom
=> '<@(point,box)', oprcode
=> 'box_contain_pt', oprrest
=> 'contsel',
427 oprjoin
=> 'contjoinsel' },
428 { oid
=> '512', descr
=> 'point within closed path, or point on open path',
429 oprname
=> '<@', oprleft
=> 'point', oprright
=> 'path', oprresult
=> 'bool',
430 oprcom
=> '@>(path,point)', oprcode
=> 'on_ppath' },
431 { oid
=> '513', descr
=> 'center of',
432 oprname
=> '@@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'box',
433 oprresult
=> 'point', oprcode
=> 'box_center' },
434 { oid
=> '514', descr
=> 'multiply',
435 oprname
=> '*', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'int4',
436 oprcom
=> '*(int4,int4)', oprcode
=> 'int4mul' },
437 { oid
=> '517', descr
=> 'distance between',
438 oprname
=> '<->', oprleft
=> 'point', oprright
=> 'point',
439 oprresult
=> 'float8', oprcom
=> '<->(point,point)',
440 oprcode
=> 'point_distance' },
441 { oid
=> '518', descr
=> 'not equal',
442 oprname
=> '<>', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'bool',
443 oprcom
=> '<>(int4,int4)', oprnegate
=> '=(int4,int4)', oprcode
=> 'int4ne',
444 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
445 { oid
=> '519', descr
=> 'not equal',
446 oprname
=> '<>', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'bool',
447 oprcom
=> '<>(int2,int2)', oprnegate
=> '=(int2,int2)', oprcode
=> 'int2ne',
448 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
449 { oid
=> '520', descr
=> 'greater than',
450 oprname
=> '>', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'bool',
451 oprcom
=> '<(int2,int2)', oprnegate
=> '<=(int2,int2)', oprcode
=> 'int2gt',
452 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
453 { oid
=> '521', descr
=> 'greater than',
454 oprname
=> '>', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'bool',
455 oprcom
=> '<(int4,int4)', oprnegate
=> '<=(int4,int4)', oprcode
=> 'int4gt',
456 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
457 { oid
=> '522', descr
=> 'less than or equal',
458 oprname
=> '<=', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'bool',
459 oprcom
=> '>=(int2,int2)', oprnegate
=> '>(int2,int2)', oprcode
=> 'int2le',
460 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
461 { oid
=> '523', descr
=> 'less than or equal',
462 oprname
=> '<=', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'bool',
463 oprcom
=> '>=(int4,int4)', oprnegate
=> '>(int4,int4)', oprcode
=> 'int4le',
464 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
465 { oid
=> '524', descr
=> 'greater than or equal',
466 oprname
=> '>=', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'bool',
467 oprcom
=> '<=(int2,int2)', oprnegate
=> '<(int2,int2)', oprcode
=> 'int2ge',
468 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
469 { oid
=> '525', descr
=> 'greater than or equal',
470 oprname
=> '>=', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'bool',
471 oprcom
=> '<=(int4,int4)', oprnegate
=> '<(int4,int4)', oprcode
=> 'int4ge',
472 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
473 { oid
=> '526', descr
=> 'multiply',
474 oprname
=> '*', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'int2',
475 oprcom
=> '*(int2,int2)', oprcode
=> 'int2mul' },
476 { oid
=> '527', descr
=> 'divide',
477 oprname
=> '/', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'int2',
478 oprcode
=> 'int2div' },
479 { oid
=> '528', descr
=> 'divide',
480 oprname
=> '/', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'int4',
481 oprcode
=> 'int4div' },
482 { oid
=> '529', descr
=> 'modulus',
483 oprname
=> '%', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'int2',
484 oprcode
=> 'int2mod' },
485 { oid
=> '530', descr
=> 'modulus',
486 oprname
=> '%', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'int4',
487 oprcode
=> 'int4mod' },
488 { oid
=> '531', descr
=> 'not equal',
489 oprname
=> '<>', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
490 oprcom
=> '<>(text,text)', oprnegate
=> '=(text,text)', oprcode
=> 'textne',
491 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
492 { oid
=> '532', descr
=> 'equal',
493 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'int2',
494 oprright
=> 'int4', oprresult
=> 'bool', oprcom
=> '=(int4,int2)',
495 oprnegate
=> '<>(int2,int4)', oprcode
=> 'int24eq', oprrest
=> 'eqsel',
496 oprjoin
=> 'eqjoinsel' },
497 { oid
=> '533', descr
=> 'equal',
498 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'int4',
499 oprright
=> 'int2', oprresult
=> 'bool', oprcom
=> '=(int2,int4)',
500 oprnegate
=> '<>(int4,int2)', oprcode
=> 'int42eq', oprrest
=> 'eqsel',
501 oprjoin
=> 'eqjoinsel' },
502 { oid
=> '534', descr
=> 'less than',
503 oprname
=> '<', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'bool',
504 oprcom
=> '>(int4,int2)', oprnegate
=> '>=(int2,int4)', oprcode
=> 'int24lt',
505 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
506 { oid
=> '535', descr
=> 'less than',
507 oprname
=> '<', oprleft
=> 'int4', oprright
=> 'int2', oprresult
=> 'bool',
508 oprcom
=> '>(int2,int4)', oprnegate
=> '>=(int4,int2)', oprcode
=> 'int42lt',
509 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
510 { oid
=> '536', descr
=> 'greater than',
511 oprname
=> '>', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'bool',
512 oprcom
=> '<(int4,int2)', oprnegate
=> '<=(int2,int4)', oprcode
=> 'int24gt',
513 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
514 { oid
=> '537', descr
=> 'greater than',
515 oprname
=> '>', oprleft
=> 'int4', oprright
=> 'int2', oprresult
=> 'bool',
516 oprcom
=> '<(int2,int4)', oprnegate
=> '<=(int4,int2)', oprcode
=> 'int42gt',
517 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
518 { oid
=> '538', descr
=> 'not equal',
519 oprname
=> '<>', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'bool',
520 oprcom
=> '<>(int4,int2)', oprnegate
=> '=(int2,int4)', oprcode
=> 'int24ne',
521 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
522 { oid
=> '539', descr
=> 'not equal',
523 oprname
=> '<>', oprleft
=> 'int4', oprright
=> 'int2', oprresult
=> 'bool',
524 oprcom
=> '<>(int2,int4)', oprnegate
=> '=(int4,int2)', oprcode
=> 'int42ne',
525 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
526 { oid
=> '540', descr
=> 'less than or equal',
527 oprname
=> '<=', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'bool',
528 oprcom
=> '>=(int4,int2)', oprnegate
=> '>(int2,int4)', oprcode
=> 'int24le',
529 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
530 { oid
=> '541', descr
=> 'less than or equal',
531 oprname
=> '<=', oprleft
=> 'int4', oprright
=> 'int2', oprresult
=> 'bool',
532 oprcom
=> '>=(int2,int4)', oprnegate
=> '>(int4,int2)', oprcode
=> 'int42le',
533 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
534 { oid
=> '542', descr
=> 'greater than or equal',
535 oprname
=> '>=', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'bool',
536 oprcom
=> '<=(int4,int2)', oprnegate
=> '<(int2,int4)', oprcode
=> 'int24ge',
537 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
538 { oid
=> '543', descr
=> 'greater than or equal',
539 oprname
=> '>=', oprleft
=> 'int4', oprright
=> 'int2', oprresult
=> 'bool',
540 oprcom
=> '<=(int2,int4)', oprnegate
=> '<(int4,int2)', oprcode
=> 'int42ge',
541 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
542 { oid
=> '544', descr
=> 'multiply',
543 oprname
=> '*', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'int4',
544 oprcom
=> '*(int4,int2)', oprcode
=> 'int24mul' },
545 { oid
=> '545', descr
=> 'multiply',
546 oprname
=> '*', oprleft
=> 'int4', oprright
=> 'int2', oprresult
=> 'int4',
547 oprcom
=> '*(int2,int4)', oprcode
=> 'int42mul' },
548 { oid
=> '546', descr
=> 'divide',
549 oprname
=> '/', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'int4',
550 oprcode
=> 'int24div' },
551 { oid
=> '547', descr
=> 'divide',
552 oprname
=> '/', oprleft
=> 'int4', oprright
=> 'int2', oprresult
=> 'int4',
553 oprcode
=> 'int42div' },
554 { oid
=> '550', descr
=> 'add',
555 oprname
=> '+', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'int2',
556 oprcom
=> '+(int2,int2)', oprcode
=> 'int2pl' },
557 { oid
=> '551', descr
=> 'add',
558 oprname
=> '+', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'int4',
559 oprcom
=> '+(int4,int4)', oprcode
=> 'int4pl' },
560 { oid
=> '552', descr
=> 'add',
561 oprname
=> '+', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'int4',
562 oprcom
=> '+(int4,int2)', oprcode
=> 'int24pl' },
563 { oid
=> '553', descr
=> 'add',
564 oprname
=> '+', oprleft
=> 'int4', oprright
=> 'int2', oprresult
=> 'int4',
565 oprcom
=> '+(int2,int4)', oprcode
=> 'int42pl' },
566 { oid
=> '554', descr
=> 'subtract',
567 oprname
=> '-', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'int2',
568 oprcode
=> 'int2mi' },
569 { oid
=> '555', descr
=> 'subtract',
570 oprname
=> '-', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'int4',
571 oprcode
=> 'int4mi' },
572 { oid
=> '556', descr
=> 'subtract',
573 oprname
=> '-', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'int4',
574 oprcode
=> 'int24mi' },
575 { oid
=> '557', descr
=> 'subtract',
576 oprname
=> '-', oprleft
=> 'int4', oprright
=> 'int2', oprresult
=> 'int4',
577 oprcode
=> 'int42mi' },
578 { oid
=> '558', descr
=> 'negate',
579 oprname
=> '-', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int4',
580 oprresult
=> 'int4', oprcode
=> 'int4um' },
581 { oid
=> '559', descr
=> 'negate',
582 oprname
=> '-', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int2',
583 oprresult
=> 'int2', oprcode
=> 'int2um' },
584 { oid
=> '584', descr
=> 'negate',
585 oprname
=> '-', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'float4',
586 oprresult
=> 'float4', oprcode
=> 'float4um' },
587 { oid
=> '585', descr
=> 'negate',
588 oprname
=> '-', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'float8',
589 oprresult
=> 'float8', oprcode
=> 'float8um' },
590 { oid
=> '586', descr
=> 'add',
591 oprname
=> '+', oprleft
=> 'float4', oprright
=> 'float4',
592 oprresult
=> 'float4', oprcom
=> '+(float4,float4)', oprcode
=> 'float4pl' },
593 { oid
=> '587', descr
=> 'subtract',
594 oprname
=> '-', oprleft
=> 'float4', oprright
=> 'float4',
595 oprresult
=> 'float4', oprcode
=> 'float4mi' },
596 { oid
=> '588', descr
=> 'divide',
597 oprname
=> '/', oprleft
=> 'float4', oprright
=> 'float4',
598 oprresult
=> 'float4', oprcode
=> 'float4div' },
599 { oid
=> '589', descr
=> 'multiply',
600 oprname
=> '*', oprleft
=> 'float4', oprright
=> 'float4',
601 oprresult
=> 'float4', oprcom
=> '*(float4,float4)', oprcode
=> 'float4mul' },
602 { oid
=> '590', descr
=> 'absolute value',
603 oprname
=> '@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'float4',
604 oprresult
=> 'float4', oprcode
=> 'float4abs' },
605 { oid
=> '591', descr
=> 'add',
606 oprname
=> '+', oprleft
=> 'float8', oprright
=> 'float8',
607 oprresult
=> 'float8', oprcom
=> '+(float8,float8)', oprcode
=> 'float8pl' },
608 { oid
=> '592', descr
=> 'subtract',
609 oprname
=> '-', oprleft
=> 'float8', oprright
=> 'float8',
610 oprresult
=> 'float8', oprcode
=> 'float8mi' },
611 { oid
=> '593', descr
=> 'divide',
612 oprname
=> '/', oprleft
=> 'float8', oprright
=> 'float8',
613 oprresult
=> 'float8', oprcode
=> 'float8div' },
614 { oid
=> '594', descr
=> 'multiply',
615 oprname
=> '*', oprleft
=> 'float8', oprright
=> 'float8',
616 oprresult
=> 'float8', oprcom
=> '*(float8,float8)', oprcode
=> 'float8mul' },
617 { oid
=> '595', descr
=> 'absolute value',
618 oprname
=> '@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'float8',
619 oprresult
=> 'float8', oprcode
=> 'float8abs' },
620 { oid
=> '596', descr
=> 'square root',
621 oprname
=> '|/', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'float8',
622 oprresult
=> 'float8', oprcode
=> 'dsqrt' },
623 { oid
=> '597', descr
=> 'cube root',
624 oprname
=> '||/', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'float8',
625 oprresult
=> 'float8', oprcode
=> 'dcbrt' },
627 { oid
=> '607', descr
=> 'equal',
628 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'oid',
629 oprright
=> 'oid', oprresult
=> 'bool', oprcom
=> '=(oid,oid)',
630 oprnegate
=> '<>(oid,oid)', oprcode
=> 'oideq', oprrest
=> 'eqsel',
631 oprjoin
=> 'eqjoinsel' },
632 { oid
=> '608', descr
=> 'not equal',
633 oprname
=> '<>', oprleft
=> 'oid', oprright
=> 'oid', oprresult
=> 'bool',
634 oprcom
=> '<>(oid,oid)', oprnegate
=> '=(oid,oid)', oprcode
=> 'oidne',
635 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
636 { oid
=> '609', descr
=> 'less than',
637 oprname
=> '<', oprleft
=> 'oid', oprright
=> 'oid', oprresult
=> 'bool',
638 oprcom
=> '>(oid,oid)', oprnegate
=> '>=(oid,oid)', oprcode
=> 'oidlt',
639 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
640 { oid
=> '610', descr
=> 'greater than',
641 oprname
=> '>', oprleft
=> 'oid', oprright
=> 'oid', oprresult
=> 'bool',
642 oprcom
=> '<(oid,oid)', oprnegate
=> '<=(oid,oid)', oprcode
=> 'oidgt',
643 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
644 { oid
=> '611', descr
=> 'less than or equal',
645 oprname
=> '<=', oprleft
=> 'oid', oprright
=> 'oid', oprresult
=> 'bool',
646 oprcom
=> '>=(oid,oid)', oprnegate
=> '>(oid,oid)', oprcode
=> 'oidle',
647 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
648 { oid
=> '612', descr
=> 'greater than or equal',
649 oprname
=> '>=', oprleft
=> 'oid', oprright
=> 'oid', oprresult
=> 'bool',
650 oprcom
=> '<=(oid,oid)', oprnegate
=> '<(oid,oid)', oprcode
=> 'oidge',
651 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
653 { oid
=> '644', descr
=> 'not equal',
654 oprname
=> '<>', oprleft
=> 'oidvector', oprright
=> 'oidvector',
655 oprresult
=> 'bool', oprcom
=> '<>(oidvector,oidvector)',
656 oprnegate
=> '=(oidvector,oidvector)', oprcode
=> 'oidvectorne',
657 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
658 { oid
=> '645', descr
=> 'less than',
659 oprname
=> '<', oprleft
=> 'oidvector', oprright
=> 'oidvector',
660 oprresult
=> 'bool', oprcom
=> '>(oidvector,oidvector)',
661 oprnegate
=> '>=(oidvector,oidvector)', oprcode
=> 'oidvectorlt',
662 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
663 { oid
=> '646', descr
=> 'greater than',
664 oprname
=> '>', oprleft
=> 'oidvector', oprright
=> 'oidvector',
665 oprresult
=> 'bool', oprcom
=> '<(oidvector,oidvector)',
666 oprnegate
=> '<=(oidvector,oidvector)', oprcode
=> 'oidvectorgt',
667 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
668 { oid
=> '647', descr
=> 'less than or equal',
669 oprname
=> '<=', oprleft
=> 'oidvector', oprright
=> 'oidvector',
670 oprresult
=> 'bool', oprcom
=> '>=(oidvector,oidvector)',
671 oprnegate
=> '>(oidvector,oidvector)', oprcode
=> 'oidvectorle',
672 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
673 { oid
=> '648', descr
=> 'greater than or equal',
674 oprname
=> '>=', oprleft
=> 'oidvector', oprright
=> 'oidvector',
675 oprresult
=> 'bool', oprcom
=> '<=(oidvector,oidvector)',
676 oprnegate
=> '<(oidvector,oidvector)', oprcode
=> 'oidvectorge',
677 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
678 { oid
=> '649', descr
=> 'equal',
679 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'oidvector',
680 oprright
=> 'oidvector', oprresult
=> 'bool',
681 oprcom
=> '=(oidvector,oidvector)', oprnegate
=> '<>(oidvector,oidvector)',
682 oprcode
=> 'oidvectoreq', oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
684 { oid
=> '613', descr
=> 'distance between',
685 oprname
=> '<->', oprleft
=> 'point', oprright
=> 'line',
686 oprresult
=> 'float8', oprcom
=> '<->(line,point)', oprcode
=> 'dist_pl' },
687 { oid
=> '760', descr
=> 'distance between',
688 oprname
=> '<->', oprleft
=> 'line', oprright
=> 'point',
689 oprresult
=> 'float8', oprcom
=> '<->(point,line)', oprcode
=> 'dist_lp' },
690 { oid
=> '614', descr
=> 'distance between',
691 oprname
=> '<->', oprleft
=> 'point', oprright
=> 'lseg',
692 oprresult
=> 'float8', oprcom
=> '<->(lseg,point)', oprcode
=> 'dist_ps' },
693 { oid
=> '761', descr
=> 'distance between',
694 oprname
=> '<->', oprleft
=> 'lseg', oprright
=> 'point',
695 oprresult
=> 'float8', oprcom
=> '<->(point,lseg)', oprcode
=> 'dist_sp' },
696 { oid
=> '615', descr
=> 'distance between',
697 oprname
=> '<->', oprleft
=> 'point', oprright
=> 'box',
698 oprresult
=> 'float8', oprcom
=> '<->(box,point)', oprcode
=> 'dist_pb' },
699 { oid
=> '606', descr
=> 'distance between',
700 oprname
=> '<->', oprleft
=> 'box', oprright
=> 'point',
701 oprresult
=> 'float8', oprcom
=> '<->(point,box)', oprcode
=> 'dist_bp' },
702 { oid
=> '616', descr
=> 'distance between',
703 oprname
=> '<->', oprleft
=> 'lseg', oprright
=> 'line',
704 oprresult
=> 'float8', oprcom
=> '<->(line,lseg)', oprcode
=> 'dist_sl' },
705 { oid
=> '762', descr
=> 'distance between',
706 oprname
=> '<->', oprleft
=> 'line', oprright
=> 'lseg',
707 oprresult
=> 'float8', oprcom
=> '<->(lseg,line)', oprcode
=> 'dist_ls' },
708 { oid
=> '617', descr
=> 'distance between',
709 oprname
=> '<->', oprleft
=> 'lseg', oprright
=> 'box', oprresult
=> 'float8',
710 oprcom
=> '<->(box,lseg)', oprcode
=> 'dist_sb' },
711 { oid
=> '763', descr
=> 'distance between',
712 oprname
=> '<->', oprleft
=> 'box', oprright
=> 'lseg', oprresult
=> 'float8',
713 oprcom
=> '<->(lseg,box)', oprcode
=> 'dist_bs' },
714 { oid
=> '618', descr
=> 'distance between',
715 oprname
=> '<->', oprleft
=> 'point', oprright
=> 'path',
716 oprresult
=> 'float8', oprcom
=> '<->(path,point)', oprcode
=> 'dist_ppath' },
717 { oid
=> '784', descr
=> 'distance between',
718 oprname
=> '<->', oprleft
=> 'path', oprright
=> 'point',
719 oprresult
=> 'float8', oprcom
=> '<->(point,path)', oprcode
=> 'dist_pathp' },
721 { oid
=> '620', descr
=> 'equal',
722 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'float4',
723 oprright
=> 'float4', oprresult
=> 'bool', oprcom
=> '=(float4,float4)',
724 oprnegate
=> '<>(float4,float4)', oprcode
=> 'float4eq', oprrest
=> 'eqsel',
725 oprjoin
=> 'eqjoinsel' },
726 { oid
=> '621', descr
=> 'not equal',
727 oprname
=> '<>', oprleft
=> 'float4', oprright
=> 'float4',
728 oprresult
=> 'bool', oprcom
=> '<>(float4,float4)',
729 oprnegate
=> '=(float4,float4)', oprcode
=> 'float4ne', oprrest
=> 'neqsel',
730 oprjoin
=> 'neqjoinsel' },
731 { oid
=> '622', descr
=> 'less than',
732 oprname
=> '<', oprleft
=> 'float4', oprright
=> 'float4',
733 oprresult
=> 'bool', oprcom
=> '>(float4,float4)',
734 oprnegate
=> '>=(float4,float4)', oprcode
=> 'float4lt',
735 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
736 { oid
=> '623', descr
=> 'greater than',
737 oprname
=> '>', oprleft
=> 'float4', oprright
=> 'float4',
738 oprresult
=> 'bool', oprcom
=> '<(float4,float4)',
739 oprnegate
=> '<=(float4,float4)', oprcode
=> 'float4gt',
740 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
741 { oid
=> '624', descr
=> 'less than or equal',
742 oprname
=> '<=', oprleft
=> 'float4', oprright
=> 'float4',
743 oprresult
=> 'bool', oprcom
=> '>=(float4,float4)',
744 oprnegate
=> '>(float4,float4)', oprcode
=> 'float4le',
745 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
746 { oid
=> '625', descr
=> 'greater than or equal',
747 oprname
=> '>=', oprleft
=> 'float4', oprright
=> 'float4',
748 oprresult
=> 'bool', oprcom
=> '<=(float4,float4)',
749 oprnegate
=> '<(float4,float4)', oprcode
=> 'float4ge',
750 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
751 { oid
=> '630', descr
=> 'not equal',
752 oprname
=> '<>', oprleft
=> 'char', oprright
=> 'char', oprresult
=> 'bool',
753 oprcom
=> '<>(char,char)', oprnegate
=> '=(char,char)', oprcode
=> 'charne',
754 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
756 { oid
=> '631', descr
=> 'less than',
757 oprname
=> '<', oprleft
=> 'char', oprright
=> 'char', oprresult
=> 'bool',
758 oprcom
=> '>(char,char)', oprnegate
=> '>=(char,char)', oprcode
=> 'charlt',
759 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
760 { oid
=> '632', descr
=> 'less than or equal',
761 oprname
=> '<=', oprleft
=> 'char', oprright
=> 'char', oprresult
=> 'bool',
762 oprcom
=> '>=(char,char)', oprnegate
=> '>(char,char)', oprcode
=> 'charle',
763 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
764 { oid
=> '633', descr
=> 'greater than',
765 oprname
=> '>', oprleft
=> 'char', oprright
=> 'char', oprresult
=> 'bool',
766 oprcom
=> '<(char,char)', oprnegate
=> '<=(char,char)', oprcode
=> 'chargt',
767 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
768 { oid
=> '634', descr
=> 'greater than or equal',
769 oprname
=> '>=', oprleft
=> 'char', oprright
=> 'char', oprresult
=> 'bool',
770 oprcom
=> '<=(char,char)', oprnegate
=> '<(char,char)', oprcode
=> 'charge',
771 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
773 { oid
=> '639', oid_symbol
=> 'OID_NAME_REGEXEQ_OP',
774 descr
=> 'matches regular expression, case-sensitive',
775 oprname
=> '~', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
776 oprnegate
=> '!~(name,text)', oprcode
=> 'nameregexeq',
777 oprrest
=> 'regexeqsel', oprjoin
=> 'regexeqjoinsel' },
778 { oid
=> '640', descr
=> 'does not match regular expression, case-sensitive',
779 oprname
=> '!~', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
780 oprnegate
=> '~(name,text)', oprcode
=> 'nameregexne',
781 oprrest
=> 'regexnesel', oprjoin
=> 'regexnejoinsel' },
782 { oid
=> '641', oid_symbol
=> 'OID_TEXT_REGEXEQ_OP',
783 descr
=> 'matches regular expression, case-sensitive',
784 oprname
=> '~', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
785 oprnegate
=> '!~(text,text)', oprcode
=> 'textregexeq',
786 oprrest
=> 'regexeqsel', oprjoin
=> 'regexeqjoinsel' },
787 { oid
=> '642', descr
=> 'does not match regular expression, case-sensitive',
788 oprname
=> '!~', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
789 oprnegate
=> '~(text,text)', oprcode
=> 'textregexne',
790 oprrest
=> 'regexnesel', oprjoin
=> 'regexnejoinsel' },
791 { oid
=> '643', descr
=> 'not equal',
792 oprname
=> '<>', oprleft
=> 'name', oprright
=> 'name', oprresult
=> 'bool',
793 oprcom
=> '<>(name,name)', oprnegate
=> '=(name,name)', oprcode
=> 'namene',
794 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
795 { oid
=> '654', descr
=> 'concatenate',
796 oprname
=> '||', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'text',
797 oprcode
=> 'textcat' },
799 { oid
=> '660', descr
=> 'less than',
800 oprname
=> '<', oprleft
=> 'name', oprright
=> 'name', oprresult
=> 'bool',
801 oprcom
=> '>(name,name)', oprnegate
=> '>=(name,name)', oprcode
=> 'namelt',
802 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
803 { oid
=> '661', descr
=> 'less than or equal',
804 oprname
=> '<=', oprleft
=> 'name', oprright
=> 'name', oprresult
=> 'bool',
805 oprcom
=> '>=(name,name)', oprnegate
=> '>(name,name)', oprcode
=> 'namele',
806 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
807 { oid
=> '662', descr
=> 'greater than',
808 oprname
=> '>', oprleft
=> 'name', oprright
=> 'name', oprresult
=> 'bool',
809 oprcom
=> '<(name,name)', oprnegate
=> '<=(name,name)', oprcode
=> 'namegt',
810 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
811 { oid
=> '663', descr
=> 'greater than or equal',
812 oprname
=> '>=', oprleft
=> 'name', oprright
=> 'name', oprresult
=> 'bool',
813 oprcom
=> '<=(name,name)', oprnegate
=> '<(name,name)', oprcode
=> 'namege',
814 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
815 { oid
=> '664', oid_symbol
=> 'TextLessOperator', descr
=> 'less than',
816 oprname
=> '<', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
817 oprcom
=> '>(text,text)', oprnegate
=> '>=(text,text)', oprcode
=> 'text_lt',
818 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
819 { oid
=> '665', descr
=> 'less than or equal',
820 oprname
=> '<=', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
821 oprcom
=> '>=(text,text)', oprnegate
=> '>(text,text)', oprcode
=> 'text_le',
822 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
823 { oid
=> '666', descr
=> 'greater than',
824 oprname
=> '>', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
825 oprcom
=> '<(text,text)', oprnegate
=> '<=(text,text)', oprcode
=> 'text_gt',
826 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
827 { oid
=> '667', oid_symbol
=> 'TextGreaterEqualOperator',
828 descr
=> 'greater than or equal',
829 oprname
=> '>=', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
830 oprcom
=> '<=(text,text)', oprnegate
=> '<(text,text)', oprcode
=> 'text_ge',
831 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
833 { oid
=> '670', descr
=> 'equal',
834 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'float8',
835 oprright
=> 'float8', oprresult
=> 'bool', oprcom
=> '=(float8,float8)',
836 oprnegate
=> '<>(float8,float8)', oprcode
=> 'float8eq', oprrest
=> 'eqsel',
837 oprjoin
=> 'eqjoinsel' },
838 { oid
=> '671', descr
=> 'not equal',
839 oprname
=> '<>', oprleft
=> 'float8', oprright
=> 'float8',
840 oprresult
=> 'bool', oprcom
=> '<>(float8,float8)',
841 oprnegate
=> '=(float8,float8)', oprcode
=> 'float8ne', oprrest
=> 'neqsel',
842 oprjoin
=> 'neqjoinsel' },
843 { oid
=> '672', oid_symbol
=> 'Float8LessOperator', descr
=> 'less than',
844 oprname
=> '<', oprleft
=> 'float8', oprright
=> 'float8',
845 oprresult
=> 'bool', oprcom
=> '>(float8,float8)',
846 oprnegate
=> '>=(float8,float8)', oprcode
=> 'float8lt',
847 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
848 { oid
=> '673', descr
=> 'less than or equal',
849 oprname
=> '<=', oprleft
=> 'float8', oprright
=> 'float8',
850 oprresult
=> 'bool', oprcom
=> '>=(float8,float8)',
851 oprnegate
=> '>(float8,float8)', oprcode
=> 'float8le',
852 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
853 { oid
=> '674', descr
=> 'greater than',
854 oprname
=> '>', oprleft
=> 'float8', oprright
=> 'float8',
855 oprresult
=> 'bool', oprcom
=> '<(float8,float8)',
856 oprnegate
=> '<=(float8,float8)', oprcode
=> 'float8gt',
857 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
858 { oid
=> '675', descr
=> 'greater than or equal',
859 oprname
=> '>=', oprleft
=> 'float8', oprright
=> 'float8',
860 oprresult
=> 'bool', oprcom
=> '<=(float8,float8)',
861 oprnegate
=> '<(float8,float8)', oprcode
=> 'float8ge',
862 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
864 { oid
=> '682', descr
=> 'absolute value',
865 oprname
=> '@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int2',
866 oprresult
=> 'int2', oprcode
=> 'int2abs' },
867 { oid
=> '684', descr
=> 'add',
868 oprname
=> '+', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'int8',
869 oprcom
=> '+(int8,int8)', oprcode
=> 'int8pl' },
870 { oid
=> '685', descr
=> 'subtract',
871 oprname
=> '-', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'int8',
872 oprcode
=> 'int8mi' },
873 { oid
=> '686', descr
=> 'multiply',
874 oprname
=> '*', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'int8',
875 oprcom
=> '*(int8,int8)', oprcode
=> 'int8mul' },
876 { oid
=> '687', descr
=> 'divide',
877 oprname
=> '/', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'int8',
878 oprcode
=> 'int8div' },
880 { oid
=> '688', descr
=> 'add',
881 oprname
=> '+', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'int8',
882 oprcom
=> '+(int4,int8)', oprcode
=> 'int84pl' },
883 { oid
=> '689', descr
=> 'subtract',
884 oprname
=> '-', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'int8',
885 oprcode
=> 'int84mi' },
886 { oid
=> '690', descr
=> 'multiply',
887 oprname
=> '*', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'int8',
888 oprcom
=> '*(int4,int8)', oprcode
=> 'int84mul' },
889 { oid
=> '691', descr
=> 'divide',
890 oprname
=> '/', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'int8',
891 oprcode
=> 'int84div' },
892 { oid
=> '692', descr
=> 'add',
893 oprname
=> '+', oprleft
=> 'int4', oprright
=> 'int8', oprresult
=> 'int8',
894 oprcom
=> '+(int8,int4)', oprcode
=> 'int48pl' },
895 { oid
=> '693', descr
=> 'subtract',
896 oprname
=> '-', oprleft
=> 'int4', oprright
=> 'int8', oprresult
=> 'int8',
897 oprcode
=> 'int48mi' },
898 { oid
=> '694', descr
=> 'multiply',
899 oprname
=> '*', oprleft
=> 'int4', oprright
=> 'int8', oprresult
=> 'int8',
900 oprcom
=> '*(int8,int4)', oprcode
=> 'int48mul' },
901 { oid
=> '695', descr
=> 'divide',
902 oprname
=> '/', oprleft
=> 'int4', oprright
=> 'int8', oprresult
=> 'int8',
903 oprcode
=> 'int48div' },
905 { oid
=> '818', descr
=> 'add',
906 oprname
=> '+', oprleft
=> 'int8', oprright
=> 'int2', oprresult
=> 'int8',
907 oprcom
=> '+(int2,int8)', oprcode
=> 'int82pl' },
908 { oid
=> '819', descr
=> 'subtract',
909 oprname
=> '-', oprleft
=> 'int8', oprright
=> 'int2', oprresult
=> 'int8',
910 oprcode
=> 'int82mi' },
911 { oid
=> '820', descr
=> 'multiply',
912 oprname
=> '*', oprleft
=> 'int8', oprright
=> 'int2', oprresult
=> 'int8',
913 oprcom
=> '*(int2,int8)', oprcode
=> 'int82mul' },
914 { oid
=> '821', descr
=> 'divide',
915 oprname
=> '/', oprleft
=> 'int8', oprright
=> 'int2', oprresult
=> 'int8',
916 oprcode
=> 'int82div' },
917 { oid
=> '822', descr
=> 'add',
918 oprname
=> '+', oprleft
=> 'int2', oprright
=> 'int8', oprresult
=> 'int8',
919 oprcom
=> '+(int8,int2)', oprcode
=> 'int28pl' },
920 { oid
=> '823', descr
=> 'subtract',
921 oprname
=> '-', oprleft
=> 'int2', oprright
=> 'int8', oprresult
=> 'int8',
922 oprcode
=> 'int28mi' },
923 { oid
=> '824', descr
=> 'multiply',
924 oprname
=> '*', oprleft
=> 'int2', oprright
=> 'int8', oprresult
=> 'int8',
925 oprcom
=> '*(int8,int2)', oprcode
=> 'int28mul' },
926 { oid
=> '825', descr
=> 'divide',
927 oprname
=> '/', oprleft
=> 'int2', oprright
=> 'int8', oprresult
=> 'int8',
928 oprcode
=> 'int28div' },
930 { oid
=> '706', descr
=> 'distance between',
931 oprname
=> '<->', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'float8',
932 oprcom
=> '<->(box,box)', oprcode
=> 'box_distance' },
933 { oid
=> '707', descr
=> 'distance between',
934 oprname
=> '<->', oprleft
=> 'path', oprright
=> 'path',
935 oprresult
=> 'float8', oprcom
=> '<->(path,path)',
936 oprcode
=> 'path_distance' },
937 { oid
=> '708', descr
=> 'distance between',
938 oprname
=> '<->', oprleft
=> 'line', oprright
=> 'line',
939 oprresult
=> 'float8', oprcom
=> '<->(line,line)',
940 oprcode
=> 'line_distance' },
941 { oid
=> '709', descr
=> 'distance between',
942 oprname
=> '<->', oprleft
=> 'lseg', oprright
=> 'lseg',
943 oprresult
=> 'float8', oprcom
=> '<->(lseg,lseg)',
944 oprcode
=> 'lseg_distance' },
945 { oid
=> '712', descr
=> 'distance between',
946 oprname
=> '<->', oprleft
=> 'polygon', oprright
=> 'polygon',
947 oprresult
=> 'float8', oprcom
=> '<->(polygon,polygon)',
948 oprcode
=> 'poly_distance' },
950 { oid
=> '713', descr
=> 'not equal',
951 oprname
=> '<>', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'bool',
952 oprcom
=> '<>(point,point)', oprnegate
=> '~=(point,point)',
953 oprcode
=> 'point_ne', oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
955 # add translation/rotation/scaling operators for geometric types. - thomas 97/05/10
956 { oid
=> '731', descr
=> 'add points (translate)',
957 oprname
=> '+', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'point',
958 oprcom
=> '+(point,point)', oprcode
=> 'point_add' },
959 { oid
=> '732', descr
=> 'subtract points (translate)',
960 oprname
=> '-', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'point',
961 oprcode
=> 'point_sub' },
962 { oid
=> '733', descr
=> 'multiply points (scale/rotate)',
963 oprname
=> '*', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'point',
964 oprcom
=> '*(point,point)', oprcode
=> 'point_mul' },
965 { oid
=> '734', descr
=> 'divide points (scale/rotate)',
966 oprname
=> '/', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'point',
967 oprcode
=> 'point_div' },
968 { oid
=> '735', descr
=> 'concatenate',
969 oprname
=> '+', oprleft
=> 'path', oprright
=> 'path', oprresult
=> 'path',
970 oprcom
=> '+(path,path)', oprcode
=> 'path_add' },
971 { oid
=> '736', descr
=> 'add (translate path)',
972 oprname
=> '+', oprleft
=> 'path', oprright
=> 'point', oprresult
=> 'path',
973 oprcode
=> 'path_add_pt' },
974 { oid
=> '737', descr
=> 'subtract (translate path)',
975 oprname
=> '-', oprleft
=> 'path', oprright
=> 'point', oprresult
=> 'path',
976 oprcode
=> 'path_sub_pt' },
977 { oid
=> '738', descr
=> 'multiply (rotate/scale path)',
978 oprname
=> '*', oprleft
=> 'path', oprright
=> 'point', oprresult
=> 'path',
979 oprcode
=> 'path_mul_pt' },
980 { oid
=> '739', descr
=> 'divide (rotate/scale path)',
981 oprname
=> '/', oprleft
=> 'path', oprright
=> 'point', oprresult
=> 'path',
982 oprcode
=> 'path_div_pt' },
983 { oid
=> '755', descr
=> 'contains',
984 oprname
=> '@>', oprleft
=> 'path', oprright
=> 'point', oprresult
=> 'bool',
985 oprcom
=> '<@(point,path)', oprcode
=> 'path_contain_pt' },
986 { oid
=> '756', descr
=> 'is contained by',
987 oprname
=> '<@', oprleft
=> 'point', oprright
=> 'polygon',
988 oprresult
=> 'bool', oprcom
=> '@>(polygon,point)',
989 oprcode
=> 'pt_contained_poly', oprrest
=> 'contsel',
990 oprjoin
=> 'contjoinsel' },
991 { oid
=> '757', descr
=> 'contains',
992 oprname
=> '@>', oprleft
=> 'polygon', oprright
=> 'point',
993 oprresult
=> 'bool', oprcom
=> '<@(point,polygon)',
994 oprcode
=> 'poly_contain_pt', oprrest
=> 'contsel',
995 oprjoin
=> 'contjoinsel' },
996 { oid
=> '758', descr
=> 'is contained by',
997 oprname
=> '<@', oprleft
=> 'point', oprright
=> 'circle',
998 oprresult
=> 'bool', oprcom
=> '@>(circle,point)',
999 oprcode
=> 'pt_contained_circle', oprrest
=> 'contsel',
1000 oprjoin
=> 'contjoinsel' },
1001 { oid
=> '759', descr
=> 'contains',
1002 oprname
=> '@>', oprleft
=> 'circle', oprright
=> 'point',
1003 oprresult
=> 'bool', oprcom
=> '<@(point,circle)',
1004 oprcode
=> 'circle_contain_pt', oprrest
=> 'contsel',
1005 oprjoin
=> 'contjoinsel' },
1007 { oid
=> '773', descr
=> 'absolute value',
1008 oprname
=> '@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int4',
1009 oprresult
=> 'int4', oprcode
=> 'int4abs' },
1011 # additional operators for geometric types - thomas 1997-07-09
1012 { oid
=> '792', descr
=> 'equal',
1013 oprname
=> '=', oprleft
=> 'path', oprright
=> 'path', oprresult
=> 'bool',
1014 oprcom
=> '=(path,path)', oprcode
=> 'path_n_eq', oprrest
=> 'eqsel',
1015 oprjoin
=> 'eqjoinsel' },
1016 { oid
=> '793', descr
=> 'less than',
1017 oprname
=> '<', oprleft
=> 'path', oprright
=> 'path', oprresult
=> 'bool',
1018 oprcom
=> '>(path,path)', oprcode
=> 'path_n_lt' },
1019 { oid
=> '794', descr
=> 'greater than',
1020 oprname
=> '>', oprleft
=> 'path', oprright
=> 'path', oprresult
=> 'bool',
1021 oprcom
=> '<(path,path)', oprcode
=> 'path_n_gt' },
1022 { oid
=> '795', descr
=> 'less than or equal',
1023 oprname
=> '<=', oprleft
=> 'path', oprright
=> 'path', oprresult
=> 'bool',
1024 oprcom
=> '>=(path,path)', oprcode
=> 'path_n_le' },
1025 { oid
=> '796', descr
=> 'greater than or equal',
1026 oprname
=> '>=', oprleft
=> 'path', oprright
=> 'path', oprresult
=> 'bool',
1027 oprcom
=> '<=(path,path)', oprcode
=> 'path_n_ge' },
1028 { oid
=> '797', descr
=> 'number of points',
1029 oprname
=> '#', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'path',
1030 oprresult
=> 'int4', oprcode
=> 'path_npoints' },
1031 { oid
=> '798', descr
=> 'intersect',
1032 oprname
=> '?#', oprleft
=> 'path', oprright
=> 'path', oprresult
=> 'bool',
1033 oprcode
=> 'path_inter' },
1034 { oid
=> '799', descr
=> 'sum of path segment lengths',
1035 oprname
=> '@-@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'path',
1036 oprresult
=> 'float8', oprcode
=> 'path_length' },
1037 { oid
=> '800', descr
=> 'is above (allows touching)',
1038 oprname
=> '>^', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
1039 oprcode
=> 'box_above_eq', oprrest
=> 'positionsel',
1040 oprjoin
=> 'positionjoinsel' },
1041 { oid
=> '801', descr
=> 'is below (allows touching)',
1042 oprname
=> '<^', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
1043 oprcode
=> 'box_below_eq', oprrest
=> 'positionsel',
1044 oprjoin
=> 'positionjoinsel' },
1045 { oid
=> '802', descr
=> 'deprecated, use && instead',
1046 oprname
=> '?#', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
1047 oprcode
=> 'box_overlap', oprrest
=> 'areasel', oprjoin
=> 'areajoinsel' },
1048 { oid
=> '803', descr
=> 'box intersection',
1049 oprname
=> '#', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'box',
1050 oprcode
=> 'box_intersect' },
1051 { oid
=> '804', descr
=> 'add point to box (translate)',
1052 oprname
=> '+', oprleft
=> 'box', oprright
=> 'point', oprresult
=> 'box',
1053 oprcode
=> 'box_add' },
1054 { oid
=> '805', descr
=> 'subtract point from box (translate)',
1055 oprname
=> '-', oprleft
=> 'box', oprright
=> 'point', oprresult
=> 'box',
1056 oprcode
=> 'box_sub' },
1057 { oid
=> '806', descr
=> 'multiply box by point (scale)',
1058 oprname
=> '*', oprleft
=> 'box', oprright
=> 'point', oprresult
=> 'box',
1059 oprcode
=> 'box_mul' },
1060 { oid
=> '807', descr
=> 'divide box by point (scale)',
1061 oprname
=> '/', oprleft
=> 'box', oprright
=> 'point', oprresult
=> 'box',
1062 oprcode
=> 'box_div' },
1063 { oid
=> '808', descr
=> 'horizontally aligned',
1064 oprname
=> '?-', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'bool',
1065 oprcom
=> '?-(point,point)', oprcode
=> 'point_horiz' },
1066 { oid
=> '809', descr
=> 'vertically aligned',
1067 oprname
=> '?|', oprleft
=> 'point', oprright
=> 'point', oprresult
=> 'bool',
1068 oprcom
=> '?|(point,point)', oprcode
=> 'point_vert' },
1070 { oid
=> '843', descr
=> 'multiply',
1071 oprname
=> '*', oprleft
=> 'money', oprright
=> 'float4',
1072 oprresult
=> 'money', oprcom
=> '*(float4,money)',
1073 oprcode
=> 'cash_mul_flt4' },
1074 { oid
=> '844', descr
=> 'divide',
1075 oprname
=> '/', oprleft
=> 'money', oprright
=> 'float4',
1076 oprresult
=> 'money', oprcode
=> 'cash_div_flt4' },
1077 { oid
=> '845', descr
=> 'multiply',
1078 oprname
=> '*', oprleft
=> 'float4', oprright
=> 'money',
1079 oprresult
=> 'money', oprcom
=> '*(money,float4)',
1080 oprcode
=> 'flt4_mul_cash' },
1082 { oid
=> '900', descr
=> 'equal',
1083 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'money', oprright
=> 'money',
1084 oprresult
=> 'bool', oprcom
=> '=(money,money)',
1085 oprnegate
=> '<>(money,money)', oprcode
=> 'cash_eq', oprrest
=> 'eqsel',
1086 oprjoin
=> 'eqjoinsel' },
1087 { oid
=> '901', descr
=> 'not equal',
1088 oprname
=> '<>', oprleft
=> 'money', oprright
=> 'money', oprresult
=> 'bool',
1089 oprcom
=> '<>(money,money)', oprnegate
=> '=(money,money)',
1090 oprcode
=> 'cash_ne', oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
1091 { oid
=> '902', descr
=> 'less than',
1092 oprname
=> '<', oprleft
=> 'money', oprright
=> 'money', oprresult
=> 'bool',
1093 oprcom
=> '>(money,money)', oprnegate
=> '>=(money,money)',
1094 oprcode
=> 'cash_lt', oprrest
=> 'scalarltsel',
1095 oprjoin
=> 'scalarltjoinsel' },
1096 { oid
=> '903', descr
=> 'greater than',
1097 oprname
=> '>', oprleft
=> 'money', oprright
=> 'money', oprresult
=> 'bool',
1098 oprcom
=> '<(money,money)', oprnegate
=> '<=(money,money)',
1099 oprcode
=> 'cash_gt', oprrest
=> 'scalargtsel',
1100 oprjoin
=> 'scalargtjoinsel' },
1101 { oid
=> '904', descr
=> 'less than or equal',
1102 oprname
=> '<=', oprleft
=> 'money', oprright
=> 'money', oprresult
=> 'bool',
1103 oprcom
=> '>=(money,money)', oprnegate
=> '>(money,money)',
1104 oprcode
=> 'cash_le', oprrest
=> 'scalarlesel',
1105 oprjoin
=> 'scalarlejoinsel' },
1106 { oid
=> '905', descr
=> 'greater than or equal',
1107 oprname
=> '>=', oprleft
=> 'money', oprright
=> 'money', oprresult
=> 'bool',
1108 oprcom
=> '<=(money,money)', oprnegate
=> '<(money,money)',
1109 oprcode
=> 'cash_ge', oprrest
=> 'scalargesel',
1110 oprjoin
=> 'scalargejoinsel' },
1111 { oid
=> '906', descr
=> 'add',
1112 oprname
=> '+', oprleft
=> 'money', oprright
=> 'money', oprresult
=> 'money',
1113 oprcom
=> '+(money,money)', oprcode
=> 'cash_pl' },
1114 { oid
=> '907', descr
=> 'subtract',
1115 oprname
=> '-', oprleft
=> 'money', oprright
=> 'money', oprresult
=> 'money',
1116 oprcode
=> 'cash_mi' },
1117 { oid
=> '908', descr
=> 'multiply',
1118 oprname
=> '*', oprleft
=> 'money', oprright
=> 'float8',
1119 oprresult
=> 'money', oprcom
=> '*(float8,money)',
1120 oprcode
=> 'cash_mul_flt8' },
1121 { oid
=> '909', descr
=> 'divide',
1122 oprname
=> '/', oprleft
=> 'money', oprright
=> 'float8',
1123 oprresult
=> 'money', oprcode
=> 'cash_div_flt8' },
1124 { oid
=> '3346', descr
=> 'multiply',
1125 oprname
=> '*', oprleft
=> 'money', oprright
=> 'int8', oprresult
=> 'money',
1126 oprcom
=> '*(int8,money)', oprcode
=> 'cash_mul_int8' },
1127 { oid
=> '3347', descr
=> 'divide',
1128 oprname
=> '/', oprleft
=> 'money', oprright
=> 'int8', oprresult
=> 'money',
1129 oprcode
=> 'cash_div_int8' },
1130 { oid
=> '912', descr
=> 'multiply',
1131 oprname
=> '*', oprleft
=> 'money', oprright
=> 'int4', oprresult
=> 'money',
1132 oprcom
=> '*(int4,money)', oprcode
=> 'cash_mul_int4' },
1133 { oid
=> '913', descr
=> 'divide',
1134 oprname
=> '/', oprleft
=> 'money', oprright
=> 'int4', oprresult
=> 'money',
1135 oprcode
=> 'cash_div_int4' },
1136 { oid
=> '914', descr
=> 'multiply',
1137 oprname
=> '*', oprleft
=> 'money', oprright
=> 'int2', oprresult
=> 'money',
1138 oprcom
=> '*(int2,money)', oprcode
=> 'cash_mul_int2' },
1139 { oid
=> '915', descr
=> 'divide',
1140 oprname
=> '/', oprleft
=> 'money', oprright
=> 'int2', oprresult
=> 'money',
1141 oprcode
=> 'cash_div_int2' },
1142 { oid
=> '916', descr
=> 'multiply',
1143 oprname
=> '*', oprleft
=> 'float8', oprright
=> 'money',
1144 oprresult
=> 'money', oprcom
=> '*(money,float8)',
1145 oprcode
=> 'flt8_mul_cash' },
1146 { oid
=> '3349', descr
=> 'multiply',
1147 oprname
=> '*', oprleft
=> 'int8', oprright
=> 'money', oprresult
=> 'money',
1148 oprcom
=> '*(money,int8)', oprcode
=> 'int8_mul_cash' },
1149 { oid
=> '917', descr
=> 'multiply',
1150 oprname
=> '*', oprleft
=> 'int4', oprright
=> 'money', oprresult
=> 'money',
1151 oprcom
=> '*(money,int4)', oprcode
=> 'int4_mul_cash' },
1152 { oid
=> '918', descr
=> 'multiply',
1153 oprname
=> '*', oprleft
=> 'int2', oprright
=> 'money', oprresult
=> 'money',
1154 oprcom
=> '*(money,int2)', oprcode
=> 'int2_mul_cash' },
1155 { oid
=> '3825', descr
=> 'divide',
1156 oprname
=> '/', oprleft
=> 'money', oprright
=> 'money',
1157 oprresult
=> 'float8', oprcode
=> 'cash_div_cash' },
1159 { oid
=> '965', descr
=> 'exponentiation',
1160 oprname
=> '^', oprleft
=> 'float8', oprright
=> 'float8',
1161 oprresult
=> 'float8', oprcode
=> 'dpow' },
1162 { oid
=> '966', descr
=> 'add/update ACL item',
1163 oprname
=> '+', oprleft
=> '_aclitem', oprright
=> 'aclitem',
1164 oprresult
=> '_aclitem', oprcode
=> 'aclinsert' },
1165 { oid
=> '967', descr
=> 'remove ACL item',
1166 oprname
=> '-', oprleft
=> '_aclitem', oprright
=> 'aclitem',
1167 oprresult
=> '_aclitem', oprcode
=> 'aclremove' },
1168 { oid
=> '968', descr
=> 'contains',
1169 oprname
=> '@>', oprleft
=> '_aclitem', oprright
=> 'aclitem',
1170 oprresult
=> 'bool', oprcode
=> 'aclcontains' },
1171 { oid
=> '974', descr
=> 'equal',
1172 oprname
=> '=', oprcanhash
=> 't', oprleft
=> 'aclitem',
1173 oprright
=> 'aclitem', oprresult
=> 'bool', oprcom
=> '=(aclitem,aclitem)',
1174 oprcode
=> 'aclitemeq', oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
1176 # additional geometric operators - thomas 1997-07-09
1177 { oid
=> '969', descr
=> 'center of',
1178 oprname
=> '@@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'lseg',
1179 oprresult
=> 'point', oprcode
=> 'lseg_center' },
1180 { oid
=> '971', descr
=> 'center of',
1181 oprname
=> '@@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'polygon',
1182 oprresult
=> 'point', oprcode
=> 'poly_center' },
1184 { oid
=> '1054', oid_symbol
=> 'BpcharEqualOperator', descr
=> 'equal',
1185 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'bpchar',
1186 oprright
=> 'bpchar', oprresult
=> 'bool', oprcom
=> '=(bpchar,bpchar)',
1187 oprnegate
=> '<>(bpchar,bpchar)', oprcode
=> 'bpchareq', oprrest
=> 'eqsel',
1188 oprjoin
=> 'eqjoinsel' },
1190 { oid
=> '1055', oid_symbol
=> 'OID_BPCHAR_REGEXEQ_OP',
1191 descr
=> 'matches regular expression, case-sensitive',
1192 oprname
=> '~', oprleft
=> 'bpchar', oprright
=> 'text', oprresult
=> 'bool',
1193 oprnegate
=> '!~(bpchar,text)', oprcode
=> 'bpcharregexeq',
1194 oprrest
=> 'regexeqsel', oprjoin
=> 'regexeqjoinsel' },
1195 { oid
=> '1056', descr
=> 'does not match regular expression, case-sensitive',
1196 oprname
=> '!~', oprleft
=> 'bpchar', oprright
=> 'text', oprresult
=> 'bool',
1197 oprnegate
=> '~(bpchar,text)', oprcode
=> 'bpcharregexne',
1198 oprrest
=> 'regexnesel', oprjoin
=> 'regexnejoinsel' },
1199 { oid
=> '1057', descr
=> 'not equal',
1200 oprname
=> '<>', oprleft
=> 'bpchar', oprright
=> 'bpchar',
1201 oprresult
=> 'bool', oprcom
=> '<>(bpchar,bpchar)',
1202 oprnegate
=> '=(bpchar,bpchar)', oprcode
=> 'bpcharne', oprrest
=> 'neqsel',
1203 oprjoin
=> 'neqjoinsel' },
1204 { oid
=> '1058', oid_symbol
=> 'BpcharLessOperator', descr
=> 'less than',
1205 oprname
=> '<', oprleft
=> 'bpchar', oprright
=> 'bpchar',
1206 oprresult
=> 'bool', oprcom
=> '>(bpchar,bpchar)',
1207 oprnegate
=> '>=(bpchar,bpchar)', oprcode
=> 'bpcharlt',
1208 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1209 { oid
=> '1059', descr
=> 'less than or equal',
1210 oprname
=> '<=', oprleft
=> 'bpchar', oprright
=> 'bpchar',
1211 oprresult
=> 'bool', oprcom
=> '>=(bpchar,bpchar)',
1212 oprnegate
=> '>(bpchar,bpchar)', oprcode
=> 'bpcharle',
1213 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1214 { oid
=> '1060', descr
=> 'greater than',
1215 oprname
=> '>', oprleft
=> 'bpchar', oprright
=> 'bpchar',
1216 oprresult
=> 'bool', oprcom
=> '<(bpchar,bpchar)',
1217 oprnegate
=> '<=(bpchar,bpchar)', oprcode
=> 'bpchargt',
1218 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1219 { oid
=> '1061', oid_symbol
=> 'BpcharGreaterEqualOperator',
1220 descr
=> 'greater than or equal',
1221 oprname
=> '>=', oprleft
=> 'bpchar', oprright
=> 'bpchar',
1222 oprresult
=> 'bool', oprcom
=> '<=(bpchar,bpchar)',
1223 oprnegate
=> '<(bpchar,bpchar)', oprcode
=> 'bpcharge',
1224 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1226 # generic array comparison operators
1227 { oid
=> '1070', oid_symbol
=> 'ARRAY_EQ_OP', descr
=> 'equal',
1228 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'anyarray',
1229 oprright
=> 'anyarray', oprresult
=> 'bool', oprcom
=> '=(anyarray,anyarray)',
1230 oprnegate
=> '<>(anyarray,anyarray)', oprcode
=> 'array_eq',
1231 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
1232 { oid
=> '1071', descr
=> 'not equal',
1233 oprname
=> '<>', oprleft
=> 'anyarray', oprright
=> 'anyarray',
1234 oprresult
=> 'bool', oprcom
=> '<>(anyarray,anyarray)',
1235 oprnegate
=> '=(anyarray,anyarray)', oprcode
=> 'array_ne',
1236 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
1237 { oid
=> '1072', oid_symbol
=> 'ARRAY_LT_OP', descr
=> 'less than',
1238 oprname
=> '<', oprleft
=> 'anyarray', oprright
=> 'anyarray',
1239 oprresult
=> 'bool', oprcom
=> '>(anyarray,anyarray)',
1240 oprnegate
=> '>=(anyarray,anyarray)', oprcode
=> 'array_lt',
1241 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1242 { oid
=> '1073', oid_symbol
=> 'ARRAY_GT_OP', descr
=> 'greater than',
1243 oprname
=> '>', oprleft
=> 'anyarray', oprright
=> 'anyarray',
1244 oprresult
=> 'bool', oprcom
=> '<(anyarray,anyarray)',
1245 oprnegate
=> '<=(anyarray,anyarray)', oprcode
=> 'array_gt',
1246 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1247 { oid
=> '1074', descr
=> 'less than or equal',
1248 oprname
=> '<=', oprleft
=> 'anyarray', oprright
=> 'anyarray',
1249 oprresult
=> 'bool', oprcom
=> '>=(anyarray,anyarray)',
1250 oprnegate
=> '>(anyarray,anyarray)', oprcode
=> 'array_le',
1251 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1252 { oid
=> '1075', descr
=> 'greater than or equal',
1253 oprname
=> '>=', oprleft
=> 'anyarray', oprright
=> 'anyarray',
1254 oprresult
=> 'bool', oprcom
=> '<=(anyarray,anyarray)',
1255 oprnegate
=> '<(anyarray,anyarray)', oprcode
=> 'array_ge',
1256 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1259 { oid
=> '1076', descr
=> 'add',
1260 oprname
=> '+', oprleft
=> 'date', oprright
=> 'interval',
1261 oprresult
=> 'timestamp', oprcom
=> '+(interval,date)',
1262 oprcode
=> 'date_pl_interval' },
1263 { oid
=> '1077', descr
=> 'subtract',
1264 oprname
=> '-', oprleft
=> 'date', oprright
=> 'interval',
1265 oprresult
=> 'timestamp', oprcode
=> 'date_mi_interval' },
1266 { oid
=> '1093', descr
=> 'equal',
1267 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'date',
1268 oprright
=> 'date', oprresult
=> 'bool', oprcom
=> '=(date,date)',
1269 oprnegate
=> '<>(date,date)', oprcode
=> 'date_eq', oprrest
=> 'eqsel',
1270 oprjoin
=> 'eqjoinsel' },
1271 { oid
=> '1094', descr
=> 'not equal',
1272 oprname
=> '<>', oprleft
=> 'date', oprright
=> 'date', oprresult
=> 'bool',
1273 oprcom
=> '<>(date,date)', oprnegate
=> '=(date,date)', oprcode
=> 'date_ne',
1274 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
1275 { oid
=> '1095', descr
=> 'less than',
1276 oprname
=> '<', oprleft
=> 'date', oprright
=> 'date', oprresult
=> 'bool',
1277 oprcom
=> '>(date,date)', oprnegate
=> '>=(date,date)', oprcode
=> 'date_lt',
1278 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1279 { oid
=> '1096', descr
=> 'less than or equal',
1280 oprname
=> '<=', oprleft
=> 'date', oprright
=> 'date', oprresult
=> 'bool',
1281 oprcom
=> '>=(date,date)', oprnegate
=> '>(date,date)', oprcode
=> 'date_le',
1282 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1283 { oid
=> '1097', descr
=> 'greater than',
1284 oprname
=> '>', oprleft
=> 'date', oprright
=> 'date', oprresult
=> 'bool',
1285 oprcom
=> '<(date,date)', oprnegate
=> '<=(date,date)', oprcode
=> 'date_gt',
1286 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1287 { oid
=> '1098', descr
=> 'greater than or equal',
1288 oprname
=> '>=', oprleft
=> 'date', oprright
=> 'date', oprresult
=> 'bool',
1289 oprcom
=> '<=(date,date)', oprnegate
=> '<(date,date)', oprcode
=> 'date_ge',
1290 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1291 { oid
=> '1099', descr
=> 'subtract',
1292 oprname
=> '-', oprleft
=> 'date', oprright
=> 'date', oprresult
=> 'int4',
1293 oprcode
=> 'date_mi' },
1294 { oid
=> '1100', descr
=> 'add',
1295 oprname
=> '+', oprleft
=> 'date', oprright
=> 'int4', oprresult
=> 'date',
1296 oprcom
=> '+(int4,date)', oprcode
=> 'date_pli' },
1297 { oid
=> '1101', descr
=> 'subtract',
1298 oprname
=> '-', oprleft
=> 'date', oprright
=> 'int4', oprresult
=> 'date',
1299 oprcode
=> 'date_mii' },
1302 { oid
=> '1108', descr
=> 'equal',
1303 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'time',
1304 oprright
=> 'time', oprresult
=> 'bool', oprcom
=> '=(time,time)',
1305 oprnegate
=> '<>(time,time)', oprcode
=> 'time_eq', oprrest
=> 'eqsel',
1306 oprjoin
=> 'eqjoinsel' },
1307 { oid
=> '1109', descr
=> 'not equal',
1308 oprname
=> '<>', oprleft
=> 'time', oprright
=> 'time', oprresult
=> 'bool',
1309 oprcom
=> '<>(time,time)', oprnegate
=> '=(time,time)', oprcode
=> 'time_ne',
1310 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
1311 { oid
=> '1110', descr
=> 'less than',
1312 oprname
=> '<', oprleft
=> 'time', oprright
=> 'time', oprresult
=> 'bool',
1313 oprcom
=> '>(time,time)', oprnegate
=> '>=(time,time)', oprcode
=> 'time_lt',
1314 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1315 { oid
=> '1111', descr
=> 'less than or equal',
1316 oprname
=> '<=', oprleft
=> 'time', oprright
=> 'time', oprresult
=> 'bool',
1317 oprcom
=> '>=(time,time)', oprnegate
=> '>(time,time)', oprcode
=> 'time_le',
1318 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1319 { oid
=> '1112', descr
=> 'greater than',
1320 oprname
=> '>', oprleft
=> 'time', oprright
=> 'time', oprresult
=> 'bool',
1321 oprcom
=> '<(time,time)', oprnegate
=> '<=(time,time)', oprcode
=> 'time_gt',
1322 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1323 { oid
=> '1113', descr
=> 'greater than or equal',
1324 oprname
=> '>=', oprleft
=> 'time', oprright
=> 'time', oprresult
=> 'bool',
1325 oprcom
=> '<=(time,time)', oprnegate
=> '<(time,time)', oprcode
=> 'time_ge',
1326 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1329 { oid
=> '1550', descr
=> 'equal',
1330 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'timetz',
1331 oprright
=> 'timetz', oprresult
=> 'bool', oprcom
=> '=(timetz,timetz)',
1332 oprnegate
=> '<>(timetz,timetz)', oprcode
=> 'timetz_eq', oprrest
=> 'eqsel',
1333 oprjoin
=> 'eqjoinsel' },
1334 { oid
=> '1551', descr
=> 'not equal',
1335 oprname
=> '<>', oprleft
=> 'timetz', oprright
=> 'timetz',
1336 oprresult
=> 'bool', oprcom
=> '<>(timetz,timetz)',
1337 oprnegate
=> '=(timetz,timetz)', oprcode
=> 'timetz_ne', oprrest
=> 'neqsel',
1338 oprjoin
=> 'neqjoinsel' },
1339 { oid
=> '1552', descr
=> 'less than',
1340 oprname
=> '<', oprleft
=> 'timetz', oprright
=> 'timetz',
1341 oprresult
=> 'bool', oprcom
=> '>(timetz,timetz)',
1342 oprnegate
=> '>=(timetz,timetz)', oprcode
=> 'timetz_lt',
1343 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1344 { oid
=> '1553', descr
=> 'less than or equal',
1345 oprname
=> '<=', oprleft
=> 'timetz', oprright
=> 'timetz',
1346 oprresult
=> 'bool', oprcom
=> '>=(timetz,timetz)',
1347 oprnegate
=> '>(timetz,timetz)', oprcode
=> 'timetz_le',
1348 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1349 { oid
=> '1554', descr
=> 'greater than',
1350 oprname
=> '>', oprleft
=> 'timetz', oprright
=> 'timetz',
1351 oprresult
=> 'bool', oprcom
=> '<(timetz,timetz)',
1352 oprnegate
=> '<=(timetz,timetz)', oprcode
=> 'timetz_gt',
1353 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1354 { oid
=> '1555', descr
=> 'greater than or equal',
1355 oprname
=> '>=', oprleft
=> 'timetz', oprright
=> 'timetz',
1356 oprresult
=> 'bool', oprcom
=> '<=(timetz,timetz)',
1357 oprnegate
=> '<(timetz,timetz)', oprcode
=> 'timetz_ge',
1358 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1361 { oid
=> '1116', descr
=> 'add',
1362 oprname
=> '+', oprleft
=> 'float4', oprright
=> 'float8',
1363 oprresult
=> 'float8', oprcom
=> '+(float8,float4)', oprcode
=> 'float48pl' },
1364 { oid
=> '1117', descr
=> 'subtract',
1365 oprname
=> '-', oprleft
=> 'float4', oprright
=> 'float8',
1366 oprresult
=> 'float8', oprcode
=> 'float48mi' },
1367 { oid
=> '1118', descr
=> 'divide',
1368 oprname
=> '/', oprleft
=> 'float4', oprright
=> 'float8',
1369 oprresult
=> 'float8', oprcode
=> 'float48div' },
1370 { oid
=> '1119', descr
=> 'multiply',
1371 oprname
=> '*', oprleft
=> 'float4', oprright
=> 'float8',
1372 oprresult
=> 'float8', oprcom
=> '*(float8,float4)',
1373 oprcode
=> 'float48mul' },
1374 { oid
=> '1120', descr
=> 'equal',
1375 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'float4',
1376 oprright
=> 'float8', oprresult
=> 'bool', oprcom
=> '=(float8,float4)',
1377 oprnegate
=> '<>(float4,float8)', oprcode
=> 'float48eq', oprrest
=> 'eqsel',
1378 oprjoin
=> 'eqjoinsel' },
1379 { oid
=> '1121', descr
=> 'not equal',
1380 oprname
=> '<>', oprleft
=> 'float4', oprright
=> 'float8',
1381 oprresult
=> 'bool', oprcom
=> '<>(float8,float4)',
1382 oprnegate
=> '=(float4,float8)', oprcode
=> 'float48ne', oprrest
=> 'neqsel',
1383 oprjoin
=> 'neqjoinsel' },
1384 { oid
=> '1122', descr
=> 'less than',
1385 oprname
=> '<', oprleft
=> 'float4', oprright
=> 'float8',
1386 oprresult
=> 'bool', oprcom
=> '>(float8,float4)',
1387 oprnegate
=> '>=(float4,float8)', oprcode
=> 'float48lt',
1388 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1389 { oid
=> '1123', descr
=> 'greater than',
1390 oprname
=> '>', oprleft
=> 'float4', oprright
=> 'float8',
1391 oprresult
=> 'bool', oprcom
=> '<(float8,float4)',
1392 oprnegate
=> '<=(float4,float8)', oprcode
=> 'float48gt',
1393 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1394 { oid
=> '1124', descr
=> 'less than or equal',
1395 oprname
=> '<=', oprleft
=> 'float4', oprright
=> 'float8',
1396 oprresult
=> 'bool', oprcom
=> '>=(float8,float4)',
1397 oprnegate
=> '>(float4,float8)', oprcode
=> 'float48le',
1398 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1399 { oid
=> '1125', descr
=> 'greater than or equal',
1400 oprname
=> '>=', oprleft
=> 'float4', oprright
=> 'float8',
1401 oprresult
=> 'bool', oprcom
=> '<=(float8,float4)',
1402 oprnegate
=> '<(float4,float8)', oprcode
=> 'float48ge',
1403 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1406 { oid
=> '1126', descr
=> 'add',
1407 oprname
=> '+', oprleft
=> 'float8', oprright
=> 'float4',
1408 oprresult
=> 'float8', oprcom
=> '+(float4,float8)', oprcode
=> 'float84pl' },
1409 { oid
=> '1127', descr
=> 'subtract',
1410 oprname
=> '-', oprleft
=> 'float8', oprright
=> 'float4',
1411 oprresult
=> 'float8', oprcode
=> 'float84mi' },
1412 { oid
=> '1128', descr
=> 'divide',
1413 oprname
=> '/', oprleft
=> 'float8', oprright
=> 'float4',
1414 oprresult
=> 'float8', oprcode
=> 'float84div' },
1415 { oid
=> '1129', descr
=> 'multiply',
1416 oprname
=> '*', oprleft
=> 'float8', oprright
=> 'float4',
1417 oprresult
=> 'float8', oprcom
=> '*(float4,float8)',
1418 oprcode
=> 'float84mul' },
1419 { oid
=> '1130', descr
=> 'equal',
1420 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'float8',
1421 oprright
=> 'float4', oprresult
=> 'bool', oprcom
=> '=(float4,float8)',
1422 oprnegate
=> '<>(float8,float4)', oprcode
=> 'float84eq', oprrest
=> 'eqsel',
1423 oprjoin
=> 'eqjoinsel' },
1424 { oid
=> '1131', descr
=> 'not equal',
1425 oprname
=> '<>', oprleft
=> 'float8', oprright
=> 'float4',
1426 oprresult
=> 'bool', oprcom
=> '<>(float4,float8)',
1427 oprnegate
=> '=(float8,float4)', oprcode
=> 'float84ne', oprrest
=> 'neqsel',
1428 oprjoin
=> 'neqjoinsel' },
1429 { oid
=> '1132', descr
=> 'less than',
1430 oprname
=> '<', oprleft
=> 'float8', oprright
=> 'float4',
1431 oprresult
=> 'bool', oprcom
=> '>(float4,float8)',
1432 oprnegate
=> '>=(float8,float4)', oprcode
=> 'float84lt',
1433 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1434 { oid
=> '1133', descr
=> 'greater than',
1435 oprname
=> '>', oprleft
=> 'float8', oprright
=> 'float4',
1436 oprresult
=> 'bool', oprcom
=> '<(float4,float8)',
1437 oprnegate
=> '<=(float8,float4)', oprcode
=> 'float84gt',
1438 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1439 { oid
=> '1134', descr
=> 'less than or equal',
1440 oprname
=> '<=', oprleft
=> 'float8', oprright
=> 'float4',
1441 oprresult
=> 'bool', oprcom
=> '>=(float4,float8)',
1442 oprnegate
=> '>(float8,float4)', oprcode
=> 'float84le',
1443 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1444 { oid
=> '1135', descr
=> 'greater than or equal',
1445 oprname
=> '>=', oprleft
=> 'float8', oprright
=> 'float4',
1446 oprresult
=> 'bool', oprcom
=> '<=(float4,float8)',
1447 oprnegate
=> '<(float8,float4)', oprcode
=> 'float84ge',
1448 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1450 # LIKE hacks by Keith Parks.
1451 { oid
=> '1207', oid_symbol
=> 'OID_NAME_LIKE_OP',
1452 descr
=> 'matches LIKE expression',
1453 oprname
=> '~~', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
1454 oprnegate
=> '!~~(name,text)', oprcode
=> 'namelike', oprrest
=> 'likesel',
1455 oprjoin
=> 'likejoinsel' },
1456 { oid
=> '1208', descr
=> 'does not match LIKE expression',
1457 oprname
=> '!~~', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
1458 oprnegate
=> '~~(name,text)', oprcode
=> 'namenlike', oprrest
=> 'nlikesel',
1459 oprjoin
=> 'nlikejoinsel' },
1460 { oid
=> '1209', oid_symbol
=> 'OID_TEXT_LIKE_OP',
1461 descr
=> 'matches LIKE expression',
1462 oprname
=> '~~', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
1463 oprnegate
=> '!~~(text,text)', oprcode
=> 'textlike', oprrest
=> 'likesel',
1464 oprjoin
=> 'likejoinsel' },
1465 { oid
=> '1210', descr
=> 'does not match LIKE expression',
1466 oprname
=> '!~~', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
1467 oprnegate
=> '~~(text,text)', oprcode
=> 'textnlike', oprrest
=> 'nlikesel',
1468 oprjoin
=> 'nlikejoinsel' },
1469 { oid
=> '1211', oid_symbol
=> 'OID_BPCHAR_LIKE_OP',
1470 descr
=> 'matches LIKE expression',
1471 oprname
=> '~~', oprleft
=> 'bpchar', oprright
=> 'text', oprresult
=> 'bool',
1472 oprnegate
=> '!~~(bpchar,text)', oprcode
=> 'bpcharlike',
1473 oprrest
=> 'likesel', oprjoin
=> 'likejoinsel' },
1474 { oid
=> '1212', descr
=> 'does not match LIKE expression',
1475 oprname
=> '!~~', oprleft
=> 'bpchar', oprright
=> 'text',
1476 oprresult
=> 'bool', oprnegate
=> '~~(bpchar,text)', oprcode
=> 'bpcharnlike',
1477 oprrest
=> 'nlikesel', oprjoin
=> 'nlikejoinsel' },
1479 # case-insensitive regex hacks
1480 { oid
=> '1226', oid_symbol
=> 'OID_NAME_ICREGEXEQ_OP',
1481 descr
=> 'matches regular expression, case-insensitive',
1482 oprname
=> '~*', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
1483 oprnegate
=> '!~*(name,text)', oprcode
=> 'nameicregexeq',
1484 oprrest
=> 'icregexeqsel', oprjoin
=> 'icregexeqjoinsel' },
1486 descr
=> 'does not match regular expression, case-insensitive',
1487 oprname
=> '!~*', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
1488 oprnegate
=> '~*(name,text)', oprcode
=> 'nameicregexne',
1489 oprrest
=> 'icregexnesel', oprjoin
=> 'icregexnejoinsel' },
1490 { oid
=> '1228', oid_symbol
=> 'OID_TEXT_ICREGEXEQ_OP',
1491 descr
=> 'matches regular expression, case-insensitive',
1492 oprname
=> '~*', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
1493 oprnegate
=> '!~*(text,text)', oprcode
=> 'texticregexeq',
1494 oprrest
=> 'icregexeqsel', oprjoin
=> 'icregexeqjoinsel' },
1496 descr
=> 'does not match regular expression, case-insensitive',
1497 oprname
=> '!~*', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
1498 oprnegate
=> '~*(text,text)', oprcode
=> 'texticregexne',
1499 oprrest
=> 'icregexnesel', oprjoin
=> 'icregexnejoinsel' },
1500 { oid
=> '1234', oid_symbol
=> 'OID_BPCHAR_ICREGEXEQ_OP',
1501 descr
=> 'matches regular expression, case-insensitive',
1502 oprname
=> '~*', oprleft
=> 'bpchar', oprright
=> 'text', oprresult
=> 'bool',
1503 oprnegate
=> '!~*(bpchar,text)', oprcode
=> 'bpcharicregexeq',
1504 oprrest
=> 'icregexeqsel', oprjoin
=> 'icregexeqjoinsel' },
1506 descr
=> 'does not match regular expression, case-insensitive',
1507 oprname
=> '!~*', oprleft
=> 'bpchar', oprright
=> 'text',
1508 oprresult
=> 'bool', oprnegate
=> '~*(bpchar,text)',
1509 oprcode
=> 'bpcharicregexne', oprrest
=> 'icregexnesel',
1510 oprjoin
=> 'icregexnejoinsel' },
1512 # timestamptz operators
1513 { oid
=> '1320', descr
=> 'equal',
1514 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't',
1515 oprleft
=> 'timestamptz', oprright
=> 'timestamptz', oprresult
=> 'bool',
1516 oprcom
=> '=(timestamptz,timestamptz)',
1517 oprnegate
=> '<>(timestamptz,timestamptz)', oprcode
=> 'timestamptz_eq',
1518 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
1519 { oid
=> '1321', descr
=> 'not equal',
1520 oprname
=> '<>', oprleft
=> 'timestamptz', oprright
=> 'timestamptz',
1521 oprresult
=> 'bool', oprcom
=> '<>(timestamptz,timestamptz)',
1522 oprnegate
=> '=(timestamptz,timestamptz)', oprcode
=> 'timestamptz_ne',
1523 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
1524 { oid
=> '1322', descr
=> 'less than',
1525 oprname
=> '<', oprleft
=> 'timestamptz', oprright
=> 'timestamptz',
1526 oprresult
=> 'bool', oprcom
=> '>(timestamptz,timestamptz)',
1527 oprnegate
=> '>=(timestamptz,timestamptz)', oprcode
=> 'timestamptz_lt',
1528 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1529 { oid
=> '1323', descr
=> 'less than or equal',
1530 oprname
=> '<=', oprleft
=> 'timestamptz', oprright
=> 'timestamptz',
1531 oprresult
=> 'bool', oprcom
=> '>=(timestamptz,timestamptz)',
1532 oprnegate
=> '>(timestamptz,timestamptz)', oprcode
=> 'timestamptz_le',
1533 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1534 { oid
=> '1324', descr
=> 'greater than',
1535 oprname
=> '>', oprleft
=> 'timestamptz', oprright
=> 'timestamptz',
1536 oprresult
=> 'bool', oprcom
=> '<(timestamptz,timestamptz)',
1537 oprnegate
=> '<=(timestamptz,timestamptz)', oprcode
=> 'timestamptz_gt',
1538 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1539 { oid
=> '1325', descr
=> 'greater than or equal',
1540 oprname
=> '>=', oprleft
=> 'timestamptz', oprright
=> 'timestamptz',
1541 oprresult
=> 'bool', oprcom
=> '<=(timestamptz,timestamptz)',
1542 oprnegate
=> '<(timestamptz,timestamptz)', oprcode
=> 'timestamptz_ge',
1543 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1544 { oid
=> '1327', descr
=> 'add',
1545 oprname
=> '+', oprleft
=> 'timestamptz', oprright
=> 'interval',
1546 oprresult
=> 'timestamptz', oprcom
=> '+(interval,timestamptz)',
1547 oprcode
=> 'timestamptz_pl_interval' },
1548 { oid
=> '1328', descr
=> 'subtract',
1549 oprname
=> '-', oprleft
=> 'timestamptz', oprright
=> 'timestamptz',
1550 oprresult
=> 'interval', oprcode
=> 'timestamptz_mi' },
1551 { oid
=> '1329', descr
=> 'subtract',
1552 oprname
=> '-', oprleft
=> 'timestamptz', oprright
=> 'interval',
1553 oprresult
=> 'timestamptz', oprcode
=> 'timestamptz_mi_interval' },
1555 # interval operators
1556 { oid
=> '1330', descr
=> 'equal',
1557 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'interval',
1558 oprright
=> 'interval', oprresult
=> 'bool', oprcom
=> '=(interval,interval)',
1559 oprnegate
=> '<>(interval,interval)', oprcode
=> 'interval_eq',
1560 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
1561 { oid
=> '1331', descr
=> 'not equal',
1562 oprname
=> '<>', oprleft
=> 'interval', oprright
=> 'interval',
1563 oprresult
=> 'bool', oprcom
=> '<>(interval,interval)',
1564 oprnegate
=> '=(interval,interval)', oprcode
=> 'interval_ne',
1565 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
1566 { oid
=> '1332', descr
=> 'less than',
1567 oprname
=> '<', oprleft
=> 'interval', oprright
=> 'interval',
1568 oprresult
=> 'bool', oprcom
=> '>(interval,interval)',
1569 oprnegate
=> '>=(interval,interval)', oprcode
=> 'interval_lt',
1570 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1571 { oid
=> '1333', descr
=> 'less than or equal',
1572 oprname
=> '<=', oprleft
=> 'interval', oprright
=> 'interval',
1573 oprresult
=> 'bool', oprcom
=> '>=(interval,interval)',
1574 oprnegate
=> '>(interval,interval)', oprcode
=> 'interval_le',
1575 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1576 { oid
=> '1334', descr
=> 'greater than',
1577 oprname
=> '>', oprleft
=> 'interval', oprright
=> 'interval',
1578 oprresult
=> 'bool', oprcom
=> '<(interval,interval)',
1579 oprnegate
=> '<=(interval,interval)', oprcode
=> 'interval_gt',
1580 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1581 { oid
=> '1335', descr
=> 'greater than or equal',
1582 oprname
=> '>=', oprleft
=> 'interval', oprright
=> 'interval',
1583 oprresult
=> 'bool', oprcom
=> '<=(interval,interval)',
1584 oprnegate
=> '<(interval,interval)', oprcode
=> 'interval_ge',
1585 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1587 { oid
=> '1336', descr
=> 'negate',
1588 oprname
=> '-', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'interval',
1589 oprresult
=> 'interval', oprcode
=> 'interval_um' },
1590 { oid
=> '1337', descr
=> 'add',
1591 oprname
=> '+', oprleft
=> 'interval', oprright
=> 'interval',
1592 oprresult
=> 'interval', oprcom
=> '+(interval,interval)',
1593 oprcode
=> 'interval_pl' },
1594 { oid
=> '1338', descr
=> 'subtract',
1595 oprname
=> '-', oprleft
=> 'interval', oprright
=> 'interval',
1596 oprresult
=> 'interval', oprcode
=> 'interval_mi' },
1598 { oid
=> '1360', descr
=> 'convert date and time to timestamp',
1599 oprname
=> '+', oprleft
=> 'date', oprright
=> 'time',
1600 oprresult
=> 'timestamp', oprcom
=> '+(time,date)',
1601 oprcode
=> 'datetime_pl' },
1603 descr
=> 'convert date and time with time zone to timestamp with time zone',
1604 oprname
=> '+', oprleft
=> 'date', oprright
=> 'timetz',
1605 oprresult
=> 'timestamptz', oprcom
=> '+(timetz,date)',
1606 oprcode
=> 'datetimetz_pl' },
1607 { oid
=> '1363', descr
=> 'convert time and date to timestamp',
1608 oprname
=> '+', oprleft
=> 'time', oprright
=> 'date',
1609 oprresult
=> 'timestamp', oprcom
=> '+(date,time)',
1610 oprcode
=> 'timedate_pl' },
1612 descr
=> 'convert time with time zone and date to timestamp with time zone',
1613 oprname
=> '+', oprleft
=> 'timetz', oprright
=> 'date',
1614 oprresult
=> 'timestamptz', oprcom
=> '+(date,timetz)',
1615 oprcode
=> 'timetzdate_pl' },
1617 { oid
=> '1399', descr
=> 'subtract',
1618 oprname
=> '-', oprleft
=> 'time', oprright
=> 'time',
1619 oprresult
=> 'interval', oprcode
=> 'time_mi_time' },
1621 # additional geometric operators - thomas 97/04/18
1622 { oid
=> '1420', descr
=> 'center of',
1623 oprname
=> '@@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'circle',
1624 oprresult
=> 'point', oprcode
=> 'circle_center' },
1625 { oid
=> '1500', descr
=> 'equal by area',
1626 oprname
=> '=', oprleft
=> 'circle', oprright
=> 'circle',
1627 oprresult
=> 'bool', oprcom
=> '=(circle,circle)',
1628 oprnegate
=> '<>(circle,circle)', oprcode
=> 'circle_eq', oprrest
=> 'eqsel',
1629 oprjoin
=> 'eqjoinsel' },
1630 { oid
=> '1501', descr
=> 'not equal by area',
1631 oprname
=> '<>', oprleft
=> 'circle', oprright
=> 'circle',
1632 oprresult
=> 'bool', oprcom
=> '<>(circle,circle)',
1633 oprnegate
=> '=(circle,circle)', oprcode
=> 'circle_ne', oprrest
=> 'neqsel',
1634 oprjoin
=> 'neqjoinsel' },
1635 { oid
=> '1502', descr
=> 'less than by area',
1636 oprname
=> '<', oprleft
=> 'circle', oprright
=> 'circle',
1637 oprresult
=> 'bool', oprcom
=> '>(circle,circle)',
1638 oprnegate
=> '>=(circle,circle)', oprcode
=> 'circle_lt',
1639 oprrest
=> 'areasel', oprjoin
=> 'areajoinsel' },
1640 { oid
=> '1503', descr
=> 'greater than by area',
1641 oprname
=> '>', oprleft
=> 'circle', oprright
=> 'circle',
1642 oprresult
=> 'bool', oprcom
=> '<(circle,circle)',
1643 oprnegate
=> '<=(circle,circle)', oprcode
=> 'circle_gt',
1644 oprrest
=> 'areasel', oprjoin
=> 'areajoinsel' },
1645 { oid
=> '1504', descr
=> 'less than or equal by area',
1646 oprname
=> '<=', oprleft
=> 'circle', oprright
=> 'circle',
1647 oprresult
=> 'bool', oprcom
=> '>=(circle,circle)',
1648 oprnegate
=> '>(circle,circle)', oprcode
=> 'circle_le', oprrest
=> 'areasel',
1649 oprjoin
=> 'areajoinsel' },
1650 { oid
=> '1505', descr
=> 'greater than or equal by area',
1651 oprname
=> '>=', oprleft
=> 'circle', oprright
=> 'circle',
1652 oprresult
=> 'bool', oprcom
=> '<=(circle,circle)',
1653 oprnegate
=> '<(circle,circle)', oprcode
=> 'circle_ge', oprrest
=> 'areasel',
1654 oprjoin
=> 'areajoinsel' },
1656 { oid
=> '1506', descr
=> 'is left of',
1657 oprname
=> '<<', oprleft
=> 'circle', oprright
=> 'circle',
1658 oprresult
=> 'bool', oprcode
=> 'circle_left', oprrest
=> 'positionsel',
1659 oprjoin
=> 'positionjoinsel' },
1660 { oid
=> '1507', descr
=> 'overlaps or is left of',
1661 oprname
=> '&<', oprleft
=> 'circle', oprright
=> 'circle',
1662 oprresult
=> 'bool', oprcode
=> 'circle_overleft', oprrest
=> 'positionsel',
1663 oprjoin
=> 'positionjoinsel' },
1664 { oid
=> '1508', descr
=> 'overlaps or is right of',
1665 oprname
=> '&>', oprleft
=> 'circle', oprright
=> 'circle',
1666 oprresult
=> 'bool', oprcode
=> 'circle_overright', oprrest
=> 'positionsel',
1667 oprjoin
=> 'positionjoinsel' },
1668 { oid
=> '1509', descr
=> 'is right of',
1669 oprname
=> '>>', oprleft
=> 'circle', oprright
=> 'circle',
1670 oprresult
=> 'bool', oprcode
=> 'circle_right', oprrest
=> 'positionsel',
1671 oprjoin
=> 'positionjoinsel' },
1672 { oid
=> '1510', descr
=> 'is contained by',
1673 oprname
=> '<@', oprleft
=> 'circle', oprright
=> 'circle',
1674 oprresult
=> 'bool', oprcom
=> '@>(circle,circle)',
1675 oprcode
=> 'circle_contained', oprrest
=> 'contsel',
1676 oprjoin
=> 'contjoinsel' },
1677 { oid
=> '1511', descr
=> 'contains',
1678 oprname
=> '@>', oprleft
=> 'circle', oprright
=> 'circle',
1679 oprresult
=> 'bool', oprcom
=> '<@(circle,circle)',
1680 oprcode
=> 'circle_contain', oprrest
=> 'contsel', oprjoin
=> 'contjoinsel' },
1681 { oid
=> '1512', descr
=> 'same as',
1682 oprname
=> '~=', oprleft
=> 'circle', oprright
=> 'circle',
1683 oprresult
=> 'bool', oprcom
=> '~=(circle,circle)', oprcode
=> 'circle_same',
1684 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
1685 { oid
=> '1513', descr
=> 'overlaps',
1686 oprname
=> '&&', oprleft
=> 'circle', oprright
=> 'circle',
1687 oprresult
=> 'bool', oprcom
=> '&&(circle,circle)',
1688 oprcode
=> 'circle_overlap', oprrest
=> 'areasel', oprjoin
=> 'areajoinsel' },
1689 { oid
=> '1514', descr
=> 'is above',
1690 oprname
=> '|>>', oprleft
=> 'circle', oprright
=> 'circle',
1691 oprresult
=> 'bool', oprcode
=> 'circle_above', oprrest
=> 'positionsel',
1692 oprjoin
=> 'positionjoinsel' },
1693 { oid
=> '1515', descr
=> 'is below',
1694 oprname
=> '<<|', oprleft
=> 'circle', oprright
=> 'circle',
1695 oprresult
=> 'bool', oprcode
=> 'circle_below', oprrest
=> 'positionsel',
1696 oprjoin
=> 'positionjoinsel' },
1698 { oid
=> '1516', descr
=> 'add',
1699 oprname
=> '+', oprleft
=> 'circle', oprright
=> 'point',
1700 oprresult
=> 'circle', oprcode
=> 'circle_add_pt' },
1701 { oid
=> '1517', descr
=> 'subtract',
1702 oprname
=> '-', oprleft
=> 'circle', oprright
=> 'point',
1703 oprresult
=> 'circle', oprcode
=> 'circle_sub_pt' },
1704 { oid
=> '1518', descr
=> 'multiply',
1705 oprname
=> '*', oprleft
=> 'circle', oprright
=> 'point',
1706 oprresult
=> 'circle', oprcode
=> 'circle_mul_pt' },
1707 { oid
=> '1519', descr
=> 'divide',
1708 oprname
=> '/', oprleft
=> 'circle', oprright
=> 'point',
1709 oprresult
=> 'circle', oprcode
=> 'circle_div_pt' },
1711 { oid
=> '1520', descr
=> 'distance between',
1712 oprname
=> '<->', oprleft
=> 'circle', oprright
=> 'circle',
1713 oprresult
=> 'float8', oprcom
=> '<->(circle,circle)',
1714 oprcode
=> 'circle_distance' },
1715 { oid
=> '1521', descr
=> 'number of points',
1716 oprname
=> '#', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'polygon',
1717 oprresult
=> 'int4', oprcode
=> 'poly_npoints' },
1718 { oid
=> '1522', descr
=> 'distance between',
1719 oprname
=> '<->', oprleft
=> 'point', oprright
=> 'circle',
1720 oprresult
=> 'float8', oprcom
=> '<->(circle,point)', oprcode
=> 'dist_pc' },
1721 { oid
=> '3291', descr
=> 'distance between',
1722 oprname
=> '<->', oprleft
=> 'circle', oprright
=> 'point',
1723 oprresult
=> 'float8', oprcom
=> '<->(point,circle)',
1724 oprcode
=> 'dist_cpoint' },
1725 { oid
=> '3276', descr
=> 'distance between',
1726 oprname
=> '<->', oprleft
=> 'point', oprright
=> 'polygon',
1727 oprresult
=> 'float8', oprcom
=> '<->(polygon,point)',
1728 oprcode
=> 'dist_ppoly' },
1729 { oid
=> '3289', descr
=> 'distance between',
1730 oprname
=> '<->', oprleft
=> 'polygon', oprright
=> 'point',
1731 oprresult
=> 'float8', oprcom
=> '<->(point,polygon)',
1732 oprcode
=> 'dist_polyp' },
1733 { oid
=> '1523', descr
=> 'distance between',
1734 oprname
=> '<->', oprleft
=> 'circle', oprright
=> 'polygon',
1735 oprresult
=> 'float8', oprcom
=> '<->(polygon,circle)',
1736 oprcode
=> 'dist_cpoly' },
1737 { oid
=> '1383', descr
=> 'distance between',
1738 oprname
=> '<->', oprleft
=> 'polygon', oprright
=> 'circle',
1739 oprresult
=> 'float8', oprcom
=> '<->(circle,polygon)',
1740 oprcode
=> 'dist_polyc' },
1742 { oid
=> '1525', descr
=> 'intersect',
1743 oprname
=> '?#', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'bool',
1744 oprcom
=> '?#(lseg,lseg)', oprcode
=> 'lseg_intersect' },
1745 { oid
=> '1526', descr
=> 'parallel',
1746 oprname
=> '?||', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'bool',
1747 oprcom
=> '?||(lseg,lseg)', oprcode
=> 'lseg_parallel' },
1748 { oid
=> '1527', descr
=> 'perpendicular',
1749 oprname
=> '?-|', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'bool',
1750 oprcom
=> '?-|(lseg,lseg)', oprcode
=> 'lseg_perp' },
1751 { oid
=> '1528', descr
=> 'horizontal',
1752 oprname
=> '?-', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'lseg',
1753 oprresult
=> 'bool', oprcode
=> 'lseg_horizontal' },
1754 { oid
=> '1529', descr
=> 'vertical',
1755 oprname
=> '?|', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'lseg',
1756 oprresult
=> 'bool', oprcode
=> 'lseg_vertical' },
1757 { oid
=> '1535', descr
=> 'equal',
1758 oprname
=> '=', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'bool',
1759 oprcom
=> '=(lseg,lseg)', oprnegate
=> '<>(lseg,lseg)', oprcode
=> 'lseg_eq',
1760 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
1761 { oid
=> '1536', descr
=> 'intersection point',
1762 oprname
=> '#', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'point',
1763 oprcom
=> '#(lseg,lseg)', oprcode
=> 'lseg_interpt' },
1764 { oid
=> '1537', descr
=> 'intersect',
1765 oprname
=> '?#', oprleft
=> 'lseg', oprright
=> 'line', oprresult
=> 'bool',
1766 oprcode
=> 'inter_sl' },
1767 { oid
=> '1538', descr
=> 'intersect',
1768 oprname
=> '?#', oprleft
=> 'lseg', oprright
=> 'box', oprresult
=> 'bool',
1769 oprcode
=> 'inter_sb' },
1770 { oid
=> '1539', descr
=> 'intersect',
1771 oprname
=> '?#', oprleft
=> 'line', oprright
=> 'box', oprresult
=> 'bool',
1772 oprcode
=> 'inter_lb' },
1774 { oid
=> '1546', descr
=> 'point on line',
1775 oprname
=> '<@', oprleft
=> 'point', oprright
=> 'line', oprresult
=> 'bool',
1776 oprcode
=> 'on_pl' },
1777 { oid
=> '1547', descr
=> 'is contained by',
1778 oprname
=> '<@', oprleft
=> 'point', oprright
=> 'lseg', oprresult
=> 'bool',
1779 oprcode
=> 'on_ps' },
1780 { oid
=> '1548', descr
=> 'lseg on line',
1781 oprname
=> '<@', oprleft
=> 'lseg', oprright
=> 'line', oprresult
=> 'bool',
1782 oprcode
=> 'on_sl' },
1783 { oid
=> '1549', descr
=> 'is contained by',
1784 oprname
=> '<@', oprleft
=> 'lseg', oprright
=> 'box', oprresult
=> 'bool',
1785 oprcode
=> 'on_sb' },
1787 { oid
=> '1557', descr
=> 'closest point to A on B',
1788 oprname
=> '##', oprleft
=> 'point', oprright
=> 'line', oprresult
=> 'point',
1789 oprcode
=> 'close_pl' },
1790 { oid
=> '1558', descr
=> 'closest point to A on B',
1791 oprname
=> '##', oprleft
=> 'point', oprright
=> 'lseg', oprresult
=> 'point',
1792 oprcode
=> 'close_ps' },
1793 { oid
=> '1559', descr
=> 'closest point to A on B',
1794 oprname
=> '##', oprleft
=> 'point', oprright
=> 'box', oprresult
=> 'point',
1795 oprcode
=> 'close_pb' },
1797 { oid
=> '1567', descr
=> 'closest point to A on B',
1798 oprname
=> '##', oprleft
=> 'lseg', oprright
=> 'box', oprresult
=> 'point',
1799 oprcode
=> 'close_sb' },
1800 { oid
=> '1577', descr
=> 'closest point to A on B',
1801 oprname
=> '##', oprleft
=> 'line', oprright
=> 'lseg', oprresult
=> 'point',
1802 oprcode
=> 'close_ls' },
1803 { oid
=> '1578', descr
=> 'closest point to A on B',
1804 oprname
=> '##', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'point',
1805 oprcode
=> 'close_lseg' },
1806 { oid
=> '1583', descr
=> 'multiply',
1807 oprname
=> '*', oprleft
=> 'interval', oprright
=> 'float8',
1808 oprresult
=> 'interval', oprcom
=> '*(float8,interval)',
1809 oprcode
=> 'interval_mul' },
1810 { oid
=> '1584', descr
=> 'multiply',
1811 oprname
=> '*', oprleft
=> 'float8', oprright
=> 'interval',
1812 oprresult
=> 'interval', oprcom
=> '*(interval,float8)',
1813 oprcode
=> 'mul_d_interval' },
1814 { oid
=> '1585', descr
=> 'divide',
1815 oprname
=> '/', oprleft
=> 'interval', oprright
=> 'float8',
1816 oprresult
=> 'interval', oprcode
=> 'interval_div' },
1818 { oid
=> '1586', descr
=> 'not equal',
1819 oprname
=> '<>', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'bool',
1820 oprcom
=> '<>(lseg,lseg)', oprnegate
=> '=(lseg,lseg)', oprcode
=> 'lseg_ne',
1821 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
1822 { oid
=> '1587', descr
=> 'less than by length',
1823 oprname
=> '<', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'bool',
1824 oprcom
=> '>(lseg,lseg)', oprnegate
=> '>=(lseg,lseg)',
1825 oprcode
=> 'lseg_lt' },
1826 { oid
=> '1588', descr
=> 'less than or equal by length',
1827 oprname
=> '<=', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'bool',
1828 oprcom
=> '>=(lseg,lseg)', oprnegate
=> '>(lseg,lseg)',
1829 oprcode
=> 'lseg_le' },
1830 { oid
=> '1589', descr
=> 'greater than by length',
1831 oprname
=> '>', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'bool',
1832 oprcom
=> '<(lseg,lseg)', oprnegate
=> '<=(lseg,lseg)',
1833 oprcode
=> 'lseg_gt' },
1834 { oid
=> '1590', descr
=> 'greater than or equal by length',
1835 oprname
=> '>=', oprleft
=> 'lseg', oprright
=> 'lseg', oprresult
=> 'bool',
1836 oprcom
=> '<=(lseg,lseg)', oprnegate
=> '<(lseg,lseg)',
1837 oprcode
=> 'lseg_ge' },
1839 { oid
=> '1591', descr
=> 'distance between endpoints',
1840 oprname
=> '@-@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'lseg',
1841 oprresult
=> 'float8', oprcode
=> 'lseg_length' },
1843 { oid
=> '1611', descr
=> 'intersect',
1844 oprname
=> '?#', oprleft
=> 'line', oprright
=> 'line', oprresult
=> 'bool',
1845 oprcom
=> '?#(line,line)', oprcode
=> 'line_intersect' },
1846 { oid
=> '1612', descr
=> 'parallel',
1847 oprname
=> '?||', oprleft
=> 'line', oprright
=> 'line', oprresult
=> 'bool',
1848 oprcom
=> '?||(line,line)', oprcode
=> 'line_parallel' },
1849 { oid
=> '1613', descr
=> 'perpendicular',
1850 oprname
=> '?-|', oprleft
=> 'line', oprright
=> 'line', oprresult
=> 'bool',
1851 oprcom
=> '?-|(line,line)', oprcode
=> 'line_perp' },
1852 { oid
=> '1614', descr
=> 'horizontal',
1853 oprname
=> '?-', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'line',
1854 oprresult
=> 'bool', oprcode
=> 'line_horizontal' },
1855 { oid
=> '1615', descr
=> 'vertical',
1856 oprname
=> '?|', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'line',
1857 oprresult
=> 'bool', oprcode
=> 'line_vertical' },
1858 { oid
=> '1616', descr
=> 'equal',
1859 oprname
=> '=', oprleft
=> 'line', oprright
=> 'line', oprresult
=> 'bool',
1860 oprcom
=> '=(line,line)', oprcode
=> 'line_eq', oprrest
=> 'eqsel',
1861 oprjoin
=> 'eqjoinsel' },
1862 { oid
=> '1617', descr
=> 'intersection point',
1863 oprname
=> '#', oprleft
=> 'line', oprright
=> 'line', oprresult
=> 'point',
1864 oprcom
=> '#(line,line)', oprcode
=> 'line_interpt' },
1866 { oid
=> '4161', descr
=> 'is above',
1867 oprname
=> '|>>', oprleft
=> 'point', oprright
=> 'point',
1868 oprresult
=> 'bool', oprcode
=> 'point_above', oprrest
=> 'positionsel',
1869 oprjoin
=> 'positionjoinsel' },
1870 { oid
=> '4162', descr
=> 'is below',
1871 oprname
=> '<<|', oprleft
=> 'point', oprright
=> 'point',
1872 oprresult
=> 'bool', oprcode
=> 'point_below', oprrest
=> 'positionsel',
1873 oprjoin
=> 'positionjoinsel' },
1876 { oid
=> '1220', descr
=> 'equal',
1877 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'macaddr',
1878 oprright
=> 'macaddr', oprresult
=> 'bool', oprcom
=> '=(macaddr,macaddr)',
1879 oprnegate
=> '<>(macaddr,macaddr)', oprcode
=> 'macaddr_eq',
1880 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
1881 { oid
=> '1221', descr
=> 'not equal',
1882 oprname
=> '<>', oprleft
=> 'macaddr', oprright
=> 'macaddr',
1883 oprresult
=> 'bool', oprcom
=> '<>(macaddr,macaddr)',
1884 oprnegate
=> '=(macaddr,macaddr)', oprcode
=> 'macaddr_ne',
1885 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
1886 { oid
=> '1222', descr
=> 'less than',
1887 oprname
=> '<', oprleft
=> 'macaddr', oprright
=> 'macaddr',
1888 oprresult
=> 'bool', oprcom
=> '>(macaddr,macaddr)',
1889 oprnegate
=> '>=(macaddr,macaddr)', oprcode
=> 'macaddr_lt',
1890 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1891 { oid
=> '1223', descr
=> 'less than or equal',
1892 oprname
=> '<=', oprleft
=> 'macaddr', oprright
=> 'macaddr',
1893 oprresult
=> 'bool', oprcom
=> '>=(macaddr,macaddr)',
1894 oprnegate
=> '>(macaddr,macaddr)', oprcode
=> 'macaddr_le',
1895 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1896 { oid
=> '1224', descr
=> 'greater than',
1897 oprname
=> '>', oprleft
=> 'macaddr', oprright
=> 'macaddr',
1898 oprresult
=> 'bool', oprcom
=> '<(macaddr,macaddr)',
1899 oprnegate
=> '<=(macaddr,macaddr)', oprcode
=> 'macaddr_gt',
1900 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1901 { oid
=> '1225', descr
=> 'greater than or equal',
1902 oprname
=> '>=', oprleft
=> 'macaddr', oprright
=> 'macaddr',
1903 oprresult
=> 'bool', oprcom
=> '<=(macaddr,macaddr)',
1904 oprnegate
=> '<(macaddr,macaddr)', oprcode
=> 'macaddr_ge',
1905 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1907 { oid
=> '3147', descr
=> 'bitwise not',
1908 oprname
=> '~', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'macaddr',
1909 oprresult
=> 'macaddr', oprcode
=> 'macaddr_not' },
1910 { oid
=> '3148', descr
=> 'bitwise and',
1911 oprname
=> '&', oprleft
=> 'macaddr', oprright
=> 'macaddr',
1912 oprresult
=> 'macaddr', oprcode
=> 'macaddr_and' },
1913 { oid
=> '3149', descr
=> 'bitwise or',
1914 oprname
=> '|', oprleft
=> 'macaddr', oprright
=> 'macaddr',
1915 oprresult
=> 'macaddr', oprcode
=> 'macaddr_or' },
1918 { oid
=> '3362', descr
=> 'equal',
1919 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'macaddr8',
1920 oprright
=> 'macaddr8', oprresult
=> 'bool', oprcom
=> '=(macaddr8,macaddr8)',
1921 oprnegate
=> '<>(macaddr8,macaddr8)', oprcode
=> 'macaddr8_eq',
1922 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
1923 { oid
=> '3363', descr
=> 'not equal',
1924 oprname
=> '<>', oprleft
=> 'macaddr8', oprright
=> 'macaddr8',
1925 oprresult
=> 'bool', oprcom
=> '<>(macaddr8,macaddr8)',
1926 oprnegate
=> '=(macaddr8,macaddr8)', oprcode
=> 'macaddr8_ne',
1927 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
1928 { oid
=> '3364', descr
=> 'less than',
1929 oprname
=> '<', oprleft
=> 'macaddr8', oprright
=> 'macaddr8',
1930 oprresult
=> 'bool', oprcom
=> '>(macaddr8,macaddr8)',
1931 oprnegate
=> '>=(macaddr8,macaddr8)', oprcode
=> 'macaddr8_lt',
1932 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
1933 { oid
=> '3365', descr
=> 'less than or equal',
1934 oprname
=> '<=', oprleft
=> 'macaddr8', oprright
=> 'macaddr8',
1935 oprresult
=> 'bool', oprcom
=> '>=(macaddr8,macaddr8)',
1936 oprnegate
=> '>(macaddr8,macaddr8)', oprcode
=> 'macaddr8_le',
1937 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
1938 { oid
=> '3366', descr
=> 'greater than',
1939 oprname
=> '>', oprleft
=> 'macaddr8', oprright
=> 'macaddr8',
1940 oprresult
=> 'bool', oprcom
=> '<(macaddr8,macaddr8)',
1941 oprnegate
=> '<=(macaddr8,macaddr8)', oprcode
=> 'macaddr8_gt',
1942 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
1943 { oid
=> '3367', descr
=> 'greater than or equal',
1944 oprname
=> '>=', oprleft
=> 'macaddr8', oprright
=> 'macaddr8',
1945 oprresult
=> 'bool', oprcom
=> '<=(macaddr8,macaddr8)',
1946 oprnegate
=> '<(macaddr8,macaddr8)', oprcode
=> 'macaddr8_ge',
1947 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
1949 { oid
=> '3368', descr
=> 'bitwise not',
1950 oprname
=> '~', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'macaddr8',
1951 oprresult
=> 'macaddr8', oprcode
=> 'macaddr8_not' },
1952 { oid
=> '3369', descr
=> 'bitwise and',
1953 oprname
=> '&', oprleft
=> 'macaddr8', oprright
=> 'macaddr8',
1954 oprresult
=> 'macaddr8', oprcode
=> 'macaddr8_and' },
1955 { oid
=> '3370', descr
=> 'bitwise or',
1956 oprname
=> '|', oprleft
=> 'macaddr8', oprright
=> 'macaddr8',
1957 oprresult
=> 'macaddr8', oprcode
=> 'macaddr8_or' },
1959 # INET type (these also support CIDR via implicit cast)
1960 { oid
=> '1201', descr
=> 'equal',
1961 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'inet',
1962 oprright
=> 'inet', oprresult
=> 'bool', oprcom
=> '=(inet,inet)',
1963 oprnegate
=> '<>(inet,inet)', oprcode
=> 'network_eq', oprrest
=> 'eqsel',
1964 oprjoin
=> 'eqjoinsel' },
1965 { oid
=> '1202', descr
=> 'not equal',
1966 oprname
=> '<>', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'bool',
1967 oprcom
=> '<>(inet,inet)', oprnegate
=> '=(inet,inet)',
1968 oprcode
=> 'network_ne', oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
1969 { oid
=> '1203', descr
=> 'less than',
1970 oprname
=> '<', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'bool',
1971 oprcom
=> '>(inet,inet)', oprnegate
=> '>=(inet,inet)',
1972 oprcode
=> 'network_lt', oprrest
=> 'scalarltsel',
1973 oprjoin
=> 'scalarltjoinsel' },
1974 { oid
=> '1204', descr
=> 'less than or equal',
1975 oprname
=> '<=', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'bool',
1976 oprcom
=> '>=(inet,inet)', oprnegate
=> '>(inet,inet)',
1977 oprcode
=> 'network_le', oprrest
=> 'scalarlesel',
1978 oprjoin
=> 'scalarlejoinsel' },
1979 { oid
=> '1205', descr
=> 'greater than',
1980 oprname
=> '>', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'bool',
1981 oprcom
=> '<(inet,inet)', oprnegate
=> '<=(inet,inet)',
1982 oprcode
=> 'network_gt', oprrest
=> 'scalargtsel',
1983 oprjoin
=> 'scalargtjoinsel' },
1984 { oid
=> '1206', descr
=> 'greater than or equal',
1985 oprname
=> '>=', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'bool',
1986 oprcom
=> '<=(inet,inet)', oprnegate
=> '<(inet,inet)',
1987 oprcode
=> 'network_ge', oprrest
=> 'scalargesel',
1988 oprjoin
=> 'scalargejoinsel' },
1989 { oid
=> '931', oid_symbol
=> 'OID_INET_SUB_OP', descr
=> 'is subnet',
1990 oprname
=> '<<', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'bool',
1991 oprcom
=> '>>(inet,inet)', oprcode
=> 'network_sub', oprrest
=> 'networksel',
1992 oprjoin
=> 'networkjoinsel' },
1993 { oid
=> '932', oid_symbol
=> 'OID_INET_SUBEQ_OP',
1994 descr
=> 'is subnet or equal',
1995 oprname
=> '<<=', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'bool',
1996 oprcom
=> '>>=(inet,inet)', oprcode
=> 'network_subeq',
1997 oprrest
=> 'networksel', oprjoin
=> 'networkjoinsel' },
1998 { oid
=> '933', oid_symbol
=> 'OID_INET_SUP_OP', descr
=> 'is supernet',
1999 oprname
=> '>>', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'bool',
2000 oprcom
=> '<<(inet,inet)', oprcode
=> 'network_sup', oprrest
=> 'networksel',
2001 oprjoin
=> 'networkjoinsel' },
2002 { oid
=> '934', oid_symbol
=> 'OID_INET_SUPEQ_OP',
2003 descr
=> 'is supernet or equal',
2004 oprname
=> '>>=', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'bool',
2005 oprcom
=> '<<=(inet,inet)', oprcode
=> 'network_supeq',
2006 oprrest
=> 'networksel', oprjoin
=> 'networkjoinsel' },
2007 { oid
=> '3552', oid_symbol
=> 'OID_INET_OVERLAP_OP',
2008 descr
=> 'overlaps (is subnet or supernet)',
2009 oprname
=> '&&', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'bool',
2010 oprcom
=> '&&(inet,inet)', oprcode
=> 'network_overlap',
2011 oprrest
=> 'networksel', oprjoin
=> 'networkjoinsel' },
2013 { oid
=> '2634', descr
=> 'bitwise not',
2014 oprname
=> '~', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'inet',
2015 oprresult
=> 'inet', oprcode
=> 'inetnot' },
2016 { oid
=> '2635', descr
=> 'bitwise and',
2017 oprname
=> '&', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'inet',
2018 oprcode
=> 'inetand' },
2019 { oid
=> '2636', descr
=> 'bitwise or',
2020 oprname
=> '|', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'inet',
2021 oprcode
=> 'inetor' },
2022 { oid
=> '2637', descr
=> 'add',
2023 oprname
=> '+', oprleft
=> 'inet', oprright
=> 'int8', oprresult
=> 'inet',
2024 oprcom
=> '+(int8,inet)', oprcode
=> 'inetpl' },
2025 { oid
=> '2638', descr
=> 'add',
2026 oprname
=> '+', oprleft
=> 'int8', oprright
=> 'inet', oprresult
=> 'inet',
2027 oprcom
=> '+(inet,int8)', oprcode
=> 'int8pl_inet' },
2028 { oid
=> '2639', descr
=> 'subtract',
2029 oprname
=> '-', oprleft
=> 'inet', oprright
=> 'int8', oprresult
=> 'inet',
2030 oprcode
=> 'inetmi_int8' },
2031 { oid
=> '2640', descr
=> 'subtract',
2032 oprname
=> '-', oprleft
=> 'inet', oprright
=> 'inet', oprresult
=> 'int8',
2033 oprcode
=> 'inetmi' },
2035 # case-insensitive LIKE hacks
2036 { oid
=> '1625', oid_symbol
=> 'OID_NAME_ICLIKE_OP',
2037 descr
=> 'matches LIKE expression, case-insensitive',
2038 oprname
=> '~~*', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
2039 oprnegate
=> '!~~*(name,text)', oprcode
=> 'nameiclike',
2040 oprrest
=> 'iclikesel', oprjoin
=> 'iclikejoinsel' },
2041 { oid
=> '1626', descr
=> 'does not match LIKE expression, case-insensitive',
2042 oprname
=> '!~~*', oprleft
=> 'name', oprright
=> 'text', oprresult
=> 'bool',
2043 oprnegate
=> '~~*(name,text)', oprcode
=> 'nameicnlike',
2044 oprrest
=> 'icnlikesel', oprjoin
=> 'icnlikejoinsel' },
2045 { oid
=> '1627', oid_symbol
=> 'OID_TEXT_ICLIKE_OP',
2046 descr
=> 'matches LIKE expression, case-insensitive',
2047 oprname
=> '~~*', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
2048 oprnegate
=> '!~~*(text,text)', oprcode
=> 'texticlike',
2049 oprrest
=> 'iclikesel', oprjoin
=> 'iclikejoinsel' },
2050 { oid
=> '1628', descr
=> 'does not match LIKE expression, case-insensitive',
2051 oprname
=> '!~~*', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
2052 oprnegate
=> '~~*(text,text)', oprcode
=> 'texticnlike',
2053 oprrest
=> 'icnlikesel', oprjoin
=> 'icnlikejoinsel' },
2054 { oid
=> '1629', oid_symbol
=> 'OID_BPCHAR_ICLIKE_OP',
2055 descr
=> 'matches LIKE expression, case-insensitive',
2056 oprname
=> '~~*', oprleft
=> 'bpchar', oprright
=> 'text',
2057 oprresult
=> 'bool', oprnegate
=> '!~~*(bpchar,text)',
2058 oprcode
=> 'bpchariclike', oprrest
=> 'iclikesel',
2059 oprjoin
=> 'iclikejoinsel' },
2060 { oid
=> '1630', descr
=> 'does not match LIKE expression, case-insensitive',
2061 oprname
=> '!~~*', oprleft
=> 'bpchar', oprright
=> 'text',
2062 oprresult
=> 'bool', oprnegate
=> '~~*(bpchar,text)',
2063 oprcode
=> 'bpcharicnlike', oprrest
=> 'icnlikesel',
2064 oprjoin
=> 'icnlikejoinsel' },
2066 # NUMERIC type - OID's 1700-1799
2067 { oid
=> '1751', descr
=> 'negate',
2068 oprname
=> '-', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'numeric',
2069 oprresult
=> 'numeric', oprcode
=> 'numeric_uminus' },
2070 { oid
=> '1752', descr
=> 'equal',
2071 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'numeric',
2072 oprright
=> 'numeric', oprresult
=> 'bool', oprcom
=> '=(numeric,numeric)',
2073 oprnegate
=> '<>(numeric,numeric)', oprcode
=> 'numeric_eq',
2074 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
2075 { oid
=> '1753', descr
=> 'not equal',
2076 oprname
=> '<>', oprleft
=> 'numeric', oprright
=> 'numeric',
2077 oprresult
=> 'bool', oprcom
=> '<>(numeric,numeric)',
2078 oprnegate
=> '=(numeric,numeric)', oprcode
=> 'numeric_ne',
2079 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2080 { oid
=> '1754', descr
=> 'less than',
2081 oprname
=> '<', oprleft
=> 'numeric', oprright
=> 'numeric',
2082 oprresult
=> 'bool', oprcom
=> '>(numeric,numeric)',
2083 oprnegate
=> '>=(numeric,numeric)', oprcode
=> 'numeric_lt',
2084 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2085 { oid
=> '1755', descr
=> 'less than or equal',
2086 oprname
=> '<=', oprleft
=> 'numeric', oprright
=> 'numeric',
2087 oprresult
=> 'bool', oprcom
=> '>=(numeric,numeric)',
2088 oprnegate
=> '>(numeric,numeric)', oprcode
=> 'numeric_le',
2089 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2090 { oid
=> '1756', descr
=> 'greater than',
2091 oprname
=> '>', oprleft
=> 'numeric', oprright
=> 'numeric',
2092 oprresult
=> 'bool', oprcom
=> '<(numeric,numeric)',
2093 oprnegate
=> '<=(numeric,numeric)', oprcode
=> 'numeric_gt',
2094 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2095 { oid
=> '1757', descr
=> 'greater than or equal',
2096 oprname
=> '>=', oprleft
=> 'numeric', oprright
=> 'numeric',
2097 oprresult
=> 'bool', oprcom
=> '<=(numeric,numeric)',
2098 oprnegate
=> '<(numeric,numeric)', oprcode
=> 'numeric_ge',
2099 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2100 { oid
=> '1758', descr
=> 'add',
2101 oprname
=> '+', oprleft
=> 'numeric', oprright
=> 'numeric',
2102 oprresult
=> 'numeric', oprcom
=> '+(numeric,numeric)',
2103 oprcode
=> 'numeric_add' },
2104 { oid
=> '1759', descr
=> 'subtract',
2105 oprname
=> '-', oprleft
=> 'numeric', oprright
=> 'numeric',
2106 oprresult
=> 'numeric', oprcode
=> 'numeric_sub' },
2107 { oid
=> '1760', descr
=> 'multiply',
2108 oprname
=> '*', oprleft
=> 'numeric', oprright
=> 'numeric',
2109 oprresult
=> 'numeric', oprcom
=> '*(numeric,numeric)',
2110 oprcode
=> 'numeric_mul' },
2111 { oid
=> '1761', descr
=> 'divide',
2112 oprname
=> '/', oprleft
=> 'numeric', oprright
=> 'numeric',
2113 oprresult
=> 'numeric', oprcode
=> 'numeric_div' },
2114 { oid
=> '1762', descr
=> 'modulus',
2115 oprname
=> '%', oprleft
=> 'numeric', oprright
=> 'numeric',
2116 oprresult
=> 'numeric', oprcode
=> 'numeric_mod' },
2117 { oid
=> '1038', descr
=> 'exponentiation',
2118 oprname
=> '^', oprleft
=> 'numeric', oprright
=> 'numeric',
2119 oprresult
=> 'numeric', oprcode
=> 'numeric_power' },
2120 { oid
=> '1763', descr
=> 'absolute value',
2121 oprname
=> '@', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'numeric',
2122 oprresult
=> 'numeric', oprcode
=> 'numeric_abs' },
2124 { oid
=> '1784', descr
=> 'equal',
2125 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'bit', oprright
=> 'bit',
2126 oprresult
=> 'bool', oprcom
=> '=(bit,bit)', oprnegate
=> '<>(bit,bit)',
2127 oprcode
=> 'biteq', oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
2128 { oid
=> '1785', descr
=> 'not equal',
2129 oprname
=> '<>', oprleft
=> 'bit', oprright
=> 'bit', oprresult
=> 'bool',
2130 oprcom
=> '<>(bit,bit)', oprnegate
=> '=(bit,bit)', oprcode
=> 'bitne',
2131 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2132 { oid
=> '1786', descr
=> 'less than',
2133 oprname
=> '<', oprleft
=> 'bit', oprright
=> 'bit', oprresult
=> 'bool',
2134 oprcom
=> '>(bit,bit)', oprnegate
=> '>=(bit,bit)', oprcode
=> 'bitlt',
2135 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2136 { oid
=> '1787', descr
=> 'greater than',
2137 oprname
=> '>', oprleft
=> 'bit', oprright
=> 'bit', oprresult
=> 'bool',
2138 oprcom
=> '<(bit,bit)', oprnegate
=> '<=(bit,bit)', oprcode
=> 'bitgt',
2139 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2140 { oid
=> '1788', descr
=> 'less than or equal',
2141 oprname
=> '<=', oprleft
=> 'bit', oprright
=> 'bit', oprresult
=> 'bool',
2142 oprcom
=> '>=(bit,bit)', oprnegate
=> '>(bit,bit)', oprcode
=> 'bitle',
2143 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2144 { oid
=> '1789', descr
=> 'greater than or equal',
2145 oprname
=> '>=', oprleft
=> 'bit', oprright
=> 'bit', oprresult
=> 'bool',
2146 oprcom
=> '<=(bit,bit)', oprnegate
=> '<(bit,bit)', oprcode
=> 'bitge',
2147 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2148 { oid
=> '1791', descr
=> 'bitwise and',
2149 oprname
=> '&', oprleft
=> 'bit', oprright
=> 'bit', oprresult
=> 'bit',
2150 oprcom
=> '&(bit,bit)', oprcode
=> 'bitand' },
2151 { oid
=> '1792', descr
=> 'bitwise or',
2152 oprname
=> '|', oprleft
=> 'bit', oprright
=> 'bit', oprresult
=> 'bit',
2153 oprcom
=> '|(bit,bit)', oprcode
=> 'bitor' },
2154 { oid
=> '1793', descr
=> 'bitwise exclusive or',
2155 oprname
=> '#', oprleft
=> 'bit', oprright
=> 'bit', oprresult
=> 'bit',
2156 oprcom
=> '#(bit,bit)', oprcode
=> 'bitxor' },
2157 { oid
=> '1794', descr
=> 'bitwise not',
2158 oprname
=> '~', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'bit',
2159 oprresult
=> 'bit', oprcode
=> 'bitnot' },
2160 { oid
=> '1795', descr
=> 'bitwise shift left',
2161 oprname
=> '<<', oprleft
=> 'bit', oprright
=> 'int4', oprresult
=> 'bit',
2162 oprcode
=> 'bitshiftleft' },
2163 { oid
=> '1796', descr
=> 'bitwise shift right',
2164 oprname
=> '>>', oprleft
=> 'bit', oprright
=> 'int4', oprresult
=> 'bit',
2165 oprcode
=> 'bitshiftright' },
2166 { oid
=> '1797', descr
=> 'concatenate',
2167 oprname
=> '||', oprleft
=> 'varbit', oprright
=> 'varbit',
2168 oprresult
=> 'varbit', oprcode
=> 'bitcat' },
2170 { oid
=> '1800', descr
=> 'add',
2171 oprname
=> '+', oprleft
=> 'time', oprright
=> 'interval',
2172 oprresult
=> 'time', oprcom
=> '+(interval,time)',
2173 oprcode
=> 'time_pl_interval' },
2174 { oid
=> '1801', descr
=> 'subtract',
2175 oprname
=> '-', oprleft
=> 'time', oprright
=> 'interval',
2176 oprresult
=> 'time', oprcode
=> 'time_mi_interval' },
2177 { oid
=> '1802', descr
=> 'add',
2178 oprname
=> '+', oprleft
=> 'timetz', oprright
=> 'interval',
2179 oprresult
=> 'timetz', oprcom
=> '+(interval,timetz)',
2180 oprcode
=> 'timetz_pl_interval' },
2181 { oid
=> '1803', descr
=> 'subtract',
2182 oprname
=> '-', oprleft
=> 'timetz', oprright
=> 'interval',
2183 oprresult
=> 'timetz', oprcode
=> 'timetz_mi_interval' },
2185 { oid
=> '1804', descr
=> 'equal',
2186 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'varbit', oprright
=> 'varbit',
2187 oprresult
=> 'bool', oprcom
=> '=(varbit,varbit)',
2188 oprnegate
=> '<>(varbit,varbit)', oprcode
=> 'varbiteq', oprrest
=> 'eqsel',
2189 oprjoin
=> 'eqjoinsel' },
2190 { oid
=> '1805', descr
=> 'not equal',
2191 oprname
=> '<>', oprleft
=> 'varbit', oprright
=> 'varbit',
2192 oprresult
=> 'bool', oprcom
=> '<>(varbit,varbit)',
2193 oprnegate
=> '=(varbit,varbit)', oprcode
=> 'varbitne', oprrest
=> 'neqsel',
2194 oprjoin
=> 'neqjoinsel' },
2195 { oid
=> '1806', descr
=> 'less than',
2196 oprname
=> '<', oprleft
=> 'varbit', oprright
=> 'varbit',
2197 oprresult
=> 'bool', oprcom
=> '>(varbit,varbit)',
2198 oprnegate
=> '>=(varbit,varbit)', oprcode
=> 'varbitlt',
2199 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2200 { oid
=> '1807', descr
=> 'greater than',
2201 oprname
=> '>', oprleft
=> 'varbit', oprright
=> 'varbit',
2202 oprresult
=> 'bool', oprcom
=> '<(varbit,varbit)',
2203 oprnegate
=> '<=(varbit,varbit)', oprcode
=> 'varbitgt',
2204 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2205 { oid
=> '1808', descr
=> 'less than or equal',
2206 oprname
=> '<=', oprleft
=> 'varbit', oprright
=> 'varbit',
2207 oprresult
=> 'bool', oprcom
=> '>=(varbit,varbit)',
2208 oprnegate
=> '>(varbit,varbit)', oprcode
=> 'varbitle',
2209 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2210 { oid
=> '1809', descr
=> 'greater than or equal',
2211 oprname
=> '>=', oprleft
=> 'varbit', oprright
=> 'varbit',
2212 oprresult
=> 'bool', oprcom
=> '<=(varbit,varbit)',
2213 oprnegate
=> '<(varbit,varbit)', oprcode
=> 'varbitge',
2214 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2216 { oid
=> '1849', descr
=> 'add',
2217 oprname
=> '+', oprleft
=> 'interval', oprright
=> 'time',
2218 oprresult
=> 'time', oprcom
=> '+(time,interval)',
2219 oprcode
=> 'interval_pl_time' },
2221 { oid
=> '1862', descr
=> 'equal',
2222 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'int2',
2223 oprright
=> 'int8', oprresult
=> 'bool', oprcom
=> '=(int8,int2)',
2224 oprnegate
=> '<>(int2,int8)', oprcode
=> 'int28eq', oprrest
=> 'eqsel',
2225 oprjoin
=> 'eqjoinsel' },
2226 { oid
=> '1863', descr
=> 'not equal',
2227 oprname
=> '<>', oprleft
=> 'int2', oprright
=> 'int8', oprresult
=> 'bool',
2228 oprcom
=> '<>(int8,int2)', oprnegate
=> '=(int2,int8)', oprcode
=> 'int28ne',
2229 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2230 { oid
=> '1864', descr
=> 'less than',
2231 oprname
=> '<', oprleft
=> 'int2', oprright
=> 'int8', oprresult
=> 'bool',
2232 oprcom
=> '>(int8,int2)', oprnegate
=> '>=(int2,int8)', oprcode
=> 'int28lt',
2233 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2234 { oid
=> '1865', descr
=> 'greater than',
2235 oprname
=> '>', oprleft
=> 'int2', oprright
=> 'int8', oprresult
=> 'bool',
2236 oprcom
=> '<(int8,int2)', oprnegate
=> '<=(int2,int8)', oprcode
=> 'int28gt',
2237 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2238 { oid
=> '1866', descr
=> 'less than or equal',
2239 oprname
=> '<=', oprleft
=> 'int2', oprright
=> 'int8', oprresult
=> 'bool',
2240 oprcom
=> '>=(int8,int2)', oprnegate
=> '>(int2,int8)', oprcode
=> 'int28le',
2241 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2242 { oid
=> '1867', descr
=> 'greater than or equal',
2243 oprname
=> '>=', oprleft
=> 'int2', oprright
=> 'int8', oprresult
=> 'bool',
2244 oprcom
=> '<=(int8,int2)', oprnegate
=> '<(int2,int8)', oprcode
=> 'int28ge',
2245 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2247 { oid
=> '1868', descr
=> 'equal',
2248 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'int8',
2249 oprright
=> 'int2', oprresult
=> 'bool', oprcom
=> '=(int2,int8)',
2250 oprnegate
=> '<>(int8,int2)', oprcode
=> 'int82eq', oprrest
=> 'eqsel',
2251 oprjoin
=> 'eqjoinsel' },
2252 { oid
=> '1869', descr
=> 'not equal',
2253 oprname
=> '<>', oprleft
=> 'int8', oprright
=> 'int2', oprresult
=> 'bool',
2254 oprcom
=> '<>(int2,int8)', oprnegate
=> '=(int8,int2)', oprcode
=> 'int82ne',
2255 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2256 { oid
=> '1870', descr
=> 'less than',
2257 oprname
=> '<', oprleft
=> 'int8', oprright
=> 'int2', oprresult
=> 'bool',
2258 oprcom
=> '>(int2,int8)', oprnegate
=> '>=(int8,int2)', oprcode
=> 'int82lt',
2259 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2260 { oid
=> '1871', descr
=> 'greater than',
2261 oprname
=> '>', oprleft
=> 'int8', oprright
=> 'int2', oprresult
=> 'bool',
2262 oprcom
=> '<(int2,int8)', oprnegate
=> '<=(int8,int2)', oprcode
=> 'int82gt',
2263 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2264 { oid
=> '1872', descr
=> 'less than or equal',
2265 oprname
=> '<=', oprleft
=> 'int8', oprright
=> 'int2', oprresult
=> 'bool',
2266 oprcom
=> '>=(int2,int8)', oprnegate
=> '>(int8,int2)', oprcode
=> 'int82le',
2267 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2268 { oid
=> '1873', descr
=> 'greater than or equal',
2269 oprname
=> '>=', oprleft
=> 'int8', oprright
=> 'int2', oprresult
=> 'bool',
2270 oprcom
=> '<=(int2,int8)', oprnegate
=> '<(int8,int2)', oprcode
=> 'int82ge',
2271 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2273 { oid
=> '1874', descr
=> 'bitwise and',
2274 oprname
=> '&', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'int2',
2275 oprcom
=> '&(int2,int2)', oprcode
=> 'int2and' },
2276 { oid
=> '1875', descr
=> 'bitwise or',
2277 oprname
=> '|', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'int2',
2278 oprcom
=> '|(int2,int2)', oprcode
=> 'int2or' },
2279 { oid
=> '1876', descr
=> 'bitwise exclusive or',
2280 oprname
=> '#', oprleft
=> 'int2', oprright
=> 'int2', oprresult
=> 'int2',
2281 oprcom
=> '#(int2,int2)', oprcode
=> 'int2xor' },
2282 { oid
=> '1877', descr
=> 'bitwise not',
2283 oprname
=> '~', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int2',
2284 oprresult
=> 'int2', oprcode
=> 'int2not' },
2285 { oid
=> '1878', descr
=> 'bitwise shift left',
2286 oprname
=> '<<', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'int2',
2287 oprcode
=> 'int2shl' },
2288 { oid
=> '1879', descr
=> 'bitwise shift right',
2289 oprname
=> '>>', oprleft
=> 'int2', oprright
=> 'int4', oprresult
=> 'int2',
2290 oprcode
=> 'int2shr' },
2292 { oid
=> '1880', descr
=> 'bitwise and',
2293 oprname
=> '&', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'int4',
2294 oprcom
=> '&(int4,int4)', oprcode
=> 'int4and' },
2295 { oid
=> '1881', descr
=> 'bitwise or',
2296 oprname
=> '|', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'int4',
2297 oprcom
=> '|(int4,int4)', oprcode
=> 'int4or' },
2298 { oid
=> '1882', descr
=> 'bitwise exclusive or',
2299 oprname
=> '#', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'int4',
2300 oprcom
=> '#(int4,int4)', oprcode
=> 'int4xor' },
2301 { oid
=> '1883', descr
=> 'bitwise not',
2302 oprname
=> '~', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int4',
2303 oprresult
=> 'int4', oprcode
=> 'int4not' },
2304 { oid
=> '1884', descr
=> 'bitwise shift left',
2305 oprname
=> '<<', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'int4',
2306 oprcode
=> 'int4shl' },
2307 { oid
=> '1885', descr
=> 'bitwise shift right',
2308 oprname
=> '>>', oprleft
=> 'int4', oprright
=> 'int4', oprresult
=> 'int4',
2309 oprcode
=> 'int4shr' },
2311 { oid
=> '1886', descr
=> 'bitwise and',
2312 oprname
=> '&', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'int8',
2313 oprcom
=> '&(int8,int8)', oprcode
=> 'int8and' },
2314 { oid
=> '1887', descr
=> 'bitwise or',
2315 oprname
=> '|', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'int8',
2316 oprcom
=> '|(int8,int8)', oprcode
=> 'int8or' },
2317 { oid
=> '1888', descr
=> 'bitwise exclusive or',
2318 oprname
=> '#', oprleft
=> 'int8', oprright
=> 'int8', oprresult
=> 'int8',
2319 oprcom
=> '#(int8,int8)', oprcode
=> 'int8xor' },
2320 { oid
=> '1889', descr
=> 'bitwise not',
2321 oprname
=> '~', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int8',
2322 oprresult
=> 'int8', oprcode
=> 'int8not' },
2323 { oid
=> '1890', descr
=> 'bitwise shift left',
2324 oprname
=> '<<', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'int8',
2325 oprcode
=> 'int8shl' },
2326 { oid
=> '1891', descr
=> 'bitwise shift right',
2327 oprname
=> '>>', oprleft
=> 'int8', oprright
=> 'int4', oprresult
=> 'int8',
2328 oprcode
=> 'int8shr' },
2330 { oid
=> '1916', descr
=> 'unary plus',
2331 oprname
=> '+', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int8',
2332 oprresult
=> 'int8', oprcode
=> 'int8up' },
2333 { oid
=> '1917', descr
=> 'unary plus',
2334 oprname
=> '+', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int2',
2335 oprresult
=> 'int2', oprcode
=> 'int2up' },
2336 { oid
=> '1918', descr
=> 'unary plus',
2337 oprname
=> '+', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'int4',
2338 oprresult
=> 'int4', oprcode
=> 'int4up' },
2339 { oid
=> '1919', descr
=> 'unary plus',
2340 oprname
=> '+', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'float4',
2341 oprresult
=> 'float4', oprcode
=> 'float4up' },
2342 { oid
=> '1920', descr
=> 'unary plus',
2343 oprname
=> '+', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'float8',
2344 oprresult
=> 'float8', oprcode
=> 'float8up' },
2345 { oid
=> '1921', descr
=> 'unary plus',
2346 oprname
=> '+', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'numeric',
2347 oprresult
=> 'numeric', oprcode
=> 'numeric_uplus' },
2350 { oid
=> '1955', oid_symbol
=> 'ByteaEqualOperator', descr
=> 'equal',
2351 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'bytea',
2352 oprright
=> 'bytea', oprresult
=> 'bool', oprcom
=> '=(bytea,bytea)',
2353 oprnegate
=> '<>(bytea,bytea)', oprcode
=> 'byteaeq', oprrest
=> 'eqsel',
2354 oprjoin
=> 'eqjoinsel' },
2355 { oid
=> '1956', descr
=> 'not equal',
2356 oprname
=> '<>', oprleft
=> 'bytea', oprright
=> 'bytea', oprresult
=> 'bool',
2357 oprcom
=> '<>(bytea,bytea)', oprnegate
=> '=(bytea,bytea)',
2358 oprcode
=> 'byteane', oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2359 { oid
=> '1957', oid_symbol
=> 'ByteaLessOperator', descr
=> 'less than',
2360 oprname
=> '<', oprleft
=> 'bytea', oprright
=> 'bytea', oprresult
=> 'bool',
2361 oprcom
=> '>(bytea,bytea)', oprnegate
=> '>=(bytea,bytea)',
2362 oprcode
=> 'bytealt', oprrest
=> 'scalarltsel',
2363 oprjoin
=> 'scalarltjoinsel' },
2364 { oid
=> '1958', descr
=> 'less than or equal',
2365 oprname
=> '<=', oprleft
=> 'bytea', oprright
=> 'bytea', oprresult
=> 'bool',
2366 oprcom
=> '>=(bytea,bytea)', oprnegate
=> '>(bytea,bytea)',
2367 oprcode
=> 'byteale', oprrest
=> 'scalarlesel',
2368 oprjoin
=> 'scalarlejoinsel' },
2369 { oid
=> '1959', descr
=> 'greater than',
2370 oprname
=> '>', oprleft
=> 'bytea', oprright
=> 'bytea', oprresult
=> 'bool',
2371 oprcom
=> '<(bytea,bytea)', oprnegate
=> '<=(bytea,bytea)',
2372 oprcode
=> 'byteagt', oprrest
=> 'scalargtsel',
2373 oprjoin
=> 'scalargtjoinsel' },
2374 { oid
=> '1960', oid_symbol
=> 'ByteaGreaterEqualOperator',
2375 descr
=> 'greater than or equal',
2376 oprname
=> '>=', oprleft
=> 'bytea', oprright
=> 'bytea', oprresult
=> 'bool',
2377 oprcom
=> '<=(bytea,bytea)', oprnegate
=> '<(bytea,bytea)',
2378 oprcode
=> 'byteage', oprrest
=> 'scalargesel',
2379 oprjoin
=> 'scalargejoinsel' },
2381 { oid
=> '2016', oid_symbol
=> 'OID_BYTEA_LIKE_OP',
2382 descr
=> 'matches LIKE expression',
2383 oprname
=> '~~', oprleft
=> 'bytea', oprright
=> 'bytea', oprresult
=> 'bool',
2384 oprnegate
=> '!~~(bytea,bytea)', oprcode
=> 'bytealike', oprrest
=> 'likesel',
2385 oprjoin
=> 'likejoinsel' },
2386 { oid
=> '2017', descr
=> 'does not match LIKE expression',
2387 oprname
=> '!~~', oprleft
=> 'bytea', oprright
=> 'bytea',
2388 oprresult
=> 'bool', oprnegate
=> '~~(bytea,bytea)', oprcode
=> 'byteanlike',
2389 oprrest
=> 'nlikesel', oprjoin
=> 'nlikejoinsel' },
2390 { oid
=> '2018', descr
=> 'concatenate',
2391 oprname
=> '||', oprleft
=> 'bytea', oprright
=> 'bytea',
2392 oprresult
=> 'bytea', oprcode
=> 'byteacat' },
2394 # timestamp operators
2395 { oid
=> '2060', descr
=> 'equal',
2396 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'timestamp',
2397 oprright
=> 'timestamp', oprresult
=> 'bool',
2398 oprcom
=> '=(timestamp,timestamp)', oprnegate
=> '<>(timestamp,timestamp)',
2399 oprcode
=> 'timestamp_eq', oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
2400 { oid
=> '2061', descr
=> 'not equal',
2401 oprname
=> '<>', oprleft
=> 'timestamp', oprright
=> 'timestamp',
2402 oprresult
=> 'bool', oprcom
=> '<>(timestamp,timestamp)',
2403 oprnegate
=> '=(timestamp,timestamp)', oprcode
=> 'timestamp_ne',
2404 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2405 { oid
=> '2062', descr
=> 'less than',
2406 oprname
=> '<', oprleft
=> 'timestamp', oprright
=> 'timestamp',
2407 oprresult
=> 'bool', oprcom
=> '>(timestamp,timestamp)',
2408 oprnegate
=> '>=(timestamp,timestamp)', oprcode
=> 'timestamp_lt',
2409 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2410 { oid
=> '2063', descr
=> 'less than or equal',
2411 oprname
=> '<=', oprleft
=> 'timestamp', oprright
=> 'timestamp',
2412 oprresult
=> 'bool', oprcom
=> '>=(timestamp,timestamp)',
2413 oprnegate
=> '>(timestamp,timestamp)', oprcode
=> 'timestamp_le',
2414 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2415 { oid
=> '2064', descr
=> 'greater than',
2416 oprname
=> '>', oprleft
=> 'timestamp', oprright
=> 'timestamp',
2417 oprresult
=> 'bool', oprcom
=> '<(timestamp,timestamp)',
2418 oprnegate
=> '<=(timestamp,timestamp)', oprcode
=> 'timestamp_gt',
2419 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2420 { oid
=> '2065', descr
=> 'greater than or equal',
2421 oprname
=> '>=', oprleft
=> 'timestamp', oprright
=> 'timestamp',
2422 oprresult
=> 'bool', oprcom
=> '<=(timestamp,timestamp)',
2423 oprnegate
=> '<(timestamp,timestamp)', oprcode
=> 'timestamp_ge',
2424 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2425 { oid
=> '2066', descr
=> 'add',
2426 oprname
=> '+', oprleft
=> 'timestamp', oprright
=> 'interval',
2427 oprresult
=> 'timestamp', oprcom
=> '+(interval,timestamp)',
2428 oprcode
=> 'timestamp_pl_interval' },
2429 { oid
=> '2067', descr
=> 'subtract',
2430 oprname
=> '-', oprleft
=> 'timestamp', oprright
=> 'timestamp',
2431 oprresult
=> 'interval', oprcode
=> 'timestamp_mi' },
2432 { oid
=> '2068', descr
=> 'subtract',
2433 oprname
=> '-', oprleft
=> 'timestamp', oprright
=> 'interval',
2434 oprresult
=> 'timestamp', oprcode
=> 'timestamp_mi_interval' },
2436 # character-by-character (not collation order) comparison operators for character types
2437 { oid
=> '2314', oid_symbol
=> 'TextPatternLessOperator',
2438 descr
=> 'less than',
2439 oprname
=> '~<~', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
2440 oprcom
=> '~>~(text,text)', oprnegate
=> '~>=~(text,text)',
2441 oprcode
=> 'text_pattern_lt', oprrest
=> 'scalarltsel',
2442 oprjoin
=> 'scalarltjoinsel' },
2443 { oid
=> '2315', descr
=> 'less than or equal',
2444 oprname
=> '~<=~', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
2445 oprcom
=> '~>=~(text,text)', oprnegate
=> '~>~(text,text)',
2446 oprcode
=> 'text_pattern_le', oprrest
=> 'scalarlesel',
2447 oprjoin
=> 'scalarlejoinsel' },
2448 { oid
=> '2317', oid_symbol
=> 'TextPatternGreaterEqualOperator',
2449 descr
=> 'greater than or equal',
2450 oprname
=> '~>=~', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
2451 oprcom
=> '~<=~(text,text)', oprnegate
=> '~<~(text,text)',
2452 oprcode
=> 'text_pattern_ge', oprrest
=> 'scalargesel',
2453 oprjoin
=> 'scalargejoinsel' },
2454 { oid
=> '2318', descr
=> 'greater than',
2455 oprname
=> '~>~', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
2456 oprcom
=> '~<~(text,text)', oprnegate
=> '~<=~(text,text)',
2457 oprcode
=> 'text_pattern_gt', oprrest
=> 'scalargtsel',
2458 oprjoin
=> 'scalargtjoinsel' },
2460 { oid
=> '2326', oid_symbol
=> 'BpcharPatternLessOperator',
2461 descr
=> 'less than',
2462 oprname
=> '~<~', oprleft
=> 'bpchar', oprright
=> 'bpchar',
2463 oprresult
=> 'bool', oprcom
=> '~>~(bpchar,bpchar)',
2464 oprnegate
=> '~>=~(bpchar,bpchar)', oprcode
=> 'bpchar_pattern_lt',
2465 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2466 { oid
=> '2327', descr
=> 'less than or equal',
2467 oprname
=> '~<=~', oprleft
=> 'bpchar', oprright
=> 'bpchar',
2468 oprresult
=> 'bool', oprcom
=> '~>=~(bpchar,bpchar)',
2469 oprnegate
=> '~>~(bpchar,bpchar)', oprcode
=> 'bpchar_pattern_le',
2470 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2471 { oid
=> '2329', oid_symbol
=> 'BpcharPatternGreaterEqualOperator',
2472 descr
=> 'greater than or equal',
2473 oprname
=> '~>=~', oprleft
=> 'bpchar', oprright
=> 'bpchar',
2474 oprresult
=> 'bool', oprcom
=> '~<=~(bpchar,bpchar)',
2475 oprnegate
=> '~<~(bpchar,bpchar)', oprcode
=> 'bpchar_pattern_ge',
2476 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2477 { oid
=> '2330', descr
=> 'greater than',
2478 oprname
=> '~>~', oprleft
=> 'bpchar', oprright
=> 'bpchar',
2479 oprresult
=> 'bool', oprcom
=> '~<~(bpchar,bpchar)',
2480 oprnegate
=> '~<=~(bpchar,bpchar)', oprcode
=> 'bpchar_pattern_gt',
2481 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2483 # crosstype operations for date vs. timestamp and timestamptz
2484 { oid
=> '2345', descr
=> 'less than',
2485 oprname
=> '<', oprleft
=> 'date', oprright
=> 'timestamp',
2486 oprresult
=> 'bool', oprcom
=> '>(timestamp,date)',
2487 oprnegate
=> '>=(date,timestamp)', oprcode
=> 'date_lt_timestamp',
2488 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2489 { oid
=> '2346', descr
=> 'less than or equal',
2490 oprname
=> '<=', oprleft
=> 'date', oprright
=> 'timestamp',
2491 oprresult
=> 'bool', oprcom
=> '>=(timestamp,date)',
2492 oprnegate
=> '>(date,timestamp)', oprcode
=> 'date_le_timestamp',
2493 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2494 { oid
=> '2347', descr
=> 'equal',
2495 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'date',
2496 oprright
=> 'timestamp', oprresult
=> 'bool', oprcom
=> '=(timestamp,date)',
2497 oprnegate
=> '<>(date,timestamp)', oprcode
=> 'date_eq_timestamp',
2498 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
2499 { oid
=> '2348', descr
=> 'greater than or equal',
2500 oprname
=> '>=', oprleft
=> 'date', oprright
=> 'timestamp',
2501 oprresult
=> 'bool', oprcom
=> '<=(timestamp,date)',
2502 oprnegate
=> '<(date,timestamp)', oprcode
=> 'date_ge_timestamp',
2503 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2504 { oid
=> '2349', descr
=> 'greater than',
2505 oprname
=> '>', oprleft
=> 'date', oprright
=> 'timestamp',
2506 oprresult
=> 'bool', oprcom
=> '<(timestamp,date)',
2507 oprnegate
=> '<=(date,timestamp)', oprcode
=> 'date_gt_timestamp',
2508 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2509 { oid
=> '2350', descr
=> 'not equal',
2510 oprname
=> '<>', oprleft
=> 'date', oprright
=> 'timestamp',
2511 oprresult
=> 'bool', oprcom
=> '<>(timestamp,date)',
2512 oprnegate
=> '=(date,timestamp)', oprcode
=> 'date_ne_timestamp',
2513 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2515 { oid
=> '2358', descr
=> 'less than',
2516 oprname
=> '<', oprleft
=> 'date', oprright
=> 'timestamptz',
2517 oprresult
=> 'bool', oprcom
=> '>(timestamptz,date)',
2518 oprnegate
=> '>=(date,timestamptz)', oprcode
=> 'date_lt_timestamptz',
2519 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2520 { oid
=> '2359', descr
=> 'less than or equal',
2521 oprname
=> '<=', oprleft
=> 'date', oprright
=> 'timestamptz',
2522 oprresult
=> 'bool', oprcom
=> '>=(timestamptz,date)',
2523 oprnegate
=> '>(date,timestamptz)', oprcode
=> 'date_le_timestamptz',
2524 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2525 { oid
=> '2360', descr
=> 'equal',
2526 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'date',
2527 oprright
=> 'timestamptz', oprresult
=> 'bool',
2528 oprcom
=> '=(timestamptz,date)', oprnegate
=> '<>(date,timestamptz)',
2529 oprcode
=> 'date_eq_timestamptz', oprrest
=> 'eqsel',
2530 oprjoin
=> 'eqjoinsel' },
2531 { oid
=> '2361', descr
=> 'greater than or equal',
2532 oprname
=> '>=', oprleft
=> 'date', oprright
=> 'timestamptz',
2533 oprresult
=> 'bool', oprcom
=> '<=(timestamptz,date)',
2534 oprnegate
=> '<(date,timestamptz)', oprcode
=> 'date_ge_timestamptz',
2535 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2536 { oid
=> '2362', descr
=> 'greater than',
2537 oprname
=> '>', oprleft
=> 'date', oprright
=> 'timestamptz',
2538 oprresult
=> 'bool', oprcom
=> '<(timestamptz,date)',
2539 oprnegate
=> '<=(date,timestamptz)', oprcode
=> 'date_gt_timestamptz',
2540 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2541 { oid
=> '2363', descr
=> 'not equal',
2542 oprname
=> '<>', oprleft
=> 'date', oprright
=> 'timestamptz',
2543 oprresult
=> 'bool', oprcom
=> '<>(timestamptz,date)',
2544 oprnegate
=> '=(date,timestamptz)', oprcode
=> 'date_ne_timestamptz',
2545 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2547 { oid
=> '2371', descr
=> 'less than',
2548 oprname
=> '<', oprleft
=> 'timestamp', oprright
=> 'date',
2549 oprresult
=> 'bool', oprcom
=> '>(date,timestamp)',
2550 oprnegate
=> '>=(timestamp,date)', oprcode
=> 'timestamp_lt_date',
2551 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2552 { oid
=> '2372', descr
=> 'less than or equal',
2553 oprname
=> '<=', oprleft
=> 'timestamp', oprright
=> 'date',
2554 oprresult
=> 'bool', oprcom
=> '>=(date,timestamp)',
2555 oprnegate
=> '>(timestamp,date)', oprcode
=> 'timestamp_le_date',
2556 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2557 { oid
=> '2373', descr
=> 'equal',
2558 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'timestamp',
2559 oprright
=> 'date', oprresult
=> 'bool', oprcom
=> '=(date,timestamp)',
2560 oprnegate
=> '<>(timestamp,date)', oprcode
=> 'timestamp_eq_date',
2561 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
2562 { oid
=> '2374', descr
=> 'greater than or equal',
2563 oprname
=> '>=', oprleft
=> 'timestamp', oprright
=> 'date',
2564 oprresult
=> 'bool', oprcom
=> '<=(date,timestamp)',
2565 oprnegate
=> '<(timestamp,date)', oprcode
=> 'timestamp_ge_date',
2566 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2567 { oid
=> '2375', descr
=> 'greater than',
2568 oprname
=> '>', oprleft
=> 'timestamp', oprright
=> 'date',
2569 oprresult
=> 'bool', oprcom
=> '<(date,timestamp)',
2570 oprnegate
=> '<=(timestamp,date)', oprcode
=> 'timestamp_gt_date',
2571 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2572 { oid
=> '2376', descr
=> 'not equal',
2573 oprname
=> '<>', oprleft
=> 'timestamp', oprright
=> 'date',
2574 oprresult
=> 'bool', oprcom
=> '<>(date,timestamp)',
2575 oprnegate
=> '=(timestamp,date)', oprcode
=> 'timestamp_ne_date',
2576 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2578 { oid
=> '2384', descr
=> 'less than',
2579 oprname
=> '<', oprleft
=> 'timestamptz', oprright
=> 'date',
2580 oprresult
=> 'bool', oprcom
=> '>(date,timestamptz)',
2581 oprnegate
=> '>=(timestamptz,date)', oprcode
=> 'timestamptz_lt_date',
2582 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2583 { oid
=> '2385', descr
=> 'less than or equal',
2584 oprname
=> '<=', oprleft
=> 'timestamptz', oprright
=> 'date',
2585 oprresult
=> 'bool', oprcom
=> '>=(date,timestamptz)',
2586 oprnegate
=> '>(timestamptz,date)', oprcode
=> 'timestamptz_le_date',
2587 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2588 { oid
=> '2386', descr
=> 'equal',
2589 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'timestamptz',
2590 oprright
=> 'date', oprresult
=> 'bool', oprcom
=> '=(date,timestamptz)',
2591 oprnegate
=> '<>(timestamptz,date)', oprcode
=> 'timestamptz_eq_date',
2592 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
2593 { oid
=> '2387', descr
=> 'greater than or equal',
2594 oprname
=> '>=', oprleft
=> 'timestamptz', oprright
=> 'date',
2595 oprresult
=> 'bool', oprcom
=> '<=(date,timestamptz)',
2596 oprnegate
=> '<(timestamptz,date)', oprcode
=> 'timestamptz_ge_date',
2597 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2598 { oid
=> '2388', descr
=> 'greater than',
2599 oprname
=> '>', oprleft
=> 'timestamptz', oprright
=> 'date',
2600 oprresult
=> 'bool', oprcom
=> '<(date,timestamptz)',
2601 oprnegate
=> '<=(timestamptz,date)', oprcode
=> 'timestamptz_gt_date',
2602 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2603 { oid
=> '2389', descr
=> 'not equal',
2604 oprname
=> '<>', oprleft
=> 'timestamptz', oprright
=> 'date',
2605 oprresult
=> 'bool', oprcom
=> '<>(date,timestamptz)',
2606 oprnegate
=> '=(timestamptz,date)', oprcode
=> 'timestamptz_ne_date',
2607 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2609 # crosstype operations for timestamp vs. timestamptz
2610 { oid
=> '2534', descr
=> 'less than',
2611 oprname
=> '<', oprleft
=> 'timestamp', oprright
=> 'timestamptz',
2612 oprresult
=> 'bool', oprcom
=> '>(timestamptz,timestamp)',
2613 oprnegate
=> '>=(timestamp,timestamptz)',
2614 oprcode
=> 'timestamp_lt_timestamptz', oprrest
=> 'scalarltsel',
2615 oprjoin
=> 'scalarltjoinsel' },
2616 { oid
=> '2535', descr
=> 'less than or equal',
2617 oprname
=> '<=', oprleft
=> 'timestamp', oprright
=> 'timestamptz',
2618 oprresult
=> 'bool', oprcom
=> '>=(timestamptz,timestamp)',
2619 oprnegate
=> '>(timestamp,timestamptz)',
2620 oprcode
=> 'timestamp_le_timestamptz', oprrest
=> 'scalarlesel',
2621 oprjoin
=> 'scalarlejoinsel' },
2622 { oid
=> '2536', descr
=> 'equal',
2623 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'timestamp',
2624 oprright
=> 'timestamptz', oprresult
=> 'bool',
2625 oprcom
=> '=(timestamptz,timestamp)',
2626 oprnegate
=> '<>(timestamp,timestamptz)',
2627 oprcode
=> 'timestamp_eq_timestamptz', oprrest
=> 'eqsel',
2628 oprjoin
=> 'eqjoinsel' },
2629 { oid
=> '2537', descr
=> 'greater than or equal',
2630 oprname
=> '>=', oprleft
=> 'timestamp', oprright
=> 'timestamptz',
2631 oprresult
=> 'bool', oprcom
=> '<=(timestamptz,timestamp)',
2632 oprnegate
=> '<(timestamp,timestamptz)',
2633 oprcode
=> 'timestamp_ge_timestamptz', oprrest
=> 'scalargesel',
2634 oprjoin
=> 'scalargejoinsel' },
2635 { oid
=> '2538', descr
=> 'greater than',
2636 oprname
=> '>', oprleft
=> 'timestamp', oprright
=> 'timestamptz',
2637 oprresult
=> 'bool', oprcom
=> '<(timestamptz,timestamp)',
2638 oprnegate
=> '<=(timestamp,timestamptz)',
2639 oprcode
=> 'timestamp_gt_timestamptz', oprrest
=> 'scalargtsel',
2640 oprjoin
=> 'scalargtjoinsel' },
2641 { oid
=> '2539', descr
=> 'not equal',
2642 oprname
=> '<>', oprleft
=> 'timestamp', oprright
=> 'timestamptz',
2643 oprresult
=> 'bool', oprcom
=> '<>(timestamptz,timestamp)',
2644 oprnegate
=> '=(timestamp,timestamptz)',
2645 oprcode
=> 'timestamp_ne_timestamptz', oprrest
=> 'neqsel',
2646 oprjoin
=> 'neqjoinsel' },
2648 { oid
=> '2540', descr
=> 'less than',
2649 oprname
=> '<', oprleft
=> 'timestamptz', oprright
=> 'timestamp',
2650 oprresult
=> 'bool', oprcom
=> '>(timestamp,timestamptz)',
2651 oprnegate
=> '>=(timestamptz,timestamp)',
2652 oprcode
=> 'timestamptz_lt_timestamp', oprrest
=> 'scalarltsel',
2653 oprjoin
=> 'scalarltjoinsel' },
2654 { oid
=> '2541', descr
=> 'less than or equal',
2655 oprname
=> '<=', oprleft
=> 'timestamptz', oprright
=> 'timestamp',
2656 oprresult
=> 'bool', oprcom
=> '>=(timestamp,timestamptz)',
2657 oprnegate
=> '>(timestamptz,timestamp)',
2658 oprcode
=> 'timestamptz_le_timestamp', oprrest
=> 'scalarlesel',
2659 oprjoin
=> 'scalarlejoinsel' },
2660 { oid
=> '2542', descr
=> 'equal',
2661 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'timestamptz',
2662 oprright
=> 'timestamp', oprresult
=> 'bool',
2663 oprcom
=> '=(timestamp,timestamptz)',
2664 oprnegate
=> '<>(timestamptz,timestamp)',
2665 oprcode
=> 'timestamptz_eq_timestamp', oprrest
=> 'eqsel',
2666 oprjoin
=> 'eqjoinsel' },
2667 { oid
=> '2543', descr
=> 'greater than or equal',
2668 oprname
=> '>=', oprleft
=> 'timestamptz', oprright
=> 'timestamp',
2669 oprresult
=> 'bool', oprcom
=> '<=(timestamp,timestamptz)',
2670 oprnegate
=> '<(timestamptz,timestamp)',
2671 oprcode
=> 'timestamptz_ge_timestamp', oprrest
=> 'scalargesel',
2672 oprjoin
=> 'scalargejoinsel' },
2673 { oid
=> '2544', descr
=> 'greater than',
2674 oprname
=> '>', oprleft
=> 'timestamptz', oprright
=> 'timestamp',
2675 oprresult
=> 'bool', oprcom
=> '<(timestamp,timestamptz)',
2676 oprnegate
=> '<=(timestamptz,timestamp)',
2677 oprcode
=> 'timestamptz_gt_timestamp', oprrest
=> 'scalargtsel',
2678 oprjoin
=> 'scalargtjoinsel' },
2679 { oid
=> '2545', descr
=> 'not equal',
2680 oprname
=> '<>', oprleft
=> 'timestamptz', oprright
=> 'timestamp',
2681 oprresult
=> 'bool', oprcom
=> '<>(timestamp,timestamptz)',
2682 oprnegate
=> '=(timestamptz,timestamp)',
2683 oprcode
=> 'timestamptz_ne_timestamp', oprrest
=> 'neqsel',
2684 oprjoin
=> 'neqjoinsel' },
2686 # formerly-missing interval + datetime operators
2687 { oid
=> '2551', descr
=> 'add',
2688 oprname
=> '+', oprleft
=> 'interval', oprright
=> 'date',
2689 oprresult
=> 'timestamp', oprcom
=> '+(date,interval)',
2690 oprcode
=> 'interval_pl_date' },
2691 { oid
=> '2552', descr
=> 'add',
2692 oprname
=> '+', oprleft
=> 'interval', oprright
=> 'timetz',
2693 oprresult
=> 'timetz', oprcom
=> '+(timetz,interval)',
2694 oprcode
=> 'interval_pl_timetz' },
2695 { oid
=> '2553', descr
=> 'add',
2696 oprname
=> '+', oprleft
=> 'interval', oprright
=> 'timestamp',
2697 oprresult
=> 'timestamp', oprcom
=> '+(timestamp,interval)',
2698 oprcode
=> 'interval_pl_timestamp' },
2699 { oid
=> '2554', descr
=> 'add',
2700 oprname
=> '+', oprleft
=> 'interval', oprright
=> 'timestamptz',
2701 oprresult
=> 'timestamptz', oprcom
=> '+(timestamptz,interval)',
2702 oprcode
=> 'interval_pl_timestamptz' },
2703 { oid
=> '2555', descr
=> 'add',
2704 oprname
=> '+', oprleft
=> 'int4', oprright
=> 'date', oprresult
=> 'date',
2705 oprcom
=> '+(date,int4)', oprcode
=> 'integer_pl_date' },
2707 # new operators for Y-direction rtree opfamilies
2708 { oid
=> '2570', descr
=> 'is below',
2709 oprname
=> '<<|', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
2710 oprcode
=> 'box_below', oprrest
=> 'positionsel',
2711 oprjoin
=> 'positionjoinsel' },
2712 { oid
=> '2571', descr
=> 'overlaps or is below',
2713 oprname
=> '&<|', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
2714 oprcode
=> 'box_overbelow', oprrest
=> 'positionsel',
2715 oprjoin
=> 'positionjoinsel' },
2716 { oid
=> '2572', descr
=> 'overlaps or is above',
2717 oprname
=> '|&>', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
2718 oprcode
=> 'box_overabove', oprrest
=> 'positionsel',
2719 oprjoin
=> 'positionjoinsel' },
2720 { oid
=> '2573', descr
=> 'is above',
2721 oprname
=> '|>>', oprleft
=> 'box', oprright
=> 'box', oprresult
=> 'bool',
2722 oprcode
=> 'box_above', oprrest
=> 'positionsel',
2723 oprjoin
=> 'positionjoinsel' },
2724 { oid
=> '2574', descr
=> 'is below',
2725 oprname
=> '<<|', oprleft
=> 'polygon', oprright
=> 'polygon',
2726 oprresult
=> 'bool', oprcode
=> 'poly_below', oprrest
=> 'positionsel',
2727 oprjoin
=> 'positionjoinsel' },
2728 { oid
=> '2575', descr
=> 'overlaps or is below',
2729 oprname
=> '&<|', oprleft
=> 'polygon', oprright
=> 'polygon',
2730 oprresult
=> 'bool', oprcode
=> 'poly_overbelow', oprrest
=> 'positionsel',
2731 oprjoin
=> 'positionjoinsel' },
2732 { oid
=> '2576', descr
=> 'overlaps or is above',
2733 oprname
=> '|&>', oprleft
=> 'polygon', oprright
=> 'polygon',
2734 oprresult
=> 'bool', oprcode
=> 'poly_overabove', oprrest
=> 'positionsel',
2735 oprjoin
=> 'positionjoinsel' },
2736 { oid
=> '2577', descr
=> 'is above',
2737 oprname
=> '|>>', oprleft
=> 'polygon', oprright
=> 'polygon',
2738 oprresult
=> 'bool', oprcode
=> 'poly_above', oprrest
=> 'positionsel',
2739 oprjoin
=> 'positionjoinsel' },
2740 { oid
=> '2589', descr
=> 'overlaps or is below',
2741 oprname
=> '&<|', oprleft
=> 'circle', oprright
=> 'circle',
2742 oprresult
=> 'bool', oprcode
=> 'circle_overbelow', oprrest
=> 'positionsel',
2743 oprjoin
=> 'positionjoinsel' },
2744 { oid
=> '2590', descr
=> 'overlaps or is above',
2745 oprname
=> '|&>', oprleft
=> 'circle', oprright
=> 'circle',
2746 oprresult
=> 'bool', oprcode
=> 'circle_overabove', oprrest
=> 'positionsel',
2747 oprjoin
=> 'positionjoinsel' },
2749 # overlap/contains/contained for arrays
2750 { oid
=> '2750', oid_symbol
=> 'OID_ARRAY_OVERLAP_OP', descr
=> 'overlaps',
2751 oprname
=> '&&', oprleft
=> 'anyarray', oprright
=> 'anyarray',
2752 oprresult
=> 'bool', oprcom
=> '&&(anyarray,anyarray)',
2753 oprcode
=> 'arrayoverlap', oprrest
=> 'arraycontsel',
2754 oprjoin
=> 'arraycontjoinsel' },
2755 { oid
=> '2751', oid_symbol
=> 'OID_ARRAY_CONTAINS_OP', descr
=> 'contains',
2756 oprname
=> '@>', oprleft
=> 'anyarray', oprright
=> 'anyarray',
2757 oprresult
=> 'bool', oprcom
=> '<@(anyarray,anyarray)',
2758 oprcode
=> 'arraycontains', oprrest
=> 'arraycontsel',
2759 oprjoin
=> 'arraycontjoinsel' },
2760 { oid
=> '2752', oid_symbol
=> 'OID_ARRAY_CONTAINED_OP',
2761 descr
=> 'is contained by',
2762 oprname
=> '<@', oprleft
=> 'anyarray', oprright
=> 'anyarray',
2763 oprresult
=> 'bool', oprcom
=> '@>(anyarray,anyarray)',
2764 oprcode
=> 'arraycontained', oprrest
=> 'arraycontsel',
2765 oprjoin
=> 'arraycontjoinsel' },
2767 # capturing operators to preserve pre-8.3 behavior of text concatenation
2768 { oid
=> '2779', descr
=> 'concatenate',
2769 oprname
=> '||', oprleft
=> 'text', oprright
=> 'anynonarray',
2770 oprresult
=> 'text', oprcode
=> 'textanycat' },
2771 { oid
=> '2780', descr
=> 'concatenate',
2772 oprname
=> '||', oprleft
=> 'anynonarray', oprright
=> 'text',
2773 oprresult
=> 'text', oprcode
=> 'anytextcat' },
2776 { oid
=> '2972', descr
=> 'equal',
2777 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'uuid',
2778 oprright
=> 'uuid', oprresult
=> 'bool', oprcom
=> '=(uuid,uuid)',
2779 oprnegate
=> '<>(uuid,uuid)', oprcode
=> 'uuid_eq', oprrest
=> 'eqsel',
2780 oprjoin
=> 'eqjoinsel' },
2781 { oid
=> '2973', descr
=> 'not equal',
2782 oprname
=> '<>', oprleft
=> 'uuid', oprright
=> 'uuid', oprresult
=> 'bool',
2783 oprcom
=> '<>(uuid,uuid)', oprnegate
=> '=(uuid,uuid)', oprcode
=> 'uuid_ne',
2784 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2785 { oid
=> '2974', descr
=> 'less than',
2786 oprname
=> '<', oprleft
=> 'uuid', oprright
=> 'uuid', oprresult
=> 'bool',
2787 oprcom
=> '>(uuid,uuid)', oprnegate
=> '>=(uuid,uuid)', oprcode
=> 'uuid_lt',
2788 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2789 { oid
=> '2975', descr
=> 'greater than',
2790 oprname
=> '>', oprleft
=> 'uuid', oprright
=> 'uuid', oprresult
=> 'bool',
2791 oprcom
=> '<(uuid,uuid)', oprnegate
=> '<=(uuid,uuid)', oprcode
=> 'uuid_gt',
2792 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2793 { oid
=> '2976', descr
=> 'less than or equal',
2794 oprname
=> '<=', oprleft
=> 'uuid', oprright
=> 'uuid', oprresult
=> 'bool',
2795 oprcom
=> '>=(uuid,uuid)', oprnegate
=> '>(uuid,uuid)', oprcode
=> 'uuid_le',
2796 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2797 { oid
=> '2977', descr
=> 'greater than or equal',
2798 oprname
=> '>=', oprleft
=> 'uuid', oprright
=> 'uuid', oprresult
=> 'bool',
2799 oprcom
=> '<=(uuid,uuid)', oprnegate
=> '<(uuid,uuid)', oprcode
=> 'uuid_ge',
2800 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2803 { oid
=> '3222', descr
=> 'equal',
2804 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'pg_lsn',
2805 oprright
=> 'pg_lsn', oprresult
=> 'bool', oprcom
=> '=(pg_lsn,pg_lsn)',
2806 oprnegate
=> '<>(pg_lsn,pg_lsn)', oprcode
=> 'pg_lsn_eq', oprrest
=> 'eqsel',
2807 oprjoin
=> 'eqjoinsel' },
2808 { oid
=> '3223', descr
=> 'not equal',
2809 oprname
=> '<>', oprleft
=> 'pg_lsn', oprright
=> 'pg_lsn',
2810 oprresult
=> 'bool', oprcom
=> '<>(pg_lsn,pg_lsn)',
2811 oprnegate
=> '=(pg_lsn,pg_lsn)', oprcode
=> 'pg_lsn_ne', oprrest
=> 'neqsel',
2812 oprjoin
=> 'neqjoinsel' },
2813 { oid
=> '3224', descr
=> 'less than',
2814 oprname
=> '<', oprleft
=> 'pg_lsn', oprright
=> 'pg_lsn',
2815 oprresult
=> 'bool', oprcom
=> '>(pg_lsn,pg_lsn)',
2816 oprnegate
=> '>=(pg_lsn,pg_lsn)', oprcode
=> 'pg_lsn_lt',
2817 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2818 { oid
=> '3225', descr
=> 'greater than',
2819 oprname
=> '>', oprleft
=> 'pg_lsn', oprright
=> 'pg_lsn',
2820 oprresult
=> 'bool', oprcom
=> '<(pg_lsn,pg_lsn)',
2821 oprnegate
=> '<=(pg_lsn,pg_lsn)', oprcode
=> 'pg_lsn_gt',
2822 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2823 { oid
=> '3226', descr
=> 'less than or equal',
2824 oprname
=> '<=', oprleft
=> 'pg_lsn', oprright
=> 'pg_lsn',
2825 oprresult
=> 'bool', oprcom
=> '>=(pg_lsn,pg_lsn)',
2826 oprnegate
=> '>(pg_lsn,pg_lsn)', oprcode
=> 'pg_lsn_le',
2827 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2828 { oid
=> '3227', descr
=> 'greater than or equal',
2829 oprname
=> '>=', oprleft
=> 'pg_lsn', oprright
=> 'pg_lsn',
2830 oprresult
=> 'bool', oprcom
=> '<=(pg_lsn,pg_lsn)',
2831 oprnegate
=> '<(pg_lsn,pg_lsn)', oprcode
=> 'pg_lsn_ge',
2832 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2833 { oid
=> '3228', descr
=> 'minus',
2834 oprname
=> '-', oprleft
=> 'pg_lsn', oprright
=> 'pg_lsn',
2835 oprresult
=> 'numeric', oprcode
=> 'pg_lsn_mi' },
2836 { oid
=> '5025', descr
=> 'add',
2837 oprname
=> '+', oprleft
=> 'pg_lsn', oprright
=> 'numeric',
2838 oprresult
=> 'pg_lsn', oprcom
=> '+(numeric,pg_lsn)',
2839 oprcode
=> 'pg_lsn_pli' },
2840 { oid
=> '5026', descr
=> 'add',
2841 oprname
=> '+', oprleft
=> 'numeric', oprright
=> 'pg_lsn',
2842 oprresult
=> 'pg_lsn', oprcom
=> '+(pg_lsn,numeric)',
2843 oprcode
=> 'numeric_pl_pg_lsn' },
2844 { oid
=> '5027', descr
=> 'subtract',
2845 oprname
=> '-', oprleft
=> 'pg_lsn', oprright
=> 'numeric',
2846 oprresult
=> 'pg_lsn', oprcode
=> 'pg_lsn_mii' },
2849 { oid
=> '3516', descr
=> 'equal',
2850 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'anyenum',
2851 oprright
=> 'anyenum', oprresult
=> 'bool', oprcom
=> '=(anyenum,anyenum)',
2852 oprnegate
=> '<>(anyenum,anyenum)', oprcode
=> 'enum_eq', oprrest
=> 'eqsel',
2853 oprjoin
=> 'eqjoinsel' },
2854 { oid
=> '3517', descr
=> 'not equal',
2855 oprname
=> '<>', oprleft
=> 'anyenum', oprright
=> 'anyenum',
2856 oprresult
=> 'bool', oprcom
=> '<>(anyenum,anyenum)',
2857 oprnegate
=> '=(anyenum,anyenum)', oprcode
=> 'enum_ne', oprrest
=> 'neqsel',
2858 oprjoin
=> 'neqjoinsel' },
2859 { oid
=> '3518', descr
=> 'less than',
2860 oprname
=> '<', oprleft
=> 'anyenum', oprright
=> 'anyenum',
2861 oprresult
=> 'bool', oprcom
=> '>(anyenum,anyenum)',
2862 oprnegate
=> '>=(anyenum,anyenum)', oprcode
=> 'enum_lt',
2863 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2864 { oid
=> '3519', descr
=> 'greater than',
2865 oprname
=> '>', oprleft
=> 'anyenum', oprright
=> 'anyenum',
2866 oprresult
=> 'bool', oprcom
=> '<(anyenum,anyenum)',
2867 oprnegate
=> '<=(anyenum,anyenum)', oprcode
=> 'enum_gt',
2868 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2869 { oid
=> '3520', descr
=> 'less than or equal',
2870 oprname
=> '<=', oprleft
=> 'anyenum', oprright
=> 'anyenum',
2871 oprresult
=> 'bool', oprcom
=> '>=(anyenum,anyenum)',
2872 oprnegate
=> '>(anyenum,anyenum)', oprcode
=> 'enum_le',
2873 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2874 { oid
=> '3521', descr
=> 'greater than or equal',
2875 oprname
=> '>=', oprleft
=> 'anyenum', oprright
=> 'anyenum',
2876 oprresult
=> 'bool', oprcom
=> '<=(anyenum,anyenum)',
2877 oprnegate
=> '<(anyenum,anyenum)', oprcode
=> 'enum_ge',
2878 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2880 # tsearch operations
2881 { oid
=> '3627', descr
=> 'less than',
2882 oprname
=> '<', oprleft
=> 'tsvector', oprright
=> 'tsvector',
2883 oprresult
=> 'bool', oprcom
=> '>(tsvector,tsvector)',
2884 oprnegate
=> '>=(tsvector,tsvector)', oprcode
=> 'tsvector_lt',
2885 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2886 { oid
=> '3628', descr
=> 'less than or equal',
2887 oprname
=> '<=', oprleft
=> 'tsvector', oprright
=> 'tsvector',
2888 oprresult
=> 'bool', oprcom
=> '>=(tsvector,tsvector)',
2889 oprnegate
=> '>(tsvector,tsvector)', oprcode
=> 'tsvector_le',
2890 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2891 { oid
=> '3629', descr
=> 'equal',
2892 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'tsvector',
2893 oprright
=> 'tsvector', oprresult
=> 'bool', oprcom
=> '=(tsvector,tsvector)',
2894 oprnegate
=> '<>(tsvector,tsvector)', oprcode
=> 'tsvector_eq',
2895 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
2896 { oid
=> '3630', descr
=> 'not equal',
2897 oprname
=> '<>', oprleft
=> 'tsvector', oprright
=> 'tsvector',
2898 oprresult
=> 'bool', oprcom
=> '<>(tsvector,tsvector)',
2899 oprnegate
=> '=(tsvector,tsvector)', oprcode
=> 'tsvector_ne',
2900 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2901 { oid
=> '3631', descr
=> 'greater than or equal',
2902 oprname
=> '>=', oprleft
=> 'tsvector', oprright
=> 'tsvector',
2903 oprresult
=> 'bool', oprcom
=> '<=(tsvector,tsvector)',
2904 oprnegate
=> '<(tsvector,tsvector)', oprcode
=> 'tsvector_ge',
2905 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2906 { oid
=> '3632', descr
=> 'greater than',
2907 oprname
=> '>', oprleft
=> 'tsvector', oprright
=> 'tsvector',
2908 oprresult
=> 'bool', oprcom
=> '<(tsvector,tsvector)',
2909 oprnegate
=> '<=(tsvector,tsvector)', oprcode
=> 'tsvector_gt',
2910 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2911 { oid
=> '3633', descr
=> 'concatenate',
2912 oprname
=> '||', oprleft
=> 'tsvector', oprright
=> 'tsvector',
2913 oprresult
=> 'tsvector', oprcode
=> 'tsvector_concat' },
2914 { oid
=> '3636', descr
=> 'text search match',
2915 oprname
=> '@@', oprleft
=> 'tsvector', oprright
=> 'tsquery',
2916 oprresult
=> 'bool', oprcom
=> '@@(tsquery,tsvector)',
2917 oprcode
=> 'ts_match_vq', oprrest
=> 'tsmatchsel',
2918 oprjoin
=> 'tsmatchjoinsel' },
2919 { oid
=> '3637', descr
=> 'text search match',
2920 oprname
=> '@@', oprleft
=> 'tsquery', oprright
=> 'tsvector',
2921 oprresult
=> 'bool', oprcom
=> '@@(tsvector,tsquery)',
2922 oprcode
=> 'ts_match_qv', oprrest
=> 'tsmatchsel',
2923 oprjoin
=> 'tsmatchjoinsel' },
2924 { oid
=> '3660', descr
=> 'deprecated, use @@ instead',
2925 oprname
=> '@@@', oprleft
=> 'tsvector', oprright
=> 'tsquery',
2926 oprresult
=> 'bool', oprcom
=> '@@@(tsquery,tsvector)',
2927 oprcode
=> 'ts_match_vq', oprrest
=> 'tsmatchsel',
2928 oprjoin
=> 'tsmatchjoinsel' },
2929 { oid
=> '3661', descr
=> 'deprecated, use @@ instead',
2930 oprname
=> '@@@', oprleft
=> 'tsquery', oprright
=> 'tsvector',
2931 oprresult
=> 'bool', oprcom
=> '@@@(tsvector,tsquery)',
2932 oprcode
=> 'ts_match_qv', oprrest
=> 'tsmatchsel',
2933 oprjoin
=> 'tsmatchjoinsel' },
2934 { oid
=> '3674', descr
=> 'less than',
2935 oprname
=> '<', oprleft
=> 'tsquery', oprright
=> 'tsquery',
2936 oprresult
=> 'bool', oprcom
=> '>(tsquery,tsquery)',
2937 oprnegate
=> '>=(tsquery,tsquery)', oprcode
=> 'tsquery_lt',
2938 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
2939 { oid
=> '3675', descr
=> 'less than or equal',
2940 oprname
=> '<=', oprleft
=> 'tsquery', oprright
=> 'tsquery',
2941 oprresult
=> 'bool', oprcom
=> '>=(tsquery,tsquery)',
2942 oprnegate
=> '>(tsquery,tsquery)', oprcode
=> 'tsquery_le',
2943 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
2944 { oid
=> '3676', descr
=> 'equal',
2945 oprname
=> '=', oprcanmerge
=> 't', oprleft
=> 'tsquery',
2946 oprright
=> 'tsquery', oprresult
=> 'bool', oprcom
=> '=(tsquery,tsquery)',
2947 oprnegate
=> '<>(tsquery,tsquery)', oprcode
=> 'tsquery_eq',
2948 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
2949 { oid
=> '3677', descr
=> 'not equal',
2950 oprname
=> '<>', oprleft
=> 'tsquery', oprright
=> 'tsquery',
2951 oprresult
=> 'bool', oprcom
=> '<>(tsquery,tsquery)',
2952 oprnegate
=> '=(tsquery,tsquery)', oprcode
=> 'tsquery_ne',
2953 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
2954 { oid
=> '3678', descr
=> 'greater than or equal',
2955 oprname
=> '>=', oprleft
=> 'tsquery', oprright
=> 'tsquery',
2956 oprresult
=> 'bool', oprcom
=> '<=(tsquery,tsquery)',
2957 oprnegate
=> '<(tsquery,tsquery)', oprcode
=> 'tsquery_ge',
2958 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
2959 { oid
=> '3679', descr
=> 'greater than',
2960 oprname
=> '>', oprleft
=> 'tsquery', oprright
=> 'tsquery',
2961 oprresult
=> 'bool', oprcom
=> '<(tsquery,tsquery)',
2962 oprnegate
=> '<=(tsquery,tsquery)', oprcode
=> 'tsquery_gt',
2963 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
2964 { oid
=> '3680', descr
=> 'AND-concatenate',
2965 oprname
=> '&&', oprleft
=> 'tsquery', oprright
=> 'tsquery',
2966 oprresult
=> 'tsquery', oprcode
=> 'tsquery_and' },
2967 { oid
=> '3681', descr
=> 'OR-concatenate',
2968 oprname
=> '||', oprleft
=> 'tsquery', oprright
=> 'tsquery',
2969 oprresult
=> 'tsquery', oprcode
=> 'tsquery_or' },
2970 { oid
=> '5005', descr
=> 'phrase-concatenate',
2971 oprname
=> '<->', oprleft
=> 'tsquery', oprright
=> 'tsquery',
2972 oprresult
=> 'tsquery', oprcode
=> 'tsquery_phrase(tsquery,tsquery)' },
2973 { oid
=> '3682', descr
=> 'NOT tsquery',
2974 oprname
=> '!!', oprkind
=> 'l', oprleft
=> '0', oprright
=> 'tsquery',
2975 oprresult
=> 'tsquery', oprcode
=> 'tsquery_not' },
2976 { oid
=> '3693', descr
=> 'contains',
2977 oprname
=> '@>', oprleft
=> 'tsquery', oprright
=> 'tsquery',
2978 oprresult
=> 'bool', oprcom
=> '<@(tsquery,tsquery)',
2979 oprcode
=> 'tsq_mcontains', oprrest
=> 'matchingsel',
2980 oprjoin
=> 'matchingjoinsel' },
2981 { oid
=> '3694', descr
=> 'is contained by',
2982 oprname
=> '<@', oprleft
=> 'tsquery', oprright
=> 'tsquery',
2983 oprresult
=> 'bool', oprcom
=> '@>(tsquery,tsquery)',
2984 oprcode
=> 'tsq_mcontained', oprrest
=> 'matchingsel',
2985 oprjoin
=> 'matchingjoinsel' },
2986 { oid
=> '3762', descr
=> 'text search match',
2987 oprname
=> '@@', oprleft
=> 'text', oprright
=> 'text', oprresult
=> 'bool',
2988 oprcode
=> 'ts_match_tt', oprrest
=> 'matchingsel',
2989 oprjoin
=> 'matchingjoinsel' },
2990 { oid
=> '3763', descr
=> 'text search match',
2991 oprname
=> '@@', oprleft
=> 'text', oprright
=> 'tsquery',
2992 oprresult
=> 'bool', oprcode
=> 'ts_match_tq', oprrest
=> 'matchingsel',
2993 oprjoin
=> 'matchingjoinsel' },
2995 # generic record comparison operators
2996 { oid
=> '2988', oid_symbol
=> 'RECORD_EQ_OP', descr
=> 'equal',
2997 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'record',
2998 oprright
=> 'record', oprresult
=> 'bool', oprcom
=> '=(record,record)',
2999 oprnegate
=> '<>(record,record)', oprcode
=> 'record_eq', oprrest
=> 'eqsel',
3000 oprjoin
=> 'eqjoinsel' },
3001 { oid
=> '2989', descr
=> 'not equal',
3002 oprname
=> '<>', oprleft
=> 'record', oprright
=> 'record',
3003 oprresult
=> 'bool', oprcom
=> '<>(record,record)',
3004 oprnegate
=> '=(record,record)', oprcode
=> 'record_ne', oprrest
=> 'neqsel',
3005 oprjoin
=> 'neqjoinsel' },
3006 { oid
=> '2990', oid_symbol
=> 'RECORD_LT_OP', descr
=> 'less than',
3007 oprname
=> '<', oprleft
=> 'record', oprright
=> 'record',
3008 oprresult
=> 'bool', oprcom
=> '>(record,record)',
3009 oprnegate
=> '>=(record,record)', oprcode
=> 'record_lt',
3010 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
3011 { oid
=> '2991', oid_symbol
=> 'RECORD_GT_OP', descr
=> 'greater than',
3012 oprname
=> '>', oprleft
=> 'record', oprright
=> 'record',
3013 oprresult
=> 'bool', oprcom
=> '<(record,record)',
3014 oprnegate
=> '<=(record,record)', oprcode
=> 'record_gt',
3015 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
3016 { oid
=> '2992', descr
=> 'less than or equal',
3017 oprname
=> '<=', oprleft
=> 'record', oprright
=> 'record',
3018 oprresult
=> 'bool', oprcom
=> '>=(record,record)',
3019 oprnegate
=> '>(record,record)', oprcode
=> 'record_le',
3020 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
3021 { oid
=> '2993', descr
=> 'greater than or equal',
3022 oprname
=> '>=', oprleft
=> 'record', oprright
=> 'record',
3023 oprresult
=> 'bool', oprcom
=> '<=(record,record)',
3024 oprnegate
=> '<(record,record)', oprcode
=> 'record_ge',
3025 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
3027 # byte-oriented tests for identical rows and fast sorting
3028 { oid
=> '3188', descr
=> 'identical',
3029 oprname
=> '*=', oprcanmerge
=> 't', oprleft
=> 'record',
3030 oprright
=> 'record', oprresult
=> 'bool', oprcom
=> '*=(record,record)',
3031 oprnegate
=> '*<>(record,record)', oprcode
=> 'record_image_eq',
3032 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
3033 { oid
=> '3189', descr
=> 'not identical',
3034 oprname
=> '*<>', oprleft
=> 'record', oprright
=> 'record',
3035 oprresult
=> 'bool', oprcom
=> '*<>(record,record)',
3036 oprnegate
=> '*=(record,record)', oprcode
=> 'record_image_ne',
3037 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
3038 { oid
=> '3190', descr
=> 'less than',
3039 oprname
=> '*<', oprleft
=> 'record', oprright
=> 'record',
3040 oprresult
=> 'bool', oprcom
=> '*>(record,record)',
3041 oprnegate
=> '*>=(record,record)', oprcode
=> 'record_image_lt',
3042 oprrest
=> 'scalarltsel', oprjoin
=> 'scalarltjoinsel' },
3043 { oid
=> '3191', descr
=> 'greater than',
3044 oprname
=> '*>', oprleft
=> 'record', oprright
=> 'record',
3045 oprresult
=> 'bool', oprcom
=> '*<(record,record)',
3046 oprnegate
=> '*<=(record,record)', oprcode
=> 'record_image_gt',
3047 oprrest
=> 'scalargtsel', oprjoin
=> 'scalargtjoinsel' },
3048 { oid
=> '3192', descr
=> 'less than or equal',
3049 oprname
=> '*<=', oprleft
=> 'record', oprright
=> 'record',
3050 oprresult
=> 'bool', oprcom
=> '*>=(record,record)',
3051 oprnegate
=> '*>(record,record)', oprcode
=> 'record_image_le',
3052 oprrest
=> 'scalarlesel', oprjoin
=> 'scalarlejoinsel' },
3053 { oid
=> '3193', descr
=> 'greater than or equal',
3054 oprname
=> '*>=', oprleft
=> 'record', oprright
=> 'record',
3055 oprresult
=> 'bool', oprcom
=> '*<=(record,record)',
3056 oprnegate
=> '*<(record,record)', oprcode
=> 'record_image_ge',
3057 oprrest
=> 'scalargesel', oprjoin
=> 'scalargejoinsel' },
3059 # generic range type operators
3060 { oid
=> '3882', descr
=> 'equal',
3061 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'anyrange',
3062 oprright
=> 'anyrange', oprresult
=> 'bool', oprcom
=> '=(anyrange,anyrange)',
3063 oprnegate
=> '<>(anyrange,anyrange)', oprcode
=> 'range_eq',
3064 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
3065 { oid
=> '3883', descr
=> 'not equal',
3066 oprname
=> '<>', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3067 oprresult
=> 'bool', oprcom
=> '<>(anyrange,anyrange)',
3068 oprnegate
=> '=(anyrange,anyrange)', oprcode
=> 'range_ne',
3069 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
3070 { oid
=> '3884', oid_symbol
=> 'OID_RANGE_LESS_OP', descr
=> 'less than',
3071 oprname
=> '<', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3072 oprresult
=> 'bool', oprcom
=> '>(anyrange,anyrange)',
3073 oprnegate
=> '>=(anyrange,anyrange)', oprcode
=> 'range_lt',
3074 oprrest
=> 'rangesel', oprjoin
=> 'scalarltjoinsel' },
3075 { oid
=> '3885', oid_symbol
=> 'OID_RANGE_LESS_EQUAL_OP',
3076 descr
=> 'less than or equal',
3077 oprname
=> '<=', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3078 oprresult
=> 'bool', oprcom
=> '>=(anyrange,anyrange)',
3079 oprnegate
=> '>(anyrange,anyrange)', oprcode
=> 'range_le',
3080 oprrest
=> 'rangesel', oprjoin
=> 'scalarlejoinsel' },
3081 { oid
=> '3886', oid_symbol
=> 'OID_RANGE_GREATER_EQUAL_OP',
3082 descr
=> 'greater than or equal',
3083 oprname
=> '>=', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3084 oprresult
=> 'bool', oprcom
=> '<=(anyrange,anyrange)',
3085 oprnegate
=> '<(anyrange,anyrange)', oprcode
=> 'range_ge',
3086 oprrest
=> 'rangesel', oprjoin
=> 'scalargejoinsel' },
3087 { oid
=> '3887', oid_symbol
=> 'OID_RANGE_GREATER_OP',
3088 descr
=> 'greater than',
3089 oprname
=> '>', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3090 oprresult
=> 'bool', oprcom
=> '<(anyrange,anyrange)',
3091 oprnegate
=> '<=(anyrange,anyrange)', oprcode
=> 'range_gt',
3092 oprrest
=> 'rangesel', oprjoin
=> 'scalargtjoinsel' },
3093 { oid
=> '3888', oid_symbol
=> 'OID_RANGE_OVERLAP_OP', descr
=> 'overlaps',
3094 oprname
=> '&&', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3095 oprresult
=> 'bool', oprcom
=> '&&(anyrange,anyrange)',
3096 oprcode
=> 'range_overlaps', oprrest
=> 'rangesel',
3097 oprjoin
=> 'areajoinsel' },
3098 { oid
=> '3889', oid_symbol
=> 'OID_RANGE_CONTAINS_ELEM_OP',
3099 descr
=> 'contains',
3100 oprname
=> '@>', oprleft
=> 'anyrange', oprright
=> 'anyelement',
3101 oprresult
=> 'bool', oprcom
=> '<@(anyelement,anyrange)',
3102 oprcode
=> 'range_contains_elem', oprrest
=> 'rangesel',
3103 oprjoin
=> 'contjoinsel' },
3104 { oid
=> '3890', oid_symbol
=> 'OID_RANGE_CONTAINS_OP', descr
=> 'contains',
3105 oprname
=> '@>', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3106 oprresult
=> 'bool', oprcom
=> '<@(anyrange,anyrange)',
3107 oprcode
=> 'range_contains', oprrest
=> 'rangesel',
3108 oprjoin
=> 'contjoinsel' },
3109 { oid
=> '3891', oid_symbol
=> 'OID_RANGE_ELEM_CONTAINED_OP',
3110 descr
=> 'is contained by',
3111 oprname
=> '<@', oprleft
=> 'anyelement', oprright
=> 'anyrange',
3112 oprresult
=> 'bool', oprcom
=> '@>(anyrange,anyelement)',
3113 oprcode
=> 'elem_contained_by_range', oprrest
=> 'rangesel',
3114 oprjoin
=> 'contjoinsel' },
3115 { oid
=> '3892', oid_symbol
=> 'OID_RANGE_CONTAINED_OP',
3116 descr
=> 'is contained by',
3117 oprname
=> '<@', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3118 oprresult
=> 'bool', oprcom
=> '@>(anyrange,anyrange)',
3119 oprcode
=> 'range_contained_by', oprrest
=> 'rangesel',
3120 oprjoin
=> 'contjoinsel' },
3121 { oid
=> '3893', oid_symbol
=> 'OID_RANGE_LEFT_OP', descr
=> 'is left of',
3122 oprname
=> '<<', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3123 oprresult
=> 'bool', oprcom
=> '>>(anyrange,anyrange)',
3124 oprcode
=> 'range_before', oprrest
=> 'rangesel',
3125 oprjoin
=> 'scalarltjoinsel' },
3126 { oid
=> '3894', oid_symbol
=> 'OID_RANGE_RIGHT_OP', descr
=> 'is right of',
3127 oprname
=> '>>', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3128 oprresult
=> 'bool', oprcom
=> '<<(anyrange,anyrange)',
3129 oprcode
=> 'range_after', oprrest
=> 'rangesel',
3130 oprjoin
=> 'scalargtjoinsel' },
3131 { oid
=> '3895', oid_symbol
=> 'OID_RANGE_OVERLAPS_LEFT_OP',
3132 descr
=> 'overlaps or is left of',
3133 oprname
=> '&<', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3134 oprresult
=> 'bool', oprcode
=> 'range_overleft', oprrest
=> 'rangesel',
3135 oprjoin
=> 'scalarltjoinsel' },
3136 { oid
=> '3896', oid_symbol
=> 'OID_RANGE_OVERLAPS_RIGHT_OP',
3137 descr
=> 'overlaps or is right of',
3138 oprname
=> '&>', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3139 oprresult
=> 'bool', oprcode
=> 'range_overright', oprrest
=> 'rangesel',
3140 oprjoin
=> 'scalargtjoinsel' },
3141 { oid
=> '3897', descr
=> 'is adjacent to',
3142 oprname
=> '-|-', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3143 oprresult
=> 'bool', oprcom
=> '-|-(anyrange,anyrange)',
3144 oprcode
=> 'range_adjacent', oprrest
=> 'matchingsel',
3145 oprjoin
=> 'matchingjoinsel' },
3146 { oid
=> '3898', descr
=> 'range union',
3147 oprname
=> '+', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3148 oprresult
=> 'anyrange', oprcom
=> '+(anyrange,anyrange)',
3149 oprcode
=> 'range_union' },
3150 { oid
=> '3899', descr
=> 'range difference',
3151 oprname
=> '-', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3152 oprresult
=> 'anyrange', oprcode
=> 'range_minus' },
3153 { oid
=> '3900', oid_symbol
=> 'OID_RANGE_INTERSECT_RANGE_OP',
3154 descr
=> 'range intersection',
3155 oprname
=> '*', oprleft
=> 'anyrange', oprright
=> 'anyrange',
3156 oprresult
=> 'anyrange', oprcom
=> '*(anyrange,anyrange)',
3157 oprcode
=> 'range_intersect' },
3158 { oid
=> '3962', descr
=> 'get json object field',
3159 oprname
=> '->', oprleft
=> 'json', oprright
=> 'text', oprresult
=> 'json',
3160 oprcode
=> 'json_object_field' },
3161 { oid
=> '3963', descr
=> 'get json object field as text',
3162 oprname
=> '->>', oprleft
=> 'json', oprright
=> 'text', oprresult
=> 'text',
3163 oprcode
=> 'json_object_field_text' },
3164 { oid
=> '3964', descr
=> 'get json array element',
3165 oprname
=> '->', oprleft
=> 'json', oprright
=> 'int4', oprresult
=> 'json',
3166 oprcode
=> 'json_array_element' },
3167 { oid
=> '3965', descr
=> 'get json array element as text',
3168 oprname
=> '->>', oprleft
=> 'json', oprright
=> 'int4', oprresult
=> 'text',
3169 oprcode
=> 'json_array_element_text' },
3170 { oid
=> '3966', descr
=> 'get value from json with path elements',
3171 oprname
=> '#>', oprleft
=> 'json', oprright
=> '_text', oprresult
=> 'json',
3172 oprcode
=> 'json_extract_path' },
3173 { oid
=> '3967', descr
=> 'get value from json as text with path elements',
3174 oprname
=> '#>>', oprleft
=> 'json', oprright
=> '_text', oprresult
=> 'text',
3175 oprcode
=> 'json_extract_path_text' },
3176 { oid
=> '3211', descr
=> 'get jsonb object field',
3177 oprname
=> '->', oprleft
=> 'jsonb', oprright
=> 'text', oprresult
=> 'jsonb',
3178 oprcode
=> 'jsonb_object_field' },
3179 { oid
=> '3477', descr
=> 'get jsonb object field as text',
3180 oprname
=> '->>', oprleft
=> 'jsonb', oprright
=> 'text', oprresult
=> 'text',
3181 oprcode
=> 'jsonb_object_field_text' },
3182 { oid
=> '3212', descr
=> 'get jsonb array element',
3183 oprname
=> '->', oprleft
=> 'jsonb', oprright
=> 'int4', oprresult
=> 'jsonb',
3184 oprcode
=> 'jsonb_array_element' },
3185 { oid
=> '3481', descr
=> 'get jsonb array element as text',
3186 oprname
=> '->>', oprleft
=> 'jsonb', oprright
=> 'int4', oprresult
=> 'text',
3187 oprcode
=> 'jsonb_array_element_text' },
3188 { oid
=> '3213', descr
=> 'get value from jsonb with path elements',
3189 oprname
=> '#>', oprleft
=> 'jsonb', oprright
=> '_text',
3190 oprresult
=> 'jsonb', oprcode
=> 'jsonb_extract_path' },
3191 { oid
=> '3206', descr
=> 'get value from jsonb as text with path elements',
3192 oprname
=> '#>>', oprleft
=> 'jsonb', oprright
=> '_text',
3193 oprresult
=> 'text', oprcode
=> 'jsonb_extract_path_text' },
3194 { oid
=> '3240', descr
=> 'equal',
3195 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't', oprleft
=> 'jsonb',
3196 oprright
=> 'jsonb', oprresult
=> 'bool', oprcom
=> '=(jsonb,jsonb)',
3197 oprnegate
=> '<>(jsonb,jsonb)', oprcode
=> 'jsonb_eq', oprrest
=> 'eqsel',
3198 oprjoin
=> 'eqjoinsel' },
3199 { oid
=> '3241', descr
=> 'not equal',
3200 oprname
=> '<>', oprleft
=> 'jsonb', oprright
=> 'jsonb', oprresult
=> 'bool',
3201 oprcom
=> '<>(jsonb,jsonb)', oprnegate
=> '=(jsonb,jsonb)',
3202 oprcode
=> 'jsonb_ne', oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
3203 { oid
=> '3242', descr
=> 'less than',
3204 oprname
=> '<', oprleft
=> 'jsonb', oprright
=> 'jsonb', oprresult
=> 'bool',
3205 oprcom
=> '>(jsonb,jsonb)', oprnegate
=> '>=(jsonb,jsonb)',
3206 oprcode
=> 'jsonb_lt', oprrest
=> 'scalarltsel',
3207 oprjoin
=> 'scalarltjoinsel' },
3208 { oid
=> '3243', descr
=> 'greater than',
3209 oprname
=> '>', oprleft
=> 'jsonb', oprright
=> 'jsonb', oprresult
=> 'bool',
3210 oprcom
=> '<(jsonb,jsonb)', oprnegate
=> '<=(jsonb,jsonb)',
3211 oprcode
=> 'jsonb_gt', oprrest
=> 'scalargtsel',
3212 oprjoin
=> 'scalargtjoinsel' },
3213 { oid
=> '3244', descr
=> 'less than or equal',
3214 oprname
=> '<=', oprleft
=> 'jsonb', oprright
=> 'jsonb', oprresult
=> 'bool',
3215 oprcom
=> '>=(jsonb,jsonb)', oprnegate
=> '>(jsonb,jsonb)',
3216 oprcode
=> 'jsonb_le', oprrest
=> 'scalarlesel',
3217 oprjoin
=> 'scalarlejoinsel' },
3218 { oid
=> '3245', descr
=> 'greater than or equal',
3219 oprname
=> '>=', oprleft
=> 'jsonb', oprright
=> 'jsonb', oprresult
=> 'bool',
3220 oprcom
=> '<=(jsonb,jsonb)', oprnegate
=> '<(jsonb,jsonb)',
3221 oprcode
=> 'jsonb_ge', oprrest
=> 'scalargesel',
3222 oprjoin
=> 'scalargejoinsel' },
3223 { oid
=> '3246', descr
=> 'contains',
3224 oprname
=> '@>', oprleft
=> 'jsonb', oprright
=> 'jsonb', oprresult
=> 'bool',
3225 oprcom
=> '<@(jsonb,jsonb)', oprcode
=> 'jsonb_contains',
3226 oprrest
=> 'matchingsel', oprjoin
=> 'matchingjoinsel' },
3227 { oid
=> '3247', descr
=> 'key exists',
3228 oprname
=> '?', oprleft
=> 'jsonb', oprright
=> 'text', oprresult
=> 'bool',
3229 oprcode
=> 'jsonb_exists', oprrest
=> 'matchingsel',
3230 oprjoin
=> 'matchingjoinsel' },
3231 { oid
=> '3248', descr
=> 'any key exists',
3232 oprname
=> '?|', oprleft
=> 'jsonb', oprright
=> '_text', oprresult
=> 'bool',
3233 oprcode
=> 'jsonb_exists_any', oprrest
=> 'matchingsel',
3234 oprjoin
=> 'matchingjoinsel' },
3235 { oid
=> '3249', descr
=> 'all keys exist',
3236 oprname
=> '?&', oprleft
=> 'jsonb', oprright
=> '_text', oprresult
=> 'bool',
3237 oprcode
=> 'jsonb_exists_all', oprrest
=> 'matchingsel',
3238 oprjoin
=> 'matchingjoinsel' },
3239 { oid
=> '3250', descr
=> 'is contained by',
3240 oprname
=> '<@', oprleft
=> 'jsonb', oprright
=> 'jsonb', oprresult
=> 'bool',
3241 oprcom
=> '@>(jsonb,jsonb)', oprcode
=> 'jsonb_contained',
3242 oprrest
=> 'matchingsel', oprjoin
=> 'matchingjoinsel' },
3243 { oid
=> '3284', descr
=> 'concatenate',
3244 oprname
=> '||', oprleft
=> 'jsonb', oprright
=> 'jsonb',
3245 oprresult
=> 'jsonb', oprcode
=> 'jsonb_concat' },
3246 { oid
=> '3285', descr
=> 'delete object field',
3247 oprname
=> '-', oprleft
=> 'jsonb', oprright
=> 'text', oprresult
=> 'jsonb',
3248 oprcode
=> 'jsonb_delete(jsonb,text)' },
3249 { oid
=> '3398', descr
=> 'delete object fields',
3250 oprname
=> '-', oprleft
=> 'jsonb', oprright
=> '_text', oprresult
=> 'jsonb',
3251 oprcode
=> 'jsonb_delete(jsonb,_text)' },
3252 { oid
=> '3286', descr
=> 'delete array element',
3253 oprname
=> '-', oprleft
=> 'jsonb', oprright
=> 'int4', oprresult
=> 'jsonb',
3254 oprcode
=> 'jsonb_delete(jsonb,int4)' },
3255 { oid
=> '3287', descr
=> 'delete path',
3256 oprname
=> '#-', oprleft
=> 'jsonb', oprright
=> '_text',
3257 oprresult
=> 'jsonb', oprcode
=> 'jsonb_delete_path' },
3258 { oid
=> '4012', descr
=> 'jsonpath exists',
3259 oprname
=> '@?', oprleft
=> 'jsonb', oprright
=> 'jsonpath',
3260 oprresult
=> 'bool', oprcode
=> 'jsonb_path_exists_opr(jsonb,jsonpath)',
3261 oprrest
=> 'matchingsel', oprjoin
=> 'matchingjoinsel' },
3262 { oid
=> '4013', descr
=> 'jsonpath match',
3263 oprname
=> '@@', oprleft
=> 'jsonb', oprright
=> 'jsonpath',
3264 oprresult
=> 'bool', oprcode
=> 'jsonb_path_match_opr(jsonb,jsonpath)',
3265 oprrest
=> 'matchingsel', oprjoin
=> 'matchingjoinsel' },
3266 { oid
=> '2860', descr
=> 'equal',
3267 oprname
=> '=', oprcanmerge
=> 't', oprcanhash
=> 't',
3268 oprleft
=> 'anymultirange', oprright
=> 'anymultirange', oprresult
=> 'bool',
3269 oprcom
=> '=(anymultirange,anymultirange)',
3270 oprnegate
=> '<>(anymultirange,anymultirange)', oprcode
=> 'multirange_eq',
3271 oprrest
=> 'eqsel', oprjoin
=> 'eqjoinsel' },
3272 { oid
=> '2861', descr
=> 'not equal',
3273 oprname
=> '<>', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3274 oprresult
=> 'bool', oprcom
=> '<>(anymultirange,anymultirange)',
3275 oprnegate
=> '=(anymultirange,anymultirange)', oprcode
=> 'multirange_ne',
3276 oprrest
=> 'neqsel', oprjoin
=> 'neqjoinsel' },
3277 { oid
=> '2862', oid_symbol
=> 'OID_MULTIRANGE_LESS_OP', descr
=> 'less than',
3278 oprname
=> '<', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3279 oprresult
=> 'bool', oprcom
=> '>(anymultirange,anymultirange)',
3280 oprnegate
=> '>=(anymultirange,anymultirange)', oprcode
=> 'multirange_lt',
3281 oprrest
=> 'multirangesel', oprjoin
=> 'scalarltjoinsel' },
3282 { oid
=> '2863', oid_symbol
=> 'OID_MULTIRANGE_LESS_EQUAL_OP',
3283 descr
=> 'less than or equal',
3284 oprname
=> '<=', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3285 oprresult
=> 'bool', oprcom
=> '>=(anymultirange,anymultirange)',
3286 oprnegate
=> '>(anymultirange,anymultirange)', oprcode
=> 'multirange_le',
3287 oprrest
=> 'multirangesel', oprjoin
=> 'scalarlejoinsel' },
3288 { oid
=> '2864', oid_symbol
=> 'OID_MULTIRANGE_GREATER_EQUAL_OP',
3289 descr
=> 'greater than or equal',
3290 oprname
=> '>=', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3291 oprresult
=> 'bool', oprcom
=> '<=(anymultirange,anymultirange)',
3292 oprnegate
=> '<(anymultirange,anymultirange)', oprcode
=> 'multirange_ge',
3293 oprrest
=> 'multirangesel', oprjoin
=> 'scalargejoinsel' },
3294 { oid
=> '2865', oid_symbol
=> 'OID_MULTIRANGE_GREATER_OP',
3295 descr
=> 'greater than',
3296 oprname
=> '>', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3297 oprresult
=> 'bool', oprcom
=> '<(anymultirange,anymultirange)',
3298 oprnegate
=> '<=(anymultirange,anymultirange)', oprcode
=> 'multirange_gt',
3299 oprrest
=> 'multirangesel', oprjoin
=> 'scalargtjoinsel' },
3300 { oid
=> '2866', oid_symbol
=> 'OID_RANGE_OVERLAPS_MULTIRANGE_OP',
3301 descr
=> 'overlaps',
3302 oprname
=> '&&', oprleft
=> 'anyrange', oprright
=> 'anymultirange',
3303 oprresult
=> 'bool', oprcom
=> '&&(anymultirange,anyrange)',
3304 oprcode
=> 'range_overlaps_multirange', oprrest
=> 'multirangesel',
3305 oprjoin
=> 'areajoinsel' },
3306 { oid
=> '2867', oid_symbol
=> 'OID_MULTIRANGE_OVERLAPS_RANGE_OP',
3307 descr
=> 'overlaps',
3308 oprname
=> '&&', oprleft
=> 'anymultirange', oprright
=> 'anyrange',
3309 oprresult
=> 'bool', oprcom
=> '&&(anyrange,anymultirange)',
3310 oprcode
=> 'multirange_overlaps_range', oprrest
=> 'multirangesel',
3311 oprjoin
=> 'areajoinsel' },
3312 { oid
=> '2868', oid_symbol
=> 'OID_MULTIRANGE_OVERLAPS_MULTIRANGE_OP',
3313 descr
=> 'overlaps',
3314 oprname
=> '&&', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3315 oprresult
=> 'bool', oprcom
=> '&&(anymultirange,anymultirange)',
3316 oprcode
=> 'multirange_overlaps_multirange', oprrest
=> 'multirangesel',
3317 oprjoin
=> 'areajoinsel' },
3318 { oid
=> '2869', oid_symbol
=> 'OID_MULTIRANGE_CONTAINS_ELEM_OP',
3319 descr
=> 'contains',
3320 oprname
=> '@>', oprleft
=> 'anymultirange', oprright
=> 'anyelement',
3321 oprresult
=> 'bool', oprcom
=> '<@(anyelement,anymultirange)',
3322 oprcode
=> 'multirange_contains_elem', oprrest
=> 'multirangesel',
3323 oprjoin
=> 'contjoinsel' },
3324 { oid
=> '2870', oid_symbol
=> 'OID_MULTIRANGE_CONTAINS_RANGE_OP',
3325 descr
=> 'contains',
3326 oprname
=> '@>', oprleft
=> 'anymultirange', oprright
=> 'anyrange',
3327 oprresult
=> 'bool', oprcom
=> '<@(anyrange,anymultirange)',
3328 oprcode
=> 'multirange_contains_range', oprrest
=> 'multirangesel',
3329 oprjoin
=> 'contjoinsel' },
3330 { oid
=> '2871', oid_symbol
=> 'OID_MULTIRANGE_CONTAINS_MULTIRANGE_OP',
3331 descr
=> 'contains',
3332 oprname
=> '@>', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3333 oprresult
=> 'bool', oprcom
=> '<@(anymultirange,anymultirange)',
3334 oprcode
=> 'multirange_contains_multirange', oprrest
=> 'multirangesel',
3335 oprjoin
=> 'contjoinsel' },
3336 { oid
=> '2872', oid_symbol
=> 'OID_MULTIRANGE_ELEM_CONTAINED_OP',
3337 descr
=> 'is contained by',
3338 oprname
=> '<@', oprleft
=> 'anyelement', oprright
=> 'anymultirange',
3339 oprresult
=> 'bool', oprcom
=> '@>(anymultirange,anyelement)',
3340 oprcode
=> 'elem_contained_by_multirange', oprrest
=> 'multirangesel',
3341 oprjoin
=> 'contjoinsel' },
3342 { oid
=> '2873', oid_symbol
=> 'OID_MULTIRANGE_RANGE_CONTAINED_OP',
3343 descr
=> 'is contained by',
3344 oprname
=> '<@', oprleft
=> 'anyrange', oprright
=> 'anymultirange',
3345 oprresult
=> 'bool', oprcom
=> '@>(anymultirange,anyrange)',
3346 oprcode
=> 'range_contained_by_multirange', oprrest
=> 'multirangesel',
3347 oprjoin
=> 'contjoinsel' },
3348 { oid
=> '2874', oid_symbol
=> 'OID_MULTIRANGE_MULTIRANGE_CONTAINED_OP',
3349 descr
=> 'is contained by',
3350 oprname
=> '<@', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3351 oprresult
=> 'bool', oprcom
=> '@>(anymultirange,anymultirange)',
3352 oprcode
=> 'multirange_contained_by_multirange', oprrest
=> 'multirangesel',
3353 oprjoin
=> 'contjoinsel' },
3354 { oid
=> '4539', oid_symbol
=> 'OID_RANGE_CONTAINS_MULTIRANGE_OP',
3355 descr
=> 'contains',
3356 oprname
=> '@>', oprleft
=> 'anyrange', oprright
=> 'anymultirange',
3357 oprresult
=> 'bool', oprcom
=> '<@(anymultirange,anyrange)',
3358 oprcode
=> 'range_contains_multirange', oprrest
=> 'multirangesel',
3359 oprjoin
=> 'contjoinsel' },
3360 { oid
=> '4540', oid_symbol
=> 'OID_RANGE_MULTIRANGE_CONTAINED_OP',
3361 descr
=> 'is contained by',
3362 oprname
=> '<@', oprleft
=> 'anymultirange', oprright
=> 'anyrange',
3363 oprresult
=> 'bool', oprcom
=> '@>(anyrange,anymultirange)',
3364 oprcode
=> 'multirange_contained_by_range', oprrest
=> 'multirangesel',
3365 oprjoin
=> 'contjoinsel' },
3366 { oid
=> '2875', oid_symbol
=> 'OID_RANGE_OVERLAPS_LEFT_MULTIRANGE_OP',
3367 descr
=> 'overlaps or is left of',
3368 oprname
=> '&<', oprleft
=> 'anyrange', oprright
=> 'anymultirange',
3369 oprresult
=> 'bool', oprcode
=> 'range_overleft_multirange',
3370 oprrest
=> 'multirangesel', oprjoin
=> 'scalarltjoinsel' },
3371 { oid
=> '2876', oid_symbol
=> 'OID_MULTIRANGE_OVERLAPS_LEFT_RANGE_OP',
3372 descr
=> 'overlaps or is left of',
3373 oprname
=> '&<', oprleft
=> 'anymultirange', oprright
=> 'anyrange',
3374 oprresult
=> 'bool', oprcode
=> 'multirange_overleft_range',
3375 oprrest
=> 'multirangesel', oprjoin
=> 'scalarltjoinsel' },
3376 { oid
=> '2877', oid_symbol
=> 'OID_MULTIRANGE_OVERLAPS_LEFT_MULTIRANGE_OP',
3377 descr
=> 'overlaps or is left of',
3378 oprname
=> '&<', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3379 oprresult
=> 'bool', oprcode
=> 'multirange_overleft_multirange',
3380 oprrest
=> 'multirangesel', oprjoin
=> 'scalarltjoinsel' },
3381 { oid
=> '3585', oid_symbol
=> 'OID_RANGE_OVERLAPS_RIGHT_MULTIRANGE_OP',
3382 descr
=> 'overlaps or is right of',
3383 oprname
=> '&>', oprleft
=> 'anyrange', oprright
=> 'anymultirange',
3384 oprresult
=> 'bool', oprcode
=> 'range_overright_multirange',
3385 oprrest
=> 'multirangesel', oprjoin
=> 'scalargtjoinsel' },
3386 { oid
=> '4035', oid_symbol
=> 'OID_MULTIRANGE_OVERLAPS_RIGHT_RANGE_OP',
3387 descr
=> 'overlaps or is right of',
3388 oprname
=> '&>', oprleft
=> 'anymultirange', oprright
=> 'anyrange',
3389 oprresult
=> 'bool', oprcode
=> 'multirange_overright_range',
3390 oprrest
=> 'multirangesel', oprjoin
=> 'scalargtjoinsel' },
3391 { oid
=> '4142', oid_symbol
=> 'OID_MULTIRANGE_OVERLAPS_RIGHT_MULTIRANGE_OP',
3392 descr
=> 'overlaps or is right of',
3393 oprname
=> '&>', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3394 oprresult
=> 'bool', oprcode
=> 'multirange_overright_multirange',
3395 oprrest
=> 'multirangesel', oprjoin
=> 'scalargtjoinsel' },
3396 { oid
=> '4179', oid_symbol
=> 'OID_RANGE_ADJACENT_MULTIRANGE_OP',
3397 descr
=> 'is adjacent to',
3398 oprname
=> '-|-', oprleft
=> 'anyrange', oprright
=> 'anymultirange',
3399 oprresult
=> 'bool', oprcom
=> '-|-(anymultirange,anyrange)',
3400 oprcode
=> 'range_adjacent_multirange', oprrest
=> 'matchingsel',
3401 oprjoin
=> 'matchingjoinsel' },
3402 { oid
=> '4180', oid_symbol
=> 'OID_MULTIRANGE_ADJACENT_RANGE_OP',
3403 descr
=> 'is adjacent to',
3404 oprname
=> '-|-', oprleft
=> 'anymultirange', oprright
=> 'anyrange',
3405 oprresult
=> 'bool', oprcom
=> '-|-(anyrange,anymultirange)',
3406 oprcode
=> 'multirange_adjacent_range', oprrest
=> 'matchingsel',
3407 oprjoin
=> 'matchingjoinsel' },
3408 { oid
=> '4198', oid_symbol
=> 'OID_MULTIRANGE_ADJACENT_MULTIRANGE_OP',
3409 descr
=> 'is adjacent to',
3410 oprname
=> '-|-', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3411 oprresult
=> 'bool', oprcom
=> '-|-(anymultirange,anymultirange)',
3412 oprcode
=> 'multirange_adjacent_multirange', oprrest
=> 'matchingsel',
3413 oprjoin
=> 'matchingjoinsel' },
3414 { oid
=> '4392', descr
=> 'multirange union',
3415 oprname
=> '+', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3416 oprresult
=> 'anymultirange', oprcom
=> '+(anymultirange,anymultirange)',
3417 oprcode
=> 'multirange_union' },
3418 { oid
=> '4393', descr
=> 'multirange minus',
3419 oprname
=> '-', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3420 oprresult
=> 'anymultirange', oprcode
=> 'multirange_minus' },
3421 { oid
=> '4394', oid_symbol
=> 'OID_MULTIRANGE_INTERSECT_MULTIRANGE_OP',
3422 descr
=> 'multirange intersect',
3423 oprname
=> '*', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3424 oprresult
=> 'anymultirange', oprcom
=> '*(anymultirange,anymultirange)',
3425 oprcode
=> 'multirange_intersect' },
3426 { oid
=> '4395', oid_symbol
=> 'OID_RANGE_LEFT_MULTIRANGE_OP',
3427 descr
=> 'is left of',
3428 oprname
=> '<<', oprleft
=> 'anyrange', oprright
=> 'anymultirange',
3429 oprresult
=> 'bool', oprcom
=> '>>(anymultirange,anyrange)',
3430 oprcode
=> 'range_before_multirange', oprrest
=> 'multirangesel',
3431 oprjoin
=> 'scalarltjoinsel' },
3432 { oid
=> '4396', oid_symbol
=> 'OID_MULTIRANGE_LEFT_RANGE_OP',
3433 descr
=> 'is left of',
3434 oprname
=> '<<', oprleft
=> 'anymultirange', oprright
=> 'anyrange',
3435 oprresult
=> 'bool', oprcom
=> '>>(anyrange,anymultirange)',
3436 oprcode
=> 'multirange_before_range', oprrest
=> 'multirangesel',
3437 oprjoin
=> 'scalarltjoinsel' },
3438 { oid
=> '4397', oid_symbol
=> 'OID_MULTIRANGE_LEFT_MULTIRANGE_OP',
3439 descr
=> 'is left of',
3440 oprname
=> '<<', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3441 oprresult
=> 'bool', oprcom
=> '>>(anymultirange,anymultirange)',
3442 oprcode
=> 'multirange_before_multirange', oprrest
=> 'multirangesel',
3443 oprjoin
=> 'scalarltjoinsel' },
3444 { oid
=> '4398', oid_symbol
=> 'OID_RANGE_RIGHT_MULTIRANGE_OP',
3445 descr
=> 'is right of',
3446 oprname
=> '>>', oprleft
=> 'anyrange', oprright
=> 'anymultirange',
3447 oprresult
=> 'bool', oprcom
=> '<<(anymultirange,anyrange)',
3448 oprcode
=> 'range_after_multirange', oprrest
=> 'multirangesel',
3449 oprjoin
=> 'scalargtjoinsel' },
3450 { oid
=> '4399', oid_symbol
=> 'OID_MULTIRANGE_RIGHT_RANGE_OP',
3451 descr
=> 'is right of',
3452 oprname
=> '>>', oprleft
=> 'anymultirange', oprright
=> 'anyrange',
3453 oprresult
=> 'bool', oprcom
=> '<<(anyrange,anymultirange)',
3454 oprcode
=> 'multirange_after_range', oprrest
=> 'multirangesel',
3455 oprjoin
=> 'scalargtjoinsel' },
3456 { oid
=> '4400', oid_symbol
=> 'OID_MULTIRANGE_RIGHT_MULTIRANGE_OP',
3457 descr
=> 'is right of',
3458 oprname
=> '>>', oprleft
=> 'anymultirange', oprright
=> 'anymultirange',
3459 oprresult
=> 'bool', oprcom
=> '<<(anymultirange,anymultirange)',
3460 oprcode
=> 'multirange_after_multirange', oprrest
=> 'multirangesel',
3461 oprjoin
=> 'scalargtjoinsel' },