Open
Description
isql -term ! -user dbo
create database 't.fdb' user dbo!
create or alter function oi returns varchar(15) sql security invoker as
begin return rdb$get_context('SYSTEM', 'EFFECTIVE_USER'); end!
create or alter function od returns varchar(15) sql security definer as
begin return rdb$get_context('SYSTEM', 'EFFECTIVE_USER'); end!
create or alter procedure oi returns (o varchar(15)) sql security invoker as
begin o = rdb$get_context('SYSTEM', 'EFFECTIVE_USER'); end!
create or alter procedure od returns (o varchar(15)) sql security definer as
begin o = rdb$get_context('SYSTEM', 'EFFECTIVE_USER'); end!
grant execute on function oi to public!
grant execute on function od to public!
grant execute on procedure oi to public!
grant execute on procedure od to public!
isql t.fdb -term ! -user u1
-- Correct: U1
execute procedure oi!
-- Correct: DBO
execute procedure od!
-- Correct: U1
select oi() from rdb$database!
-- Incorrect: U1
select od() from rdb$database!