~ubuntu-branches/ubuntu/oneiric/postgresql-9.1/oneiric-security

« back to all changes in this revision

Viewing changes to doc/src/sgml/html/datatype-pseudo.html

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2011-05-11 10:41:53 UTC
  • Revision ID: james.westby@ubuntu.com-20110511104153-psbh2o58553fv1m0
Tags: upstream-9.1~beta1
ImportĀ upstreamĀ versionĀ 9.1~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
2
<HTML
 
3
><HEAD
 
4
><TITLE
 
5
>Pseudo-Types</TITLE
 
6
><META
 
7
NAME="GENERATOR"
 
8
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 
9
REV="MADE"
 
10
HREF="mailto:pgsql-docs@postgresql.org"><LINK
 
11
REL="HOME"
 
12
TITLE="PostgreSQL 9.1beta1 Documentation"
 
13
HREF="index.html"><LINK
 
14
REL="UP"
 
15
TITLE="Data Types"
 
16
HREF="datatype.html"><LINK
 
17
REL="PREVIOUS"
 
18
TITLE="Object Identifier Types"
 
19
HREF="datatype-oid.html"><LINK
 
20
REL="NEXT"
 
21
TITLE="Functions and Operators"
 
22
HREF="functions.html"><LINK
 
23
REL="STYLESHEET"
 
24
TYPE="text/css"
 
25
HREF="stylesheet.css"><META
 
26
HTTP-EQUIV="Content-Type"
 
27
CONTENT="text/html; charset=ISO-8859-1"><META
 
28
NAME="creation"
 
29
CONTENT="2011-04-27T21:20:33"></HEAD
 
30
><BODY
 
31
CLASS="SECT1"
 
32
><DIV
 
33
CLASS="NAVHEADER"
 
34
><TABLE
 
35
SUMMARY="Header navigation table"
 
36
WIDTH="100%"
 
37
BORDER="0"
 
38
CELLPADDING="0"
 
39
CELLSPACING="0"
 
40
><TR
 
41
><TH
 
42
COLSPAN="5"
 
43
ALIGN="center"
 
44
VALIGN="bottom"
 
45
><A
 
46
HREF="index.html"
 
47
>PostgreSQL 9.1beta1 Documentation</A
 
48
></TH
 
49
></TR
 
50
><TR
 
51
><TD
 
52
WIDTH="10%"
 
53
ALIGN="left"
 
54
VALIGN="top"
 
55
><A
 
56
TITLE="Object Identifier Types"
 
57
HREF="datatype-oid.html"
 
58
ACCESSKEY="P"
 
59
>Prev</A
 
60
></TD
 
61
><TD
 
62
WIDTH="10%"
 
63
ALIGN="left"
 
64
VALIGN="top"
 
65
><A
 
66
TITLE="Data Types"
 
67
HREF="datatype.html"
 
68
>Fast Backward</A
 
69
></TD
 
70
><TD
 
71
WIDTH="60%"
 
72
ALIGN="center"
 
73
VALIGN="bottom"
 
74
>Chapter 8. Data Types</TD
 
75
><TD
 
76
WIDTH="10%"
 
77
ALIGN="right"
 
78
VALIGN="top"
 
79
><A
 
80
TITLE="Data Types"
 
81
HREF="datatype.html"
 
82
>Fast Forward</A
 
83
></TD
 
84
><TD
 
85
WIDTH="10%"
 
86
ALIGN="right"
 
87
VALIGN="top"
 
88
><A
 
89
TITLE="Functions and Operators"
 
90
HREF="functions.html"
 
91
ACCESSKEY="N"
 
92
>Next</A
 
93
></TD
 
94
></TR
 
95
></TABLE
 
96
><HR
 
97
ALIGN="LEFT"
 
98
WIDTH="100%"></DIV
 
99
><DIV
 
100
CLASS="SECT1"
 
101
><H1
 
102
CLASS="SECT1"
 
103
><A
 
104
NAME="DATATYPE-PSEUDO"
 
105
>8.17. Pseudo-Types</A
 
106
></H1
 
107
><P
 
108
>    The <SPAN
 
109
CLASS="PRODUCTNAME"
 
110
>PostgreSQL</SPAN
 
111
> type system contains a
 
112
    number of special-purpose entries that are collectively called
 
113
    <I
 
114
CLASS="FIRSTTERM"
 
115
>pseudo-types</I
 
116
>.  A pseudo-type cannot be used as a
 
117
    column data type, but it can be used to declare a function's
 
118
    argument or result type.  Each of the available pseudo-types is
 
119
    useful in situations where a function's behavior does not
 
120
    correspond to simply taking or returning a value of a specific
 
121
    <ACRONYM
 
122
CLASS="ACRONYM"
 
123
>SQL</ACRONYM
 
124
> data type.  <A
 
