1#----------------------------------------------------------------------
2#
3# pg_type.dat
4#    Initial contents of the pg_type system catalog.
5#
6# Portions Copyright (c) 1996-2020, 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{ oid => '5069', array_type_oid => '271', descr => 'full transaction id',
181  typname => 'xid8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL',
182  typcategory => 'U', typinput => 'xid8in', typoutput => 'xid8out',
183  typreceive => 'xid8recv', typsend => 'xid8send', typalign => 'd' },
184
185# OIDS 600 - 699
186
187{ oid => '600', array_type_oid => '1017',
188  descr => 'geometric point \'(x, y)\'',
189  typname => 'point', typlen => '16', typbyval => 'f', typcategory => 'G',
190  typelem => 'float8', typinput => 'point_in', typoutput => 'point_out',
191  typreceive => 'point_recv', typsend => 'point_send', typalign => 'd' },
192{ oid => '601', array_type_oid => '1018',
193  descr => 'geometric line segment \'(pt1,pt2)\'',
194  typname => 'lseg', typlen => '32', typbyval => 'f', typcategory => 'G',
195  typelem => 'point', typinput => 'lseg_in', typoutput => 'lseg_out',
196  typreceive => 'lseg_recv', typsend => 'lseg_send', typalign => 'd' },
197{ oid => '602', array_type_oid => '1019',
198  descr => 'geometric path \'(pt1,...)\'',
199  typname => 'path', typlen => '-1', typbyval => 'f', typcategory => 'G',
200  typinput => 'path_in', typoutput => 'path_out', typreceive => 'path_recv',
201  typsend => 'path_send', typalign => 'd', typstorage => 'x' },
202{ oid => '603', array_type_oid => '1020',
203  descr => 'geometric box \'(lower left,upper right)\'',
204  typname => 'box', typlen => '32', typbyval => 'f', typcategory => 'G',
205  typdelim => ';', typelem => 'point', typinput => 'box_in',
206  typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send',
207  typalign => 'd' },
208{ oid => '604', array_type_oid => '1027',
209  descr => 'geometric polygon \'(pt1,...)\'',
210  typname => 'polygon', typlen => '-1', typbyval => 'f', typcategory => 'G',
211  typinput => 'poly_in', typoutput => 'poly_out', typreceive => 'poly_recv',
212  typsend => 'poly_send', typalign => 'd', typstorage => 'x' },
213{ oid => '628', array_type_oid => '629', descr => 'geometric line',
214  typname => 'line', typlen => '24', typbyval => 'f', typcategory => 'G',
215  typelem => 'float8', typinput => 'line_in', typoutput => 'line_out',
216  typreceive => 'line_recv', typsend => 'line_send', typalign => 'd' },
217
218# OIDS 700 - 799
219
220{ oid => '700', array_type_oid => '1021',
221  descr => 'single-precision floating point number, 4-byte storage',
222  typname => 'float4', typlen => '4', typbyval => 't', typcategory => 'N',
223  typinput => 'float4in', typoutput => 'float4out', typreceive => 'float4recv',
224  typsend => 'float4send', typalign => 'i' },
225{ oid => '701', array_type_oid => '1022',
226  descr => 'double-precision floating point number, 8-byte storage',
227  typname => 'float8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL',
228  typcategory => 'N', typispreferred => 't', typinput => 'float8in',
229  typoutput => 'float8out', typreceive => 'float8recv', typsend => 'float8send',
230  typalign => 'd' },
231{ oid => '705', descr => 'pseudo-type representing an undetermined type',
232  typname => 'unknown', typlen => '-2', typbyval => 'f', typtype => 'p',
233  typcategory => 'X', typinput => 'unknownin', typoutput => 'unknownout',
234  typreceive => 'unknownrecv', typsend => 'unknownsend', typalign => 'c' },
235{ oid => '718', array_type_oid => '719',
236  descr => 'geometric circle \'(center,radius)\'',
237  typname => 'circle', typlen => '24', typbyval => 'f', typcategory => 'G',
238  typinput => 'circle_in', typoutput => 'circle_out',
239  typreceive => 'circle_recv', typsend => 'circle_send', typalign => 'd' },
240{ oid => '790', oid_symbol => 'CASHOID', array_type_oid => '791',
241  descr => 'monetary amounts, $d,ddd.cc',
242  typname => 'money', typlen => '8', typbyval => 'FLOAT8PASSBYVAL',
243  typcategory => 'N', typinput => 'cash_in', typoutput => 'cash_out',
244  typreceive => 'cash_recv', typsend => 'cash_send', typalign => 'd' },
245
246# OIDS 800 - 899
247
248{ oid => '829', array_type_oid => '1040',
249  descr => 'XX:XX:XX:XX:XX:XX, MAC address',
250  typname => 'macaddr', typlen => '6', typbyval => 'f', typcategory => 'U',
251  typinput => 'macaddr_in', typoutput => 'macaddr_out',
252  typreceive => 'macaddr_recv', typsend => 'macaddr_send', typalign => 'i' },
253{ oid => '869', array_type_oid => '1041',
254  descr => 'IP address/netmask, host address, netmask optional',
255  typname => 'inet', typlen => '-1', typbyval => 'f', typcategory => 'I',
256  typispreferred => 't', typinput => 'inet_in', typoutput => 'inet_out',
257  typreceive => 'inet_recv', typsend => 'inet_send', typalign => 'i',
258  typstorage => 'm' },
259{ oid => '650', array_type_oid => '651',
260  descr => 'network IP address/netmask, network address',
261  typname => 'cidr', typlen => '-1', typbyval => 'f', typcategory => 'I',
262  typinput => 'cidr_in', typoutput => 'cidr_out', typreceive => 'cidr_recv',
263  typsend => 'cidr_send', typalign => 'i', typstorage => 'm' },
264{ oid => '774', array_type_oid => '775',
265  descr => 'XX:XX:XX:XX:XX:XX:XX:XX, MAC address',
266  typname => 'macaddr8', typlen => '8', typbyval => 'f', typcategory => 'U',
267  typinput => 'macaddr8_in', typoutput => 'macaddr8_out',
268  typreceive => 'macaddr8_recv', typsend => 'macaddr8_send', typalign => 'i' },
269
270# OIDS 1000 - 1099
271
272{ oid => '1033', array_type_oid => '1034', descr => 'access control list',
273  typname => 'aclitem', typlen => '12', typbyval => 'f', typcategory => 'U',
274  typinput => 'aclitemin', typoutput => 'aclitemout', typreceive => '-',
275  typsend => '-', typalign => 'i' },
276{ oid => '1042', array_type_oid => '1014',
277  descr => 'char(length), blank-padded string, fixed storage length',
278  typname => 'bpchar', typlen => '-1', typbyval => 'f', typcategory => 'S',
279  typinput => 'bpcharin', typoutput => 'bpcharout', typreceive => 'bpcharrecv',
280  typsend => 'bpcharsend', typmodin => 'bpchartypmodin',
281  typmodout => 'bpchartypmodout', typalign => 'i', typstorage => 'x',
282  typcollation => 'default' },
283{ oid => '1043', array_type_oid => '1015',
284  descr => 'varchar(length), non-blank-padded string, variable storage length',
285  typname => 'varchar', typlen => '-1', typbyval => 'f', typcategory => 'S',
286  typinput => 'varcharin', typoutput => 'varcharout',
287  typreceive => 'varcharrecv', typsend => 'varcharsend',
288  typmodin => 'varchartypmodin', typmodout => 'varchartypmodout',
289  typalign => 'i', typstorage => 'x', typcollation => 'default' },
290{ oid => '1082', array_type_oid => '1182', descr => 'date',
291  typname => 'date', typlen => '4', typbyval => 't', typcategory => 'D',
292  typinput => 'date_in', typoutput => 'date_out', typreceive => 'date_recv',
293  typsend => 'date_send', typalign => 'i' },
294{ oid => '1083', array_type_oid => '1183', descr => 'time of day',
295  typname => 'time', typlen => '8', typbyval => 'FLOAT8PASSBYVAL',
296  typcategory => 'D', typinput => 'time_in', typoutput => 'time_out',
297  typreceive => 'time_recv', typsend => 'time_send', typmodin => 'timetypmodin',
298  typmodout => 'timetypmodout', typalign => 'd' },
299
300# OIDS 1100 - 1199
301
302{ oid => '1114', array_type_oid => '1115', descr => 'date and time',
303  typname => 'timestamp', typlen => '8', typbyval => 'FLOAT8PASSBYVAL',
304  typcategory => 'D', typinput => 'timestamp_in', typoutput => 'timestamp_out',
305  typreceive => 'timestamp_recv', typsend => 'timestamp_send',
306  typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout',
307  typalign => 'd' },
308{ oid => '1184', array_type_oid => '1185',
309  descr => 'date and time with time zone',
310  typname => 'timestamptz', typlen => '8', typbyval => 'FLOAT8PASSBYVAL',
311  typcategory => 'D', typispreferred => 't', typinput => 'timestamptz_in',
312  typoutput => 'timestamptz_out', typreceive => 'timestamptz_recv',
313  typsend => 'timestamptz_send', typmodin => 'timestamptztypmodin',
314  typmodout => 'timestamptztypmodout', typalign => 'd' },
315{ oid => '1186', array_type_oid => '1187',
316  descr => '@ <number> <units>, time interval',
317  typname => 'interval', typlen => '16', typbyval => 'f', typcategory => 'T',
318  typispreferred => 't', typinput => 'interval_in', typoutput => 'interval_out',
319  typreceive => 'interval_recv', typsend => 'interval_send',
320  typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout',
321  typalign => 'd' },
322
323# OIDS 1200 - 1299
324
325{ oid => '1266', array_type_oid => '1270',
326  descr => 'time of day with time zone',
327  typname => 'timetz', typlen => '12', typbyval => 'f', typcategory => 'D',
328  typinput => 'timetz_in', typoutput => 'timetz_out',
329  typreceive => 'timetz_recv', typsend => 'timetz_send',
330  typmodin => 'timetztypmodin', typmodout => 'timetztypmodout',
331  typalign => 'd' },
332
333# OIDS 1500 - 1599
334
335{ oid => '1560', array_type_oid => '1561', descr => 'fixed-length bit string',
336  typname => 'bit', typlen => '-1', typbyval => 'f', typcategory => 'V',
337  typinput => 'bit_in', typoutput => 'bit_out', typreceive => 'bit_recv',
338  typsend => 'bit_send', typmodin => 'bittypmodin', typmodout => 'bittypmodout',
339  typalign => 'i', typstorage => 'x' },
340{ oid => '1562', array_type_oid => '1563',
341  descr => 'variable-length bit string',
342  typname => 'varbit', typlen => '-1', typbyval => 'f', typcategory => 'V',
343  typispreferred => 't', typinput => 'varbit_in', typoutput => 'varbit_out',
344  typreceive => 'varbit_recv', typsend => 'varbit_send',
345  typmodin => 'varbittypmodin', typmodout => 'varbittypmodout', typalign => 'i',
346  typstorage => 'x' },
347
348# OIDS 1700 - 1799
349
350{ oid => '1700', array_type_oid => '1231',
351  descr => 'numeric(precision, decimal), arbitrary precision number',
352  typname => 'numeric', typlen => '-1', typbyval => 'f', typcategory => 'N',
353  typinput => 'numeric_in', typoutput => 'numeric_out',
354  typreceive => 'numeric_recv', typsend => 'numeric_send',
355  typmodin => 'numerictypmodin', typmodout => 'numerictypmodout',
356  typalign => 'i', typstorage => 'm' },
357
358{ oid => '1790', array_type_oid => '2201',
359  descr => 'reference to cursor (portal name)',
360  typname => 'refcursor', typlen => '-1', typbyval => 'f', typcategory => 'U',
361  typinput => 'textin', typoutput => 'textout', typreceive => 'textrecv',
362  typsend => 'textsend', typalign => 'i', typstorage => 'x' },
363
364# OIDS 2200 - 2299
365
366{ oid => '2202', array_type_oid => '2207',
367  descr => 'registered procedure (with args)',
368  typname => 'regprocedure', typlen => '4', typbyval => 't', typcategory => 'N',
369  typinput => 'regprocedurein', typoutput => 'regprocedureout',
370  typreceive => 'regprocedurerecv', typsend => 'regproceduresend',
371  typalign => 'i' },
372{ oid => '2203', array_type_oid => '2208', descr => 'registered operator',
373  typname => 'regoper', typlen => '4', typbyval => 't', typcategory => 'N',
374  typinput => 'regoperin', typoutput => 'regoperout',
375  typreceive => 'regoperrecv', typsend => 'regopersend', typalign => 'i' },
376{ oid => '2204', array_type_oid => '2209',
377  descr => 'registered operator (with args)',
378  typname => 'regoperator', typlen => '4', typbyval => 't', typcategory => 'N',
379  typinput => 'regoperatorin', typoutput => 'regoperatorout',
380  typreceive => 'regoperatorrecv', typsend => 'regoperatorsend',
381  typalign => 'i' },
382{ oid => '2205', array_type_oid => '2210', descr => 'registered class',
383  typname => 'regclass', typlen => '4', typbyval => 't', typcategory => 'N',
384  typinput => 'regclassin', typoutput => 'regclassout',
385  typreceive => 'regclassrecv', typsend => 'regclasssend', typalign => 'i' },
386{ oid => '4191', array_type_oid => '4192', descr => 'registered collation',
387  typname => 'regcollation', typlen => '4', typbyval => 't', typcategory => 'N',
388  typinput => 'regcollationin', typoutput => 'regcollationout',
389  typreceive => 'regcollationrecv', typsend => 'regcollationsend',
390  typalign => 'i' },
391{ oid => '2206', array_type_oid => '2211', descr => 'registered type',
392  typname => 'regtype', typlen => '4', typbyval => 't', typcategory => 'N',
393  typinput => 'regtypein', typoutput => 'regtypeout',
394  typreceive => 'regtyperecv', typsend => 'regtypesend', typalign => 'i' },
395{ oid => '4096', array_type_oid => '4097', descr => 'registered role',
396  typname => 'regrole', typlen => '4', typbyval => 't', typcategory => 'N',
397  typinput => 'regrolein', typoutput => 'regroleout',
398  typreceive => 'regrolerecv', typsend => 'regrolesend', typalign => 'i' },
399{ oid => '4089', array_type_oid => '4090', descr => 'registered namespace',
400  typname => 'regnamespace', typlen => '4', typbyval => 't', typcategory => 'N',
401  typinput => 'regnamespacein', typoutput => 'regnamespaceout',
402  typreceive => 'regnamespacerecv', typsend => 'regnamespacesend',
403  typalign => 'i' },
404
405# uuid
406{ oid => '2950', array_type_oid => '2951', descr => 'UUID datatype',
407  typname => 'uuid', typlen => '16', typbyval => 'f', typcategory => 'U',
408  typinput => 'uuid_in', typoutput => 'uuid_out', typreceive => 'uuid_recv',
409  typsend => 'uuid_send', typalign => 'c' },
410
411# pg_lsn
412{ oid => '3220', oid_symbol => 'LSNOID', array_type_oid => '3221',
413  descr => 'PostgreSQL LSN datatype',
414  typname => 'pg_lsn', typlen => '8', typbyval => 'FLOAT8PASSBYVAL',
415  typcategory => 'U', typinput => 'pg_lsn_in', typoutput => 'pg_lsn_out',
416  typreceive => 'pg_lsn_recv', typsend => 'pg_lsn_send', typalign => 'd' },
417
418# text search
419{ oid => '3614', array_type_oid => '3643',
420  descr => 'text representation for text search',
421  typname => 'tsvector', typlen => '-1', typbyval => 'f', typcategory => 'U',
422  typinput => 'tsvectorin', typoutput => 'tsvectorout',
423  typreceive => 'tsvectorrecv', typsend => 'tsvectorsend',
424  typanalyze => 'ts_typanalyze', typalign => 'i', typstorage => 'x' },
425{ oid => '3642', array_type_oid => '3644',
426  descr => 'GiST index internal text representation for text search',
427  typname => 'gtsvector', typlen => '-1', typbyval => 'f', typcategory => 'U',
428  typinput => 'gtsvectorin', typoutput => 'gtsvectorout', typreceive => '-',
429  typsend => '-', typalign => 'i' },
430{ oid => '3615', array_type_oid => '3645',
431  descr => 'query representation for text search',
432  typname => 'tsquery', typlen => '-1', typbyval => 'f', typcategory => 'U',
433  typinput => 'tsqueryin', typoutput => 'tsqueryout',
434  typreceive => 'tsqueryrecv', typsend => 'tsquerysend', typalign => 'i' },
435{ oid => '3734', array_type_oid => '3735',
436  descr => 'registered text search configuration',
437  typname => 'regconfig', typlen => '4', typbyval => 't', typcategory => 'N',
438  typinput => 'regconfigin', typoutput => 'regconfigout',
439  typreceive => 'regconfigrecv', typsend => 'regconfigsend', typalign => 'i' },
440{ oid => '3769', array_type_oid => '3770',
441  descr => 'registered text search dictionary',
442  typname => 'regdictionary', typlen => '4', typbyval => 't',
443  typcategory => 'N', typinput => 'regdictionaryin',
444  typoutput => 'regdictionaryout', typreceive => 'regdictionaryrecv',
445  typsend => 'regdictionarysend', typalign => 'i' },
446
447# jsonb
448{ oid => '3802', array_type_oid => '3807', descr => 'Binary JSON',
449  typname => 'jsonb', typlen => '-1', typbyval => 'f', typcategory => 'U',
450  typinput => 'jsonb_in', typoutput => 'jsonb_out', typreceive => 'jsonb_recv',
451  typsend => 'jsonb_send', typalign => 'i', typstorage => 'x' },
452{ oid => '4072', array_type_oid => '4073', descr => 'JSON path',
453  typname => 'jsonpath', typlen => '-1', typbyval => 'f', typcategory => 'U',
454  typinput => 'jsonpath_in', typoutput => 'jsonpath_out',
455  typreceive => 'jsonpath_recv', typsend => 'jsonpath_send', typalign => 'i',
456  typstorage => 'x' },
457
458{ oid => '2970', array_type_oid => '2949', descr => 'txid snapshot',
459  typname => 'txid_snapshot', typlen => '-1', typbyval => 'f',
460  typcategory => 'U', typinput => 'txid_snapshot_in',
461  typoutput => 'txid_snapshot_out', typreceive => 'txid_snapshot_recv',
462  typsend => 'txid_snapshot_send', typalign => 'd', typstorage => 'x' },
463{ oid => '5038', array_type_oid => '5039', descr => 'snapshot',
464  typname => 'pg_snapshot', typlen => '-1', typbyval => 'f', typcategory => 'U',
465  typinput => 'pg_snapshot_in', typoutput => 'pg_snapshot_out',
466  typreceive => 'pg_snapshot_recv', typsend => 'pg_snapshot_send',
467  typalign => 'd', typstorage => 'x' },
468
469# range types
470{ oid => '3904', array_type_oid => '3905', descr => 'range of integers',
471  typname => 'int4range', typlen => '-1', typbyval => 'f', typtype => 'r',
472  typcategory => 'R', typinput => 'range_in', typoutput => 'range_out',
473  typreceive => 'range_recv', typsend => 'range_send',
474  typanalyze => 'range_typanalyze', typalign => 'i', typstorage => 'x' },
475{ oid => '3906', array_type_oid => '3907', descr => 'range of numerics',
476  typname => 'numrange', typlen => '-1', typbyval => 'f', typtype => 'r',
477  typcategory => 'R', typinput => 'range_in', typoutput => 'range_out',
478  typreceive => 'range_recv', typsend => 'range_send',
479  typanalyze => 'range_typanalyze', typalign => 'i', typstorage => 'x' },
480{ oid => '3908', array_type_oid => '3909',
481  descr => 'range of timestamps without time zone',
482  typname => 'tsrange', typlen => '-1', typbyval => 'f', typtype => 'r',
483  typcategory => 'R', typinput => 'range_in', typoutput => 'range_out',
484  typreceive => 'range_recv', typsend => 'range_send',
485  typanalyze => 'range_typanalyze', typalign => 'd', typstorage => 'x' },
486{ oid => '3910', array_type_oid => '3911',
487  descr => 'range of timestamps with time zone',
488  typname => 'tstzrange', typlen => '-1', typbyval => 'f', typtype => 'r',
489  typcategory => 'R', typinput => 'range_in', typoutput => 'range_out',
490  typreceive => 'range_recv', typsend => 'range_send',
491  typanalyze => 'range_typanalyze', typalign => 'd', typstorage => 'x' },
492{ oid => '3912', array_type_oid => '3913', descr => 'range of dates',
493  typname => 'daterange', typlen => '-1', typbyval => 'f', typtype => 'r',
494  typcategory => 'R', typinput => 'range_in', typoutput => 'range_out',
495  typreceive => 'range_recv', typsend => 'range_send',
496  typanalyze => 'range_typanalyze', typalign => 'i', typstorage => 'x' },
497{ oid => '3926', array_type_oid => '3927', descr => 'range of bigints',
498  typname => 'int8range', typlen => '-1', typbyval => 'f', typtype => 'r',
499  typcategory => 'R', typinput => 'range_in', typoutput => 'range_out',
500  typreceive => 'range_recv', typsend => 'range_send',
501  typanalyze => 'range_typanalyze', typalign => 'd', typstorage => 'x' },
502
503# pseudo-types
504# types with typtype='p' represent various special cases in the type system.
505# These cannot be used to define table columns, but are valid as function
506# argument and result types (if supported by the function's implementation
507# language).
508# Note: cstring is a borderline case; it is still considered a pseudo-type,
509# but there is now support for it in records and arrays.  Perhaps we should
510# just treat it as a regular base type?
511
512{ oid => '2249', descr => 'pseudo-type representing any composite type',
513  typname => 'record', typlen => '-1', typbyval => 'f', typtype => 'p',
514  typcategory => 'P', typarray => '_record', typinput => 'record_in',
515  typoutput => 'record_out', typreceive => 'record_recv',
516  typsend => 'record_send', typalign => 'd', typstorage => 'x' },
517# Arrays of records have typcategory P, so they can't be autogenerated.
518{ oid => '2287',
519  typname => '_record', typlen => '-1', typbyval => 'f', typtype => 'p',
520  typcategory => 'P', typelem => 'record', typinput => 'array_in',
521  typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send',
522  typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' },
523{ oid => '2275', array_type_oid => '1263', descr => 'C-style string',
524  typname => 'cstring', typlen => '-2', typbyval => 'f', typtype => 'p',
525  typcategory => 'P', typinput => 'cstring_in', typoutput => 'cstring_out',
526  typreceive => 'cstring_recv', typsend => 'cstring_send', typalign => 'c' },
527{ oid => '2276', descr => 'pseudo-type representing any type',
528  typname => 'any', typlen => '4', typbyval => 't', typtype => 'p',
529  typcategory => 'P', typinput => 'any_in', typoutput => 'any_out',
530  typreceive => '-', typsend => '-', typalign => 'i' },
531{ oid => '2277', descr => 'pseudo-type representing a polymorphic array type',
532  typname => 'anyarray', typlen => '-1', typbyval => 'f', typtype => 'p',
533  typcategory => 'P', typinput => 'anyarray_in', typoutput => 'anyarray_out',
534  typreceive => 'anyarray_recv', typsend => 'anyarray_send', typalign => 'd',
535  typstorage => 'x' },
536{ oid => '2278',
537  descr => 'pseudo-type for the result of a function with no real result',
538  typname => 'void', typlen => '4', typbyval => 't', typtype => 'p',
539  typcategory => 'P', typinput => 'void_in', typoutput => 'void_out',
540  typreceive => 'void_recv', typsend => 'void_send', typalign => 'i' },
541{ oid => '2279', descr => 'pseudo-type for the result of a trigger function',
542  typname => 'trigger', typlen => '4', typbyval => 't', typtype => 'p',
543  typcategory => 'P', typinput => 'trigger_in', typoutput => 'trigger_out',
544  typreceive => '-', typsend => '-', typalign => 'i' },
545{ oid => '3838', oid_symbol => 'EVTTRIGGEROID',
546  descr => 'pseudo-type for the result of an event trigger function',
547  typname => 'event_trigger', typlen => '4', typbyval => 't', typtype => 'p',
548  typcategory => 'P', typinput => 'event_trigger_in',
549  typoutput => 'event_trigger_out', typreceive => '-', typsend => '-',
550  typalign => 'i' },
551{ oid => '2280',
552  descr => 'pseudo-type for the result of a language handler function',
553  typname => 'language_handler', typlen => '4', typbyval => 't', typtype => 'p',
554  typcategory => 'P', typinput => 'language_handler_in',
555  typoutput => 'language_handler_out', typreceive => '-', typsend => '-',
556  typalign => 'i' },
557{ oid => '2281',
558  descr => 'pseudo-type representing an internal data structure',
559  typname => 'internal', typlen => 'SIZEOF_POINTER', typbyval => 't',
560  typtype => 'p', typcategory => 'P', typinput => 'internal_in',
561  typoutput => 'internal_out', typreceive => '-', typsend => '-',
562  typalign => 'ALIGNOF_POINTER' },
563{ oid => '2283', descr => 'pseudo-type representing a polymorphic base type',
564  typname => 'anyelement', typlen => '4', typbyval => 't', typtype => 'p',
565  typcategory => 'P', typinput => 'anyelement_in',
566  typoutput => 'anyelement_out', typreceive => '-', typsend => '-',
567  typalign => 'i' },
568{ oid => '2776',
569  descr => 'pseudo-type representing a polymorphic base type that is not an array',
570  typname => 'anynonarray', typlen => '4', typbyval => 't', typtype => 'p',
571  typcategory => 'P', typinput => 'anynonarray_in',
572  typoutput => 'anynonarray_out', typreceive => '-', typsend => '-',
573  typalign => 'i' },
574{ oid => '3500',
575  descr => 'pseudo-type representing a polymorphic base type that is an enum',
576  typname => 'anyenum', typlen => '4', typbyval => 't', typtype => 'p',
577  typcategory => 'P', typinput => 'anyenum_in', typoutput => 'anyenum_out',
578  typreceive => '-', typsend => '-', typalign => 'i' },
579{ oid => '3115',
580  descr => 'pseudo-type for the result of an FDW handler function',
581  typname => 'fdw_handler', typlen => '4', typbyval => 't', typtype => 'p',
582  typcategory => 'P', typinput => 'fdw_handler_in',
583  typoutput => 'fdw_handler_out', typreceive => '-', typsend => '-',
584  typalign => 'i' },
585{ oid => '325',
586  descr => 'pseudo-type for the result of an index AM handler function',
587  typname => 'index_am_handler', typlen => '4', typbyval => 't', typtype => 'p',
588  typcategory => 'P', typinput => 'index_am_handler_in',
589  typoutput => 'index_am_handler_out', typreceive => '-', typsend => '-',
590  typalign => 'i' },
591{ oid => '3310',
592  descr => 'pseudo-type for the result of a tablesample method function',
593  typname => 'tsm_handler', typlen => '4', typbyval => 't', typtype => 'p',
594  typcategory => 'P', typinput => 'tsm_handler_in',
595  typoutput => 'tsm_handler_out', typreceive => '-', typsend => '-',
596  typalign => 'i' },
597{ oid => '269',
598  typname => 'table_am_handler', typlen => '4', typbyval => 't', typtype => 'p',
599  typcategory => 'P', typinput => 'table_am_handler_in',
600  typoutput => 'table_am_handler_out', typreceive => '-', typsend => '-',
601  typalign => 'i' },
602{ oid => '3831',
603  descr => 'pseudo-type representing a range over a polymorphic base type',
604  typname => 'anyrange', typlen => '-1', typbyval => 'f', typtype => 'p',
605  typcategory => 'P', typinput => 'anyrange_in', typoutput => 'anyrange_out',
606  typreceive => '-', typsend => '-', typalign => 'd', typstorage => 'x' },
607{ oid => '5077',
608  descr => 'pseudo-type representing a polymorphic common type',
609  typname => 'anycompatible', typlen => '4', typbyval => 't', typtype => 'p',
610  typcategory => 'P', typinput => 'anycompatible_in',
611  typoutput => 'anycompatible_out', typreceive => '-', typsend => '-',
612  typalign => 'i' },
613{ oid => '5078',
614  descr => 'pseudo-type representing an array of polymorphic common type elements',
615  typname => 'anycompatiblearray', typlen => '-1', typbyval => 'f',
616  typtype => 'p', typcategory => 'P', typinput => 'anycompatiblearray_in',
617  typoutput => 'anycompatiblearray_out',
618  typreceive => 'anycompatiblearray_recv', typsend => 'anycompatiblearray_send',
619  typalign => 'd', typstorage => 'x' },
620{ oid => '5079',
621  descr => 'pseudo-type representing a polymorphic common type that is not an array',
622  typname => 'anycompatiblenonarray', typlen => '4', typbyval => 't',
623  typtype => 'p', typcategory => 'P', typinput => 'anycompatiblenonarray_in',
624  typoutput => 'anycompatiblenonarray_out', typreceive => '-', typsend => '-',
625  typalign => 'i' },
626{ oid => '5080',
627  descr => 'pseudo-type representing a range over a polymorphic common type',
628  typname => 'anycompatiblerange', typlen => '-1', typbyval => 'f',
629  typtype => 'p', typcategory => 'P', typinput => 'anycompatiblerange_in',
630  typoutput => 'anycompatiblerange_out', typreceive => '-', typsend => '-',
631  typalign => 'd', typstorage => 'x' },
632
633]
634