postgresql/src/pl/plperl/expected/plperl_setup.out

67 lines
2.1 KiB
Plaintext

--
-- Install the plperl and plperlu extensions
--
-- Before going ahead with the to-be-tested installations, verify that
-- a non-superuser is allowed to install plperl (but not plperlu) when
-- suitable permissions have been granted.
CREATE USER regress_user1;
CREATE USER regress_user2;
SET ROLE regress_user1;
CREATE EXTENSION plperl; -- fail
ERROR: permission denied to create extension "plperl"
HINT: Must have CREATE privilege on current database to create this extension.
CREATE EXTENSION plperlu; -- fail
ERROR: permission denied to create extension "plperlu"
HINT: Must be superuser to create this extension.
RESET ROLE;
DO $$
begin
execute format('grant create on database %I to regress_user1',
current_database());
end;
$$;
SET ROLE regress_user1;
CREATE EXTENSION plperl;
CREATE EXTENSION plperlu; -- fail
ERROR: permission denied to create extension "plperlu"
HINT: Must be superuser to create this extension.
CREATE FUNCTION foo1() returns int language plperl as '1;';
SELECT foo1();
foo1
------
1
(1 row)
-- Should be able to change privileges on the language
revoke all on language plperl from public;
SET ROLE regress_user2;
CREATE FUNCTION foo2() returns int language plperl as '2;'; -- fail
ERROR: permission denied for language plperl
SET ROLE regress_user1;
grant usage on language plperl to regress_user2;
SET ROLE regress_user2;
CREATE FUNCTION foo2() returns int language plperl as '2;';
SELECT foo2();
foo2
------
2
(1 row)
SET ROLE regress_user1;
-- Should be able to drop the extension, but not the language per se
DROP LANGUAGE plperl CASCADE;
ERROR: cannot drop language plperl because extension plperl requires it
HINT: You can drop extension plperl instead.
DROP EXTENSION plperl CASCADE;
NOTICE: drop cascades to 2 other objects
DETAIL: drop cascades to function foo1()
drop cascades to function foo2()
-- Clean up
RESET ROLE;
DROP OWNED BY regress_user1;
DROP USER regress_user1;
DROP USER regress_user2;
-- Now install the versions that will be used by subsequent test scripts.
CREATE EXTENSION plperl;
CREATE EXTENSION plperlu;