OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / I386LINUX / util / I386LINUX / doc / postgresql / html / datatype-oid.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <HTML
3 ><HEAD
4 ><TITLE
5 >Object Identifier 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="Arrays"
19 HREF="arrays.html"><LINK
20 REL="NEXT"
21 TITLE="Pseudo-Types"
22 HREF="datatype-pseudo.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="arrays.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="datatype-pseudo.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-OID"
96 >8.11. Object Identifier Types</A
97 ></H1
98 ><A
99 NAME="AEN5290"
100 ></A
101 ><A
102 NAME="AEN5293"
103 ></A
104 ><A
105 NAME="AEN5295"
106 ></A
107 ><A
108 NAME="AEN5297"
109 ></A
110 ><A
111 NAME="AEN5299"
112 ></A
113 ><A
114 NAME="AEN5301"
115 ></A
116 ><A
117 NAME="AEN5303"
118 ></A
119 ><A
120 NAME="AEN5305"
121 ></A
122 ><A
123 NAME="AEN5307"
124 ></A
125 ><A
126 NAME="AEN5309"
127 ></A
128 ><A
129 NAME="AEN5311"
130 ></A
131 ><P
132 >    Object identifiers (OIDs) are used internally by
133     <SPAN
134 CLASS="PRODUCTNAME"
135 >PostgreSQL</SPAN
136 > as primary keys for various system
137     tables.  Also, an OID system column is added to user-created tables
138     (unless <TT
139 CLASS="LITERAL"
140 >WITHOUT OIDS</TT
141 > is specified at table creation time).
142     Type <TT
143 CLASS="TYPE"
144 >oid</TT
145 > represents an object identifier.  There are also
146     several alias types for <TT
147 CLASS="TYPE"
148 >oid</TT
149 >: <TT
150 CLASS="TYPE"
151 >regproc</TT
152 >, <TT
153 CLASS="TYPE"
154 >regprocedure</TT
155 >,
156     <TT
157 CLASS="TYPE"
158 >regoper</TT
159 >, <TT
160 CLASS="TYPE"
161 >regoperator</TT
162 >, <TT
163 CLASS="TYPE"
164 >regclass</TT
165 >,
166     and <TT
167 CLASS="TYPE"
168 >regtype</TT
169 >. <A
170 HREF="datatype-oid.html#DATATYPE-OID-TABLE"
171 >Table 8-19</A
172 > shows an overview.
173    </P
174 ><P
175 >    The <TT
176 CLASS="TYPE"
177 >oid</TT
178 > type is currently implemented as an unsigned four-byte
179     integer.
180     Therefore, it is not large enough to provide database-wide uniqueness
181     in large databases, or even in large individual tables.  So, using a
182     user-created table's OID column as a primary key is discouraged.
183     OIDs are best used only for references to system tables.
184    </P
185 ><P
186 >    The <TT
187 CLASS="TYPE"
188 >oid</TT
189 > type itself has few operations beyond comparison.
190     It can be cast to
191     integer, however, and then manipulated using the standard integer
192     operators.  (Beware of possible signed-versus-unsigned confusion
193     if you do this.)
194    </P
195 ><P
196 >    The OID alias types have no operations of their own except
197     for specialized input and output routines.  These routines are able
198     to accept and display symbolic names for system objects, rather than
199     the raw numeric value that type <TT
200 CLASS="TYPE"
201 >oid</TT
202 > would use.  The alias
203     types allow simplified lookup of OID values for objects: for example,
204     one may write <TT
205 CLASS="LITERAL"
206 >'mytable'::regclass</TT
207 > to get the OID of table
208     <TT
209 CLASS="LITERAL"
210 >mytable</TT
211 >, rather than <TT
212 CLASS="LITERAL"
213 >SELECT oid FROM pg_class WHERE
214     relname = 'mytable'</TT
215 >.  (In reality, a much more complicated <TT
216 CLASS="COMMAND"
217 >SELECT</TT
218 > would
219     be needed to deal with selecting the right OID when there are multiple
220     tables named <TT
221 CLASS="LITERAL"
222 >mytable</TT
223 > in different schemas.)
224    </P
225 ><DIV
226 CLASS="TABLE"
227 ><A
228 NAME="DATATYPE-OID-TABLE"
229 ></A
230 ><P
231 ><B
232 >Table 8-19. Object Identifier Types</B
233 ></P
234 ><TABLE
235 BORDER="1"
236 CLASS="CALSTABLE"
237 ><COL><COL><COL><COL><THEAD
238 ><TR
239 ><TH
240 >Name</TH
241 ><TH
242 >References</TH
243 ><TH
244 >Description</TH
245 ><TH
246 >Value Example</TH
247 ></TR
248 ></THEAD
249 ><TBODY
250 ><TR
251 ><TD
252 ><TT
253 CLASS="TYPE"
254 >oid</TT
255 ></TD
256 ><TD
257 >any</TD
258 ><TD
259 >numeric object identifier</TD
260 ><TD
261 ><TT
262 CLASS="LITERAL"
263 >564182</TT
264 ></TD
265 ></TR
266 ><TR
267 ><TD
268 ><TT
269 CLASS="TYPE"
270 >regproc</TT
271 ></TD
272 ><TD
273 ><TT
274 CLASS="STRUCTNAME"
275 >pg_proc</TT
276 ></TD
277 ><TD
278 >function name</TD
279 ><TD
280 ><TT
281 CLASS="LITERAL"
282 >sum</TT
283 ></TD
284 ></TR
285 ><TR
286 ><TD
287 ><TT
288 CLASS="TYPE"
289 >regprocedure</TT
290 ></TD
291 ><TD
292 ><TT
293 CLASS="STRUCTNAME"
294 >pg_proc</TT
295 ></TD
296 ><TD
297 >function with argument types</TD
298 ><TD
299 ><TT
300 CLASS="LITERAL"
301 >sum(int4)</TT
302 ></TD
303 ></TR
304 ><TR
305 ><TD
306 ><TT
307 CLASS="TYPE"
308 >regoper</TT
309 ></TD
310 ><TD
311 ><TT
312 CLASS="STRUCTNAME"
313 >pg_operator</TT
314 ></TD
315 ><TD
316 >operator name</TD
317 ><TD
318 ><TT
319 CLASS="LITERAL"
320 >+</TT
321 ></TD
322 ></TR
323 ><TR
324 ><TD
325 ><TT
326 CLASS="TYPE"
327 >regoperator</TT
328 ></TD
329 ><TD
330 ><TT
331 CLASS="STRUCTNAME"
332 >pg_operator</TT
333 ></TD
334 ><TD
335 >operator with argument types</TD
336 ><TD
337 ><TT
338 CLASS="LITERAL"
339 >*(integer,integer)</TT
340 > or <TT
341 CLASS="LITERAL"
342 >-(NONE,integer)</TT
343 ></TD
344 ></TR
345 ><TR
346 ><TD
347 ><TT
348 CLASS="TYPE"
349 >regclass</TT
350 ></TD
351 ><TD
352 ><TT
353 CLASS="STRUCTNAME"
354 >pg_class</TT
355 ></TD
356 ><TD
357 >relation name</TD
358 ><TD
359 ><TT
360 CLASS="LITERAL"
361 >pg_type</TT
362 ></TD
363 ></TR
364 ><TR
365 ><TD
366 ><TT
367 CLASS="TYPE"
368 >regtype</TT
369 ></TD
370 ><TD
371 ><TT
372 CLASS="STRUCTNAME"
373 >pg_type</TT
374 ></TD
375 ><TD
376 >data type name</TD
377 ><TD
378 ><TT
379 CLASS="LITERAL"
380 >integer</TT
381 ></TD
382 ></TR
383 ></TBODY
384 ></TABLE
385 ></DIV
386 ><P
387 >    All of the OID alias types accept schema-qualified names, and will
388     display schema-qualified names on output if the object would not
389     be found in the current search path without being qualified.
390     The <TT
391 CLASS="TYPE"
392 >regproc</TT
393 > and <TT
394 CLASS="TYPE"
395 >regoper</TT
396 > alias types will only
397     accept input names that are unique (not overloaded), so they are
398     of limited use; for most uses <TT
399 CLASS="TYPE"
400 >regprocedure</TT
401 > or
402     <TT
403 CLASS="TYPE"
404 >regoperator</TT
405 > is more appropriate.  For <TT
406 CLASS="TYPE"
407 >regoperator</TT
408 >,
409     unary operators are identified by writing <TT
410 CLASS="LITERAL"
411 >NONE</TT
412 > for the unused
413     operand.
414    </P
415 ><P
416 >    Another identifier type used by the system is <TT
417 CLASS="TYPE"
418 >xid</TT
419 >, or transaction
420     (abbreviated <ABBR
421 CLASS="ABBREV"
422 >xact</ABBR
423 >) identifier.  This is the data type of the system columns
424     <TT
425 CLASS="STRUCTFIELD"
426 >xmin</TT
427 > and <TT
428 CLASS="STRUCTFIELD"
429 >xmax</TT
430 >.  Transaction identifiers are 32-bit quantities.
431    </P
432 ><P
433 >    A third identifier type used by the system is <TT
434 CLASS="TYPE"
435 >cid</TT
436 >, or
437     command identifier.  This is the data type of the system columns
438     <TT
439 CLASS="STRUCTFIELD"
440 >cmin</TT
441 > and <TT
442 CLASS="STRUCTFIELD"
443 >cmax</TT
444 >. Command identifiers are also 32-bit quantities.
445    </P
446 ><P
447 >    A final identifier type used by the system is <TT
448 CLASS="TYPE"
449 >tid</TT
450 >, or tuple
451     identifier (row identifier).  This is the data type of the system column
452     <TT
453 CLASS="STRUCTFIELD"
454 >ctid</TT
455 >.  A tuple ID is a pair
456     (block number, tuple index within block) that identifies the
457     physical location of the row within its table.
458    </P
459 ><P
460 >    (The system columns are further explained in <A
461 HREF="ddl-system-columns.html"
462 >Section 5.2</A
463 >.)
464    </P
465 ></DIV
466 ><DIV
467 CLASS="NAVFOOTER"
468 ><HR
469 ALIGN="LEFT"
470 WIDTH="100%"><TABLE
471 SUMMARY="Footer navigation table"
472 WIDTH="100%"
473 BORDER="0"
474 CELLPADDING="0"
475 CELLSPACING="0"
476 ><TR
477 ><TD
478 WIDTH="33%"
479 ALIGN="left"
480 VALIGN="top"
481 ><A
482 HREF="arrays.html"
483 ACCESSKEY="P"
484 >Prev</A
485 ></TD
486 ><TD
487 WIDTH="34%"
488 ALIGN="center"
489 VALIGN="top"
490 ><A
491 HREF="index.html"
492 ACCESSKEY="H"
493 >Home</A
494 ></TD
495 ><TD
496 WIDTH="33%"
497 ALIGN="right"
498 VALIGN="top"
499 ><A
500 HREF="datatype-pseudo.html"
501 ACCESSKEY="N"
502 >Next</A
503 ></TD
504 ></TR
505 ><TR
506 ><TD
507 WIDTH="33%"
508 ALIGN="left"
509 VALIGN="top"
510 >Arrays</TD
511 ><TD
512 WIDTH="34%"
513 ALIGN="center"
514 VALIGN="top"
515 ><A
516 HREF="datatype.html"
517 ACCESSKEY="U"
518 >Up</A
519 ></TD
520 ><TD
521 WIDTH="33%"
522 ALIGN="right"
523 VALIGN="top"
524 >Pseudo-Types</TD
525 ></TR
526 ></TABLE
527 ></DIV
528 ></BODY
529 ></HTML
530 >