125
HREF="datatype-pseudo.html#DATATYPE-PSEUDOTYPES-TABLE"
 
126
>Table 8-24</A
 
127
> lists the existing
 
128
    pseudo-types.
 
129
   </P
 
130
><DIV
 
131
CLASS="TABLE"
 
132
><A
 
133
NAME="DATATYPE-PSEUDOTYPES-TABLE"
 
134
></A
 
135
><P
 
136
><B
 
137
>Table 8-24. Pseudo-Types</B
 
138
></P
 
139
><TABLE
 
140
BORDER="1"
 
141
CLASS="CALSTABLE"
 
142
><COL><COL><THEAD
 
143
><TR
 
144
><TH
 
145
>Name</TH
 
146
><TH
 
147
>Description</TH
 
148
></TR
 
149
></THEAD
 
150
><TBODY
 
151
><TR
 
152
><TD
 
153
><TT
 
154
CLASS="TYPE"
 
155
>any</TT
 
156
></TD
 
157
><TD
 
158
>Indicates that a function accepts any input data type.</TD
 
159
></TR
 
160
><TR
 
161
><TD
 
162
><TT
 
163
CLASS="TYPE"
 
164
>anyarray</TT
 
165
></TD
 
166
><TD
 
167
>Indicates that a function accepts any array data type
 
168
        (see <A
 
169
HREF="extend-type-system.html#EXTEND-TYPES-POLYMORPHIC"
 
170
>Section 35.2.5</A
 
171
>).</TD
 
172
></TR
 
173
><TR
 
174
><TD
 
175
><TT
 
176
CLASS="TYPE"
 
177
>anyelement</TT
 
178
></TD
 
179
><TD
 
180
>Indicates that a function accepts any data type
 
181
        (see <A
 
182
HREF="extend-type-system.html#EXTEND-TYPES-POLYMORPHIC"
 
183
>Section 35.2.5</A
 
184
>).</TD
 
185
></TR
 
186
><TR
 
187
><TD
 
188
><TT
 
189
CLASS="TYPE"
 
190
>anyenum</TT
 
191
></TD
 
192
><TD
 
193
>Indicates that a function accepts any enum data type
 
194
        (see <A
 
195
HREF="extend-type-system.html#EXTEND-TYPES-POLYMORPHIC"
 
196
>Section 35.2.5</A
 
197
> and
 
198
        <A
 
199
HREF="datatype-enum.html"
 
200
>Section 8.7</A
 
201
>).</TD
 
202
></TR
 
203
><TR
 
204
><TD
 
205
><TT
 
206
CLASS="TYPE"
 
207
>anynonarray</TT
 
208
></TD
 
209
><TD
 
210
>Indicates that a function accepts any non-array data type
 
211
        (see <A
 
212
HREF="extend-type-system.html#EXTEND-TYPES-POLYMORPHIC"
 
213
>Section 35.2.5</A
 
214
>).</TD
 
215
></TR
 
216
><TR
 
217
><TD
 
218
><TT
 
219
CLASS="TYPE"
 
220
>cstring</TT
 
221
></TD
 
222
><TD
 
223
>Indicates that a function accepts or returns a null-terminated C string.</TD
 
224
></TR
 
225
><TR
 
226
><TD
 
227
><TT
 
228
CLASS="TYPE"
 
229
>internal</TT
 
230
></TD
 
231
><TD
 
232
>Indicates that a function accepts or returns a server-internal
 
233
        data type.</TD
 
234
></TR
 
235
><TR
 
236
><TD
 
237
><TT
 
238
CLASS="TYPE"
 
239
>language_handler</TT
 
240
></TD
 
241
><TD
 
242
>A procedural language call handler is declared to return <TT
 
243
CLASS="TYPE"
 
244
>language_handler</TT
 
245
>.</TD
 
246
></TR
 
247
><TR
 
248
><TD
 
249
><TT
 
250
CLASS="TYPE"
 
251
>fdw_handler</TT
 
252
></TD
 
253
><TD
 
254
>A foreign-data wrapper handler is declared to return <TT
 
255
CLASS="TYPE"
 
256
>fdw_handler</TT
 
257
>.</TD
 
258
></TR
 
259
><TR
 
260
><TD
 
261
><TT
 
262
CLASS="TYPE"
 
263
>record</TT
 
264
></TD
 
265
><TD
 
266
>Identifies a function returning an unspecified row type.</TD
 
267
></TR
 
268
><TR
 
269
><TD
 
270
><TT
 
271
CLASS="TYPE"
 
272
>trigger</TT
 
273
></TD
 
274
><TD
 
275
>A trigger function is declared to return <TT
 
276
CLASS="TYPE"
 
277
>trigger.</TT
 
278
></TD
 
279
></TR
 
280
><TR
 
281
><TD
 
282
><TT
 
283
CLASS="TYPE"
 
