diff options
Diffstat (limited to 'src/pl')
-rw-r--r-- | src/pl/plperl/expected/plperl_init.out | 28 | ||||
-rw-r--r-- | src/pl/plperl/sql/plperl_init.sql | 33 |
2 files changed, 59 insertions, 2 deletions
diff --git a/src/pl/plperl/expected/plperl_init.out b/src/pl/plperl/expected/plperl_init.out index 133828e9f38..4b7e9254197 100644 --- a/src/pl/plperl/expected/plperl_init.out +++ b/src/pl/plperl/expected/plperl_init.out @@ -1,4 +1,4 @@ --- test plperl.on_plperl_init errors are fatal +-- test plperl.on_plperl_init -- This test tests setting on_plperl_init after loading plperl LOAD 'plperl'; SET SESSION plperl.on_plperl_init = ' system("/nonesuch"); '; @@ -12,3 +12,29 @@ DO $$ warn 42 $$ language plperl; ERROR: 'system' trapped by operation mask at line 1. CONTEXT: while executing plperl.on_plperl_init PL/Perl anonymous code block +-- +-- Reconnect (to unload plperl), then test setting on_plperl_init +-- as an unprivileged user +-- +\c - +CREATE ROLE regress_plperl_user; +SET ROLE regress_plperl_user; +-- this succeeds, since the GUC isn't known yet +SET SESSION plperl.on_plperl_init = 'test'; +RESET ROLE; +LOAD 'plperl'; +WARNING: permission denied to set parameter "plperl.on_plperl_init" +SHOW plperl.on_plperl_init; + plperl.on_plperl_init +----------------------- + +(1 row) + +DO $$ warn 42 $$ language plperl; +WARNING: 42 at line 1. +-- now we won't be allowed to set it in the first place +SET ROLE regress_plperl_user; +SET SESSION plperl.on_plperl_init = 'test'; +ERROR: permission denied to set parameter "plperl.on_plperl_init" +RESET ROLE; +DROP ROLE regress_plperl_user; diff --git a/src/pl/plperl/sql/plperl_init.sql b/src/pl/plperl/sql/plperl_init.sql index 4ebf3f86eb7..2aa38110334 100644 --- a/src/pl/plperl/sql/plperl_init.sql +++ b/src/pl/plperl/sql/plperl_init.sql @@ -1,4 +1,4 @@ --- test plperl.on_plperl_init errors are fatal +-- test plperl.on_plperl_init -- This test tests setting on_plperl_init after loading plperl LOAD 'plperl'; @@ -8,3 +8,34 @@ SET SESSION plperl.on_plperl_init = ' system("/nonesuch"); '; SHOW plperl.on_plperl_init; DO $$ warn 42 $$ language plperl; + +-- +-- Reconnect (to unload plperl), then test setting on_plperl_init +-- as an unprivileged user +-- + +\c - + +CREATE ROLE regress_plperl_user; + +SET ROLE regress_plperl_user; + +-- this succeeds, since the GUC isn't known yet +SET SESSION plperl.on_plperl_init = 'test'; + +RESET ROLE; + +LOAD 'plperl'; + +SHOW plperl.on_plperl_init; + +DO $$ warn 42 $$ language plperl; + +-- now we won't be allowed to set it in the first place +SET ROLE regress_plperl_user; + +SET SESSION plperl.on_plperl_init = 'test'; + +RESET ROLE; + +DROP ROLE regress_plperl_user; |