Eneboo - Documentación para desarrolladores
|
00001 /*------------------------------------------------------------------------- 00002 * 00003 * pg_type.h 00004 * definition of the system "type" relation (pg_type) 00005 * along with the relation's initial contents. 00006 * 00007 * 00008 * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group 00009 * Portions Copyright (c) 1994, Regents of the University of California 00010 * 00011 * $PostgreSQL: pgsql/src/include/catalog/pg_type.h,v 1.166.2.1 2005/11/22 18:23:27 momjian Exp $ 00012 * 00013 * NOTES 00014 * the genbki.sh script reads this file and generates .bki 00015 * information from the DATA() statements. 00016 * 00017 *------------------------------------------------------------------------- 00018 */ 00019 #ifndef PG_TYPE_H 00020 #define PG_TYPE_H 00021 00022 #include "nodes/nodes.h" 00023 00024 /* ---------------- 00025 * postgres.h contains the system type definitions and the 00026 * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file 00027 * can be read by both genbki.sh and the C compiler. 00028 * ---------------- 00029 */ 00030 00031 /* ---------------- 00032 * pg_type definition. cpp turns this into 00033 * typedef struct FormData_pg_type 00034 * 00035 * Some of the values in a pg_type instance are copied into 00036 * pg_attribute instances. Some parts of Postgres use the pg_type copy, 00037 * while others use the pg_attribute copy, so they must match. 00038 * See struct FormData_pg_attribute for details. 00039 * ---------------- 00040 */ 00041 #define TypeRelationId 1247 00042 00043 CATALOG(pg_type,1247) BKI_BOOTSTRAP 00044 { 00045 NameData typname; /* type name */ 00046 Oid typnamespace; /* OID of namespace containing this type */ 00047 Oid typowner; /* type owner */ 00048 00049 /* 00050 * For a fixed-size type, typlen is the number of bytes we use to 00051 * represent a value of this type, e.g. 4 for an int4. But for a 00052 * variable-length type, typlen is negative. We use -1 to indicate a 00053 * "varlena" type (one that has a length word), -2 to indicate a 00054 * null-terminated C string. 00055 */ 00056 int2 typlen; 00057 00058 /* 00059 * typbyval determines whether internal Postgres routines pass a value of 00060 * this type by value or by reference. typbyval had better be FALSE if 00061 * the length is not 1, 2, or 4 (or 8 on 8-byte-Datum machines). 00062 * Variable-length types are always passed by reference. Note that 00063 * typbyval can be false even if the length would allow pass-by-value; 00064 * this is currently true for type float4, for example. 00065 */ 00066 bool typbyval; 00067 00068 /* 00069 * typtype is 'b' for a basic type, 'c' for a complex type (ie a table's 00070 * rowtype), 'd' for a domain type, or 'p' for a pseudo type. 00071 * 00072 * If typtype is 'c', typrelid is the OID of the class' entry in pg_class. 00073 */ 00074 char typtype; 00075 00076 /* 00077 * If typisdefined is false, the entry is only a placeholder (forward 00078 * reference). We know the type name, but not yet anything else about it. 00079 */ 00080 bool typisdefined; 00081 00082 char typdelim; /* delimiter for arrays of this type */ 00083 00084 Oid typrelid; /* 0 if not a complex type */ 00085 00086 /* 00087 * If typelem is not 0 then it identifies another row in pg_type. The 00088 * current type can then be subscripted like an array yielding values of 00089 * type typelem. A non-zero typelem does not guarantee this type to be a 00090 * "real" array type; some ordinary fixed-length types can also be 00091 * subscripted (e.g., name, point). Variable-length types can *not* be 00092 * turned into pseudo-arrays like that. Hence, the way to determine 00093 * whether a type is a "true" array type is if: 00094 * 00095 * typelem != 0 and typlen == -1. 00096 */ 00097 Oid typelem; 00098 00099 /* 00100 * I/O conversion procedures for the datatype. 00101 */ 00102 regproc typinput; /* text format (required) */ 00103 regproc typoutput; 00104 regproc typreceive; /* binary format (optional) */ 00105 regproc typsend; 00106 00107 /* 00108 * Custom ANALYZE procedure for the datatype (0 selects the default). 00109 */ 00110 regproc typanalyze; 00111 00112 /* ---------------- 00113 * typalign is the alignment required when storing a value of this 00114 * type. It applies to storage on disk as well as most 00115 * representations of the value inside Postgres. When multiple values 00116 * are stored consecutively, such as in the representation of a 00117 * complete row on disk, padding is inserted before a datum of this 00118 * type so that it begins on the specified boundary. The alignment 00119 * reference is the beginning of the first datum in the sequence. 00120 * 00121 * 'c' = CHAR alignment, ie no alignment needed. 00122 * 's' = SHORT alignment (2 bytes on most machines). 00123 * 'i' = INT alignment (4 bytes on most machines). 00124 * 'd' = DOUBLE alignment (8 bytes on many machines, but by no means all). 00125 * 00126 * See include/utils/memutils.h for the macros that compute these 00127 * alignment requirements. 00128 * 00129 * NOTE: for types used in system tables, it is critical that the 00130 * size and alignment defined in pg_type agree with the way that the 00131 * compiler will lay out the field in a struct representing a table row. 00132 * ---------------- 00133 */ 00134 char typalign; 00135 00136 /* ---------------- 00137 * typstorage tells if the type is prepared for toasting and what 00138 * the default strategy for attributes of this type should be. 00139 * 00140 * 'p' PLAIN type not prepared for toasting 00141 * 'e' EXTERNAL external storage possible, don't try to compress 00142 * 'x' EXTENDED try to compress and store external if required 00143 * 'm' MAIN like 'x' but try to keep in main tuple 00144 * ---------------- 00145 */ 00146 char typstorage; 00147 00148 /* 00149 * This flag represents a "NOT NULL" constraint against this datatype. 00150 * 00151 * If true, the attnotnull column for a corresponding table column using 00152 * this datatype will always enforce the NOT NULL constraint. 00153 * 00154 * Used primarily for domain types. 00155 */ 00156 bool typnotnull; 00157 00158 /* 00159 * Domains use typbasetype to show the base (or complex) type that the 00160 * domain is based on. Zero if the type is not a domain. 00161 */ 00162 Oid typbasetype; 00163 00164 /* 00165 * Domains use typtypmod to record the typmod to be applied to their base 00166 * type (-1 if base type does not use a typmod). -1 if this type is not a 00167 * domain. 00168 */ 00169 int4 typtypmod; 00170 00171 /* 00172 * typndims is the declared number of dimensions for an array domain type 00173 * (i.e., typbasetype is an array type; the domain's typelem will match 00174 * the base type's typelem). Otherwise zero. 00175 */ 00176 int4 typndims; 00177 00178 /* 00179 * If typdefaultbin is not NULL, it is the nodeToString representation of 00180 * a default expression for the type. Currently this is only used for 00181 * domains. 00182 */ 00183 text typdefaultbin; /* VARIABLE LENGTH FIELD */ 00184 00185 /* 00186 * typdefault is NULL if the type has no associated default value. If 00187 * typdefaultbin is not NULL, typdefault must contain a human-readable 00188 * version of the default expression represented by typdefaultbin. If 00189 * typdefaultbin is NULL and typdefault is not, then typdefault is the 00190 * external representation of the type's default value, which may be fed 00191 * to the type's input converter to produce a constant. 00192 */ 00193 text typdefault; /* VARIABLE LENGTH FIELD */ 00194 00195 } FormData_pg_type; 00196 00197 /* ---------------- 00198 * Form_pg_type corresponds to a pointer to a row with 00199 * the format of pg_type relation. 00200 * ---------------- 00201 */ 00202 typedef FormData_pg_type *Form_pg_type; 00203 00204 /* ---------------- 00205 * compiler constants for pg_type 00206 * ---------------- 00207 */ 00208 #define Natts_pg_type 23 00209 #define Anum_pg_type_typname 1 00210 #define Anum_pg_type_typnamespace 2 00211 #define Anum_pg_type_typowner 3 00212 #define Anum_pg_type_typlen 4 00213 #define Anum_pg_type_typbyval 5 00214 #define Anum_pg_type_typtype 6 00215 #define Anum_pg_type_typisdefined 7 00216 #define Anum_pg_type_typdelim 8 00217 #define Anum_pg_type_typrelid 9 00218 #define Anum_pg_type_typelem 10 00219 #define Anum_pg_type_typinput 11 00220 #define Anum_pg_type_typoutput 12 00221 #define Anum_pg_type_typreceive 13 00222 #define Anum_pg_type_typsend 14 00223 #define Anum_pg_type_typanalyze 15 00224 #define Anum_pg_type_typalign 16 00225 #define Anum_pg_type_typstorage 17 00226 #define Anum_pg_type_typnotnull 18 00227 #define Anum_pg_type_typbasetype 19 00228 #define Anum_pg_type_typtypmod 20 00229 #define Anum_pg_type_typndims 21 00230 #define Anum_pg_type_typdefaultbin 22 00231 #define Anum_pg_type_typdefault 23 00232 00233 00234 /* ---------------- 00235 * initial contents of pg_type 00236 * ---------------- 00237 */ 00238 00239 /* keep the following ordered by OID so that later changes can be made easier*/ 00240 00241 /* Make sure the typlen, typbyval, and typalign values here match the initial 00242 values for attlen, attbyval, and attalign in both places in pg_attribute.h 00243 for every instance. 00244 */ 00245 00246 /* OIDS 1 - 99 */ 00247 DATA(insert OID = 16 ( bool PGNSP PGUID 1 t b t \054 0 0 boolin boolout boolrecv boolsend - c p f 0 -1 0 _null_ _null_ )); 00248 DESCR("boolean, 'true'/'false'"); 00249 #define BOOLOID 16 00250 00251 DATA(insert OID = 17 ( bytea PGNSP PGUID -1 f b t \054 0 0 byteain byteaout bytearecv byteasend - i x f 0 -1 0 _null_ _null_ )); 00252 DESCR("variable-length string, binary values escaped"); 00253 #define BYTEAOID 17 00254 00255 DATA(insert OID = 18 ( char PGNSP PGUID 1 t b t \054 0 0 charin charout charrecv charsend - c p f 0 -1 0 _null_ _null_ )); 00256 DESCR("single character"); 00257 #define CHAROID 18 00258 00259 DATA(insert OID = 19 ( name PGNSP PGUID NAMEDATALEN f b t \054 0 18 namein nameout namerecv namesend - i p f 0 -1 0 _null_ _null_ )); 00260 DESCR("63-character type for storing system identifiers"); 00261 #define NAMEOID 19 00262 00263 DATA(insert OID = 20 ( int8 PGNSP PGUID 8 f b t \054 0 0 int8in int8out int8recv int8send - d p f 0 -1 0 _null_ _null_ )); 00264 DESCR("~18 digit integer, 8-byte storage"); 00265 #define INT8OID 20 00266 00267 DATA(insert OID = 21 ( int2 PGNSP PGUID 2 t b t \054 0 0 int2in int2out int2recv int2send - s p f 0 -1 0 _null_ _null_ )); 00268 DESCR("-32 thousand to 32 thousand, 2-byte storage"); 00269 #define INT2OID 21 00270 00271 DATA(insert OID = 22 ( int2vector PGNSP PGUID -1 f b t \054 0 21 int2vectorin int2vectorout int2vectorrecv int2vectorsend - i p f 0 -1 0 _null_ _null_ )); 00272 DESCR("array of int2, used in system tables"); 00273 #define INT2VECTOROID 22 00274 00275 DATA(insert OID = 23 ( int4 PGNSP PGUID 4 t b t \054 0 0 int4in int4out int4recv int4send - i p f 0 -1 0 _null_ _null_ )); 00276 DESCR("-2 billion to 2 billion integer, 4-byte storage"); 00277 #define INT4OID 23 00278 00279 DATA(insert OID = 24 ( regproc PGNSP PGUID 4 t b t \054 0 0 regprocin regprocout regprocrecv regprocsend - i p f 0 -1 0 _null_ _null_ )); 00280 DESCR("registered procedure"); 00281 #define REGPROCOID 24 00282 00283 DATA(insert OID = 25 ( text PGNSP PGUID -1 f b t \054 0 0 textin textout textrecv textsend - i x f 0 -1 0 _null_ _null_ )); 00284 DESCR("variable-length string, no limit specified"); 00285 #define TEXTOID 25 00286 00287 DATA(insert OID = 26 ( oid PGNSP PGUID 4 t b t \054 0 0 oidin oidout oidrecv oidsend - i p f 0 -1 0 _null_ _null_ )); 00288 DESCR("object identifier(oid), maximum 4 billion"); 00289 #define OIDOID 26 00290 00291 DATA(insert OID = 27 ( tid PGNSP PGUID 6 f b t \054 0 0 tidin tidout tidrecv tidsend - s p f 0 -1 0 _null_ _null_ )); 00292 DESCR("(Block, offset), physical location of tuple"); 00293 #define TIDOID 27 00294 00295 DATA(insert OID = 28 ( xid PGNSP PGUID 4 t b t \054 0 0 xidin xidout xidrecv xidsend - i p f 0 -1 0 _null_ _null_ )); 00296 DESCR("transaction id"); 00297 #define XIDOID 28 00298 00299 DATA(insert OID = 29 ( cid PGNSP PGUID 4 t b t \054 0 0 cidin cidout cidrecv cidsend - i p f 0 -1 0 _null_ _null_ )); 00300 DESCR("command identifier type, sequence in transaction id"); 00301 #define CIDOID 29 00302 00303 DATA(insert OID = 30 ( oidvector PGNSP PGUID -1 f b t \054 0 26 oidvectorin oidvectorout oidvectorrecv oidvectorsend - i p f 0 -1 0 _null_ _null_ )); 00304 DESCR("array of oids, used in system tables"); 00305 #define OIDVECTOROID 30 00306 00307 /* hand-built rowtype entries for bootstrapped catalogs: */ 00308 00309 DATA(insert OID = 71 ( pg_type PGNSP PGUID -1 f c t \054 1247 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); 00310 #define PG_TYPE_RELTYPE_OID 71 00311 DATA(insert OID = 75 ( pg_attribute PGNSP PGUID -1 f c t \054 1249 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); 00312 #define PG_ATTRIBUTE_RELTYPE_OID 75 00313 DATA(insert OID = 81 ( pg_proc PGNSP PGUID -1 f c t \054 1255 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); 00314 #define PG_PROC_RELTYPE_OID 81 00315 DATA(insert OID = 83 ( pg_class PGNSP PGUID -1 f c t \054 1259 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); 00316 #define PG_CLASS_RELTYPE_OID 83 00317 00318 /* OIDS 100 - 199 */ 00319 00320 /* OIDS 200 - 299 */ 00321 00322 DATA(insert OID = 210 ( smgr PGNSP PGUID 2 t b t \054 0 0 smgrin smgrout - - - s p f 0 -1 0 _null_ _null_ )); 00323 DESCR("storage manager"); 00324 00325 /* OIDS 300 - 399 */ 00326 00327 /* OIDS 400 - 499 */ 00328 00329 /* OIDS 500 - 599 */ 00330 00331 /* OIDS 600 - 699 */ 00332 DATA(insert OID = 600 ( point PGNSP PGUID 16 f b t \054 0 701 point_in point_out point_recv point_send - d p f 0 -1 0 _null_ _null_ )); 00333 DESCR("geometric point '(x, y)'"); 00334 #define POINTOID 600 00335 DATA(insert OID = 601 ( lseg PGNSP PGUID 32 f b t \054 0 600 lseg_in lseg_out lseg_recv lseg_send - d p f 0 -1 0 _null_ _null_ )); 00336 DESCR("geometric line segment '(pt1,pt2)'"); 00337 #define LSEGOID 601 00338 DATA(insert OID = 602 ( path PGNSP PGUID -1 f b t \054 0 0 path_in path_out path_recv path_send - d x f 0 -1 0 _null_ _null_ )); 00339 DESCR("geometric path '(pt1,...)'"); 00340 #define PATHOID 602 00341 DATA(insert OID = 603 ( box PGNSP PGUID 32 f b t \073 0 600 box_in box_out box_recv box_send - d p f 0 -1 0 _null_ _null_ )); 00342 DESCR("geometric box '(lower left,upper right)'"); 00343 #define BOXOID 603 00344 DATA(insert OID = 604 ( polygon PGNSP PGUID -1 f b t \054 0 0 poly_in poly_out poly_recv poly_send - d x f 0 -1 0 _null_ _null_ )); 00345 DESCR("geometric polygon '(pt1,...)'"); 00346 #define POLYGONOID 604 00347 00348 DATA(insert OID = 628 ( line PGNSP PGUID 32 f b t \054 0 701 line_in line_out line_recv line_send - d p f 0 -1 0 _null_ _null_ )); 00349 DESCR("geometric line (not implemented)'"); 00350 #define LINEOID 628 00351 DATA(insert OID = 629 ( _line PGNSP PGUID -1 f b t \054 0 628 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00352 DESCR(""); 00353 00354 /* OIDS 700 - 799 */ 00355 00356 DATA(insert OID = 700 ( float4 PGNSP PGUID 4 f b t \054 0 0 float4in float4out float4recv float4send - i p f 0 -1 0 _null_ _null_ )); 00357 DESCR("single-precision floating point number, 4-byte storage"); 00358 #define FLOAT4OID 700 00359 DATA(insert OID = 701 ( float8 PGNSP PGUID 8 f b t \054 0 0 float8in float8out float8recv float8send - d p f 0 -1 0 _null_ _null_ )); 00360 DESCR("double-precision floating point number, 8-byte storage"); 00361 #define FLOAT8OID 701 00362 DATA(insert OID = 702 ( abstime PGNSP PGUID 4 t b t \054 0 0 abstimein abstimeout abstimerecv abstimesend - i p f 0 -1 0 _null_ _null_ )); 00363 DESCR("absolute, limited-range date and time (Unix system time)"); 00364 #define ABSTIMEOID 702 00365 DATA(insert OID = 703 ( reltime PGNSP PGUID 4 t b t \054 0 0 reltimein reltimeout reltimerecv reltimesend - i p f 0 -1 0 _null_ _null_ )); 00366 DESCR("relative, limited-range time interval (Unix delta time)"); 00367 #define RELTIMEOID 703 00368 DATA(insert OID = 704 ( tinterval PGNSP PGUID 12 f b t \054 0 0 tintervalin tintervalout tintervalrecv tintervalsend - i p f 0 -1 0 _null_ _null_ )); 00369 DESCR("(abstime,abstime), time interval"); 00370 #define TINTERVALOID 704 00371 DATA(insert OID = 705 ( unknown PGNSP PGUID -2 f b t \054 0 0 unknownin unknownout unknownrecv unknownsend - c p f 0 -1 0 _null_ _null_ )); 00372 DESCR(""); 00373 #define UNKNOWNOID 705 00374 00375 DATA(insert OID = 718 ( circle PGNSP PGUID 24 f b t \054 0 0 circle_in circle_out circle_recv circle_send - d p f 0 -1 0 _null_ _null_ )); 00376 DESCR("geometric circle '(center,radius)'"); 00377 #define CIRCLEOID 718 00378 DATA(insert OID = 719 ( _circle PGNSP PGUID -1 f b t \054 0 718 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00379 DATA(insert OID = 790 ( money PGNSP PGUID 4 f b t \054 0 0 cash_in cash_out cash_recv cash_send - i p f 0 -1 0 _null_ _null_ )); 00380 DESCR("monetary amounts, $d,ddd.cc"); 00381 #define CASHOID 790 00382 DATA(insert OID = 791 ( _money PGNSP PGUID -1 f b t \054 0 790 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00383 00384 /* OIDS 800 - 899 */ 00385 DATA(insert OID = 829 ( macaddr PGNSP PGUID 6 f b t \054 0 0 macaddr_in macaddr_out macaddr_recv macaddr_send - i p f 0 -1 0 _null_ _null_ )); 00386 DESCR("XX:XX:XX:XX:XX:XX, MAC address"); 00387 #define MACADDROID 829 00388 DATA(insert OID = 869 ( inet PGNSP PGUID -1 f b t \054 0 0 inet_in inet_out inet_recv inet_send - i p f 0 -1 0 _null_ _null_ )); 00389 DESCR("IP address/netmask, host address, netmask optional"); 00390 #define INETOID 869 00391 DATA(insert OID = 650 ( cidr PGNSP PGUID -1 f b t \054 0 0 cidr_in cidr_out cidr_recv cidr_send - i p f 0 -1 0 _null_ _null_ )); 00392 DESCR("network IP address/netmask, network address"); 00393 #define CIDROID 650 00394 00395 /* OIDS 900 - 999 */ 00396 00397 /* OIDS 1000 - 1099 */ 00398 DATA(insert OID = 1000 ( _bool PGNSP PGUID -1 f b t \054 0 16 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00399 DATA(insert OID = 1001 ( _bytea PGNSP PGUID -1 f b t \054 0 17 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00400 DATA(insert OID = 1002 ( _char PGNSP PGUID -1 f b t \054 0 18 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00401 DATA(insert OID = 1003 ( _name PGNSP PGUID -1 f b t \054 0 19 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00402 DATA(insert OID = 1005 ( _int2 PGNSP PGUID -1 f b t \054 0 21 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00403 DATA(insert OID = 1006 ( _int2vector PGNSP PGUID -1 f b t \054 0 22 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00404 DATA(insert OID = 1007 ( _int4 PGNSP PGUID -1 f b t \054 0 23 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00405 #define INT4ARRAYOID 1007 00406 DATA(insert OID = 1008 ( _regproc PGNSP PGUID -1 f b t \054 0 24 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00407 DATA(insert OID = 1009 ( _text PGNSP PGUID -1 f b t \054 0 25 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00408 DATA(insert OID = 1028 ( _oid PGNSP PGUID -1 f b t \054 0 26 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00409 DATA(insert OID = 1010 ( _tid PGNSP PGUID -1 f b t \054 0 27 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00410 DATA(insert OID = 1011 ( _xid PGNSP PGUID -1 f b t \054 0 28 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00411 DATA(insert OID = 1012 ( _cid PGNSP PGUID -1 f b t \054 0 29 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00412 DATA(insert OID = 1013 ( _oidvector PGNSP PGUID -1 f b t \054 0 30 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00413 DATA(insert OID = 1014 ( _bpchar PGNSP PGUID -1 f b t \054 0 1042 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00414 DATA(insert OID = 1015 ( _varchar PGNSP PGUID -1 f b t \054 0 1043 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00415 DATA(insert OID = 1016 ( _int8 PGNSP PGUID -1 f b t \054 0 20 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00416 DATA(insert OID = 1017 ( _point PGNSP PGUID -1 f b t \054 0 600 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00417 DATA(insert OID = 1018 ( _lseg PGNSP PGUID -1 f b t \054 0 601 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00418 DATA(insert OID = 1019 ( _path PGNSP PGUID -1 f b t \054 0 602 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00419 DATA(insert OID = 1020 ( _box PGNSP PGUID -1 f b t \073 0 603 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00420 DATA(insert OID = 1021 ( _float4 PGNSP PGUID -1 f b t \054 0 700 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00421 DATA(insert OID = 1022 ( _float8 PGNSP PGUID -1 f b t \054 0 701 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00422 DATA(insert OID = 1023 ( _abstime PGNSP PGUID -1 f b t \054 0 702 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00423 DATA(insert OID = 1024 ( _reltime PGNSP PGUID -1 f b t \054 0 703 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00424 DATA(insert OID = 1025 ( _tinterval PGNSP PGUID -1 f b t \054 0 704 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00425 DATA(insert OID = 1027 ( _polygon PGNSP PGUID -1 f b t \054 0 604 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00426 DATA(insert OID = 1033 ( aclitem PGNSP PGUID 12 f b t \054 0 0 aclitemin aclitemout - - - i p f 0 -1 0 _null_ _null_ )); 00427 DESCR("access control list"); 00428 #define ACLITEMOID 1033 00429 DATA(insert OID = 1034 ( _aclitem PGNSP PGUID -1 f b t \054 0 1033 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00430 DATA(insert OID = 1040 ( _macaddr PGNSP PGUID -1 f b t \054 0 829 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00431 DATA(insert OID = 1041 ( _inet PGNSP PGUID -1 f b t \054 0 869 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00432 DATA(insert OID = 651 ( _cidr PGNSP PGUID -1 f b t \054 0 650 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00433 DATA(insert OID = 1042 ( bpchar PGNSP PGUID -1 f b t \054 0 0 bpcharin bpcharout bpcharrecv bpcharsend - i x f 0 -1 0 _null_ _null_ )); 00434 DESCR("char(length), blank-padded string, fixed storage length"); 00435 #define BPCHAROID 1042 00436 DATA(insert OID = 1043 ( varchar PGNSP PGUID -1 f b t \054 0 0 varcharin varcharout varcharrecv varcharsend - i x f 0 -1 0 _null_ _null_ )); 00437 DESCR("varchar(length), non-blank-padded string, variable storage length"); 00438 #define VARCHAROID 1043 00439 00440 DATA(insert OID = 1082 ( date PGNSP PGUID 4 t b t \054 0 0 date_in date_out date_recv date_send - i p f 0 -1 0 _null_ _null_ )); 00441 DESCR("ANSI SQL date"); 00442 #define DATEOID 1082 00443 DATA(insert OID = 1083 ( time PGNSP PGUID 8 f b t \054 0 0 time_in time_out time_recv time_send - d p f 0 -1 0 _null_ _null_ )); 00444 DESCR("hh:mm:ss, ANSI SQL time"); 00445 #define TIMEOID 1083 00446 00447 /* OIDS 1100 - 1199 */ 00448 DATA(insert OID = 1114 ( timestamp PGNSP PGUID 8 f b t \054 0 0 timestamp_in timestamp_out timestamp_recv timestamp_send - d p f 0 -1 0 _null_ _null_ )); 00449 DESCR("date and time"); 00450 #define TIMESTAMPOID 1114 00451 DATA(insert OID = 1115 ( _timestamp PGNSP PGUID -1 f b t \054 0 1114 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00452 DATA(insert OID = 1182 ( _date PGNSP PGUID -1 f b t \054 0 1082 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00453 DATA(insert OID = 1183 ( _time PGNSP PGUID -1 f b t \054 0 1083 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00454 DATA(insert OID = 1184 ( timestamptz PGNSP PGUID 8 f b t \054 0 0 timestamptz_in timestamptz_out timestamptz_recv timestamptz_send - d p f 0 -1 0 _null_ _null_ )); 00455 DESCR("date and time with time zone"); 00456 #define TIMESTAMPTZOID 1184 00457 DATA(insert OID = 1185 ( _timestamptz PGNSP PGUID -1 f b t \054 0 1184 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00458 DATA(insert OID = 1186 ( interval PGNSP PGUID 16 f b t \054 0 0 interval_in interval_out interval_recv interval_send - d p f 0 -1 0 _null_ _null_ )); 00459 DESCR("@ <number> <units>, time interval"); 00460 #define INTERVALOID 1186 00461 DATA(insert OID = 1187 ( _interval PGNSP PGUID -1 f b t \054 0 1186 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00462 00463 /* OIDS 1200 - 1299 */ 00464 DATA(insert OID = 1231 ( _numeric PGNSP PGUID -1 f b t \054 0 1700 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00465 DATA(insert OID = 1266 ( timetz PGNSP PGUID 12 f b t \054 0 0 timetz_in timetz_out timetz_recv timetz_send - d p f 0 -1 0 _null_ _null_ )); 00466 DESCR("hh:mm:ss, ANSI SQL time"); 00467 #define TIMETZOID 1266 00468 DATA(insert OID = 1270 ( _timetz PGNSP PGUID -1 f b t \054 0 1266 array_in array_out array_recv array_send - d x f 0 -1 0 _null_ _null_ )); 00469 00470 /* OIDS 1500 - 1599 */ 00471 DATA(insert OID = 1560 ( bit PGNSP PGUID -1 f b t \054 0 0 bit_in bit_out bit_recv bit_send - i x f 0 -1 0 _null_ _null_ )); 00472 DESCR("fixed-length bit string"); 00473 #define BITOID 1560 00474 DATA(insert OID = 1561 ( _bit PGNSP PGUID -1 f b t \054 0 1560 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00475 DATA(insert OID = 1562 ( varbit PGNSP PGUID -1 f b t \054 0 0 varbit_in varbit_out varbit_recv varbit_send - i x f 0 -1 0 _null_ _null_ )); 00476 DESCR("variable-length bit string"); 00477 #define VARBITOID 1562 00478 DATA(insert OID = 1563 ( _varbit PGNSP PGUID -1 f b t \054 0 1562 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00479 00480 /* OIDS 1600 - 1699 */ 00481 00482 /* OIDS 1700 - 1799 */ 00483 DATA(insert OID = 1700 ( numeric PGNSP PGUID -1 f b t \054 0 0 numeric_in numeric_out numeric_recv numeric_send - i m f 0 -1 0 _null_ _null_ )); 00484 DESCR("numeric(precision, decimal), arbitrary precision number"); 00485 #define NUMERICOID 1700 00486 00487 DATA(insert OID = 1790 ( refcursor PGNSP PGUID -1 f b t \054 0 0 textin textout textrecv textsend - i x f 0 -1 0 _null_ _null_ )); 00488 DESCR("reference cursor (portal name)"); 00489 #define REFCURSOROID 1790 00490 00491 /* OIDS 2200 - 2299 */ 00492 DATA(insert OID = 2201 ( _refcursor PGNSP PGUID -1 f b t \054 0 1790 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00493 00494 DATA(insert OID = 2202 ( regprocedure PGNSP PGUID 4 t b t \054 0 0 regprocedurein regprocedureout regprocedurerecv regproceduresend - i p f 0 -1 0 _null_ _null_ )); 00495 DESCR("registered procedure (with args)"); 00496 #define REGPROCEDUREOID 2202 00497 00498 DATA(insert OID = 2203 ( regoper PGNSP PGUID 4 t b t \054 0 0 regoperin regoperout regoperrecv regopersend - i p f 0 -1 0 _null_ _null_ )); 00499 DESCR("registered operator"); 00500 #define REGOPEROID 2203 00501 00502 DATA(insert OID = 2204 ( regoperator PGNSP PGUID 4 t b t \054 0 0 regoperatorin regoperatorout regoperatorrecv regoperatorsend - i p f 0 -1 0 _null_ _null_ )); 00503 DESCR("registered operator (with args)"); 00504 #define REGOPERATOROID 2204 00505 00506 DATA(insert OID = 2205 ( regclass PGNSP PGUID 4 t b t \054 0 0 regclassin regclassout regclassrecv regclasssend - i p f 0 -1 0 _null_ _null_ )); 00507 DESCR("registered class"); 00508 #define REGCLASSOID 2205 00509 00510 DATA(insert OID = 2206 ( regtype PGNSP PGUID 4 t b t \054 0 0 regtypein regtypeout regtyperecv regtypesend - i p f 0 -1 0 _null_ _null_ )); 00511 DESCR("registered type"); 00512 #define REGTYPEOID 2206 00513 00514 DATA(insert OID = 2207 ( _regprocedure PGNSP PGUID -1 f b t \054 0 2202 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00515 DATA(insert OID = 2208 ( _regoper PGNSP PGUID -1 f b t \054 0 2203 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00516 DATA(insert OID = 2209 ( _regoperator PGNSP PGUID -1 f b t \054 0 2204 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00517 DATA(insert OID = 2210 ( _regclass PGNSP PGUID -1 f b t \054 0 2205 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00518 DATA(insert OID = 2211 ( _regtype PGNSP PGUID -1 f b t \054 0 2206 array_in array_out array_recv array_send - i x f 0 -1 0 _null_ _null_ )); 00519 00520 /* 00521 * pseudo-types 00522 * 00523 * types with typtype='p' represent various special cases in the type system. 00524 * 00525 * These cannot be used to define table columns, but are valid as function 00526 * argument and result types (if supported by the function's implementation 00527 * language). 00528 */ 00529 DATA(insert OID = 2249 ( record PGNSP PGUID -1 f p t \054 0 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); 00530 #define RECORDOID 2249 00531 DATA(insert OID = 2275 ( cstring PGNSP PGUID -2 f p t \054 0 0 cstring_in cstring_out cstring_recv cstring_send - c p f 0 -1 0 _null_ _null_ )); 00532 #define CSTRINGOID 2275 00533 DATA(insert OID = 2276 ( any PGNSP PGUID 4 t p t \054 0 0 any_in any_out - - - i p f 0 -1 0 _null_ _null_ )); 00534 #define ANYOID 2276 00535 DATA(insert OID = 2277 ( anyarray PGNSP PGUID -1 f p t \054 0 0 anyarray_in anyarray_out anyarray_recv anyarray_send - d x f 0 -1 0 _null_ _null_ )); 00536 #define ANYARRAYOID 2277 00537 DATA(insert OID = 2278 ( void PGNSP PGUID 4 t p t \054 0 0 void_in void_out - - - i p f 0 -1 0 _null_ _null_ )); 00538 #define VOIDOID 2278 00539 DATA(insert OID = 2279 ( trigger PGNSP PGUID 4 t p t \054 0 0 trigger_in trigger_out - - - i p f 0 -1 0 _null_ _null_ )); 00540 #define TRIGGEROID 2279 00541 DATA(insert OID = 2280 ( language_handler PGNSP PGUID 4 t p t \054 0 0 language_handler_in language_handler_out - - - i p f 0 -1 0 _null_ _null_ )); 00542 #define LANGUAGE_HANDLEROID 2280 00543 DATA(insert OID = 2281 ( internal PGNSP PGUID 4 t p t \054 0 0 internal_in internal_out - - - i p f 0 -1 0 _null_ _null_ )); 00544 #define INTERNALOID 2281 00545 DATA(insert OID = 2282 ( opaque PGNSP PGUID 4 t p t \054 0 0 opaque_in opaque_out - - - i p f 0 -1 0 _null_ _null_ )); 00546 #define OPAQUEOID 2282 00547 DATA(insert OID = 2283 ( anyelement PGNSP PGUID 4 t p t \054 0 0 anyelement_in anyelement_out - - - i p f 0 -1 0 _null_ _null_ )); 00548 #define ANYELEMENTOID 2283 00549 00550 /* 00551 * prototypes for functions in pg_type.c 00552 */ 00553 extern Oid TypeShellMake(const char *typeName, Oid typeNamespace); 00554 00555 extern Oid TypeCreate(const char *typeName, 00556 Oid typeNamespace, 00557 Oid relationOid, 00558 char relationKind, 00559 int16 internalSize, 00560 char typeType, 00561 char typDelim, 00562 Oid inputProcedure, 00563 Oid outputProcedure, 00564 Oid receiveProcedure, 00565 Oid sendProcedure, 00566 Oid analyzeProcedure, 00567 Oid elementType, 00568 Oid baseType, 00569 const char *defaultTypeValue, 00570 char *defaultTypeBin, 00571 bool passedByValue, 00572 char alignment, 00573 char storage, 00574 int32 typeMod, 00575 int32 typNDims, 00576 bool typeNotNull); 00577 00578 extern void GenerateTypeDependencies(Oid typeNamespace, 00579 Oid typeObjectId, 00580 Oid relationOid, 00581 char relationKind, 00582 Oid owner, 00583 Oid inputProcedure, 00584 Oid outputProcedure, 00585 Oid receiveProcedure, 00586 Oid sendProcedure, 00587 Oid analyzeProcedure, 00588 Oid elementType, 00589 Oid baseType, 00590 Node *defaultExpr, 00591 bool rebuild); 00592 00593 extern void TypeRename(const char *oldTypeName, Oid typeNamespace, 00594 const char *newTypeName); 00595 00596 extern char *makeArrayTypeName(const char *typeName); 00597 00598 #endif /* PG_TYPE_H */