1#---------------------------------------------------------------------- 2# 3# pg_type.dat 4# Initial contents of the pg_type system catalog. 5# 6# Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group 7# Portions Copyright (c) 1994, Regents of the University of California 8# 9# src/include/catalog/pg_type.dat 10# 11#---------------------------------------------------------------------- 12 13[ 14 15# For types used in the system catalogs, make sure the values here match 16# TypInfo[] in bootstrap.c. 17 18# OID symbol macro names for pg_type OIDs are generated by genbki.pl 19# according to the following rule, so you don't need to specify them 20# here: 21# foo_bar -> FOO_BAROID 22# _foo_bar -> FOO_BARARRAYOID 23# 24# The only oid_symbol entries in this file are for names that don't match 25# this rule, and are grandfathered in. 26 27# To autogenerate an array type, add 'array_type_oid => 'nnnn' to the element 28# type, which will instruct genbki.pl to generate a BKI entry for it. 29# In a few cases, the array type's properties don't match the normal pattern 30# so it can't be autogenerated; in such cases do not write array_type_oid. 31 32# Once upon a time these entries were ordered by OID. Lately it's often 33# been the custom to insert new entries adjacent to related older entries. 34# Try to do one or the other though, don't just insert entries at random. 35 36# OIDS 1 - 99 37 38{ oid => '16', array_type_oid => '1000', 39 descr => 'boolean, \'true\'/\'false\'', 40 typname => 'bool', typlen => '1', typbyval => 't', typcategory => 'B', 41 typispreferred => 't', typinput => 'boolin', typoutput => 'boolout', 42 typreceive => 'boolrecv', typsend => 'boolsend', typalign => 'c' }, 43{ oid => '17', array_type_oid => '1001', 44 descr => 'variable-length string, binary values escaped', 45 typname => 'bytea', typlen => '-1', typbyval => 'f', typcategory => 'U', 46 typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', 47 typsend => 'byteasend', typalign => 'i', typstorage => 'x' }, 48{ oid => '18', array_type_oid => '1002', descr => 'single character', 49 typname => 'char', typlen => '1', typbyval => 't', typcategory => 'S', 50 typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', 51 typsend => 'charsend', typalign => 'c' }, 52{ oid => '19', array_type_oid => '1003', 53 descr => '63-byte type for storing system identifiers', 54 typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f', 55 typcategory => 'S', typelem => 'char', typinput => 'namein', 56 typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', 57 typalign => 'c', typcollation => 'C' }, 58{ oid => '20', array_type_oid => '1016', 59 descr => '~18 digit integer, 8-byte storage', 60 typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', 61 typcategory => 'N', typinput => 'int8in', typoutput => 'int8out', 62 typreceive => 'int8recv', typsend => 'int8send', typalign => 'd' }, 63{ oid => '21', array_type_oid => '1005', 64 descr => '-32 thousand to 32 thousand, 2-byte storage', 65 typname => 'int2', typlen => '2', typbyval => 't', typcategory => 'N', 66 typinput => 'int2in', typoutput => 'int2out', typreceive => 'int2recv', 67 typsend => 'int2send', typalign => 's' }, 68{ oid => '22', array_type_oid => '1006', 69 descr => 'array of int2, used in system tables', 70 typname => 'int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A', 71 typelem => 'int2', typinput => 'int2vectorin', typoutput => 'int2vectorout', 72 typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', 73 typalign => 'i' }, 74{ oid => '23', array_type_oid => '1007', 75 descr => '-2 billion to 2 billion integer, 4-byte storage', 76 typname => 'int4', typlen => '4', typbyval => 't', typcategory => 'N', 77 typinput => 'int4in', typoutput => 'int4out', typreceive => 'int4recv', 78 typsend => 'int4send', typalign => 'i' }, 79{ oid => '24', array_type_oid => '1008', descr => 'registered procedure', 80 typname => 'regproc', typlen => '4', typbyval => 't', typcategory => 'N', 81 typinput => 'regprocin', typoutput => 'regprocout', 82 typreceive => 'regprocrecv', typsend => 'regprocsend', typalign => 'i' }, 83{ oid => '25', array_type_oid => '1009', 84 descr => 'variable-length string, no limit specified', 85 typname => 'text', typlen => '-1', typbyval => 'f', typcategory => 'S', 86 typispreferred => 't', typinput => 'textin', typoutput => 'textout', 87 typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', 88 typstorage => 'x', typcollation => 'default' }, 89{ oid => '26', array_type_oid => '1028', 90 descr => 'object identifier(oid), maximum 4 billion', 91 typname => 'oid', typlen => '4', typbyval => 't', typcategory => 'N', 92 typispreferred => 't', typinput => 'oidin', typoutput => 'oidout', 93 typreceive => 'oidrecv', typsend => 'oidsend', typalign => 'i' }, 94{ oid => '27', array_type_oid => '1010', 95 descr => '(block, offset), physical location of tuple', 96 typname => 'tid', typlen => '6', typbyval => 'f', typcategory => 'U', 97 typinput => 'tidin', typoutput => 'tidout', typreceive => 'tidrecv', 98 typsend => 'tidsend', typalign => 's' }, 99{ oid => '28', array_type_oid => '1011', descr => 'transaction id', 100 typname => 'xid', typlen => '4', typbyval => 't', typcategory => 'U', 101 typinput => 'xidin', typoutput => 'xidout', typreceive => 'xidrecv', 102 typsend => 'xidsend', typalign => 'i' }, 103{ oid => '29', array_type_oid => '1012', 104 descr => 'command identifier type, sequence in transaction id', 105 typname => 'cid', typlen => '4', typbyval => 't', typcategory => 'U', 106 typinput => 'cidin', typoutput => 'cidout', typreceive => 'cidrecv', 107 typsend => 'cidsend', typalign => 'i' }, 108{ oid => '30', array_type_oid => '1013', 109 descr => 'array of oids, used in system tables', 110 typname => 'oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A', 111 typelem => 'oid', typinput => 'oidvectorin', typoutput => 'oidvectorout', 112 typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typalign => 'i' }, 113 114# hand-built rowtype entries for bootstrapped catalogs 115# NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations 116{ oid => '71', 117 typname => 'pg_type', typlen => '-1', typbyval => 'f', typtype => 'c', 118 typcategory => 'C', typrelid => 'pg_type', typinput => 'record_in', 119 typoutput => 'record_out', typreceive => 'record_recv', 120 typsend => 'record_send', typalign => 'd', typstorage => 'x' }, 121{ oid => '75', 122 typname => 'pg_attribute', typlen => '-1', typbyval => 'f', typtype => 'c', 123 typcategory => 'C', typrelid => 'pg_attribute', typinput => 'record_in', 124 typoutput => 'record_out', typreceive => 'record_recv', 125 typsend => 'record_send', typalign => 'd', typstorage => 'x' }, 126{ oid => '81', 127 typname => 'pg_proc', typlen => '-1', typbyval => 'f', typtype => 'c', 128 typcategory => 'C', typrelid => 'pg_proc', typinput => 'record_in', 129 typoutput => 'record_out', typreceive => 'record_recv', 130 typsend => 'record_send', typalign => 'd', typstorage => 'x' }, 131{ oid => '83', 132 typname => 'pg_class', typlen => '-1', typbyval => 'f', typtype => 'c', 133 typcategory => 'C', typrelid => 'pg_class', typinput => 'record_in', 134 typoutput => 'record_out', typreceive => 'record_recv', 135 typsend => 'record_send', typalign => 'd', typstorage => 'x' }, 136 137# OIDS 100 - 199 138 139{ oid => '114', array_type_oid => '199', descr => 'JSON stored as text', 140 typname => 'json', typlen => '-1', typbyval => 'f', typcategory => 'U', 141 typinput => 'json_in', typoutput => 'json_out', typreceive => 'json_recv', 142 typsend => 'json_send', typalign => 'i', typstorage => 'x' }, 143{ oid => '142', array_type_oid => '143', descr => 'XML content', 144 typname => 'xml', typlen => '-1', typbyval => 'f', typcategory => 'U', 145 typinput => 'xml_in', typoutput => 'xml_out', typreceive => 'xml_recv', 146 typsend => 'xml_send', typalign => 'i', typstorage => 'x' }, 147{ oid => '194', oid_symbol => 'PGNODETREEOID', 148 descr => 'string representing an internal node tree', 149 typname => 'pg_node_tree', typlen => '-1', typbyval => 'f', 150 typcategory => 'S', typinput => 'pg_node_tree_in', 151 typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', 152 typsend => 'pg_node_tree_send', typalign => 'i', typstorage => 'x', 153 typcollation => 'default' }, 154{ oid => '3361', oid_symbol => 'PGNDISTINCTOID', 155 descr => 'multivariate ndistinct coefficients', 156 typname => 'pg_ndistinct', typlen => '-1', typbyval => 'f', 157 typcategory => 'S', typinput => 'pg_ndistinct_in', 158 typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', 159 typsend => 'pg_ndistinct_send', typalign => 'i', typstorage => 'x', 160 typcollation => 'default' }, 161{ oid => '3402', oid_symbol => 'PGDEPENDENCIESOID', 162 descr => 'multivariate dependencies', 163 typname => 'pg_dependencies', typlen => '-1', typbyval => 'f', 164 typcategory => 'S', typinput => 'pg_dependencies_in', 165 typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', 166 typsend => 'pg_dependencies_send', typalign => 'i', typstorage => 'x', 167 typcollation => 'default' }, 168{ oid => '5017', oid_symbol => 'PGMCVLISTOID', 169 descr => 'multivariate MCV list', 170 typname => 'pg_mcv_list', typlen => '-1', typbyval => 'f', typcategory => 'S', 171 typinput => 'pg_mcv_list_in', typoutput => 'pg_mcv_list_out', 172 typreceive => 'pg_mcv_list_recv', typsend => 'pg_mcv_list_send', 173 typalign => 'i', typstorage => 'x', typcollation => 'default' }, 174{ oid => '32', oid_symbol => 'PGDDLCOMMANDOID', 175 descr => 'internal type for passing CollectedCommand', 176 typname => 'pg_ddl_command', typlen => 'SIZEOF_POINTER', typbyval => 't', 177 typtype => 'p', typcategory => 'P', typinput => 'pg_ddl_command_in', 178 typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', 179 typsend => 'pg_ddl_command_send', typalign => 'ALIGNOF_POINTER' }, 180 181# OIDS 600 - 699 182 183{ oid => '600', array_type_oid => '1017', 184 descr => 'geometric point \'(x, y)\'', 185 typname => 'point', typlen => '16', typbyval => 'f', typcategory => 'G', 186 typelem => 'float8', typinput => 'point_in', typoutput => 'point_out', 187 typreceive => 'point_recv', typsend => 'point_send', typalign => 'd' }, 188{ oid => '601', array_type_oid => '1018', 189 descr => 'geometric line segment \'(pt1,pt2)\'', 190 typname => 'lseg', typlen => '32', typbyval => 'f', typcategory => 'G', 191 typelem => 'point', typinput => 'lseg_in', typoutput => 'lseg_out', 192 typreceive => 'lseg_recv', typsend => 'lseg_send', typalign => 'd' }, 193{ oid => '602', array_type_oid => '1019', 194 descr => 'geometric path \'(pt1,...)\'', 195 typname => 'path', typlen => '-1', typbyval => 'f', typcategory => 'G', 196 typinput => 'path_in', typoutput => 'path_out', typreceive => 'path_recv', 197 typsend => 'path_send', typalign => 'd', typstorage => 'x' }, 198{ oid => '603', array_type_oid => '1020', 199 descr => 'geometric box \'(lower left,upper right)\'', 200 typname => 'box', typlen => '32', typbyval => 'f', typcategory => 'G', 201 typdelim => ';', typelem => 'point', typinput => 'box_in', 202 typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', 203 typalign => 'd' }, 204{ oid => '604', array_type_oid => '1027', 205 descr => 'geometric polygon \'(pt1,...)\'', 206 typname => 'polygon', typlen => '-1', typbyval => 'f', typcategory => 'G', 207 typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv', 208 typsend => 'poly_send', typalign => 'd', typstorage => 'x' }, 209{ oid => '628', array_type_oid => '629', descr => 'geometric line', 210 typname => 'line', typlen => '24', typbyval => 'f', typcategory => 'G', 211 typelem => 'float8', typinput => 'line_in', typoutput => 'line_out', 212 typreceive => 'line_recv', typsend => 'line_send', typalign => 'd' }, 213 214# OIDS 700 - 799 215 216{ oid => '700', array_type_oid => '1021', 217 descr => 'single-precision floating point number, 4-byte storage', 218 typname => 'float4', typlen => '4', typbyval => 'FLOAT4PASSBYVAL', 219 typcategory => 'N', typinput => 'float4in', typoutput => 'float4out', 220 typreceive => 'float4recv', typsend => 'float4send', typalign => 'i' }, 221{ oid => '701', array_type_oid => '1022', 222 descr => 'double-precision floating point number, 8-byte storage', 223 typname => 'float8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', 224 typcategory => 'N', typispreferred => 't', typinput => 'float8in', 225 typoutput => 'float8out', typreceive => 'float8recv', typsend => 'float8send', 226 typalign => 'd' }, 227{ oid => '705', descr => 'pseudo-type representing an undetermined type', 228 typname => 'unknown', typlen => '-2', typbyval => 'f', typtype => 'p', 229 typcategory => 'X', typinput => 'unknownin', typoutput => 'unknownout', 230 typreceive => 'unknownrecv', typsend => 'unknownsend', typalign => 'c' }, 231{ oid => '718', array_type_oid => '719', 232 descr => 'geometric circle \'(center,radius)\'', 233 typname => 'circle', typlen => '24', typbyval => 'f', typcategory => 'G', 234 typinput => 'circle_in', typoutput => 'circle_out', 235 typreceive => 'circle_recv', typsend => 'circle_send', typalign => 'd' }, 236{ oid => '790', oid_symbol => 'CASHOID', array_type_oid => '791', 237 descr => 'monetary amounts, $d,ddd.cc', 238 typname => 'money', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', 239 typcategory => 'N', typinput => 'cash_in', typoutput => 'cash_out', 240 typreceive => 'cash_recv', typsend => 'cash_send', typalign => 'd' }, 241 242# OIDS 800 - 899 243 244{ oid => '829', array_type_oid => '1040', 245 descr => 'XX:XX:XX:XX:XX:XX, MAC address', 246 typname => 'macaddr', typlen => '6', typbyval => 'f', typcategory => 'U', 247 typinput => 'macaddr_in', typoutput => 'macaddr_out', 248 typreceive => 'macaddr_recv', typsend => 'macaddr_send', typalign => 'i' }, 249{ oid => '869', array_type_oid => '1041', 250 descr => 'IP address/netmask, host address, netmask optional', 251 typname => 'inet', typlen => '-1', typbyval => 'f', typcategory => 'I', 252 typispreferred => 't', typinput => 'inet_in', typoutput => 'inet_out', 253 typreceive => 'inet_recv', typsend => 'inet_send', typalign => 'i', 254 typstorage => 'm' }, 255{ oid => '650', array_type_oid => '651', 256 descr => 'network IP address/netmask, network address', 257 typname => 'cidr', typlen => '-1', typbyval => 'f', typcategory => 'I', 258 typinput => 'cidr_in', typoutput => 'cidr_out', typreceive => 'cidr_recv', 259 typsend => 'cidr_send', typalign => 'i', typstorage => 'm' }, 260{ oid => '774', array_type_oid => '775', 261 descr => 'XX:XX:XX:XX:XX:XX:XX:XX, MAC address', 262 typname => 'macaddr8', typlen => '8', typbyval => 'f', typcategory => 'U', 263 typinput => 'macaddr8_in', typoutput => 'macaddr8_out', 264 typreceive => 'macaddr8_recv', typsend => 'macaddr8_send', typalign => 'i' }, 265 266# OIDS 1000 - 1099 267 268{ oid => '1033', array_type_oid => '1034', descr => 'access control list', 269 typname => 'aclitem', typlen => '12', typbyval => 'f', typcategory => 'U', 270 typinput => 'aclitemin', typoutput => 'aclitemout', typreceive => '-', 271 typsend => '-', typalign => 'i' }, 272{ oid => '1042', array_type_oid => '1014', 273 descr => 'char(length), blank-padded string, fixed storage length', 274 typname => 'bpchar', typlen => '-1', typbyval => 'f', typcategory => 'S', 275 typinput => 'bpcharin', typoutput => 'bpcharout', typreceive => 'bpcharrecv', 276 typsend => 'bpcharsend', typmodin => 'bpchartypmodin', 277 typmodout => 'bpchartypmodout', typalign => 'i', typstorage => 'x', 278 typcollation => 'default' }, 279{ oid => '1043', array_type_oid => '1015', 280 descr => 'varchar(length), non-blank-padded string, variable storage length', 281 typname => 'varchar', typlen => '-1', typbyval => 'f', typcategory => 'S', 282 typinput => 'varcharin', typoutput => 'varcharout', 283 typreceive => 'varcharrecv', typsend => 'varcharsend', 284 typmodin => 'varchartypmodin', typmodout => 'varchartypmodout', 285 typalign => 'i', typstorage => 'x', typcollation => 'default' }, 286{ oid => '1082', array_type_oid => '1182', descr => 'date', 287 typname => 'date', typlen => '4', typbyval => 't', typcategory => 'D', 288 typinput => 'date_in', typoutput => 'date_out', typreceive => 'date_recv', 289 typsend => 'date_send', typalign => 'i' }, 290{ oid => '1083', array_type_oid => '1183', descr => 'time of day', 291 typname => 'time', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', 292 typcategory => 'D', typinput => 'time_in', typoutput => 'time_out', 293 typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin', 294 typmodout => 'timetypmodout', typalign => 'd' }, 295 296# OIDS 1100 - 1199 297 298{ oid => '1114', array_type_oid => '1115', descr => 'date and time', 299 typname => 'timestamp', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', 300 typcategory => 'D', typinput => 'timestamp_in', typoutput => 'timestamp_out', 301 typreceive => 'timestamp_recv', typsend => 'timestamp_send', 302 typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', 303 typalign => 'd' }, 304{ oid => '1184', array_type_oid => '1185', 305 descr => 'date and time with time zone', 306 typname => 'timestamptz', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', 307 typcategory => 'D', typispreferred => 't', typinput => 'timestamptz_in', 308 typoutput => 'timestamptz_out', typreceive => 'timestamptz_recv', 309 typsend => 'timestamptz_send', typmodin => 'timestamptztypmodin', 310 typmodout => 'timestamptztypmodout', typalign => 'd' }, 311{ oid => '1186', array_type_oid => '1187', 312 descr => '@ <number> <units>, time interval', 313 typname => 'interval', typlen => '16', typbyval => 'f', typcategory => 'T', 314 typispreferred => 't', typinput => 'interval_in', typoutput => 'interval_out', 315 typreceive => 'interval_recv', typsend => 'interval_send', 316 typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', 317 typalign => 'd' }, 318 319# OIDS 1200 - 1299 320 321{ oid => '1266', array_type_oid => '1270', 322 descr => 'time of day with time zone', 323 typname => 'timetz', typlen => '12', typbyval => 'f', typcategory => 'D', 324 typinput => 'timetz_in', typoutput => 'timetz_out', 325 typreceive => 'timetz_recv', typsend => 'timetz_send', 326 typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', 327 typalign => 'd' }, 328 329# OIDS 1500 - 1599 330 331{ oid => '1560', array_type_oid => '1561', descr => 'fixed-length bit string', 332 typname => 'bit', typlen => '-1', typbyval => 'f', typcategory => 'V', 333 typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv', 334 typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout', 335 typalign => 'i', typstorage => 'x' }, 336{ oid => '1562', array_type_oid => '1563', 337 descr => 'variable-length bit string', 338 typname => 'varbit', typlen => '-1', typbyval => 'f', typcategory => 'V', 339 typispreferred => 't', typinput => 'varbit_in', typoutput => 'varbit_out', 340 typreceive => 'varbit_recv', typsend => 'varbit_send', 341 typmodin => 'varbittypmodin', typmodout => 'varbittypmodout', typalign => 'i', 342 typstorage => 'x' }, 343 344# OIDS 1700 - 1799 345 346{ oid => '1700', array_type_oid => '1231', 347 descr => 'numeric(precision, decimal), arbitrary precision number', 348 typname => 'numeric', typlen => '-1', typbyval => 'f', typcategory => 'N', 349 typinput => 'numeric_in', typoutput => 'numeric_out', 350 typreceive => 'numeric_recv', typsend => 'numeric_send', 351 typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', 352 typalign => 'i', typstorage => 'm' }, 353 354{ oid => '1790', array_type_oid => '2201', 355 descr => 'reference to cursor (portal name)', 356 typname => 'refcursor', typlen => '-1', typbyval => 'f', typcategory => 'U', 357 typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv', 358 typsend => 'textsend', typalign => 'i', typstorage => 'x' }, 359 360# OIDS 2200 - 2299 361 362{ oid => '2202', array_type_oid => '2207', 363 descr => 'registered procedure (with args)', 364 typname => 'regprocedure', typlen => '4', typbyval => 't', typcategory => 'N', 365 typinput => 'regprocedurein', typoutput => 'regprocedureout', 366 typreceive => 'regprocedurerecv', typsend => 'regproceduresend', 367 typalign => 'i' }, 368{ oid => '2203', array_type_oid => '2208', descr => 'registered operator', 369 typname => 'regoper', typlen => '4', typbyval => 't', typcategory => 'N', 370 typinput => 'regoperin', typoutput => 'regoperout', 371 typreceive => 'regoperrecv', typsend => 'regopersend', typalign => 'i' }, 372{ oid => '2204', array_type_oid => '2209', 373 descr => 'registered operator (with args)', 374 typname => 'regoperator', typlen => '4', typbyval => 't', typcategory => 'N', 375 typinput => 'regoperatorin', typoutput => 'regoperatorout', 376 typreceive => 'regoperatorrecv', typsend => 'regoperatorsend', 377 typalign => 'i' }, 378{ oid => '2205', array_type_oid => '2210', descr => 'registered class', 379 typname => 'regclass', typlen => '4', typbyval => 't', typcategory => 'N', 380 typinput => 'regclassin', typoutput => 'regclassout', 381 typreceive => 'regclassrecv', typsend => 'regclasssend', typalign => 'i' }, 382{ oid => '2206', array_type_oid => '2211', descr => 'registered type', 383 typname => 'regtype', typlen => '4', typbyval => 't', typcategory => 'N', 384 typinput => 'regtypein', typoutput => 'regtypeout', 385 typreceive => 'regtyperecv', typsend => 'regtypesend', typalign => 'i' }, 386{ oid => '4096', array_type_oid => '4097', descr => 'registered role', 387 typname => 'regrole', typlen => '4', typbyval => 't', typcategory => 'N', 388 typinput => 'regrolein', typoutput => 'regroleout', 389 typreceive => 'regrolerecv', typsend => 'regrolesend', typalign => 'i' }, 390{ oid => '4089', array_type_oid => '4090', descr => 'registered namespace', 391 typname => 'regnamespace', typlen => '4', typbyval => 't', typcategory => 'N', 392 typinput => 'regnamespacein', typoutput => 'regnamespaceout', 393 typreceive => 'regnamespacerecv', typsend => 'regnamespacesend', 394 typalign => 'i' }, 395 396# uuid 397{ oid => '2950', array_type_oid => '2951', descr => 'UUID datatype', 398 typname => 'uuid', typlen => '16', typbyval => 'f', typcategory => 'U', 399 typinput => 'uuid_in', typoutput => 'uuid_out', typreceive => 'uuid_recv', 400 typsend => 'uuid_send', typalign => 'c' }, 401 402# pg_lsn 403{ oid => '3220', oid_symbol => 'LSNOID', array_type_oid => '3221', 404 descr => 'PostgreSQL LSN datatype', 405 typname => 'pg_lsn', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', 406 typcategory => 'U', typinput => 'pg_lsn_in', typoutput => 'pg_lsn_out', 407 typreceive => 'pg_lsn_recv', typsend => 'pg_lsn_send', typalign => 'd' }, 408 409# text search 410{ oid => '3614', array_type_oid => '3643', 411 descr => 'text representation for text search', 412 typname => 'tsvector', typlen => '-1', typbyval => 'f', typcategory => 'U', 413 typinput => 'tsvectorin', typoutput => 'tsvectorout', 414 typreceive => 'tsvectorrecv', typsend => 'tsvectorsend', 415 typanalyze => 'ts_typanalyze', typalign => 'i', typstorage => 'x' }, 416{ oid => '3642', array_type_oid => '3644', 417 descr => 'GiST index internal text representation for text search', 418 typname => 'gtsvector', typlen => '-1', typbyval => 'f', typcategory => 'U', 419 typinput => 'gtsvectorin', typoutput => 'gtsvectorout', typreceive => '-', 420 typsend => '-', typalign => 'i' }, 421{ oid => '3615', array_type_oid => '3645', 422 descr => 'query representation for text search', 423 typname => 'tsquery', typlen => '-1', typbyval => 'f', typcategory => 'U', 424 typinput => 'tsqueryin', typoutput => 'tsqueryout', 425 typreceive => 'tsqueryrecv', typsend => 'tsquerysend', typalign => 'i' }, 426{ oid => '3734', array_type_oid => '3735', 427 descr => 'registered text search configuration', 428 typname => 'regconfig', typlen => '4', typbyval => 't', typcategory => 'N', 429 typinput => 'regconfigin', typoutput => 'regconfigout', 430 typreceive => 'regconfigrecv', typsend => 'regconfigsend', typalign => 'i' }, 431{ oid => '3769', array_type_oid => '3770', 432 descr => 'registered text search dictionary', 433 typname => 'regdictionary', typlen => '4', typbyval => 't', 434 typcategory => 'N', typinput => 'regdictionaryin', 435 typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv', 436 typsend => 'regdictionarysend', typalign => 'i' }, 437 438# jsonb 439{ oid => '3802', array_type_oid => '3807', descr => 'Binary JSON', 440 typname => 'jsonb', typlen => '-1', typbyval => 'f', typcategory => 'U', 441 typinput => 'jsonb_in', typoutput => 'jsonb_out', typreceive => 'jsonb_recv', 442 typsend => 'jsonb_send', typalign => 'i', typstorage => 'x' }, 443{ oid => '4072', array_type_oid => '4073', descr => 'JSON path', 444 typname => 'jsonpath', typlen => '-1', typbyval => 'f', typcategory => 'U', 445 typinput => 'jsonpath_in', typoutput => 'jsonpath_out', 446 typreceive => 'jsonpath_recv', typsend => 'jsonpath_send', typalign => 'i', 447 typstorage => 'x' }, 448 449{ oid => '2970', array_type_oid => '2949', descr => 'txid snapshot', 450 typname => 'txid_snapshot', typlen => '-1', typbyval => 'f', 451 typcategory => 'U', typinput => 'txid_snapshot_in', 452 typoutput => 'txid_snapshot_out', typreceive => 'txid_snapshot_recv', 453 typsend => 'txid_snapshot_send', typalign => 'd', typstorage => 'x' }, 454 455# range types 456{ oid => '3904', array_type_oid => '3905', descr => 'range of integers', 457 typname => 'int4range', typlen => '-1', typbyval => 'f', typtype => 'r', 458 typcategory => 'R', typinput => 'range_in', typoutput => 'range_out', 459 typreceive => 'range_recv', typsend => 'range_send', 460 typanalyze => 'range_typanalyze', typalign => 'i', typstorage => 'x' }, 461{ oid => '3906', array_type_oid => '3907', descr => 'range of numerics', 462 typname => 'numrange', typlen => '-1', typbyval => 'f', typtype => 'r', 463 typcategory => 'R', typinput => 'range_in', typoutput => 'range_out', 464 typreceive => 'range_recv', typsend => 'range_send', 465 typanalyze => 'range_typanalyze', typalign => 'i', typstorage => 'x' }, 466{ oid => '3908', array_type_oid => '3909', 467 descr => 'range of timestamps without time zone', 468 typname => 'tsrange', typlen => '-1', typbyval => 'f', typtype => 'r', 469 typcategory => 'R', typinput => 'range_in', typoutput => 'range_out', 470 typreceive => 'range_recv', typsend => 'range_send', 471 typanalyze => 'range_typanalyze', typalign => 'd', typstorage => 'x' }, 472{ oid => '3910', array_type_oid => '3911', 473 descr => 'range of timestamps with time zone', 474 typname => 'tstzrange', typlen => '-1', typbyval => 'f', typtype => 'r', 475 typcategory => 'R', typinput => 'range_in', typoutput => 'range_out', 476 typreceive => 'range_recv', typsend => 'range_send', 477 typanalyze => 'range_typanalyze', typalign => 'd', typstorage => 'x' }, 478{ oid => '3912', array_type_oid => '3913', descr => 'range of dates', 479 typname => 'daterange', typlen => '-1', typbyval => 'f', typtype => 'r', 480 typcategory => 'R', typinput => 'range_in', typoutput => 'range_out', 481 typreceive => 'range_recv', typsend => 'range_send', 482 typanalyze => 'range_typanalyze', typalign => 'i', typstorage => 'x' }, 483{ oid => '3926', array_type_oid => '3927', descr => 'range of bigints', 484 typname => 'int8range', typlen => '-1', typbyval => 'f', typtype => 'r', 485 typcategory => 'R', typinput => 'range_in', typoutput => 'range_out', 486 typreceive => 'range_recv', typsend => 'range_send', 487 typanalyze => 'range_typanalyze', typalign => 'd', typstorage => 'x' }, 488 489# pseudo-types 490# types with typtype='p' represent various special cases in the type system. 491# These cannot be used to define table columns, but are valid as function 492# argument and result types (if supported by the function's implementation 493# language). 494# Note: cstring is a borderline case; it is still considered a pseudo-type, 495# but there is now support for it in records and arrays. Perhaps we should 496# just treat it as a regular base type? 497 498{ oid => '2249', descr => 'pseudo-type representing any composite type', 499 typname => 'record', typlen => '-1', typbyval => 'f', typtype => 'p', 500 typcategory => 'P', typarray => '_record', typinput => 'record_in', 501 typoutput => 'record_out', typreceive => 'record_recv', 502 typsend => 'record_send', typalign => 'd', typstorage => 'x' }, 503# Arrays of records have typcategory P, so they can't be autogenerated. 504{ oid => '2287', 505 typname => '_record', typlen => '-1', typbyval => 'f', typtype => 'p', 506 typcategory => 'P', typelem => 'record', typinput => 'array_in', 507 typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', 508 typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, 509{ oid => '2275', array_type_oid => '1263', descr => 'C-style string', 510 typname => 'cstring', typlen => '-2', typbyval => 'f', typtype => 'p', 511 typcategory => 'P', typinput => 'cstring_in', typoutput => 'cstring_out', 512 typreceive => 'cstring_recv', typsend => 'cstring_send', typalign => 'c' }, 513{ oid => '2276', descr => 'pseudo-type representing any type', 514 typname => 'any', typlen => '4', typbyval => 't', typtype => 'p', 515 typcategory => 'P', typinput => 'any_in', typoutput => 'any_out', 516 typreceive => '-', typsend => '-', typalign => 'i' }, 517{ oid => '2277', descr => 'pseudo-type representing a polymorphic array type', 518 typname => 'anyarray', typlen => '-1', typbyval => 'f', typtype => 'p', 519 typcategory => 'P', typinput => 'anyarray_in', typoutput => 'anyarray_out', 520 typreceive => 'anyarray_recv', typsend => 'anyarray_send', typalign => 'd', 521 typstorage => 'x' }, 522{ oid => '2278', 523 descr => 'pseudo-type for the result of a function with no real result', 524 typname => 'void', typlen => '4', typbyval => 't', typtype => 'p', 525 typcategory => 'P', typinput => 'void_in', typoutput => 'void_out', 526 typreceive => 'void_recv', typsend => 'void_send', typalign => 'i' }, 527{ oid => '2279', descr => 'pseudo-type for the result of a trigger function', 528 typname => 'trigger', typlen => '4', typbyval => 't', typtype => 'p', 529 typcategory => 'P', typinput => 'trigger_in', typoutput => 'trigger_out', 530 typreceive => '-', typsend => '-', typalign => 'i' }, 531{ oid => '3838', oid_symbol => 'EVTTRIGGEROID', 532 descr => 'pseudo-type for the result of an event trigger function', 533 typname => 'event_trigger', typlen => '4', typbyval => 't', typtype => 'p', 534 typcategory => 'P', typinput => 'event_trigger_in', 535 typoutput => 'event_trigger_out', typreceive => '-', typsend => '-', 536 typalign => 'i' }, 537{ oid => '2280', 538 descr => 'pseudo-type for the result of a language handler function', 539 typname => 'language_handler', typlen => '4', typbyval => 't', typtype => 'p', 540 typcategory => 'P', typinput => 'language_handler_in', 541 typoutput => 'language_handler_out', typreceive => '-', typsend => '-', 542 typalign => 'i' }, 543{ oid => '2281', 544 descr => 'pseudo-type representing an internal data structure', 545 typname => 'internal', typlen => 'SIZEOF_POINTER', typbyval => 't', 546 typtype => 'p', typcategory => 'P', typinput => 'internal_in', 547 typoutput => 'internal_out', typreceive => '-', typsend => '-', 548 typalign => 'ALIGNOF_POINTER' }, 549{ oid => '2282', descr => 'obsolete, deprecated pseudo-type', 550 typname => 'opaque', typlen => '4', typbyval => 't', typtype => 'p', 551 typcategory => 'P', typinput => 'opaque_in', typoutput => 'opaque_out', 552 typreceive => '-', typsend => '-', typalign => 'i' }, 553{ oid => '2283', descr => 'pseudo-type representing a polymorphic base type', 554 typname => 'anyelement', typlen => '4', typbyval => 't', typtype => 'p', 555 typcategory => 'P', typinput => 'anyelement_in', 556 typoutput => 'anyelement_out', typreceive => '-', typsend => '-', 557 typalign => 'i' }, 558{ oid => '2776', 559 descr => 'pseudo-type representing a polymorphic base type that is not an array', 560 typname => 'anynonarray', typlen => '4', typbyval => 't', typtype => 'p', 561 typcategory => 'P', typinput => 'anynonarray_in', 562 typoutput => 'anynonarray_out', typreceive => '-', typsend => '-', 563 typalign => 'i' }, 564{ oid => '3500', 565 descr => 'pseudo-type representing a polymorphic base type that is an enum', 566 typname => 'anyenum', typlen => '4', typbyval => 't', typtype => 'p', 567 typcategory => 'P', typinput => 'anyenum_in', typoutput => 'anyenum_out', 568 typreceive => '-', typsend => '-', typalign => 'i' }, 569{ oid => '3115', 570 descr => 'pseudo-type for the result of an FDW handler function', 571 typname => 'fdw_handler', typlen => '4', typbyval => 't', typtype => 'p', 572 typcategory => 'P', typinput => 'fdw_handler_in', 573 typoutput => 'fdw_handler_out', typreceive => '-', typsend => '-', 574 typalign => 'i' }, 575{ oid => '325', 576 descr => 'pseudo-type for the result of an index AM handler function', 577 typname => 'index_am_handler', typlen => '4', typbyval => 't', typtype => 'p', 578 typcategory => 'P', typinput => 'index_am_handler_in', 579 typoutput => 'index_am_handler_out', typreceive => '-', typsend => '-', 580 typalign => 'i' }, 581{ oid => '3310', 582 descr => 'pseudo-type for the result of a tablesample method function', 583 typname => 'tsm_handler', typlen => '4', typbyval => 't', typtype => 'p', 584 typcategory => 'P', typinput => 'tsm_handler_in', 585 typoutput => 'tsm_handler_out', typreceive => '-', typsend => '-', 586 typalign => 'i' }, 587{ oid => '269', 588 typname => 'table_am_handler', typlen => '4', typbyval => 't', typtype => 'p', 589 typcategory => 'P', typinput => 'table_am_handler_in', 590 typoutput => 'table_am_handler_out', typreceive => '-', typsend => '-', 591 typalign => 'i' }, 592{ oid => '3831', 593 descr => 'pseudo-type representing a polymorphic base type that is a range', 594 typname => 'anyrange', typlen => '-1', typbyval => 'f', typtype => 'p', 595 typcategory => 'P', typinput => 'anyrange_in', typoutput => 'anyrange_out', 596 typreceive => '-', typsend => '-', typalign => 'd', typstorage => 'x' }, 597 598] 599