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    (2058, "pg_catalog.age"),
222    (2069, "pg_catalog.timezone"),
223    (2070, "pg_catalog.timezone"),
224    (2077, "pg_catalog.current_setting"),
225    (2079, "pg_table_is_visible"),
226    (2080, "pg_type_is_visible"),
227    (2081, "pg_function_is_visible"),
228    (2087, "replace"),
229    (2088, "split_part"),
230    (2091, "array_lower"),
231    (2092, "array_upper"),
232    (2100, "pg_catalog.avg"),
233    (2101, "pg_catalog.avg"),
234    (2102, "pg_catalog.avg"),
235    (2104, "pg_catalog.avg"),
236    (2105, "pg_catalog.avg"),
237    (2106, "pg_catalog.avg"),
238    (2107, "pg_catalog.sum"),
239    (2108, "pg_catalog.sum"),
240    (2109, "pg_catalog.sum"),
241    (2110, "pg_catalog.sum"),
242    (2111, "pg_catalog.sum"),
243    (2113, "pg_catalog.sum"),
244    (2114, "pg_catalog.sum"),
245    (2115, "pg_catalog.max"),
246    (2116, "pg_catalog.max"),
247    (2117, "pg_catalog.max"),
248    (2119, "pg_catalog.max"),
249    (2120, "pg_catalog.max"),
250    (2122, "pg_catalog.max"),
251    (2123, "pg_catalog.max"),
252    (2126, "pg_catalog.max"),
253    (2127, "pg_catalog.max"),
254    (2128, "pg_catalog.max"),
255    (2129, "pg_catalog.max"),
256    (2131, "pg_catalog.min"),
257    (2132, "pg_catalog.min"),
258    (2133, "pg_catalog.min"),
259    (2135, "pg_catalog.min"),
260    (2136, "pg_catalog.min"),
261    (2138, "pg_catalog.min"),
262    (2139, "pg_catalog.min"),
263    (2142, "pg_catalog.min"),
264    (2143, "pg_catalog.min"),
265    (2144, "pg_catalog.min"),
266    (2145, "pg_catalog.min"),
267    (2147, "pg_catalog.count"),
268    (2148, "pg_catalog.variance"),
269    (2149, "pg_catalog.variance"),
270    (2150, "pg_catalog.variance"),
271    (2151, "pg_catalog.variance"),
272    (2152, "pg_catalog.variance"),
273    (2154, "pg_catalog.stddev"),
274    (2155, "pg_catalog.stddev"),
275    (2156, "pg_catalog.stddev"),
276    (2157, "pg_catalog.stddev"),
277    (2158, "pg_catalog.stddev"),
278    (2167, "pg_catalog.ceiling"),
279    (2169, "pg_catalog.power"),
280    (2171, "pg_cancel_backend"),
281    (2176, "array_length"),
282    (2218, "regclassin"),
283    (2220, "regtypein"),
284    (2244, "pg_catalog.max"),
285    (2245, "pg_catalog.min"),
286    (2250, "pg_catalog.has_database_privilege"),
287    (2251, "pg_catalog.has_database_privilege"),
288    (2252, "pg_catalog.has_database_privilege"),
289    (2253, "pg_catalog.has_database_privilege"),
290    (2254, "pg_catalog.has_database_privilege"),
291    (2255, "pg_catalog.has_database_privilege"),
292    (2268, "pg_catalog.has_schema_privilege"),
293    (2269, "pg_catalog.has_schema_privilege"),
294    (2270, "pg_catalog.has_schema_privilege"),
295    (2271, "pg_catalog.has_schema_privilege"),
296    (2272, "pg_catalog.has_schema_privilege"),
297    (2273, "pg_catalog.has_schema_privilege"),
298    (2284, "pg_catalog.regexp_replace"),
299    (2285, "pg_catalog.regexp_replace"),
300    (2290, "record_in"),
301    (2294, "any_in"),
302    (2296, "anyarray_in"),
303    (2304, "internal_in"),
304    (2308, "pg_catalog.ceil"),
305    (2309, "pg_catalog.floor"),
306    (2311, "pg_catalog.md5"),
307    (2312, "anyelement_in"),
308    (2320, "pg_catalog.ceiling"),
309    (2321, "pg_catalog.md5"),
310    (2325, "pg_catalog.pg_relation_size"),
311    (2331, "mz_catalog.unnest"),
312    (2332, "pg_catalog.pg_relation_size"),
313    (2335, "pg_catalog.array_agg"),
314    (2400, "array_recv"),
315    (2402, "record_recv"),
316    (2404, "int2recv"),
317    (2406, "int4recv"),
318    (2408, "int8recv"),
319    (2410, "int2vectorrecv"),
320    (2412, "bytearecv"),
321    (2414, "textrecv"),
322    (2418, "oidrecv"),
323    (2422, "namerecv"),
324    (2424, "float4recv"),
325    (2426, "float8recv"),
326    (2430, "bpcharrecv"),
327    (2432, "varcharrecv"),
328    (2434, "charrecv"),
329    (2436, "boolrecv"),
330    (2444, "regprocrecv"),
331    (2452, "regclassrecv"),
332    (2454, "regtyperecv"),
333    (2460, "numeric_recv"),
334    (2462, "sinh"),
335    (2463, "cosh"),
336    (2464, "tanh"),
337    (2465, "asinh"),
338    (2466, "acosh"),
339    (2467, "atanh"),
340    (2468, "date_recv"),
341    (2470, "time_recv"),
342    (2474, "timestamp_recv"),
343    (2476, "timestamptz_recv"),
344    (2478, "interval_recv"),
345    (2502, "anyarray_recv"),
346    (2504, "pg_catalog.pg_get_ruledef"),
347    (2505, "pg_catalog.pg_get_viewdef"),
348    (2506, "pg_catalog.pg_get_viewdef"),
349    (2507, "pg_catalog.pg_get_indexdef"),
350    (2508, "pg_catalog.pg_get_constraintdef"),
351    (2509, "pg_catalog.pg_get_expr"),
352    (2517, "bool_and"),
353    (2518, "bool_or"),
354    (2560, "pg_postmaster_start_time"),
355    (2641, "pg_catalog.var_samp"),
356    (2642, "pg_catalog.var_samp"),
357    (2643, "pg_catalog.var_samp"),
358    (2644, "pg_catalog.var_samp"),
359    (2645, "pg_catalog.var_samp"),
360    (2705, "pg_catalog.pg_has_role"),
361    (2706, "pg_catalog.pg_has_role"),
362    (2707, "pg_catalog.pg_has_role"),
363    (2708, "pg_catalog.pg_has_role"),
364    (2709, "pg_catalog.pg_has_role"),
365    (2710, "pg_catalog.pg_has_role"),
366    (2711, "justify_interval"),
367    (2712, "pg_catalog.stddev_samp"),
368    (2713, "pg_catalog.stddev_samp"),
369    (2714, "pg_catalog.stddev_samp"),
370    (2715, "pg_catalog.stddev_samp"),
371    (2716, "pg_catalog.stddev_samp"),
372    (2718, "pg_catalog.var_pop"),
373    (2719, "pg_catalog.var_pop"),
374    (2720, "pg_catalog.var_pop"),
375    (2721, "pg_catalog.var_pop"),
376    (2722, "pg_catalog.var_pop"),
377    (2724, "pg_catalog.stddev_pop"),
378    (2725, "pg_catalog.stddev_pop"),
379    (2726, "pg_catalog.stddev_pop"),
380    (2727, "pg_catalog.stddev_pop"),
381    (2728, "pg_catalog.stddev_pop"),
382    (2763, "pg_catalog.regexp_matches"),
383    (2764, "pg_catalog.regexp_matches"),
384    (2765, "pg_catalog.regexp_split_to_table"),
385    (2766, "pg_catalog.regexp_split_to_table"),
386    (2767, "pg_catalog.regexp_split_to_array"),
387    (2768, "pg_catalog.regexp_split_to_array"),
388    (2777, "anynonarray_in"),
389    (2803, "pg_catalog.count"),
390    (2952, "uuid_in"),
391    (2961, "uuid_recv"),
392    (3058, "concat"),
393    (3059, "concat_ws"),
394    (3060, "left"),
395    (3061, "right"),
396    (3062, "reverse"),
397    (3100, "row_number"),
398    (3101, "rank"),
399    (3102, "dense_rank"),
400    (3106, "pg_catalog.lag"),
401    (3107, "pg_catalog.lag"),
402    (3108, "pg_catalog.lag"),
403    (3109, "pg_catalog.lead"),
404    (3110, "pg_catalog.lead"),
405    (3111, "pg_catalog.lead"),
406    (3112, "first_value"),
407    (3113, "last_value"),
408    (3138, "mz_catalog.has_type_privilege"),
409    (3139, "mz_catalog.has_type_privilege"),
410    (3140, "mz_catalog.has_type_privilege"),
411    (3141, "mz_catalog.has_type_privilege"),
412    (3142, "mz_catalog.has_type_privilege"),
413    (3143, "mz_catalog.has_type_privilege"),
414    (3159, "pg_catalog.pg_get_viewdef"),
415    (3166, "pg_size_pretty"),
416    (3167, "array_remove"),
417    (3207, "jsonb_array_length"),
418    (3208, "jsonb_each"),
419    (3210, "jsonb_typeof"),
420    (3219, "jsonb_array_elements"),
421    (3262, "jsonb_strip_nulls"),
422    (3267, "jsonb_agg"),
423    (3270, "jsonb_object_agg"),
424    (3271, "pg_catalog.jsonb_build_array"),
425    (3272, "pg_catalog.jsonb_build_array"),
426    (3273, "pg_catalog.jsonb_build_object"),
427    (3274, "pg_catalog.jsonb_build_object"),
428    (3277, "pg_catalog.array_position"),
429    (3278, "pg_catalog.array_position"),
430    (3294, "pg_catalog.current_setting"),
431    (3306, "jsonb_pretty"),
432    (3396, "pg_catalog.regexp_match"),
433    (3397, "pg_catalog.regexp_match"),
434    (3419, "sha224"),
435    (3420, "sha256"),
436    (3421, "sha384"),
437    (3422, "sha512"),
438    (3461, "make_timestamp"),
439    (3465, "jsonb_array_elements_text"),
440    (3538, "pg_catalog.string_agg"),
441    (3545, "pg_catalog.string_agg"),
442    (3696, "starts_with"),
443    (3778, "pg_tablespace_location"),
444    (3787, "to_jsonb"),
445    (3805, "jsonb_recv"),
446    (3806, "jsonb_in"),
447    (3810, "pg_is_in_recovery"),
448    (3832, "anyrange_in"),
449    (3834, "range_in"),
450    (3836, "range_recv"),
451    (3840, "pg_catalog.int4range"),
452    (3841, "pg_catalog.int4range"),
453    (3844, "pg_catalog.numrange"),
454    (3845, "pg_catalog.numrange"),
455    (3848, "pg_catalog.lower"),
456    (3849, "pg_catalog.upper"),
457    (3850, "isempty"),
458    (3851, "lower_inc"),
459    (3852, "upper_inc"),
460    (3853, "lower_inf"),
461    (3854, "upper_inf"),
462    (3931, "jsonb_object_keys"),
463    (3932, "jsonb_each_text"),
464    (3933, "pg_catalog.tsrange"),
465    (3934, "pg_catalog.tsrange"),
466    (3937, "pg_catalog.tstzrange"),
467    (3938, "pg_catalog.tstzrange"),
468    (3941, "pg_catalog.daterange"),
469    (3942, "pg_catalog.daterange"),
470    (3945, "pg_catalog.int8range"),
471    (3946, "pg_catalog.int8range"),
472    (4053, "pg_catalog.array_agg"),
473    (4350, "normalize"),
474    (5086, "anycompatible_in"),
475    (5088, "anycompatiblearray_in"),
476    (5090, "anycompatiblearray_recv"),
477    (5092, "anycompatiblenonarray_in"),
478    (5094, "anycompatiblerange_in"),
479    (6163, "bit_count"),
480    (6177, "pg_catalog.date_bin"),
481    (6178, "pg_catalog.date_bin"),
482    (6199, "pg_catalog.extract"),
483    (6200, "pg_catalog.extract"),
484    (6202, "pg_catalog.extract"),
485    (6203, "pg_catalog.extract"),
486    (6204, "pg_catalog.extract"),
487    (12000, "information_schema._pg_expandarray"),
488    (12001, "pg_catalog.digest"),
489    (12002, "pg_catalog.digest"),
490    (12003, "pg_catalog.hmac"),
491    (12004, "pg_catalog.hmac"),
492    (16386, "pg_catalog.ceil"),
493    (16387, "concat_agg"),
494    (16388, "csv_extract"),
495    (16389, "current_timestamp"),
496    (16390, "pg_catalog.floor"),
497    (16392, "list_append"),
498    (16393, "list_cat"),
499    (16394, "list_length_max"),
500    (16395, "list_length"),
501    (16396, "list_n_layers"),
502    (16397, "list_prepend"),
503    (16398, "pg_catalog.max"),
504    (16399, "pg_catalog.min"),
505    (16400, "mz_unsafe.mz_all"),
506    (16401, "mz_unsafe.mz_any"),
507    (16403, "mz_unsafe.mz_avg_promotion_internal_v1"),
508    (16404, "mz_unsafe.mz_avg_promotion_internal_v1"),
509    (16405, "mz_unsafe.mz_avg_promotion_internal_v1"),
510    (16407, "mz_environment_id"),
511    (16409, "mz_logical_timestamp"),
512    (16410, "mz_internal.mz_render_typmod"),
513    (16411, "mz_version"),
514    (16412, "regexp_extract"),
515    (16413, "repeat_row"),
516    (16414, "pg_catalog.round"),
517    (16416, "mz_catalog.unnest"),
518    (16434, "mz_unsafe.mz_sleep"),
519    (16435, "mz_internal.mz_session_id"),
520    (16436, "mz_uptime"),
521    (16440, "mz_row_size"),
522    (16441, "pg_catalog.max"),
523    (16442, "pg_catalog.min"),
524    (16443, "mz_unsafe.mz_avg_promotion_internal_v1"),
525    (16444, "list_agg"),
526    (16445, "mz_unsafe.mz_error_if_null"),
527    (16446, "pg_catalog.date_bin"),
528    (16447, "pg_catalog.date_bin"),
529    (16448, "list_remove"),
530    (16449, "pg_catalog.date_bin_hopping"),
531    (16450, "pg_catalog.date_bin_hopping"),
532    (16451, "pg_catalog.date_bin_hopping"),
533    (16452, "pg_catalog.date_bin_hopping"),
534    (16453, "mz_internal.mz_type_name"),
535    (16456, "map_length"),
536    (16457, "mz_unsafe.mz_panic"),
537    (16458, "mz_version_num"),
538    (16459, "pg_catalog.trunc"),
539    (16496, "pg_catalog.max"),
540    (16497, "pg_catalog.max"),
541    (16498, "pg_catalog.max"),
542    (16499, "pg_catalog.min"),
543    (16500, "pg_catalog.min"),
544    (16501, "pg_catalog.min"),
545    (16502, "pg_catalog.sum"),
546    (16503, "pg_catalog.sum"),
547    (16504, "pg_catalog.sum"),
548    (16505, "pg_catalog.avg"),
549    (16506, "pg_catalog.avg"),
550    (16507, "pg_catalog.avg"),
551    (16508, "pg_catalog.mod"),
552    (16509, "pg_catalog.mod"),
553    (16510, "pg_catalog.mod"),
554    (16511, "pg_catalog.stddev"),
555    (16512, "pg_catalog.stddev"),
556    (16513, "pg_catalog.stddev"),
557    (16514, "pg_catalog.stddev_pop"),
558    (16515, "pg_catalog.stddev_pop"),
559    (16516, "pg_catalog.stddev_pop"),
560    (16517, "pg_catalog.stddev_samp"),
561    (16518, "pg_catalog.stddev_samp"),
562    (16519, "pg_catalog.stddev_samp"),
563    (16520, "pg_catalog.variance"),
564    (16521, "pg_catalog.variance"),
565    (16522, "pg_catalog.variance"),
566    (16523, "pg_catalog.var_pop"),
567    (16524, "pg_catalog.var_pop"),
568    (16525, "pg_catalog.var_pop"),
569    (16526, "pg_catalog.var_samp"),
570    (16527, "pg_catalog.var_samp"),
571    (16528, "pg_catalog.var_samp"),
572    (16550, "mz_unsafe.mz_avg_promotion_internal_v1"),
573    (16551, "mz_unsafe.mz_avg_promotion_internal_v1"),
574    (16560, "mz_now"),
575    (16561, "pg_catalog.max"),
576    (16562, "pg_catalog.min"),
577    (16563, "pg_catalog.date"),
578    (16564, "pg_catalog.ceiling"),
579    (16565, "uuid_generate_v5"),
580    (16570, "mz_internal.make_mz_aclitem"),
581    (16571, "mz_internal.mz_aclitem_grantor"),
582    (16572, "mz_internal.mz_aclitem_grantee"),
583    (16573, "mz_internal.mz_aclitem_privileges"),
584    (16574, "mz_internal.is_rbac_enabled"),
585    (16575, "mz_internal.mz_acl_item_contains_privilege"),
586    (16576, "mz_internal.mz_validate_privileges"),
587    (16577, "mz_internal.mz_role_oid"),
588    (16578, "mz_internal.mz_minimal_name_qualification"),
589    (16581, "mz_internal.mz_resolve_object_name"),
590    (16582, "mz_internal.mz_global_id_to_name"),
591    (16584, "pg_catalog.parse_ident"),
592    (16585, "mz_internal.mz_database_oid"),
593    (16586, "mz_internal.mz_schema_oid"),
594    (16587, "mz_catalog.has_cluster_privilege"),
595    (16588, "mz_catalog.has_cluster_privilege"),
596    (16589, "mz_catalog.has_cluster_privilege"),
597    (16591, "mz_catalog.has_connection_privilege"),
598    (16592, "mz_catalog.has_connection_privilege"),
599    (16593, "mz_catalog.has_connection_privilege"),
600    (16594, "mz_catalog.has_connection_privilege"),
601    (16595, "mz_catalog.has_connection_privilege"),
602    (16596, "mz_catalog.has_connection_privilege"),
603    (16597, "mz_catalog.has_secret_privilege"),
604    (16598, "mz_catalog.has_secret_privilege"),
605    (16599, "mz_catalog.has_secret_privilege"),
606    (16600, "mz_catalog.has_secret_privilege"),
607    (16601, "mz_catalog.has_secret_privilege"),
608    (16602, "mz_catalog.has_secret_privilege"),
609    (16603, "mz_internal.mz_normalize_object_name"),
610    (16604, "mz_catalog.datediff"),
611    (16605, "mz_catalog.datediff"),
612    (16606, "mz_catalog.datediff"),
613    (16607, "mz_catalog.datediff"),
614    (16608, "mz_catalog.has_system_privilege"),
615    (16609, "mz_catalog.has_system_privilege"),
616    (16610, "mz_catalog.has_system_privilege"),
617    (16611, "try_parse_monotonic_iso8601_timestamp"),
618    (16612, "mz_internal.mz_role_oid_memberships"),
619    (16613, "mz_internal.mz_validate_role_privilege"),
620    (16614, "mz_is_superuser"),
621    (16615, "mz_internal.mz_format_privileges"),
622    (16616, "mz_internal.aclitem_grantor"),
623    (16617, "mz_internal.aclitem_grantee"),
624    (16618, "mz_internal.aclitem_privileges"),
625    (16619, "mz_internal.mz_aclexplode"),
626    (16620, "mz_catalog.has_role"),
627    (16621, "mz_catalog.has_role"),
628    (16622, "mz_catalog.has_role"),
629    (16623, "mz_catalog.has_role"),
630    (16624, "mz_catalog.has_role"),
631    (16625, "mz_catalog.has_role"),
632    (16626, "mz_unsafe.mz_avg_promotion"),
633    (16627, "mz_unsafe.mz_avg_promotion"),
634    (16628, "mz_unsafe.mz_avg_promotion"),
635    (16629, "mz_unsafe.mz_avg_promotion"),
636    (16630, "mz_unsafe.mz_avg_promotion"),
637    (16631, "mz_unsafe.mz_avg_promotion"),
638    (16632, "mz_unsafe.mz_avg_promotion"),
639    (16633, "mz_unsafe.mz_avg_promotion"),
640    (16634, "mz_unsafe.mz_avg_promotion"),
641    (16635, "mz_catalog.avg_internal_v1"),
642    (16636, "mz_catalog.avg_internal_v1"),
643    (16637, "mz_catalog.avg_internal_v1"),
644    (16638, "mz_catalog.avg_internal_v1"),
645    (16639, "mz_catalog.avg_internal_v1"),
646    (16640, "mz_catalog.avg_internal_v1"),
647    (16641, "mz_catalog.avg_internal_v1"),
648    (16642, "mz_catalog.avg_internal_v1"),
649    (16643, "mz_catalog.avg_internal_v1"),
650    (16644, "mz_catalog.constant_time_eq"),
651    (16645, "mz_catalog.constant_time_eq"),
652    (16646, "timezone_offset"),
653    (16647, "mz_catalog.pretty_sql"),
654    (16648, "mz_catalog.pretty_sql"),
655    (16649, "mz_internal.mz_name_rank"),
656    (16650, "mz_internal.mz_connection_oid"),
657    (16651, "mz_internal.mz_secret_oid"),
658    (16652, "map_build"),
659    (16653, "map_agg"),
660    (16654, "mz_catalog.unnest"),
661    (16655, "mz_internal.mz_normalize_schema_name"),
662    (16957, "current_catalog"),
663    (16958, "current_role"),
664    (16959, "user"),
665    (16987, "mz_catalog.crc32"),
666    (16988, "mz_catalog.crc32"),
667    (16989, "mz_catalog.kafka_murmur2"),
668    (16990, "mz_catalog.kafka_murmur2"),
669    (16991, "mz_catalog.seahash"),
670    (16992, "mz_catalog.seahash"),
671    (17069, "mz_internal.parse_catalog_id"),
672    (17070, "mz_internal.parse_catalog_privileges"),
673    (17073, "mz_internal.parse_catalog_create_sql"),
674    (17074, "mz_internal.redact_sql"),
675    (17075, "repeat_row_non_negative"),
676    (17086, "mz_session_role_memberships"),
677    (17090, "mz_internal.parse_catalog_acl_mode"),
678    (17093, "mz_unsafe.generate_series_unoptimized"),
679    (17094, "mz_unsafe.generate_series_unoptimized"),
680    (17100, "mz_internal.parse_catalog_audit_log_details"),
681    (17105, "mz_internal.parse_postgres_source_details"),
682    (17106, "mz_internal.parse_kafka_source_details"),
683    (17111, "mz_internal.parse_source_export_details"),
684    (17112, "mz_internal.parse_connection_details"),
685    (17113, "mz_aws_account_id"),
686    (17114, "mz_aws_external_id_prefix"),
687    (17115, "mz_aws_connection_role_arn"),
688    (17125, "mz_internal.parse_catalog_item_references"),
689    (17127, "mz_unsafe.mz_avg_promotion"),
690    (17128, "mz_unsafe.mz_avg_promotion_internal_v1"),
691    // END GENERATED
692];
693
694/// Returns the text that `regproc` OID `oid` renders as, or `None` when no
695/// builtin function has that OID.
696///
697/// PostgreSQL renders an unmatched OID in decimal and OID 0 as `-`. Neither is
698/// in [`NAMES`], so callers handle both.
699pub fn name(oid: u32) -> Option<&'static str> {
700    NAMES
701        .binary_search_by_key(&oid, |(entry_oid, _)| *entry_oid)
702        .ok()
703        .map(|i| NAMES[i].1)
704}
705
706/// Returns the OID whose [`NAMES`] rendering is `name`.
707///
708/// `Err` distinguishes no match from an ambiguous one. A rendering is ambiguous
709/// when several overloads share it, in which case PostgreSQL's `regprocin`
710/// likewise refuses to resolve it. The scan is linear because reads of this
711/// direction only happen while decoding text-format input, which is rare
712/// compared to encoding.
713pub fn oid(name: &str) -> Result<u32, NameLookupError> {
714    let mut found = None;
715    for (entry_oid, entry_name) in NAMES {
716        if *entry_name == name {
717            if found.is_some() {
718                return Err(NameLookupError::Ambiguous);
719            }
720            found = Some(*entry_oid);
721        }
722    }
723    found.ok_or(NameLookupError::NotFound)
724}
725
726/// Why [`oid`] could not resolve a name.
727#[derive(Debug, Clone, Copy, PartialEq, Eq)]
728pub enum NameLookupError {
729    /// No builtin function renders as the given name.
730    NotFound,
731    /// Several builtin functions render as the given name.
732    Ambiguous,
733}