OSDN Git Service

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