Skip to main content

mz_pgrepr_consts/
regproc.rs

1// Copyright Materialize, Inc. and contributors. All rights reserved.
2//
3// Use of this software is governed by the Business Source License
4// included in the LICENSE file.
5//
6// As of the Change Date specified in that file, in accordance with
7// the Business Source License, use of this software will be governed
8// by the Apache License, Version 2.0.
9
10//! Text renderings of `regproc` values.
11//!
12//! PostgreSQL renders a `regproc` in text format through `regprocout`, which
13//! resolves the OID to the function's name. Materialize has no
14//! `CREATE FUNCTION`, so every function is a builtin and the OID to name
15//! mapping is fixed when the binary is built. That is what makes a static
16//! table viable: the text encoder has no catalog access and cannot gain any,
17//! because the catalog crates depend on `mz-pgrepr` rather than the reverse,
18//! and some encode paths run in `clusterd`, which has no catalog at all.
19//!
20//! [`NAMES`] is derived from Materialize's builtin function registry, reached
21//! through `mz_catalog::builtin::BUILTINS::funcs()`, which is the authoritative
22//! definition of every function OID. `mz_catalog::builtin`'s
23//! `test_regproc_names_match_builtin_functions` recomputes the whole table from
24//! that registry and fails when the two have drifted, so do not hand-edit
25//! entries here. Add the function to the registry, then regenerate the table:
26//!
27//! ```shell
28//! REWRITE=1 cargo test -p mz-catalog test_regproc_names_match_builtin_functions
29//! ```
30//!
31//! The OIDs are not invented by Materialize wherever PostgreSQL already assigns
32//! one. `mz_sql::func`'s `PG_CATALOG_BUILTINS` records that its literal OIDs
33//! were read out of a PostgreSQL 13 `pg_proc`, and points at
34//! <https://github.com/postgres/postgres/blob/master/src/include/catalog/pg_proc.dat>
35//! for the same values. Everything else draws from [`crate::oid`], which carves
36//! out `FIRST_UNPINNED_OID` upward for functions PostgreSQL ships without a
37//! pinned OID, and `FIRST_MATERIALIZE_OID` upward for functions that exist only
38//! in Materialize.
39
40/// Every builtin function OID paired with the text `regproc` renders it as,
41/// sorted by OID.
42///
43/// The name is schema-qualified whenever the bare name would not resolve back to
44/// this OID, which is the rule `regprocout` applies.
45///
46/// NOTE: The rendering assumes the default search path, which is all a static
47/// table can do. A session with `mz_internal` or `mz_unsafe` on its
48/// `search_path` makes those bare names resolvable, so the SQL cast from
49/// `regproc` to `text` renders them bare where this table still qualifies them.
50///
51/// NOTE: Reserved words are left unquoted here, so `left` renders as `left`
52/// where PostgreSQL's `regprocout` renders `"left"`. This matches the SQL cast
53/// from `regproc` to `text`, and the unquoted form still resolves because
54/// `regprocin` accepts a reserved word either way.
55pub const NAMES: &[(u32, &str)] = &[
56    // BEGIN GENERATED
57    (34, "namein"),
58    (38, "int2in"),
59    (40, "int2vectorin"),
60    (42, "int4in"),
61    (44, "regprocin"),
62    (46, "textin"),
63    (89, "version"),
64    (200, "float4in"),
65    (214, "float8in"),
66    (376, "pg_catalog.string_to_array"),
67    (383, "array_cat"),
68    (384, "pg_catalog.array_to_string"),
69    (394, "pg_catalog.string_to_array"),
70    (395, "pg_catalog.array_to_string"),
71    (460, "int8in"),
72    (720, "pg_catalog.octet_length"),
73    (721, "get_byte"),
74    (723, "get_bit"),
75    (745, "current_user"),
76    (746, "session_user"),
77    (750, "array_in"),
78    (849, "position"),
79    (861, "current_database"),
80    (868, "strpos"),
81    (870, "pg_catalog.lower"),
82    (871, "pg_catalog.upper"),
83    (872, "initcap"),
84    (873, "pg_catalog.lpad"),
85    (875, "pg_catalog.ltrim"),
86    (876, "pg_catalog.rtrim"),
87    (877, "pg_catalog.substr"),
88    (878, "translate"),
89    (879, "pg_catalog.lpad"),
90    (881, "pg_catalog.ltrim"),
91    (882, "pg_catalog.rtrim"),
92    (883, "pg_catalog.substr"),
93    (884, "pg_catalog.btrim"),
94    (885, "pg_catalog.btrim"),
95    (936, "pg_catalog.substring"),
96    (937, "pg_catalog.substring"),
97    (938, "pg_catalog.generate_series"),
98    (939, "pg_catalog.generate_series"),
99    (940, "pg_catalog.mod"),
100    (941, "pg_catalog.mod"),
101    (947, "pg_catalog.mod"),
102    (1026, "pg_catalog.timezone"),
103    (1031, "aclitemin"),
104    (1044, "bpcharin"),
105    (1046, "varcharin"),
106    (1066, "pg_catalog.generate_series"),
107    (1067, "pg_catalog.generate_series"),
108    (1068, "pg_catalog.generate_series"),
109    (1069, "pg_catalog.generate_series"),
110    (1081, "format_type"),
111    (1084, "date_in"),
112    (1143, "time_in"),
113    (1150, "timestamptz_in"),
114    (1158, "to_timestamp"),
115    (1159, "pg_catalog.timezone"),
116    (1160, "interval_in"),
117    (1171, "pg_catalog.date_part"),
118    (1172, "pg_catalog.date_part"),
119    (1175, "justify_hours"),
120    (1178, "pg_catalog.date"),
121    (1192, "generate_subscripts"),
122    (1193, "pg_catalog.array_fill"),
123    (1194, "pg_catalog.log10"),
124    (1199, "pg_catalog.age"),
125    (1215, "obj_description"),
126    (1216, "col_description"),
127    (1217, "pg_catalog.date_trunc"),
128    (1218, "pg_catalog.date_trunc"),
129    (1242, "boolin"),
130    (1244, "byteain"),
131    (1245, "charin"),
132    (1268, "pg_catalog.parse_ident"),
133    (1269, "pg_column_size"),
134    (1282, "quote_ident"),
135    (1286, "pg_catalog.array_fill"),
136    (1295, "justify_days"),
137    (1299, "now"),
138    (1312, "timestamp_in"),
139    (1317, "pg_catalog.length"),
140    (1340, "pg_catalog.log"),
141    (1341, "pg_catalog.ln"),
142    (1342, "pg_catalog.round"),
143    (1343, "pg_catalog.trunc"),
144    (1344, "pg_catalog.sqrt"),
145    (1345, "cbrt"),
146    (1346, "pow"),
147    (1347, "pg_catalog.exp"),
148    (1365, "makeaclitem"),
149    (1368, "pg_catalog.power"),
150    (1374, "pg_catalog.octet_length"),
151    (1375, "pg_catalog.octet_length"),
152    (1381, "char_length"),
153    (1385, "pg_catalog.date_part"),
154    (1387, "pg_catalog.pg_get_constraintdef"),
155    (1394, "pg_catalog.abs"),
156    (1395, "pg_catalog.abs"),
157    (1396, "pg_catalog.abs"),
158    (1397, "pg_catalog.abs"),
159    (1398, "pg_catalog.abs"),
160    (1402, "current_schema"),
161    (1403, "current_schemas"),
162    (1481, "pg_catalog.log10"),
163    (1573, "pg_catalog.pg_get_ruledef"),
164    (1597, "pg_encoding_to_char"),
165    (1600, "asin"),
166    (1601, "acos"),
167    (1602, "atan"),
168    (1604, "sin"),
169    (1605, "cos"),
170    (1606, "tan"),
171    (1607, "cot"),
172    (1608, "degrees"),
173    (1609, "radians"),
174    (1619, "pg_typeof"),
175    (1620, "ascii"),
176    (1621, "chr"),
177    (1622, "repeat"),
178    (1637, "like_escape"),
179    (1640, "pg_catalog.pg_get_viewdef"),
180    (1641, "pg_catalog.pg_get_viewdef"),
181    (1642, "pg_get_userbyid"),
182    (1643, "pg_catalog.pg_get_indexdef"),
183    (1689, "aclexplode"),
184    (1701, "numeric_in"),
185    (1705, "pg_catalog.abs"),
186    (1707, "pg_catalog.round"),
187    (1708, "pg_catalog.round"),
188    (1710, "pg_catalog.trunc"),
189    (1711, "pg_catalog.ceil"),
190    (1712, "pg_catalog.floor"),
191    (1713, "pg_catalog.length"),
192    (1714, "convert_from"),
193    (1716, "pg_catalog.pg_get_expr"),
194    (1728, "pg_catalog.mod"),
195    (1730, "pg_catalog.sqrt"),
196    (1732, "pg_catalog.exp"),
197    (1734, "pg_catalog.ln"),
198    (1736, "pg_catalog.log"),
199    (1741, "pg_catalog.log"),
200    (1770, "pg_catalog.to_char"),
201    (1798, "oidin"),
202    (1810, "pg_catalog.bit_length"),
203    (1811, "pg_catalog.bit_length"),
204    (1922, "pg_catalog.has_table_privilege"),
205    (1923, "pg_catalog.has_table_privilege"),
206    (1924, "pg_catalog.has_table_privilege"),
207    (1925, "pg_catalog.has_table_privilege"),
208    (1926, "pg_catalog.has_table_privilege"),
209    (1927, "pg_catalog.has_table_privilege"),
210    (1928, "pg_stat_get_numscans"),
211    (1946, "encode"),
212    (1947, "decode"),
213    (2010, "pg_catalog.length"),
214    (2020, "pg_catalog.date_trunc"),
215    (2021, "pg_catalog.date_part"),
216    (2026, "pg_backend_pid"),
217    (2029, "pg_catalog.date"),
218    (2037, "pg_catalog.timezone"),
219    (2038, "pg_catalog.timezone"),
220    (2049, "pg_catalog.to_char"),
221    (2050, "pg_catalog.max"),
222    (2051, "pg_catalog.min"),
223    (2058, "pg_catalog.age"),
224    (2069, "pg_catalog.timezone"),
225    (2070, "pg_catalog.timezone"),
226    (2077, "pg_catalog.current_setting"),
227    (2079, "pg_table_is_visible"),
228    (2080, "pg_type_is_visible"),
229    (2081, "pg_function_is_visible"),
230    (2087, "replace"),
231    (2088, "split_part"),
232    (2091, "array_lower"),
233    (2092, "array_upper"),
234    (2100, "pg_catalog.avg"),
235    (2101, "pg_catalog.avg"),
236    (2102, "pg_catalog.avg"),
237    (2104, "pg_catalog.avg"),
238    (2105, "pg_catalog.avg"),
239    (2106, "pg_catalog.avg"),
240    (2107, "pg_catalog.sum"),
241    (2108, "pg_catalog.sum"),
242    (2109, "pg_catalog.sum"),
243    (2110, "pg_catalog.sum"),
244    (2111, "pg_catalog.sum"),
245    (2113, "pg_catalog.sum"),
246    (2114, "pg_catalog.sum"),
247    (2115, "pg_catalog.max"),
248    (2116, "pg_catalog.max"),
249    (2117, "pg_catalog.max"),
250    (2119, "pg_catalog.max"),
251    (2120, "pg_catalog.max"),
252    (2122, "pg_catalog.max"),
253    (2123, "pg_catalog.max"),
254    (2126, "pg_catalog.max"),
255    (2127, "pg_catalog.max"),
256    (2128, "pg_catalog.max"),
257    (2129, "pg_catalog.max"),
258    (2131, "pg_catalog.min"),
259    (2132, "pg_catalog.min"),
260    (2133, "pg_catalog.min"),
261    (2135, "pg_catalog.min"),
262    (2136, "pg_catalog.min"),
263    (2138, "pg_catalog.min"),
264    (2139, "pg_catalog.min"),
265    (2142, "pg_catalog.min"),
266    (2143, "pg_catalog.min"),
267    (2144, "pg_catalog.min"),
268    (2145, "pg_catalog.min"),
269    (2147, "pg_catalog.count"),
270    (2148, "pg_catalog.variance"),
271    (2149, "pg_catalog.variance"),
272    (2150, "pg_catalog.variance"),
273    (2151, "pg_catalog.variance"),
274    (2152, "pg_catalog.variance"),
275    (2154, "pg_catalog.stddev"),
276    (2155, "pg_catalog.stddev"),
277    (2156, "pg_catalog.stddev"),
278    (2157, "pg_catalog.stddev"),
279    (2158, "pg_catalog.stddev"),
280    (2167, "pg_catalog.ceiling"),
281    (2169, "pg_catalog.power"),
282    (2171, "pg_cancel_backend"),
283    (2176, "array_length"),
284    (2218, "regclassin"),
285    (2220, "regtypein"),
286    (2244, "pg_catalog.max"),
287    (2245, "pg_catalog.min"),
288    (2250, "pg_catalog.has_database_privilege"),
289    (2251, "pg_catalog.has_database_privilege"),
290    (2252, "pg_catalog.has_database_privilege"),
291    (2253, "pg_catalog.has_database_privilege"),
292    (2254, "pg_catalog.has_database_privilege"),
293    (2255, "pg_catalog.has_database_privilege"),
294    (2268, "pg_catalog.has_schema_privilege"),
295    (2269, "pg_catalog.has_schema_privilege"),
296    (2270, "pg_catalog.has_schema_privilege"),
297    (2271, "pg_catalog.has_schema_privilege"),
298    (2272, "pg_catalog.has_schema_privilege"),
299    (2273, "pg_catalog.has_schema_privilege"),
300    (2284, "pg_catalog.regexp_replace"),
301    (2285, "pg_catalog.regexp_replace"),
302    (2290, "record_in"),
303    (2294, "any_in"),
304    (2296, "anyarray_in"),
305    (2304, "internal_in"),
306    (2308, "pg_catalog.ceil"),
307    (2309, "pg_catalog.floor"),
308    (2311, "pg_catalog.md5"),
309    (2312, "anyelement_in"),
310    (2320, "pg_catalog.ceiling"),
311    (2321, "pg_catalog.md5"),
312    (2325, "pg_catalog.pg_relation_size"),
313    (2331, "mz_catalog.unnest"),
314    (2332, "pg_catalog.pg_relation_size"),
315    (2335, "pg_catalog.array_agg"),
316    (2400, "array_recv"),
317    (2402, "record_recv"),
318    (2404, "int2recv"),
319    (2406, "int4recv"),
320    (2408, "int8recv"),
321    (2410, "int2vectorrecv"),
322    (2412, "bytearecv"),
323    (2414, "textrecv"),
324    (2418, "oidrecv"),
325    (2422, "namerecv"),
326    (2424, "float4recv"),
327    (2426, "float8recv"),
328    (2430, "bpcharrecv"),
329    (2432, "varcharrecv"),
330    (2434, "charrecv"),
331    (2436, "boolrecv"),
332    (2444, "regprocrecv"),
333    (2452, "regclassrecv"),
334    (2454, "regtyperecv"),
335    (2460, "numeric_recv"),
336    (2462, "sinh"),
337    (2463, "cosh"),
338    (2464, "tanh"),
339    (2465, "asinh"),
340    (2466, "acosh"),
341    (2467, "atanh"),
342    (2468, "date_recv"),
343    (2470, "time_recv"),
344    (2474, "timestamp_recv"),
345    (2476, "timestamptz_recv"),
346    (2478, "interval_recv"),
347    (2502, "anyarray_recv"),
348    (2504, "pg_catalog.pg_get_ruledef"),
349    (2505, "pg_catalog.pg_get_viewdef"),
350    (2506, "pg_catalog.pg_get_viewdef"),
351    (2507, "pg_catalog.pg_get_indexdef"),
352    (2508, "pg_catalog.pg_get_constraintdef"),
353    (2509, "pg_catalog.pg_get_expr"),
354    (2517, "bool_and"),
355    (2518, "bool_or"),
356    (2560, "pg_postmaster_start_time"),
357    (2641, "pg_catalog.var_samp"),
358    (2642, "pg_catalog.var_samp"),
359    (2643, "pg_catalog.var_samp"),
360    (2644, "pg_catalog.var_samp"),
361    (2645, "pg_catalog.var_samp"),
362    (2705, "pg_catalog.pg_has_role"),
363    (2706, "pg_catalog.pg_has_role"),
364    (2707, "pg_catalog.pg_has_role"),
365    (2708, "pg_catalog.pg_has_role"),
366    (2709, "pg_catalog.pg_has_role"),
367    (2710, "pg_catalog.pg_has_role"),
368    (2711, "justify_interval"),
369    (2712, "pg_catalog.stddev_samp"),
370    (2713, "pg_catalog.stddev_samp"),
371    (2714, "pg_catalog.stddev_samp"),
372    (2715, "pg_catalog.stddev_samp"),
373    (2716, "pg_catalog.stddev_samp"),
374    (2718, "pg_catalog.var_pop"),
375    (2719, "pg_catalog.var_pop"),
376    (2720, "pg_catalog.var_pop"),
377    (2721, "pg_catalog.var_pop"),
378    (2722, "pg_catalog.var_pop"),
379    (2724, "pg_catalog.stddev_pop"),
380    (2725, "pg_catalog.stddev_pop"),
381    (2726, "pg_catalog.stddev_pop"),
382    (2727, "pg_catalog.stddev_pop"),
383    (2728, "pg_catalog.stddev_pop"),
384    (2763, "pg_catalog.regexp_matches"),
385    (2764, "pg_catalog.regexp_matches"),
386    (2765, "pg_catalog.regexp_split_to_table"),
387    (2766, "pg_catalog.regexp_split_to_table"),
388    (2767, "pg_catalog.regexp_split_to_array"),
389    (2768, "pg_catalog.regexp_split_to_array"),
390    (2777, "anynonarray_in"),
391    (2803, "pg_catalog.count"),
392    (2952, "uuid_in"),
393    (2961, "uuid_recv"),
394    (3058, "concat"),
395    (3059, "concat_ws"),
396    (3060, "left"),
397    (3061, "right"),
398    (3062, "reverse"),
399    (3100, "row_number"),
400    (3101, "rank"),
401    (3102, "dense_rank"),
402    (3106, "pg_catalog.lag"),
403    (3107, "pg_catalog.lag"),
404    (3108, "pg_catalog.lag"),
405    (3109, "pg_catalog.lead"),
406    (3110, "pg_catalog.lead"),
407    (3111, "pg_catalog.lead"),
408    (3112, "first_value"),
409    (3113, "last_value"),
410    (3138, "mz_catalog.has_type_privilege"),
411    (3139, "mz_catalog.has_type_privilege"),
412    (3140, "mz_catalog.has_type_privilege"),
413    (3141, "mz_catalog.has_type_privilege"),
414    (3142, "mz_catalog.has_type_privilege"),
415    (3143, "mz_catalog.has_type_privilege"),
416    (3159, "pg_catalog.pg_get_viewdef"),
417    (3166, "pg_size_pretty"),
418    (3167, "array_remove"),
419    (3207, "jsonb_array_length"),
420    (3208, "jsonb_each"),
421    (3210, "jsonb_typeof"),
422    (3219, "jsonb_array_elements"),
423    (3262, "jsonb_strip_nulls"),
424    (3267, "jsonb_agg"),
425    (3270, "jsonb_object_agg"),
426    (3271, "pg_catalog.jsonb_build_array"),
427    (3272, "pg_catalog.jsonb_build_array"),
428    (3273, "pg_catalog.jsonb_build_object"),
429    (3274, "pg_catalog.jsonb_build_object"),
430    (3277, "pg_catalog.array_position"),
431    (3278, "pg_catalog.array_position"),
432    (3294, "pg_catalog.current_setting"),
433    (3306, "jsonb_pretty"),
434    (3396, "pg_catalog.regexp_match"),
435    (3397, "pg_catalog.regexp_match"),
436    (3419, "sha224"),
437    (3420, "sha256"),
438    (3421, "sha384"),
439    (3422, "sha512"),
440    (3461, "make_timestamp"),
441    (3465, "jsonb_array_elements_text"),
442    (3538, "pg_catalog.string_agg"),
443    (3545, "pg_catalog.string_agg"),
444    (3696, "starts_with"),
445    (3778, "pg_tablespace_location"),
446    (3787, "to_jsonb"),
447    (3805, "jsonb_recv"),
448    (3806, "jsonb_in"),
449    (3810, "pg_is_in_recovery"),
450    (3832, "anyrange_in"),
451    (3834, "range_in"),
452    (3836, "range_recv"),
453    (3840, "pg_catalog.int4range"),
454    (3841, "pg_catalog.int4range"),
455    (3844, "pg_catalog.numrange"),
456    (3845, "pg_catalog.numrange"),
457    (3848, "pg_catalog.lower"),
458    (3849, "pg_catalog.upper"),
459    (3850, "isempty"),
460    (3851, "lower_inc"),
461    (3852, "upper_inc"),
462    (3853, "lower_inf"),
463    (3854, "upper_inf"),
464    (3931, "jsonb_object_keys"),
465    (3932, "jsonb_each_text"),
466    (3933, "pg_catalog.tsrange"),
467    (3934, "pg_catalog.tsrange"),
468    (3937, "pg_catalog.tstzrange"),
469    (3938, "pg_catalog.tstzrange"),
470    (3941, "pg_catalog.daterange"),
471    (3942, "pg_catalog.daterange"),
472    (3945, "pg_catalog.int8range"),
473    (3946, "pg_catalog.int8range"),
474    (4053, "pg_catalog.array_agg"),
475    (4350, "normalize"),
476    (5086, "anycompatible_in"),
477    (5088, "anycompatiblearray_in"),
478    (5090, "anycompatiblearray_recv"),
479    (5092, "anycompatiblenonarray_in"),
480    (5094, "anycompatiblerange_in"),
481    (6163, "bit_count"),
482    (6177, "pg_catalog.date_bin"),
483    (6178, "pg_catalog.date_bin"),
484    (6199, "pg_catalog.extract"),
485    (6200, "pg_catalog.extract"),
486    (6202, "pg_catalog.extract"),
487    (6203, "pg_catalog.extract"),
488    (6204, "pg_catalog.extract"),
489    (12000, "information_schema._pg_expandarray"),
490    (12001, "pg_catalog.digest"),
491    (12002, "pg_catalog.digest"),
492    (12003, "pg_catalog.hmac"),
493    (12004, "pg_catalog.hmac"),
494    (16386, "pg_catalog.ceil"),
495    (16387, "concat_agg"),
496    (16388, "csv_extract"),
497    (16389, "current_timestamp"),
498    (16390, "pg_catalog.floor"),
499    (16392, "list_append"),
500    (16393, "list_cat"),
501    (16394, "list_length_max"),
502    (16395, "list_length"),
503    (16396, "list_n_layers"),
504    (16397, "list_prepend"),
505    (16398, "pg_catalog.max"),
506    (16399, "pg_catalog.min"),
507    (16400, "mz_unsafe.mz_all"),
508    (16401, "mz_unsafe.mz_any"),
509    (16403, "mz_unsafe.mz_avg_promotion_internal_v1"),
510    (16404, "mz_unsafe.mz_avg_promotion_internal_v1"),
511    (16405, "mz_unsafe.mz_avg_promotion_internal_v1"),
512    (16407, "mz_environment_id"),
513    (16409, "mz_logical_timestamp"),
514    (16410, "mz_internal.mz_render_typmod"),
515    (16411, "mz_version"),
516    (16412, "regexp_extract"),
517    (16413, "repeat_row"),
518    (16414, "pg_catalog.round"),
519    (16416, "mz_catalog.unnest"),
520    (16434, "mz_unsafe.mz_sleep"),
521    (16435, "mz_internal.mz_session_id"),
522    (16436, "mz_uptime"),
523    (16440, "mz_row_size"),
524    (16441, "pg_catalog.max"),
525    (16442, "pg_catalog.min"),
526    (16443, "mz_unsafe.mz_avg_promotion_internal_v1"),
527    (16444, "list_agg"),
528    (16445, "mz_unsafe.mz_error_if_null"),
529    (16446, "pg_catalog.date_bin"),
530    (16447, "pg_catalog.date_bin"),
531    (16448, "list_remove"),
532    (16449, "pg_catalog.date_bin_hopping"),
533    (16450, "pg_catalog.date_bin_hopping"),
534    (16451, "pg_catalog.date_bin_hopping"),
535    (16452, "pg_catalog.date_bin_hopping"),
536    (16453, "mz_internal.mz_type_name"),
537    (16456, "map_length"),
538    (16457, "mz_unsafe.mz_panic"),
539    (16458, "mz_version_num"),
540    (16459, "pg_catalog.trunc"),
541    (16496, "pg_catalog.max"),
542    (16497, "pg_catalog.max"),
543    (16498, "pg_catalog.max"),
544    (16499, "pg_catalog.min"),
545    (16500, "pg_catalog.min"),
546    (16501, "pg_catalog.min"),
547    (16502, "pg_catalog.sum"),
548    (16503, "pg_catalog.sum"),
549    (16504, "pg_catalog.sum"),
550    (16505, "pg_catalog.avg"),
551    (16506, "pg_catalog.avg"),
552    (16507, "pg_catalog.avg"),
553    (16508, "pg_catalog.mod"),
554    (16509, "pg_catalog.mod"),
555    (16510, "pg_catalog.mod"),
556    (16511, "pg_catalog.stddev"),
557    (16512, "pg_catalog.stddev"),
558    (16513, "pg_catalog.stddev"),
559    (16514, "pg_catalog.stddev_pop"),
560    (16515, "pg_catalog.stddev_pop"),
561    (16516, "pg_catalog.stddev_pop"),
562    (16517, "pg_catalog.stddev_samp"),
563    (16518, "pg_catalog.stddev_samp"),
564    (16519, "pg_catalog.stddev_samp"),
565    (16520, "pg_catalog.variance"),
566    (16521, "pg_catalog.variance"),
567    (16522, "pg_catalog.variance"),
568    (16523, "pg_catalog.var_pop"),
569    (16524, "pg_catalog.var_pop"),
570    (16525, "pg_catalog.var_pop"),
571    (16526, "pg_catalog.var_samp"),
572    (16527, "pg_catalog.var_samp"),
573    (16528, "pg_catalog.var_samp"),
574    (16550, "mz_unsafe.mz_avg_promotion_internal_v1"),
575    (16551, "mz_unsafe.mz_avg_promotion_internal_v1"),
576    (16560, "mz_now"),
577    (16561, "pg_catalog.max"),
578    (16562, "pg_catalog.min"),
579    (16563, "pg_catalog.date"),
580    (16564, "pg_catalog.ceiling"),
581    (16565, "uuid_generate_v5"),
582    (16570, "mz_internal.make_mz_aclitem"),
583    (16571, "mz_internal.mz_aclitem_grantor"),
584    (16572, "mz_internal.mz_aclitem_grantee"),
585    (16573, "mz_internal.mz_aclitem_privileges"),
586    (16574, "mz_internal.is_rbac_enabled"),
587    (16575, "mz_internal.mz_acl_item_contains_privilege"),
588    (16576, "mz_internal.mz_validate_privileges"),
589    (16577, "mz_internal.mz_role_oid"),
590    (16578, "mz_internal.mz_minimal_name_qualification"),
591    (16581, "mz_internal.mz_resolve_object_name"),
592    (16582, "mz_internal.mz_global_id_to_name"),
593    (16584, "pg_catalog.parse_ident"),
594    (16585, "mz_internal.mz_database_oid"),
595    (16586, "mz_internal.mz_schema_oid"),
596    (16587, "mz_catalog.has_cluster_privilege"),
597    (16588, "mz_catalog.has_cluster_privilege"),
598    (16589, "mz_catalog.has_cluster_privilege"),
599    (16591, "mz_catalog.has_connection_privilege"),
600    (16592, "mz_catalog.has_connection_privilege"),
601    (16593, "mz_catalog.has_connection_privilege"),
602    (16594, "mz_catalog.has_connection_privilege"),
603    (16595, "mz_catalog.has_connection_privilege"),
604    (16596, "mz_catalog.has_connection_privilege"),
605    (16597, "mz_catalog.has_secret_privilege"),
606    (16598, "mz_catalog.has_secret_privilege"),
607    (16599, "mz_catalog.has_secret_privilege"),
608    (16600, "mz_catalog.has_secret_privilege"),
609    (16601, "mz_catalog.has_secret_privilege"),
610    (16602, "mz_catalog.has_secret_privilege"),
611    (16603, "mz_internal.mz_normalize_object_name"),
612    (16604, "mz_catalog.datediff"),
613    (16605, "mz_catalog.datediff"),
614    (16606, "mz_catalog.datediff"),
615    (16607, "mz_catalog.datediff"),
616    (16608, "mz_catalog.has_system_privilege"),
617    (16609, "mz_catalog.has_system_privilege"),
618    (16610, "mz_catalog.has_system_privilege"),
619    (16611, "try_parse_monotonic_iso8601_timestamp"),
620    (16612, "mz_internal.mz_role_oid_memberships"),
621    (16613, "mz_internal.mz_validate_role_privilege"),
622    (16614, "mz_is_superuser"),
623    (16615, "mz_internal.mz_format_privileges"),
624    (16616, "mz_internal.aclitem_grantor"),
625    (16617, "mz_internal.aclitem_grantee"),
626    (16618, "mz_internal.aclitem_privileges"),
627    (16619, "mz_internal.mz_aclexplode"),
628    (16620, "mz_catalog.has_role"),
629    (16621, "mz_catalog.has_role"),
630    (16622, "mz_catalog.has_role"),
631    (16623, "mz_catalog.has_role"),
632    (16624, "mz_catalog.has_role"),
633    (16625, "mz_catalog.has_role"),
634    (16626, "mz_unsafe.mz_avg_promotion"),
635    (16627, "mz_unsafe.mz_avg_promotion"),
636    (16628, "mz_unsafe.mz_avg_promotion"),
637    (16629, "mz_unsafe.mz_avg_promotion"),
638    (16630, "mz_unsafe.mz_avg_promotion"),
639    (16631, "mz_unsafe.mz_avg_promotion"),
640    (16632, "mz_unsafe.mz_avg_promotion"),
641    (16633, "mz_unsafe.mz_avg_promotion"),
642    (16634, "mz_unsafe.mz_avg_promotion"),
643    (16635, "mz_catalog.avg_internal_v1"),
644    (16636, "mz_catalog.avg_internal_v1"),
645    (16637, "mz_catalog.avg_internal_v1"),
646    (16638, "mz_catalog.avg_internal_v1"),
647    (16639, "mz_catalog.avg_internal_v1"),
648    (16640, "mz_catalog.avg_internal_v1"),
649    (16641, "mz_catalog.avg_internal_v1"),
650    (16642, "mz_catalog.avg_internal_v1"),
651    (16643, "mz_catalog.avg_internal_v1"),
652    (16644, "mz_catalog.constant_time_eq"),
653    (16645, "mz_catalog.constant_time_eq"),
654    (16646, "timezone_offset"),
655    (16647, "mz_catalog.pretty_sql"),
656    (16648, "mz_catalog.pretty_sql"),
657    (16649, "mz_internal.mz_name_rank"),
658    (16650, "mz_internal.mz_connection_oid"),
659    (16651, "mz_internal.mz_secret_oid"),
660    (16652, "map_build"),
661    (16653, "map_agg"),
662    (16654, "mz_catalog.unnest"),
663    (16655, "mz_internal.mz_normalize_schema_name"),
664    (16957, "current_catalog"),
665    (16958, "current_role"),
666    (16959, "user"),
667    (16987, "mz_catalog.crc32"),
668    (16988, "mz_catalog.crc32"),
669    (16989, "mz_catalog.kafka_murmur2"),
670    (16990, "mz_catalog.kafka_murmur2"),
671    (16991, "mz_catalog.seahash"),
672    (16992, "mz_catalog.seahash"),
673    (17069, "mz_internal.parse_catalog_id"),
674    (17070, "mz_internal.parse_catalog_privileges"),
675    (17073, "mz_internal.parse_catalog_create_sql"),
676    (17074, "mz_internal.redact_sql"),
677    (17075, "repeat_row_non_negative"),
678    (17086, "mz_session_role_memberships"),
679    (17090, "mz_internal.parse_catalog_acl_mode"),
680    (17093, "mz_unsafe.generate_series_unoptimized"),
681    (17094, "mz_unsafe.generate_series_unoptimized"),
682    (17100, "mz_internal.parse_catalog_audit_log_details"),
683    (17105, "mz_internal.parse_postgres_source_details"),
684    (17106, "mz_internal.parse_kafka_source_details"),
685    (17111, "mz_internal.parse_source_export_details"),
686    (17112, "mz_internal.parse_connection_details"),
687    (17113, "mz_aws_account_id"),
688    (17114, "mz_aws_external_id_prefix"),
689    (17115, "mz_aws_connection_role_arn"),
690    (17125, "mz_internal.parse_catalog_item_references"),
691    (17127, "mz_unsafe.mz_avg_promotion"),
692    (17128, "mz_unsafe.mz_avg_promotion_internal_v1"),
693    (17131, "pg_catalog.max"),
694    (17132, "pg_catalog.min"),
695    (17138, "jq"),
696    // END GENERATED
697];
698
699/// Returns the text that `regproc` OID `oid` renders as, or `None` when no
700/// builtin function has that OID.
701///
702/// PostgreSQL renders an unmatched OID in decimal and OID 0 as `-`. Neither is
703/// in [`NAMES`], so callers handle both.
704pub fn name(oid: u32) -> Option<&'static str> {
705    NAMES
706        .binary_search_by_key(&oid, |(entry_oid, _)| *entry_oid)
707        .ok()
708        .map(|i| NAMES[i].1)
709}
710
711/// Returns the OID whose [`NAMES`] rendering is `name`.
712///
713/// `Err` distinguishes no match from an ambiguous one. A rendering is ambiguous
714/// when several overloads share it, in which case PostgreSQL's `regprocin`
715/// likewise refuses to resolve it. The scan is linear because reads of this
716/// direction only happen while decoding text-format input, which is rare
717/// compared to encoding.
718pub fn oid(name: &str) -> Result<u32, NameLookupError> {
719    let mut found = None;
720    for (entry_oid, entry_name) in NAMES {
721        if *entry_name == name {
722            if found.is_some() {
723                return Err(NameLookupError::Ambiguous);
724            }
725            found = Some(*entry_oid);
726        }
727    }
728    found.ok_or(NameLookupError::NotFound)
729}
730
731/// Why [`oid`] could not resolve a name.
732#[derive(Debug, Clone, Copy, PartialEq, Eq)]
733pub enum NameLookupError {
734    /// No builtin function renders as the given name.
735    NotFound,
736    /// Several builtin functions render as the given name.
737    Ambiguous,
738}