2 * PostgreSQL System Functions
4 * Copyright (c) 1996-2022, PostgreSQL Global Development Group
6 * src/backend/catalog/system_functions.sql
8 * This file redefines certain built-in functions that it's impractical
9 * to fully define in pg_proc.dat. In most cases that's because they use
10 * SQL-standard function bodies and/or default expressions. The node
11 * tree representations of those are too unreadable, platform-dependent,
12 * and changeable to want to deal with them manually. Hence, we put stub
13 * definitions of such functions into pg_proc.dat and then replace them
14 * here. The stub definitions would be unnecessary were it not that we'd
15 * like these functions to have stable OIDs, the same as other built-in
18 * This file also takes care of adjusting privileges for those functions
19 * that should not have the default public-EXECUTE privileges. (However,
20 * a small number of functions that exist mainly to underlie system views
21 * are dealt with in system_views.sql, instead.)
23 * Note: this file is read in single-user -j mode, which means that the
24 * command terminator is semicolon-newline-newline; whenever the backend
25 * sees that, it stops and executes what it's got. If you write a lot of
26 * statements without empty lines between, they'll all get quoted to you
27 * in any error message about one of them, so don't do that. Also, you
28 * cannot write a semicolon immediately followed by an empty line in a
29 * string literal (including a function body!) or a multiline comment.
33 CREATE OR REPLACE FUNCTION lpad(text, integer)
36 IMMUTABLE PARALLEL SAFE STRICT COST 1
37 RETURN lpad($1, $2, ' ');
39 CREATE OR REPLACE FUNCTION rpad(text, integer)
42 IMMUTABLE PARALLEL SAFE STRICT COST 1
43 RETURN rpad($1, $2, ' ');
45 CREATE OR REPLACE FUNCTION "substring"(text, text, text)
48 IMMUTABLE PARALLEL SAFE STRICT COST 1
49 RETURN substring($1, similar_to_escape($2, $3));
51 CREATE OR REPLACE FUNCTION bit_length(bit)
54 IMMUTABLE PARALLEL SAFE STRICT COST 1
57 CREATE OR REPLACE FUNCTION bit_length(bytea)
60 IMMUTABLE PARALLEL SAFE STRICT COST 1
61 RETURN octet_length($1) * 8;
63 CREATE OR REPLACE FUNCTION bit_length(text)
66 IMMUTABLE PARALLEL SAFE STRICT COST 1
67 RETURN octet_length($1) * 8;
69 CREATE OR REPLACE FUNCTION log(numeric)
72 IMMUTABLE PARALLEL SAFE STRICT COST 1
75 CREATE OR REPLACE FUNCTION log10(numeric)
78 IMMUTABLE PARALLEL SAFE STRICT COST 1
81 CREATE OR REPLACE FUNCTION round(numeric)
84 IMMUTABLE PARALLEL SAFE STRICT COST 1
87 CREATE OR REPLACE FUNCTION trunc(numeric)
90 IMMUTABLE PARALLEL SAFE STRICT COST 1
93 CREATE OR REPLACE FUNCTION numeric_pl_pg_lsn(numeric, pg_lsn)
96 IMMUTABLE PARALLEL SAFE STRICT COST 1
99 CREATE OR REPLACE FUNCTION path_contain_pt(path, point)
102 IMMUTABLE PARALLEL SAFE STRICT COST 1
103 RETURN on_ppath($2, $1);
105 CREATE OR REPLACE FUNCTION polygon(circle)
108 IMMUTABLE PARALLEL SAFE STRICT COST 1
109 RETURN polygon(12, $1);
111 CREATE OR REPLACE FUNCTION age(timestamptz)
114 STABLE PARALLEL SAFE STRICT COST 1
115 RETURN age(cast(current_date as timestamptz), $1);
117 CREATE OR REPLACE FUNCTION age(timestamp)
120 STABLE PARALLEL SAFE STRICT COST 1
121 RETURN age(cast(current_date as timestamp), $1);
123 CREATE OR REPLACE FUNCTION date_part(text, date)
124 RETURNS double precision
126 IMMUTABLE PARALLEL SAFE STRICT COST 1
127 RETURN date_part($1, cast($2 as timestamp));
129 CREATE OR REPLACE FUNCTION timestamptz(date, time)
132 STABLE PARALLEL SAFE STRICT COST 1
133 RETURN cast(($1 + $2) as timestamptz);
135 CREATE OR REPLACE FUNCTION timedate_pl(time, date)
138 IMMUTABLE PARALLEL SAFE STRICT COST 1
141 CREATE OR REPLACE FUNCTION timetzdate_pl(timetz, date)
144 IMMUTABLE PARALLEL SAFE STRICT COST 1
147 CREATE OR REPLACE FUNCTION interval_pl_time(interval, time)
150 IMMUTABLE PARALLEL SAFE STRICT COST 1
153 CREATE OR REPLACE FUNCTION interval_pl_date(interval, date)
156 IMMUTABLE PARALLEL SAFE STRICT COST 1
159 CREATE OR REPLACE FUNCTION interval_pl_timetz(interval, timetz)
162 IMMUTABLE PARALLEL SAFE STRICT COST 1
165 CREATE OR REPLACE FUNCTION interval_pl_timestamp(interval, timestamp)
168 IMMUTABLE PARALLEL SAFE STRICT COST 1
171 CREATE OR REPLACE FUNCTION interval_pl_timestamptz(interval, timestamptz)
174 STABLE PARALLEL SAFE STRICT COST 1
177 CREATE OR REPLACE FUNCTION integer_pl_date(integer, date)
180 IMMUTABLE PARALLEL SAFE STRICT COST 1
183 CREATE OR REPLACE FUNCTION "overlaps"(timestamptz, timestamptz,
184 timestamptz, interval)
187 STABLE PARALLEL SAFE COST 1
188 RETURN ($1, $2) overlaps ($3, ($3 + $4));
190 CREATE OR REPLACE FUNCTION "overlaps"(timestamptz, interval,
191 timestamptz, interval)
194 STABLE PARALLEL SAFE COST 1
195 RETURN ($1, ($1 + $2)) overlaps ($3, ($3 + $4));
197 CREATE OR REPLACE FUNCTION "overlaps"(timestamptz, interval,
198 timestamptz, timestamptz)
201 STABLE PARALLEL SAFE COST 1
202 RETURN ($1, ($1 + $2)) overlaps ($3, $4);
204 CREATE OR REPLACE FUNCTION "overlaps"(timestamp, timestamp,
208 IMMUTABLE PARALLEL SAFE COST 1
209 RETURN ($1, $2) overlaps ($3, ($3 + $4));
211 CREATE OR REPLACE FUNCTION "overlaps"(timestamp, interval,
212 timestamp, timestamp)
215 IMMUTABLE PARALLEL SAFE COST 1
216 RETURN ($1, ($1 + $2)) overlaps ($3, $4);
218 CREATE OR REPLACE FUNCTION "overlaps"(timestamp, interval,
222 IMMUTABLE PARALLEL SAFE COST 1
223 RETURN ($1, ($1 + $2)) overlaps ($3, ($3 + $4));
225 CREATE OR REPLACE FUNCTION "overlaps"(time, interval,
229 IMMUTABLE PARALLEL SAFE COST 1
230 RETURN ($1, ($1 + $2)) overlaps ($3, ($3 + $4));
232 CREATE OR REPLACE FUNCTION "overlaps"(time, time,
236 IMMUTABLE PARALLEL SAFE COST 1
237 RETURN ($1, $2) overlaps ($3, ($3 + $4));
239 CREATE OR REPLACE FUNCTION "overlaps"(time, interval,
243 IMMUTABLE PARALLEL SAFE COST 1
244 RETURN ($1, ($1 + $2)) overlaps ($3, $4);
246 CREATE OR REPLACE FUNCTION int8pl_inet(bigint, inet)
249 IMMUTABLE PARALLEL SAFE STRICT COST 1
252 CREATE OR REPLACE FUNCTION xpath(text, xml)
255 IMMUTABLE PARALLEL SAFE STRICT COST 1
256 RETURN xpath($1, $2, '{}'::text[]);
258 CREATE OR REPLACE FUNCTION xpath_exists(text, xml)
261 IMMUTABLE PARALLEL SAFE STRICT COST 1
262 RETURN xpath_exists($1, $2, '{}'::text[]);
264 CREATE OR REPLACE FUNCTION pg_sleep_for(interval)
267 PARALLEL SAFE STRICT COST 1
268 RETURN pg_sleep(extract(epoch from clock_timestamp() + $1) -
269 extract(epoch from clock_timestamp()));
271 CREATE OR REPLACE FUNCTION pg_sleep_until(timestamptz)
274 PARALLEL SAFE STRICT COST 1
275 RETURN pg_sleep(extract(epoch from $1) -
276 extract(epoch from clock_timestamp()));
278 CREATE OR REPLACE FUNCTION pg_relation_size(regclass)
281 PARALLEL SAFE STRICT COST 1
282 RETURN pg_relation_size($1, 'main');
284 CREATE OR REPLACE FUNCTION obj_description(oid, name)
287 STABLE PARALLEL SAFE STRICT
289 select description from pg_description
290 where objoid = $1 and
291 classoid = (select oid from pg_class where relname = $2 and
292 relnamespace = 'pg_catalog'::regnamespace) and
296 CREATE OR REPLACE FUNCTION shobj_description(oid, name)
299 STABLE PARALLEL SAFE STRICT
301 select description from pg_shdescription
302 where objoid = $1 and
303 classoid = (select oid from pg_class where relname = $2 and
304 relnamespace = 'pg_catalog'::regnamespace);
307 CREATE OR REPLACE FUNCTION obj_description(oid)
310 STABLE PARALLEL SAFE STRICT
312 select description from pg_description where objoid = $1 and objsubid = 0;
315 CREATE OR REPLACE FUNCTION col_description(oid, integer)
318 STABLE PARALLEL SAFE STRICT
320 select description from pg_description
321 where objoid = $1 and classoid = 'pg_class'::regclass and objsubid = $2;
324 CREATE OR REPLACE FUNCTION ts_debug(config regconfig, document text,
326 OUT description text,
328 OUT dictionaries regdictionary[],
329 OUT dictionary regdictionary,
333 STABLE PARALLEL SAFE STRICT
337 tt.description AS description,
338 parse.token AS token,
339 ARRAY ( SELECT m.mapdict::regdictionary
340 FROM pg_ts_config_map AS m
341 WHERE m.mapcfg = $1 AND m.maptokentype = parse.tokid
342 ORDER BY m.mapseqno )
344 ( SELECT mapdict::regdictionary
345 FROM pg_ts_config_map AS m
346 WHERE m.mapcfg = $1 AND m.maptokentype = parse.tokid
347 ORDER BY ts_lexize(mapdict, parse.token) IS NULL, m.mapseqno
350 ( SELECT ts_lexize(mapdict, parse.token)
351 FROM pg_ts_config_map AS m
352 WHERE m.mapcfg = $1 AND m.maptokentype = parse.tokid
353 ORDER BY ts_lexize(mapdict, parse.token) IS NULL, m.mapseqno
357 (SELECT cfgparser FROM pg_ts_config WHERE oid = $1 ), $2
360 (SELECT cfgparser FROM pg_ts_config WHERE oid = $1 )
362 WHERE tt.tokid = parse.tokid;
365 CREATE OR REPLACE FUNCTION ts_debug(document text,
367 OUT description text,
369 OUT dictionaries regdictionary[],
370 OUT dictionary regdictionary,
374 STABLE PARALLEL SAFE STRICT
376 SELECT * FROM ts_debug(get_current_ts_config(), $1);
379 CREATE OR REPLACE FUNCTION
380 pg_start_backup(label text, fast boolean DEFAULT false, exclusive boolean DEFAULT true)
381 RETURNS pg_lsn STRICT VOLATILE LANGUAGE internal AS 'pg_start_backup'
384 CREATE OR REPLACE FUNCTION pg_stop_backup (
385 exclusive boolean, wait_for_archive boolean DEFAULT true,
386 OUT lsn pg_lsn, OUT labelfile text, OUT spcmapfile text)
387 RETURNS SETOF record STRICT VOLATILE LANGUAGE internal as 'pg_stop_backup_v2'
390 CREATE OR REPLACE FUNCTION
391 pg_promote(wait boolean DEFAULT true, wait_seconds integer DEFAULT 60)
392 RETURNS boolean STRICT VOLATILE LANGUAGE INTERNAL AS 'pg_promote'
395 CREATE OR REPLACE FUNCTION
396 pg_terminate_backend(pid integer, timeout int8 DEFAULT 0)
397 RETURNS boolean STRICT VOLATILE LANGUAGE INTERNAL AS 'pg_terminate_backend'
400 -- legacy definition for compatibility with 9.3
401 CREATE OR REPLACE FUNCTION
402 json_populate_record(base anyelement, from_json json, use_json_as_text boolean DEFAULT false)
403 RETURNS anyelement LANGUAGE internal STABLE AS 'json_populate_record' PARALLEL SAFE;
405 -- legacy definition for compatibility with 9.3
406 CREATE OR REPLACE FUNCTION
407 json_populate_recordset(base anyelement, from_json json, use_json_as_text boolean DEFAULT false)
408 RETURNS SETOF anyelement LANGUAGE internal STABLE ROWS 100 AS 'json_populate_recordset' PARALLEL SAFE;
410 CREATE OR REPLACE FUNCTION pg_logical_slot_get_changes(
411 IN slot_name name, IN upto_lsn pg_lsn, IN upto_nchanges int, VARIADIC options text[] DEFAULT '{}',
412 OUT lsn pg_lsn, OUT xid xid, OUT data text)
415 VOLATILE ROWS 1000 COST 1000
416 AS 'pg_logical_slot_get_changes';
418 CREATE OR REPLACE FUNCTION pg_logical_slot_peek_changes(
419 IN slot_name name, IN upto_lsn pg_lsn, IN upto_nchanges int, VARIADIC options text[] DEFAULT '{}',
420 OUT lsn pg_lsn, OUT xid xid, OUT data text)
423 VOLATILE ROWS 1000 COST 1000
424 AS 'pg_logical_slot_peek_changes';
426 CREATE OR REPLACE FUNCTION pg_logical_slot_get_binary_changes(
427 IN slot_name name, IN upto_lsn pg_lsn, IN upto_nchanges int, VARIADIC options text[] DEFAULT '{}',
428 OUT lsn pg_lsn, OUT xid xid, OUT data bytea)
431 VOLATILE ROWS 1000 COST 1000
432 AS 'pg_logical_slot_get_binary_changes';
434 CREATE OR REPLACE FUNCTION pg_logical_slot_peek_binary_changes(
435 IN slot_name name, IN upto_lsn pg_lsn, IN upto_nchanges int, VARIADIC options text[] DEFAULT '{}',
436 OUT lsn pg_lsn, OUT xid xid, OUT data bytea)
439 VOLATILE ROWS 1000 COST 1000
440 AS 'pg_logical_slot_peek_binary_changes';
442 CREATE OR REPLACE FUNCTION pg_create_physical_replication_slot(
443 IN slot_name name, IN immediately_reserve boolean DEFAULT false,
444 IN temporary boolean DEFAULT false,
445 OUT slot_name name, OUT lsn pg_lsn)
449 AS 'pg_create_physical_replication_slot';
451 CREATE OR REPLACE FUNCTION pg_create_logical_replication_slot(
452 IN slot_name name, IN plugin name,
453 IN temporary boolean DEFAULT false,
454 IN twophase boolean DEFAULT false,
455 OUT slot_name name, OUT lsn pg_lsn)
459 AS 'pg_create_logical_replication_slot';
461 CREATE OR REPLACE FUNCTION
462 make_interval(years int4 DEFAULT 0, months int4 DEFAULT 0, weeks int4 DEFAULT 0,
463 days int4 DEFAULT 0, hours int4 DEFAULT 0, mins int4 DEFAULT 0,
464 secs double precision DEFAULT 0.0)
467 STRICT IMMUTABLE PARALLEL SAFE
470 CREATE OR REPLACE FUNCTION
471 jsonb_set(jsonb_in jsonb, path text[] , replacement jsonb,
472 create_if_missing boolean DEFAULT true)
475 STRICT IMMUTABLE PARALLEL SAFE
478 CREATE OR REPLACE FUNCTION
479 jsonb_set_lax(jsonb_in jsonb, path text[] , replacement jsonb,
480 create_if_missing boolean DEFAULT true,
481 null_value_treatment text DEFAULT 'use_json_null')
484 CALLED ON NULL INPUT IMMUTABLE PARALLEL SAFE
487 CREATE OR REPLACE FUNCTION
488 parse_ident(str text, strict boolean DEFAULT true)
491 STRICT IMMUTABLE PARALLEL SAFE
494 CREATE OR REPLACE FUNCTION
495 jsonb_insert(jsonb_in jsonb, path text[] , replacement jsonb,
496 insert_after boolean DEFAULT false)
499 STRICT IMMUTABLE PARALLEL SAFE
502 CREATE OR REPLACE FUNCTION
503 jsonb_path_exists(target jsonb, path jsonpath, vars jsonb DEFAULT '{}',
504 silent boolean DEFAULT false)
507 STRICT IMMUTABLE PARALLEL SAFE
508 AS 'jsonb_path_exists';
510 CREATE OR REPLACE FUNCTION
511 jsonb_path_match(target jsonb, path jsonpath, vars jsonb DEFAULT '{}',
512 silent boolean DEFAULT false)
515 STRICT IMMUTABLE PARALLEL SAFE
516 AS 'jsonb_path_match';
518 CREATE OR REPLACE FUNCTION
519 jsonb_path_query(target jsonb, path jsonpath, vars jsonb DEFAULT '{}',
520 silent boolean DEFAULT false)
523 STRICT IMMUTABLE PARALLEL SAFE
524 AS 'jsonb_path_query';
526 CREATE OR REPLACE FUNCTION
527 jsonb_path_query_array(target jsonb, path jsonpath, vars jsonb DEFAULT '{}',
528 silent boolean DEFAULT false)
531 STRICT IMMUTABLE PARALLEL SAFE
532 AS 'jsonb_path_query_array';
534 CREATE OR REPLACE FUNCTION
535 jsonb_path_query_first(target jsonb, path jsonpath, vars jsonb DEFAULT '{}',
536 silent boolean DEFAULT false)
539 STRICT IMMUTABLE PARALLEL SAFE
540 AS 'jsonb_path_query_first';
542 CREATE OR REPLACE FUNCTION
543 jsonb_path_exists_tz(target jsonb, path jsonpath, vars jsonb DEFAULT '{}',
544 silent boolean DEFAULT false)
547 STRICT STABLE PARALLEL SAFE
548 AS 'jsonb_path_exists_tz';
550 CREATE OR REPLACE FUNCTION
551 jsonb_path_match_tz(target jsonb, path jsonpath, vars jsonb DEFAULT '{}',
552 silent boolean DEFAULT false)
555 STRICT STABLE PARALLEL SAFE
556 AS 'jsonb_path_match_tz';
558 CREATE OR REPLACE FUNCTION
559 jsonb_path_query_tz(target jsonb, path jsonpath, vars jsonb DEFAULT '{}',
560 silent boolean DEFAULT false)
563 STRICT STABLE PARALLEL SAFE
564 AS 'jsonb_path_query_tz';
566 CREATE OR REPLACE FUNCTION
567 jsonb_path_query_array_tz(target jsonb, path jsonpath, vars jsonb DEFAULT '{}',
568 silent boolean DEFAULT false)
571 STRICT STABLE PARALLEL SAFE
572 AS 'jsonb_path_query_array_tz';
574 CREATE OR REPLACE FUNCTION
575 jsonb_path_query_first_tz(target jsonb, path jsonpath, vars jsonb DEFAULT '{}',
576 silent boolean DEFAULT false)
579 STRICT STABLE PARALLEL SAFE
580 AS 'jsonb_path_query_first_tz';
582 -- default normalization form is NFC, per SQL standard
583 CREATE OR REPLACE FUNCTION
584 "normalize"(text, text DEFAULT 'NFC')
587 STRICT IMMUTABLE PARALLEL SAFE
588 AS 'unicode_normalize_func';
590 CREATE OR REPLACE FUNCTION
591 is_normalized(text, text DEFAULT 'NFC')
594 STRICT IMMUTABLE PARALLEL SAFE
595 AS 'unicode_is_normalized';
598 -- The default permissions for functions mean that anyone can execute them.
599 -- A number of functions shouldn't be executable by just anyone, but rather
600 -- than use explicit 'superuser()' checks in those functions, we use the GRANT
601 -- system to REVOKE access to those functions at initdb time. Administrators
602 -- can later change who can access these functions, or leave them as only
603 -- available to superuser / cluster owner, if they choose.
606 REVOKE EXECUTE ON FUNCTION pg_start_backup(text, boolean, boolean) FROM public;
608 REVOKE EXECUTE ON FUNCTION pg_stop_backup() FROM public;
610 REVOKE EXECUTE ON FUNCTION pg_stop_backup(boolean, boolean) FROM public;
612 REVOKE EXECUTE ON FUNCTION pg_create_restore_point(text) FROM public;
614 REVOKE EXECUTE ON FUNCTION pg_switch_wal() FROM public;
616 REVOKE EXECUTE ON FUNCTION pg_wal_replay_pause() FROM public;
618 REVOKE EXECUTE ON FUNCTION pg_wal_replay_resume() FROM public;
620 REVOKE EXECUTE ON FUNCTION pg_rotate_logfile() FROM public;
622 REVOKE EXECUTE ON FUNCTION pg_reload_conf() FROM public;
624 REVOKE EXECUTE ON FUNCTION pg_current_logfile() FROM public;
626 REVOKE EXECUTE ON FUNCTION pg_current_logfile(text) FROM public;
628 REVOKE EXECUTE ON FUNCTION pg_promote(boolean, integer) FROM public;
630 REVOKE EXECUTE ON FUNCTION pg_stat_reset() FROM public;
632 REVOKE EXECUTE ON FUNCTION pg_stat_reset_shared(text) FROM public;
634 REVOKE EXECUTE ON FUNCTION pg_stat_reset_slru(text) FROM public;
636 REVOKE EXECUTE ON FUNCTION pg_stat_reset_single_table_counters(oid) FROM public;
638 REVOKE EXECUTE ON FUNCTION pg_stat_reset_single_function_counters(oid) FROM public;
640 REVOKE EXECUTE ON FUNCTION pg_stat_reset_replication_slot(text) FROM public;
642 REVOKE EXECUTE ON FUNCTION pg_stat_reset_subscription_worker(oid) FROM public;
644 REVOKE EXECUTE ON FUNCTION pg_stat_reset_subscription_worker(oid, oid) FROM public;
646 REVOKE EXECUTE ON FUNCTION lo_import(text) FROM public;
648 REVOKE EXECUTE ON FUNCTION lo_import(text, oid) FROM public;
650 REVOKE EXECUTE ON FUNCTION lo_export(oid, text) FROM public;
652 REVOKE EXECUTE ON FUNCTION pg_ls_logdir() FROM public;
654 REVOKE EXECUTE ON FUNCTION pg_ls_waldir() FROM public;
656 REVOKE EXECUTE ON FUNCTION pg_ls_archive_statusdir() FROM public;
658 REVOKE EXECUTE ON FUNCTION pg_ls_tmpdir() FROM public;
660 REVOKE EXECUTE ON FUNCTION pg_ls_tmpdir(oid) FROM public;
662 REVOKE EXECUTE ON FUNCTION pg_read_file(text) FROM public;
664 REVOKE EXECUTE ON FUNCTION pg_read_file(text,bigint,bigint) FROM public;
666 REVOKE EXECUTE ON FUNCTION pg_read_file(text,bigint,bigint,boolean) FROM public;
668 REVOKE EXECUTE ON FUNCTION pg_read_binary_file(text) FROM public;
670 REVOKE EXECUTE ON FUNCTION pg_read_binary_file(text,bigint,bigint) FROM public;
672 REVOKE EXECUTE ON FUNCTION pg_read_binary_file(text,bigint,bigint,boolean) FROM public;
674 REVOKE EXECUTE ON FUNCTION pg_replication_origin_advance(text, pg_lsn) FROM public;
676 REVOKE EXECUTE ON FUNCTION pg_replication_origin_create(text) FROM public;
678 REVOKE EXECUTE ON FUNCTION pg_replication_origin_drop(text) FROM public;
680 REVOKE EXECUTE ON FUNCTION pg_replication_origin_oid(text) FROM public;
682 REVOKE EXECUTE ON FUNCTION pg_replication_origin_progress(text, boolean) FROM public;
684 REVOKE EXECUTE ON FUNCTION pg_replication_origin_session_is_setup() FROM public;
686 REVOKE EXECUTE ON FUNCTION pg_replication_origin_session_progress(boolean) FROM public;
688 REVOKE EXECUTE ON FUNCTION pg_replication_origin_session_reset() FROM public;
690 REVOKE EXECUTE ON FUNCTION pg_replication_origin_session_setup(text) FROM public;
692 REVOKE EXECUTE ON FUNCTION pg_replication_origin_xact_reset() FROM public;
694 REVOKE EXECUTE ON FUNCTION pg_replication_origin_xact_setup(pg_lsn, timestamp with time zone) FROM public;
696 REVOKE EXECUTE ON FUNCTION pg_show_replication_origin_status() FROM public;
698 REVOKE EXECUTE ON FUNCTION pg_stat_file(text) FROM public;
700 REVOKE EXECUTE ON FUNCTION pg_stat_file(text,boolean) FROM public;
702 REVOKE EXECUTE ON FUNCTION pg_ls_dir(text) FROM public;
704 REVOKE EXECUTE ON FUNCTION pg_ls_dir(text,boolean,boolean) FROM public;
706 REVOKE EXECUTE ON FUNCTION pg_log_backend_memory_contexts(integer) FROM PUBLIC;
708 REVOKE EXECUTE ON FUNCTION pg_ls_logicalsnapdir() FROM PUBLIC;
710 REVOKE EXECUTE ON FUNCTION pg_ls_logicalmapdir() FROM PUBLIC;
712 REVOKE EXECUTE ON FUNCTION pg_ls_replslotdir(text) FROM PUBLIC;
715 -- We also set up some things as accessible to standard roles.
718 GRANT EXECUTE ON FUNCTION pg_ls_logdir() TO pg_monitor;
720 GRANT EXECUTE ON FUNCTION pg_ls_waldir() TO pg_monitor;
722 GRANT EXECUTE ON FUNCTION pg_ls_archive_statusdir() TO pg_monitor;
724 GRANT EXECUTE ON FUNCTION pg_ls_tmpdir() TO pg_monitor;
726 GRANT EXECUTE ON FUNCTION pg_ls_tmpdir(oid) TO pg_monitor;
728 GRANT EXECUTE ON FUNCTION pg_ls_logicalsnapdir() TO pg_monitor;
730 GRANT EXECUTE ON FUNCTION pg_ls_logicalmapdir() TO pg_monitor;
732 GRANT EXECUTE ON FUNCTION pg_ls_replslotdir(text) TO pg_monitor;
734 GRANT pg_read_all_settings TO pg_monitor;
736 GRANT pg_read_all_stats TO pg_monitor;
738 GRANT pg_stat_scan_tables TO pg_monitor;