]> granicus.if.org Git - postgresql/blob - src/include/utils/builtins.h
Here's a patch to add unknownin/unknownout support. I also poked around
[postgresql] / src / include / utils / builtins.h
1 /*-------------------------------------------------------------------------
2  *
3  * builtins.h
4  *        Declarations for operations on built-in types.
5  *
6  *
7  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * $Id: builtins.h,v 1.178 2002/04/24 02:12:53 momjian Exp $
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef BUILTINS_H
15 #define BUILTINS_H
16
17 #include "fmgr.h"
18 #include "nodes/parsenodes.h"
19 #include "storage/itemptr.h"    /* for setLastTid() */
20
21 /*
22  *              Defined in adt/
23  */
24
25 /* acl.c */
26 extern Datum has_table_privilege_name_name(PG_FUNCTION_ARGS);
27 extern Datum has_table_privilege_name_id(PG_FUNCTION_ARGS);
28 extern Datum has_table_privilege_id_name(PG_FUNCTION_ARGS);
29 extern Datum has_table_privilege_id_id(PG_FUNCTION_ARGS);
30 extern Datum has_table_privilege_name(PG_FUNCTION_ARGS);
31 extern Datum has_table_privilege_id(PG_FUNCTION_ARGS);
32
33 /* bool.c */
34 extern Datum boolin(PG_FUNCTION_ARGS);
35 extern Datum boolout(PG_FUNCTION_ARGS);
36 extern Datum booleq(PG_FUNCTION_ARGS);
37 extern Datum boolne(PG_FUNCTION_ARGS);
38 extern Datum boollt(PG_FUNCTION_ARGS);
39 extern Datum boolgt(PG_FUNCTION_ARGS);
40 extern Datum boolle(PG_FUNCTION_ARGS);
41 extern Datum boolge(PG_FUNCTION_ARGS);
42 extern Datum istrue(PG_FUNCTION_ARGS);
43 extern Datum isfalse(PG_FUNCTION_ARGS);
44 extern Datum isnottrue(PG_FUNCTION_ARGS);
45 extern Datum isnotfalse(PG_FUNCTION_ARGS);
46
47 /* char.c */
48 extern Datum charin(PG_FUNCTION_ARGS);
49 extern Datum charout(PG_FUNCTION_ARGS);
50 extern Datum chareq(PG_FUNCTION_ARGS);
51 extern Datum charne(PG_FUNCTION_ARGS);
52 extern Datum charlt(PG_FUNCTION_ARGS);
53 extern Datum charle(PG_FUNCTION_ARGS);
54 extern Datum chargt(PG_FUNCTION_ARGS);
55 extern Datum charge(PG_FUNCTION_ARGS);
56 extern Datum charpl(PG_FUNCTION_ARGS);
57 extern Datum charmi(PG_FUNCTION_ARGS);
58 extern Datum charmul(PG_FUNCTION_ARGS);
59 extern Datum chardiv(PG_FUNCTION_ARGS);
60 extern Datum text_char(PG_FUNCTION_ARGS);
61 extern Datum char_text(PG_FUNCTION_ARGS);
62 extern Datum cidin(PG_FUNCTION_ARGS);
63 extern Datum cidout(PG_FUNCTION_ARGS);
64 extern Datum cideq(PG_FUNCTION_ARGS);
65
66 /* int.c */
67 extern Datum int2in(PG_FUNCTION_ARGS);
68 extern Datum int2out(PG_FUNCTION_ARGS);
69 extern Datum int2vectorin(PG_FUNCTION_ARGS);
70 extern Datum int2vectorout(PG_FUNCTION_ARGS);
71 extern Datum int2vectoreq(PG_FUNCTION_ARGS);
72 extern Datum int44in(PG_FUNCTION_ARGS);
73 extern Datum int44out(PG_FUNCTION_ARGS);
74 extern Datum int4in(PG_FUNCTION_ARGS);
75 extern Datum int4out(PG_FUNCTION_ARGS);
76 extern Datum i2toi4(PG_FUNCTION_ARGS);
77 extern Datum i4toi2(PG_FUNCTION_ARGS);
78 extern Datum int2_text(PG_FUNCTION_ARGS);
79 extern Datum text_int2(PG_FUNCTION_ARGS);
80 extern Datum int4_text(PG_FUNCTION_ARGS);
81 extern Datum text_int4(PG_FUNCTION_ARGS);
82 extern Datum int4eq(PG_FUNCTION_ARGS);
83 extern Datum int4ne(PG_FUNCTION_ARGS);
84 extern Datum int4lt(PG_FUNCTION_ARGS);
85 extern Datum int4le(PG_FUNCTION_ARGS);
86 extern Datum int4gt(PG_FUNCTION_ARGS);
87 extern Datum int4ge(PG_FUNCTION_ARGS);
88 extern Datum int2eq(PG_FUNCTION_ARGS);
89 extern Datum int2ne(PG_FUNCTION_ARGS);
90 extern Datum int2lt(PG_FUNCTION_ARGS);
91 extern Datum int2le(PG_FUNCTION_ARGS);
92 extern Datum int2gt(PG_FUNCTION_ARGS);
93 extern Datum int2ge(PG_FUNCTION_ARGS);
94 extern Datum int24eq(PG_FUNCTION_ARGS);
95 extern Datum int24ne(PG_FUNCTION_ARGS);
96 extern Datum int24lt(PG_FUNCTION_ARGS);
97 extern Datum int24le(PG_FUNCTION_ARGS);
98 extern Datum int24gt(PG_FUNCTION_ARGS);
99 extern Datum int24ge(PG_FUNCTION_ARGS);
100 extern Datum int42eq(PG_FUNCTION_ARGS);
101 extern Datum int42ne(PG_FUNCTION_ARGS);
102 extern Datum int42lt(PG_FUNCTION_ARGS);
103 extern Datum int42le(PG_FUNCTION_ARGS);
104 extern Datum int42gt(PG_FUNCTION_ARGS);
105 extern Datum int42ge(PG_FUNCTION_ARGS);
106 extern Datum int4um(PG_FUNCTION_ARGS);
107 extern Datum int4up(PG_FUNCTION_ARGS);
108 extern Datum int4pl(PG_FUNCTION_ARGS);
109 extern Datum int4mi(PG_FUNCTION_ARGS);
110 extern Datum int4mul(PG_FUNCTION_ARGS);
111 extern Datum int4div(PG_FUNCTION_ARGS);
112 extern Datum int4abs(PG_FUNCTION_ARGS);
113 extern Datum int4inc(PG_FUNCTION_ARGS);
114 extern Datum int2um(PG_FUNCTION_ARGS);
115 extern Datum int2up(PG_FUNCTION_ARGS);
116 extern Datum int2pl(PG_FUNCTION_ARGS);
117 extern Datum int2mi(PG_FUNCTION_ARGS);
118 extern Datum int2mul(PG_FUNCTION_ARGS);
119 extern Datum int2div(PG_FUNCTION_ARGS);
120 extern Datum int2abs(PG_FUNCTION_ARGS);
121 extern Datum int24pl(PG_FUNCTION_ARGS);
122 extern Datum int24mi(PG_FUNCTION_ARGS);
123 extern Datum int24mul(PG_FUNCTION_ARGS);
124 extern Datum int24div(PG_FUNCTION_ARGS);
125 extern Datum int42pl(PG_FUNCTION_ARGS);
126 extern Datum int42mi(PG_FUNCTION_ARGS);
127 extern Datum int42mul(PG_FUNCTION_ARGS);
128 extern Datum int42div(PG_FUNCTION_ARGS);
129 extern Datum int4mod(PG_FUNCTION_ARGS);
130 extern Datum int2mod(PG_FUNCTION_ARGS);
131 extern Datum int24mod(PG_FUNCTION_ARGS);
132 extern Datum int42mod(PG_FUNCTION_ARGS);
133 extern Datum int4fac(PG_FUNCTION_ARGS);
134 extern Datum int2fac(PG_FUNCTION_ARGS);
135 extern Datum int2larger(PG_FUNCTION_ARGS);
136 extern Datum int2smaller(PG_FUNCTION_ARGS);
137 extern Datum int4larger(PG_FUNCTION_ARGS);
138 extern Datum int4smaller(PG_FUNCTION_ARGS);
139
140 extern Datum int4and(PG_FUNCTION_ARGS);
141 extern Datum int4or(PG_FUNCTION_ARGS);
142 extern Datum int4xor(PG_FUNCTION_ARGS);
143 extern Datum int4not(PG_FUNCTION_ARGS);
144 extern Datum int4shl(PG_FUNCTION_ARGS);
145 extern Datum int4shr(PG_FUNCTION_ARGS);
146 extern Datum int2and(PG_FUNCTION_ARGS);
147 extern Datum int2or(PG_FUNCTION_ARGS);
148 extern Datum int2xor(PG_FUNCTION_ARGS);
149 extern Datum int2not(PG_FUNCTION_ARGS);
150 extern Datum int2shl(PG_FUNCTION_ARGS);
151 extern Datum int2shr(PG_FUNCTION_ARGS);
152
153 /* name.c */
154 extern Datum namein(PG_FUNCTION_ARGS);
155 extern Datum nameout(PG_FUNCTION_ARGS);
156 extern Datum nameeq(PG_FUNCTION_ARGS);
157 extern Datum namene(PG_FUNCTION_ARGS);
158 extern Datum namelt(PG_FUNCTION_ARGS);
159 extern Datum namele(PG_FUNCTION_ARGS);
160 extern Datum namegt(PG_FUNCTION_ARGS);
161 extern Datum namege(PG_FUNCTION_ARGS);
162 extern int      namecpy(Name n1, Name n2);
163 extern int      namestrcpy(Name name, const char *str);
164 extern int      namestrcmp(Name name, const char *str);
165 extern Datum current_user(PG_FUNCTION_ARGS);
166 extern Datum session_user(PG_FUNCTION_ARGS);
167
168 /* numutils.c */
169 extern int32 pg_atoi(char *s, int size, int c);
170 extern void pg_itoa(int16 i, char *a);
171 extern void pg_ltoa(int32 l, char *a);
172
173 /*
174  *              Per-opclass comparison functions for new btrees.  These are
175  *              stored in pg_amproc and defined in access/nbtree/nbtcompare.c
176  */
177 extern Datum btboolcmp(PG_FUNCTION_ARGS);
178 extern Datum btint2cmp(PG_FUNCTION_ARGS);
179 extern Datum btint4cmp(PG_FUNCTION_ARGS);
180 extern Datum btint8cmp(PG_FUNCTION_ARGS);
181 extern Datum btfloat4cmp(PG_FUNCTION_ARGS);
182 extern Datum btfloat8cmp(PG_FUNCTION_ARGS);
183 extern Datum btoidcmp(PG_FUNCTION_ARGS);
184 extern Datum btoidvectorcmp(PG_FUNCTION_ARGS);
185 extern Datum btabstimecmp(PG_FUNCTION_ARGS);
186 extern Datum btcharcmp(PG_FUNCTION_ARGS);
187 extern Datum btnamecmp(PG_FUNCTION_ARGS);
188 extern Datum bttextcmp(PG_FUNCTION_ARGS);
189
190 /* float.c */
191 extern Datum float4in(PG_FUNCTION_ARGS);
192 extern Datum float4out(PG_FUNCTION_ARGS);
193 extern Datum float8in(PG_FUNCTION_ARGS);
194 extern Datum float8out(PG_FUNCTION_ARGS);
195 extern Datum float4abs(PG_FUNCTION_ARGS);
196 extern Datum float4um(PG_FUNCTION_ARGS);
197 extern Datum float4up(PG_FUNCTION_ARGS);
198 extern Datum float4larger(PG_FUNCTION_ARGS);
199 extern Datum float4smaller(PG_FUNCTION_ARGS);
200 extern Datum float8abs(PG_FUNCTION_ARGS);
201 extern Datum float8um(PG_FUNCTION_ARGS);
202 extern Datum float8up(PG_FUNCTION_ARGS);
203 extern Datum float8larger(PG_FUNCTION_ARGS);
204 extern Datum float8smaller(PG_FUNCTION_ARGS);
205 extern Datum float4pl(PG_FUNCTION_ARGS);
206 extern Datum float4mi(PG_FUNCTION_ARGS);
207 extern Datum float4mul(PG_FUNCTION_ARGS);
208 extern Datum float4div(PG_FUNCTION_ARGS);
209 extern Datum float8pl(PG_FUNCTION_ARGS);
210 extern Datum float8mi(PG_FUNCTION_ARGS);
211 extern Datum float8mul(PG_FUNCTION_ARGS);
212 extern Datum float8div(PG_FUNCTION_ARGS);
213 extern Datum float4eq(PG_FUNCTION_ARGS);
214 extern Datum float4ne(PG_FUNCTION_ARGS);
215 extern Datum float4lt(PG_FUNCTION_ARGS);
216 extern Datum float4le(PG_FUNCTION_ARGS);
217 extern Datum float4gt(PG_FUNCTION_ARGS);
218 extern Datum float4ge(PG_FUNCTION_ARGS);
219 extern Datum float8eq(PG_FUNCTION_ARGS);
220 extern Datum float8ne(PG_FUNCTION_ARGS);
221 extern Datum float8lt(PG_FUNCTION_ARGS);
222 extern Datum float8le(PG_FUNCTION_ARGS);
223 extern Datum float8gt(PG_FUNCTION_ARGS);
224 extern Datum float8ge(PG_FUNCTION_ARGS);
225 extern Datum ftod(PG_FUNCTION_ARGS);
226 extern Datum i4tod(PG_FUNCTION_ARGS);
227 extern Datum i2tod(PG_FUNCTION_ARGS);
228 extern Datum dtof(PG_FUNCTION_ARGS);
229 extern Datum dtoi4(PG_FUNCTION_ARGS);
230 extern Datum dtoi2(PG_FUNCTION_ARGS);
231 extern Datum i4tof(PG_FUNCTION_ARGS);
232 extern Datum i2tof(PG_FUNCTION_ARGS);
233 extern Datum ftoi4(PG_FUNCTION_ARGS);
234 extern Datum ftoi2(PG_FUNCTION_ARGS);
235 extern Datum text_float8(PG_FUNCTION_ARGS);
236 extern Datum text_float4(PG_FUNCTION_ARGS);
237 extern Datum float8_text(PG_FUNCTION_ARGS);
238 extern Datum float4_text(PG_FUNCTION_ARGS);
239 extern Datum dround(PG_FUNCTION_ARGS);
240 extern Datum dtrunc(PG_FUNCTION_ARGS);
241 extern Datum dsqrt(PG_FUNCTION_ARGS);
242 extern Datum dcbrt(PG_FUNCTION_ARGS);
243 extern Datum dpow(PG_FUNCTION_ARGS);
244 extern Datum dexp(PG_FUNCTION_ARGS);
245 extern Datum dlog1(PG_FUNCTION_ARGS);
246 extern Datum dlog10(PG_FUNCTION_ARGS);
247 extern Datum dacos(PG_FUNCTION_ARGS);
248 extern Datum dasin(PG_FUNCTION_ARGS);
249 extern Datum datan(PG_FUNCTION_ARGS);
250 extern Datum datan2(PG_FUNCTION_ARGS);
251 extern Datum dcos(PG_FUNCTION_ARGS);
252 extern Datum dcot(PG_FUNCTION_ARGS);
253 extern Datum dsin(PG_FUNCTION_ARGS);
254 extern Datum dtan(PG_FUNCTION_ARGS);
255 extern Datum degrees(PG_FUNCTION_ARGS);
256 extern Datum dpi(PG_FUNCTION_ARGS);
257 extern Datum radians(PG_FUNCTION_ARGS);
258 extern Datum drandom(PG_FUNCTION_ARGS);
259 extern Datum setseed(PG_FUNCTION_ARGS);
260 extern Datum float8_accum(PG_FUNCTION_ARGS);
261 extern Datum float4_accum(PG_FUNCTION_ARGS);
262 extern Datum float8_avg(PG_FUNCTION_ARGS);
263 extern Datum float8_variance(PG_FUNCTION_ARGS);
264 extern Datum float8_stddev(PG_FUNCTION_ARGS);
265 extern Datum float48pl(PG_FUNCTION_ARGS);
266 extern Datum float48mi(PG_FUNCTION_ARGS);
267 extern Datum float48mul(PG_FUNCTION_ARGS);
268 extern Datum float48div(PG_FUNCTION_ARGS);
269 extern Datum float84pl(PG_FUNCTION_ARGS);
270 extern Datum float84mi(PG_FUNCTION_ARGS);
271 extern Datum float84mul(PG_FUNCTION_ARGS);
272 extern Datum float84div(PG_FUNCTION_ARGS);
273 extern Datum float48eq(PG_FUNCTION_ARGS);
274 extern Datum float48ne(PG_FUNCTION_ARGS);
275 extern Datum float48lt(PG_FUNCTION_ARGS);
276 extern Datum float48le(PG_FUNCTION_ARGS);
277 extern Datum float48gt(PG_FUNCTION_ARGS);
278 extern Datum float48ge(PG_FUNCTION_ARGS);
279 extern Datum float84eq(PG_FUNCTION_ARGS);
280 extern Datum float84ne(PG_FUNCTION_ARGS);
281 extern Datum float84lt(PG_FUNCTION_ARGS);
282 extern Datum float84le(PG_FUNCTION_ARGS);
283 extern Datum float84gt(PG_FUNCTION_ARGS);
284 extern Datum float84ge(PG_FUNCTION_ARGS);
285
286 /* misc.c */
287 extern Datum nullvalue(PG_FUNCTION_ARGS);
288 extern Datum nonnullvalue(PG_FUNCTION_ARGS);
289 extern Datum oidrand(PG_FUNCTION_ARGS);
290 extern Datum oidsrand(PG_FUNCTION_ARGS);
291 extern Datum userfntest(PG_FUNCTION_ARGS);
292
293 /* not_in.c */
294 extern Datum int4notin(PG_FUNCTION_ARGS);
295 extern Datum oidnotin(PG_FUNCTION_ARGS);
296
297 /* oid.c */
298 extern Datum oidin(PG_FUNCTION_ARGS);
299 extern Datum oidout(PG_FUNCTION_ARGS);
300 extern Datum oideq(PG_FUNCTION_ARGS);
301 extern Datum oidne(PG_FUNCTION_ARGS);
302 extern Datum oidlt(PG_FUNCTION_ARGS);
303 extern Datum oidle(PG_FUNCTION_ARGS);
304 extern Datum oidge(PG_FUNCTION_ARGS);
305 extern Datum oidgt(PG_FUNCTION_ARGS);
306 extern Datum oidlarger(PG_FUNCTION_ARGS);
307 extern Datum oidsmaller(PG_FUNCTION_ARGS);
308 extern Datum oid_text(PG_FUNCTION_ARGS);
309 extern Datum text_oid(PG_FUNCTION_ARGS);
310 extern Datum oidvectorin(PG_FUNCTION_ARGS);
311 extern Datum oidvectorout(PG_FUNCTION_ARGS);
312 extern Datum oidvectoreq(PG_FUNCTION_ARGS);
313 extern Datum oidvectorne(PG_FUNCTION_ARGS);
314 extern Datum oidvectorlt(PG_FUNCTION_ARGS);
315 extern Datum oidvectorle(PG_FUNCTION_ARGS);
316 extern Datum oidvectorge(PG_FUNCTION_ARGS);
317 extern Datum oidvectorgt(PG_FUNCTION_ARGS);
318
319 /* regexp.c */
320 extern Datum nameregexeq(PG_FUNCTION_ARGS);
321 extern Datum nameregexne(PG_FUNCTION_ARGS);
322 extern Datum textregexeq(PG_FUNCTION_ARGS);
323 extern Datum textregexne(PG_FUNCTION_ARGS);
324 extern Datum nameicregexeq(PG_FUNCTION_ARGS);
325 extern Datum nameicregexne(PG_FUNCTION_ARGS);
326 extern Datum texticregexeq(PG_FUNCTION_ARGS);
327 extern Datum texticregexne(PG_FUNCTION_ARGS);
328
329 /* regproc.c */
330 extern Datum regprocin(PG_FUNCTION_ARGS);
331 extern Datum regprocout(PG_FUNCTION_ARGS);
332 extern Datum regproctooid(PG_FUNCTION_ARGS);
333
334 /* define macro to replace mixed-case function call - tgl 97/04/27 */
335 #define RegprocToOid(rp) ((Oid) (rp))
336
337 /* ruleutils.c */
338 extern Datum pg_get_ruledef(PG_FUNCTION_ARGS);
339 extern Datum pg_get_viewdef(PG_FUNCTION_ARGS);
340 extern Datum pg_get_viewdef_name(PG_FUNCTION_ARGS);
341 extern Datum pg_get_indexdef(PG_FUNCTION_ARGS);
342 extern Datum pg_get_userbyid(PG_FUNCTION_ARGS);
343 extern Datum pg_get_expr(PG_FUNCTION_ARGS);
344 extern char *deparse_expression(Node *expr, List *dpcontext,
345                                    bool forceprefix);
346 extern List *deparse_context_for(const char *aliasname, Oid relid);
347 extern List *deparse_context_for_plan(int outer_varno, Node *outercontext,
348                                                                           int inner_varno, Node *innercontext);
349 extern Node *deparse_context_for_relation(const char *aliasname, Oid relid);
350 extern Node *deparse_context_for_subplan(const char *name, List *tlist,
351                                                                                  List *rtable);
352
353 /* tid.c */
354 extern void setLastTid(const ItemPointer tid);
355 extern Datum tidin(PG_FUNCTION_ARGS);
356 extern Datum tidout(PG_FUNCTION_ARGS);
357 extern Datum tideq(PG_FUNCTION_ARGS);
358 extern Datum currtid_byreloid(PG_FUNCTION_ARGS);
359 extern Datum currtid_byrelname(PG_FUNCTION_ARGS);
360
361 /* varchar.c */
362 extern Datum bpcharin(PG_FUNCTION_ARGS);
363 extern Datum bpcharout(PG_FUNCTION_ARGS);
364 extern Datum bpchar(PG_FUNCTION_ARGS);
365 extern Datum _bpchar(PG_FUNCTION_ARGS);
366 extern Datum char_bpchar(PG_FUNCTION_ARGS);
367 extern Datum name_bpchar(PG_FUNCTION_ARGS);
368 extern Datum bpchar_name(PG_FUNCTION_ARGS);
369 extern Datum bpchareq(PG_FUNCTION_ARGS);
370 extern Datum bpcharne(PG_FUNCTION_ARGS);
371 extern Datum bpcharlt(PG_FUNCTION_ARGS);
372 extern Datum bpcharle(PG_FUNCTION_ARGS);
373 extern Datum bpchargt(PG_FUNCTION_ARGS);
374 extern Datum bpcharge(PG_FUNCTION_ARGS);
375 extern Datum bpcharcmp(PG_FUNCTION_ARGS);
376 extern Datum bpcharlen(PG_FUNCTION_ARGS);
377 extern Datum bpcharoctetlen(PG_FUNCTION_ARGS);
378 extern Datum hashbpchar(PG_FUNCTION_ARGS);
379
380 extern Datum varcharin(PG_FUNCTION_ARGS);
381 extern Datum varcharout(PG_FUNCTION_ARGS);
382 extern Datum varchar(PG_FUNCTION_ARGS);
383 extern Datum _varchar(PG_FUNCTION_ARGS);
384 extern Datum varchareq(PG_FUNCTION_ARGS);
385 extern Datum varcharne(PG_FUNCTION_ARGS);
386 extern Datum varcharlt(PG_FUNCTION_ARGS);
387 extern Datum varcharle(PG_FUNCTION_ARGS);
388 extern Datum varchargt(PG_FUNCTION_ARGS);
389 extern Datum varcharge(PG_FUNCTION_ARGS);
390 extern Datum varcharcmp(PG_FUNCTION_ARGS);
391 extern Datum varcharlen(PG_FUNCTION_ARGS);
392 extern Datum varcharoctetlen(PG_FUNCTION_ARGS);
393
394 /* varlena.c */
395 extern Datum textin(PG_FUNCTION_ARGS);
396 extern Datum textout(PG_FUNCTION_ARGS);
397 extern Datum textcat(PG_FUNCTION_ARGS);
398 extern Datum texteq(PG_FUNCTION_ARGS);
399 extern Datum textne(PG_FUNCTION_ARGS);
400 extern Datum text_lt(PG_FUNCTION_ARGS);
401 extern Datum text_le(PG_FUNCTION_ARGS);
402 extern Datum text_gt(PG_FUNCTION_ARGS);
403 extern Datum text_ge(PG_FUNCTION_ARGS);
404 extern Datum text_larger(PG_FUNCTION_ARGS);
405 extern Datum text_smaller(PG_FUNCTION_ARGS);
406 extern Datum textlen(PG_FUNCTION_ARGS);
407 extern Datum textoctetlen(PG_FUNCTION_ARGS);
408 extern Datum textpos(PG_FUNCTION_ARGS);
409 extern Datum text_substr(PG_FUNCTION_ARGS);
410 extern Datum name_text(PG_FUNCTION_ARGS);
411 extern Datum text_name(PG_FUNCTION_ARGS);
412 extern int      varstr_cmp(char *arg1, int len1, char *arg2, int len2);
413 extern List *textToQualifiedNameList(text *textval, const char *caller);
414 extern bool SplitIdentifierString(char *rawstring, char separator,
415                                                                   List **namelist);
416
417 extern Datum unknownin(PG_FUNCTION_ARGS);
418 extern Datum unknownout(PG_FUNCTION_ARGS);
419
420 extern Datum byteain(PG_FUNCTION_ARGS);
421 extern Datum byteaout(PG_FUNCTION_ARGS);
422 extern Datum byteaoctetlen(PG_FUNCTION_ARGS);
423 extern Datum byteaGetByte(PG_FUNCTION_ARGS);
424 extern Datum byteaGetBit(PG_FUNCTION_ARGS);
425 extern Datum byteaSetByte(PG_FUNCTION_ARGS);
426 extern Datum byteaSetBit(PG_FUNCTION_ARGS);
427 extern Datum binary_encode(PG_FUNCTION_ARGS);
428 extern Datum binary_decode(PG_FUNCTION_ARGS);
429 extern Datum byteaeq(PG_FUNCTION_ARGS);
430 extern Datum byteane(PG_FUNCTION_ARGS);
431 extern Datum bytealt(PG_FUNCTION_ARGS);
432 extern Datum byteale(PG_FUNCTION_ARGS);
433 extern Datum byteagt(PG_FUNCTION_ARGS);
434 extern Datum byteage(PG_FUNCTION_ARGS);
435 extern Datum byteacmp(PG_FUNCTION_ARGS);
436 extern Datum byteacat(PG_FUNCTION_ARGS);
437 extern Datum byteapos(PG_FUNCTION_ARGS);
438 extern Datum bytea_substr(PG_FUNCTION_ARGS);
439
440 /* version.c */
441 extern Datum pgsql_version(PG_FUNCTION_ARGS);
442
443 /* like.c */
444 extern Datum namelike(PG_FUNCTION_ARGS);
445 extern Datum namenlike(PG_FUNCTION_ARGS);
446 extern Datum nameiclike(PG_FUNCTION_ARGS);
447 extern Datum nameicnlike(PG_FUNCTION_ARGS);
448 extern Datum textlike(PG_FUNCTION_ARGS);
449 extern Datum textnlike(PG_FUNCTION_ARGS);
450 extern Datum texticlike(PG_FUNCTION_ARGS);
451 extern Datum texticnlike(PG_FUNCTION_ARGS);
452 extern Datum bytealike(PG_FUNCTION_ARGS);
453 extern Datum byteanlike(PG_FUNCTION_ARGS);
454 extern Datum like_escape(PG_FUNCTION_ARGS);
455 extern Datum like_escape_bytea(PG_FUNCTION_ARGS);
456
457 /* oracle_compat.c */
458 extern Datum lower(PG_FUNCTION_ARGS);
459 extern Datum upper(PG_FUNCTION_ARGS);
460 extern Datum initcap(PG_FUNCTION_ARGS);
461 extern Datum lpad(PG_FUNCTION_ARGS);
462 extern Datum rpad(PG_FUNCTION_ARGS);
463 extern Datum btrim(PG_FUNCTION_ARGS);
464 extern Datum byteatrim(PG_FUNCTION_ARGS);
465 extern Datum ltrim(PG_FUNCTION_ARGS);
466 extern Datum rtrim(PG_FUNCTION_ARGS);
467 extern Datum translate(PG_FUNCTION_ARGS);
468 extern Datum chr(PG_FUNCTION_ARGS);
469 extern Datum repeat(PG_FUNCTION_ARGS);
470 extern Datum ascii(PG_FUNCTION_ARGS);
471
472 /* inet_net_ntop.c */
473 extern char *inet_net_ntop(int af, const void *src, int bits,
474                           char *dst, size_t size);
475 extern char *inet_cidr_ntop(int af, const void *src, int bits,
476                            char *dst, size_t size);
477
478 /* inet_net_pton.c */
479 extern int inet_net_pton(int af, const char *src,
480                           void *dst, size_t size);
481
482 /* network.c */
483 extern Datum inet_in(PG_FUNCTION_ARGS);
484 extern Datum inet_out(PG_FUNCTION_ARGS);
485 extern Datum cidr_in(PG_FUNCTION_ARGS);
486 extern Datum cidr_out(PG_FUNCTION_ARGS);
487 extern Datum network_cmp(PG_FUNCTION_ARGS);
488 extern Datum network_lt(PG_FUNCTION_ARGS);
489 extern Datum network_le(PG_FUNCTION_ARGS);
490 extern Datum network_eq(PG_FUNCTION_ARGS);
491 extern Datum network_ge(PG_FUNCTION_ARGS);
492 extern Datum network_gt(PG_FUNCTION_ARGS);
493 extern Datum network_ne(PG_FUNCTION_ARGS);
494 extern Datum network_sub(PG_FUNCTION_ARGS);
495 extern Datum network_subeq(PG_FUNCTION_ARGS);
496 extern Datum network_sup(PG_FUNCTION_ARGS);
497 extern Datum network_supeq(PG_FUNCTION_ARGS);
498 extern Datum network_network(PG_FUNCTION_ARGS);
499 extern Datum network_netmask(PG_FUNCTION_ARGS);
500 extern Datum network_masklen(PG_FUNCTION_ARGS);
501 extern Datum network_broadcast(PG_FUNCTION_ARGS);
502 extern Datum network_host(PG_FUNCTION_ARGS);
503 extern Datum network_show(PG_FUNCTION_ARGS);
504 extern Datum network_abbrev(PG_FUNCTION_ARGS);
505 extern double convert_network_to_scalar(Datum value, Oid typid);
506 extern Datum text_cidr(PG_FUNCTION_ARGS);
507 extern Datum text_inet(PG_FUNCTION_ARGS);
508 extern Datum inet_set_masklen(PG_FUNCTION_ARGS);
509 extern Datum network_scan_first(Datum in);
510 extern Datum network_scan_last(Datum in);
511
512 /* mac.c */
513 extern Datum macaddr_in(PG_FUNCTION_ARGS);
514 extern Datum macaddr_out(PG_FUNCTION_ARGS);
515 extern Datum macaddr_cmp(PG_FUNCTION_ARGS);
516 extern Datum macaddr_lt(PG_FUNCTION_ARGS);
517 extern Datum macaddr_le(PG_FUNCTION_ARGS);
518 extern Datum macaddr_eq(PG_FUNCTION_ARGS);
519 extern Datum macaddr_ge(PG_FUNCTION_ARGS);
520 extern Datum macaddr_gt(PG_FUNCTION_ARGS);
521 extern Datum macaddr_ne(PG_FUNCTION_ARGS);
522 extern Datum macaddr_trunc(PG_FUNCTION_ARGS);
523 extern Datum macaddr_text(PG_FUNCTION_ARGS);
524 extern Datum text_macaddr(PG_FUNCTION_ARGS);
525 extern Datum hashmacaddr(PG_FUNCTION_ARGS);
526
527 /* numeric.c */
528 extern Datum numeric_in(PG_FUNCTION_ARGS);
529 extern Datum numeric_out(PG_FUNCTION_ARGS);
530 extern Datum numeric(PG_FUNCTION_ARGS);
531 extern Datum numeric_abs(PG_FUNCTION_ARGS);
532 extern Datum numeric_uminus(PG_FUNCTION_ARGS);
533 extern Datum numeric_uplus(PG_FUNCTION_ARGS);
534 extern Datum numeric_sign(PG_FUNCTION_ARGS);
535 extern Datum numeric_round(PG_FUNCTION_ARGS);
536 extern Datum numeric_trunc(PG_FUNCTION_ARGS);
537 extern Datum numeric_ceil(PG_FUNCTION_ARGS);
538 extern Datum numeric_floor(PG_FUNCTION_ARGS);
539 extern Datum numeric_cmp(PG_FUNCTION_ARGS);
540 extern Datum numeric_eq(PG_FUNCTION_ARGS);
541 extern Datum numeric_ne(PG_FUNCTION_ARGS);
542 extern Datum numeric_gt(PG_FUNCTION_ARGS);
543 extern Datum numeric_ge(PG_FUNCTION_ARGS);
544 extern Datum numeric_lt(PG_FUNCTION_ARGS);
545 extern Datum numeric_le(PG_FUNCTION_ARGS);
546 extern Datum numeric_add(PG_FUNCTION_ARGS);
547 extern Datum numeric_sub(PG_FUNCTION_ARGS);
548 extern Datum numeric_mul(PG_FUNCTION_ARGS);
549 extern Datum numeric_div(PG_FUNCTION_ARGS);
550 extern Datum numeric_mod(PG_FUNCTION_ARGS);
551 extern Datum numeric_inc(PG_FUNCTION_ARGS);
552 extern Datum numeric_smaller(PG_FUNCTION_ARGS);
553 extern Datum numeric_larger(PG_FUNCTION_ARGS);
554 extern Datum numeric_sqrt(PG_FUNCTION_ARGS);
555 extern Datum numeric_exp(PG_FUNCTION_ARGS);
556 extern Datum numeric_ln(PG_FUNCTION_ARGS);
557 extern Datum numeric_log(PG_FUNCTION_ARGS);
558 extern Datum numeric_power(PG_FUNCTION_ARGS);
559 extern Datum int4_numeric(PG_FUNCTION_ARGS);
560 extern Datum numeric_int4(PG_FUNCTION_ARGS);
561 extern Datum int8_numeric(PG_FUNCTION_ARGS);
562 extern Datum numeric_int8(PG_FUNCTION_ARGS);
563 extern Datum int2_numeric(PG_FUNCTION_ARGS);
564 extern Datum numeric_int2(PG_FUNCTION_ARGS);
565 extern Datum float8_numeric(PG_FUNCTION_ARGS);
566 extern Datum numeric_float8(PG_FUNCTION_ARGS);
567 extern Datum numeric_float8_no_overflow(PG_FUNCTION_ARGS);
568 extern Datum float4_numeric(PG_FUNCTION_ARGS);
569 extern Datum numeric_float4(PG_FUNCTION_ARGS);
570 extern Datum numeric_accum(PG_FUNCTION_ARGS);
571 extern Datum int2_accum(PG_FUNCTION_ARGS);
572 extern Datum int4_accum(PG_FUNCTION_ARGS);
573 extern Datum int8_accum(PG_FUNCTION_ARGS);
574 extern Datum numeric_avg(PG_FUNCTION_ARGS);
575 extern Datum numeric_variance(PG_FUNCTION_ARGS);
576 extern Datum numeric_stddev(PG_FUNCTION_ARGS);
577 extern Datum int2_sum(PG_FUNCTION_ARGS);
578 extern Datum int4_sum(PG_FUNCTION_ARGS);
579 extern Datum int8_sum(PG_FUNCTION_ARGS);
580 extern Datum int2_avg_accum(PG_FUNCTION_ARGS);
581 extern Datum int4_avg_accum(PG_FUNCTION_ARGS);
582 extern Datum int8_avg(PG_FUNCTION_ARGS);
583
584 /* ri_triggers.c */
585 extern Datum RI_FKey_check_ins(PG_FUNCTION_ARGS);
586 extern Datum RI_FKey_check_upd(PG_FUNCTION_ARGS);
587 extern Datum RI_FKey_noaction_del(PG_FUNCTION_ARGS);
588 extern Datum RI_FKey_noaction_upd(PG_FUNCTION_ARGS);
589 extern Datum RI_FKey_cascade_del(PG_FUNCTION_ARGS);
590 extern Datum RI_FKey_cascade_upd(PG_FUNCTION_ARGS);
591 extern Datum RI_FKey_restrict_del(PG_FUNCTION_ARGS);
592 extern Datum RI_FKey_restrict_upd(PG_FUNCTION_ARGS);
593 extern Datum RI_FKey_setnull_del(PG_FUNCTION_ARGS);
594 extern Datum RI_FKey_setnull_upd(PG_FUNCTION_ARGS);
595 extern Datum RI_FKey_setdefault_del(PG_FUNCTION_ARGS);
596 extern Datum RI_FKey_setdefault_upd(PG_FUNCTION_ARGS);
597
598 /* even if MULTIBYTE is not enabled, these functions are necessary
599  * since pg_proc.h has references to them.
600  */
601 extern Datum getdatabaseencoding(PG_FUNCTION_ARGS);
602 extern Datum database_character_set(PG_FUNCTION_ARGS);
603 extern Datum pg_client_encoding(PG_FUNCTION_ARGS);
604 extern Datum PG_encoding_to_char(PG_FUNCTION_ARGS);
605 extern Datum PG_char_to_encoding(PG_FUNCTION_ARGS);
606 extern Datum PG_character_set_name(PG_FUNCTION_ARGS);
607 extern Datum PG_character_set_id(PG_FUNCTION_ARGS);
608 extern Datum pg_convert(PG_FUNCTION_ARGS);
609 extern Datum pg_convert2(PG_FUNCTION_ARGS);
610
611 /* format_type.c */
612 extern Datum format_type(PG_FUNCTION_ARGS);
613 extern char *format_type_be(Oid type_oid);
614 extern char *format_type_with_typemod(Oid type_oid, int32 typemod);
615 extern Datum oidvectortypes(PG_FUNCTION_ARGS);
616 extern int32 type_maximum_size(Oid type_oid, int32 typemod);
617
618 /* quote.c */
619 extern Datum quote_ident(PG_FUNCTION_ARGS);
620 extern Datum quote_literal(PG_FUNCTION_ARGS);
621
622 #endif   /* BUILTINS_H */