-- This test script fails if debug_discard_caches is enabled, because cache -- flushes cause extra calls of the OAT hook in recomputeNamespacePath, -- resulting in more NOTICE messages than are in the expected output. SET debug_discard_caches = 0;
-- Creating privileges on a placeholder GUC should create entries in the -- pg_parameter_acl catalog which conservatively grant no privileges to public. CREATE ROLE regress_role_joe; GRANTSETON PARAMETER test_oat_hooks.user_var1 TO regress_role_joe; GRANTSETON PARAMETER test_oat_hooks.super_var1 TO regress_role_joe;
-- SET commands fire both the ProcessUtility_hook and the -- object_access_hook_str. Since the auditing GUC starts out false, we miss the -- initial "attempting" audit message from the ProcessUtility_hook, but we -- should thereafter see the audit messages. LOAD'test_oat_hooks'; SET test_oat_hooks.audit = true;
-- Creating privileges on an existent custom GUC should create precisely the -- right privileges, not overly conservative ones. GRANTSETON PARAMETER test_oat_hooks.user_var2 TO regress_role_joe; GRANTSETON PARAMETER test_oat_hooks.super_var2 TO regress_role_joe;
-- Granting multiple privileges on a parameter should be reported correctly to -- the OAT hook, but beware that WITH GRANT OPTION is not represented. GRANTSET, ALTER SYSTEM ON PARAMETER none.such TO regress_role_joe; GRANTSET, ALTER SYSTEM ON PARAMETER another.bogus TO regress_role_joe WITHGRANTOPTION;
-- Check when the hooks fire relative to dependency based abort of a drop DROP ROLE regress_role_joe;
-- Check the behavior of the hooks relative to do-nothing grants and revokes GRANTSETON PARAMETER maintenance_work_mem TO PUBLIC; REVOKESETON PARAMETER maintenance_work_mem FROM PUBLIC; REVOKEALTER SYSTEM ON PARAMETER maintenance_work_mem FROM PUBLIC;
-- Check the behavior of the hooks relative to unrecognized parameters GRANTALLON PARAMETER "none.such"TO PUBLIC;
-- Check relative to an operation that causes the catalog entry to be deleted REVOKEALLON PARAMETER "none.such"FROM PUBLIC;
-- Create objects for use in the test CREATE USER regress_test_user; CREATETABLE regress_test_table (t text); CREATEINDEX regress_test_table_t_idx ON regress_test_table (t); GRANTSELECTONTable regress_test_table TO public; CREATE FUNCTION regress_test_func (t text) RETURNS text AS $$ SELECT $1;
$$ LANGUAGE sql; GRANT EXECUTE ON FUNCTION regress_test_func (text) TO public;
-- Do a few things as superuser SELECT * FROM regress_test_table; SELECT regress_test_func('arg'); SET work_mem = 8192;
RESET work_mem; ALTER SYSTEM SET work_mem = 8192; ALTER SYSTEM RESET work_mem;
-- Do those same things as non-superuser SET SESSION AUTHORIZATION regress_test_user; SELECT * FROM regress_test_table; SELECT regress_test_func('arg'); SET work_mem = 8192;
RESET work_mem; ALTER SYSTEM SET work_mem = 8192; ALTER SYSTEM RESET work_mem;
SET test_oat_hooks.user_var1 = true; SET test_oat_hooks.super_var1 = true; ALTER SYSTEM SET test_oat_hooks.user_var1 = true; ALTER SYSTEM SET test_oat_hooks.super_var1 = true; SET test_oat_hooks.user_var2 = true; SET test_oat_hooks.super_var2 = true; ALTER SYSTEM SET test_oat_hooks.user_var2 = true; ALTER SYSTEM SET test_oat_hooks.super_var2 = true;
RESET SESSION AUTHORIZATION;
-- Turn off non-superuser permissions SET test_oat_hooks.deny_set_variable = true; SET test_oat_hooks.deny_alter_system = true; SET test_oat_hooks.deny_object_access = true; SET test_oat_hooks.deny_exec_perms = true; SET test_oat_hooks.deny_utility_commands = true;
-- Try again as non-superuser with permissions denied SET SESSION AUTHORIZATION regress_test_user; SELECT * FROM regress_test_table; SELECT regress_test_func('arg'); SET work_mem = 8192;
RESET work_mem; ALTER SYSTEM SET work_mem = 8192; ALTER SYSTEM RESET work_mem;
-- Clean up SET test_oat_hooks.audit = false; DROP ROLE regress_role_joe; -- fails REVOKEALL PRIVILEGES ON PARAMETER
none.such, another.bogus,
test_oat_hooks.user_var1, test_oat_hooks.super_var1,
test_oat_hooks.user_var2, test_oat_hooks.super_var2 FROM regress_role_joe; DROP ROLE regress_role_joe; DROP ROLE regress_test_user;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-08-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.