284
>void</TT
 
285
></TD
 
286
><TD
 
287
>Indicates that a function returns no value.</TD
 
288
></TR
 
289
><TR
 
290
><TD
 
291
><TT
 
292
CLASS="TYPE"
 
293
>opaque</TT
 
294
></TD
 
295
><TD
 
296
>An obsolete type name that formerly served all the above purposes.</TD
 
297
></TR
 
298
></TBODY
 
299
></TABLE
 
300
></DIV
 
301
><P
 
302
>    Functions coded in C (whether built-in or dynamically loaded) can be
 
303
    declared to accept or return any of these pseudo data types.  It is up to
 
304
    the function author to ensure that the function will behave safely
 
305
    when a pseudo-type is used as an argument type.
 
306
   </P
 
307
><P
 
308
>    Functions coded in procedural languages can use pseudo-types only as
 
309
    allowed by their implementation languages.  At present the procedural
 
310
    languages all forbid use of a pseudo-type as argument type, and allow
 
311
    only <TT
 
312
CLASS="TYPE"
 
313
>void</TT
 
314
> and <TT
 
315
CLASS="TYPE"
 
316
>record</TT
 
317
> as a result type (plus
 
318
    <TT
 
319
CLASS="TYPE"
 
320
>trigger</TT
 
321
> when the function is used as a trigger).  Some also
 
322
    support polymorphic functions using the types <TT
 
323
CLASS="TYPE"
 
324
>anyarray</TT
 
325
>,
 
326
    <TT
 
327
CLASS="TYPE"
 
328
>anyelement</TT
 
329
>, <TT
 
330
CLASS="TYPE"
 
331
>anyenum</TT
 
332
>, and <TT
 
333
CLASS="TYPE"
 
334
>anynonarray</TT
 
335
>.
 
336
   </P
 
337
><P
 
338
>    The <TT
 
339
CLASS="TYPE"
 
340
>internal</TT
 
341
> pseudo-type is used to declare functions
 
342
    that are meant only to be called internally by the database
 
343
    system, and not by direct invocation in an <ACRONYM
 
344
CLASS="ACRONYM"
 
345
>SQL</ACRONYM
 
346
>
 
347
    query.  If a function has at least one <TT
 
348
CLASS="TYPE"
 
349
>internal</TT
 
350
>-type
 
351
    argument then it cannot be called from <ACRONYM
 
352
CLASS="ACRONYM"
 
353
>SQL</ACRONYM
 
354
>.  To
 
355
    preserve the type safety of this restriction it is important to
 
356
    follow this coding rule: do not create any function that is
 
357
    declared to return <TT
 
358
CLASS="TYPE"
 
359
>internal</TT
 
360
> unless it has at least one
 
361
    <TT
 
362
CLASS="TYPE"
 
363
>internal</TT
 
364
> argument.
 
365
   </P
 
366
></DIV
 
367
><DIV
 
368
CLASS="NAVFOOTER"
 
369
><HR
 
370
ALIGN="LEFT"
 
371
WIDTH="100%"><TABLE
 
372
SUMMARY="Footer navigation table"
 
373
WIDTH="100%"
 
374
BORDER="0"
 
375
CELLPADDING="0"
 
376
CELLSPACING="0"
 
377
><TR
 
378
><TD
 
379
WIDTH="33%"
 
380
ALIGN="left"
 
381
VALIGN="top"
 
382
><A
 
383
HREF="datatype-oid.html"
 
384
ACCESSKEY="P"
 
385
>Prev</A
 
386
></TD
 
387
><TD
 
388
WIDTH="34%"
 
389
ALIGN="center"
 
390
VALIGN="top"
 
391
><A
 
392
HREF="index.html"
 
393
ACCESSKEY="H"
 
394
>Home</A
 
395
></TD
 
396
><TD
 
397
WIDTH="33%"
 
398
ALIGN="right"
 
399
VALIGN="top"
 
400
><A
 
401
HREF="functions.html"
 
402
ACCESSKEY="N"
 
403
>Next</A
 
404
></TD
 
405
></TR
 
406
><TR
 
407
><TD
 
408
WIDTH="33%"
 
409
ALIGN="left"
 
410
VALIGN="top"
 
411
>Object Identifier Types</TD
 
412
><TD
 
413
WIDTH="34%"
 
414
ALIGN="center"
 
415
VALIGN="top"
 
416
><A
 
417
HREF="datatype.html"
 
418
ACCESSKEY="U"
 
419
>Up</A
 
420
></TD
 
421
><TD
 
422
WIDTH="33%"
 
423
ALIGN="right"
 
424
VALIGN="top"
 
425
>Functions and Operators</TD
 
426
></TR
 
427
></TABLE
 
428
></DIV
 
429
></BODY
 
430
></HTML
 
431
>
 
 
b'\\ No newline at end of file'