Casts in foreign schemas

From: Ben Morrow <ben(at)morrow(dot)me(dot)uk>
To: pgsql-sql(at)postgresql(dot)org
Subject: Casts in foreign schemas
Date: 2010-06-08 14:33:27
Message-ID: 20100608143327.GA67823@osiris.mauzo.dyndns.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Is this behaviour expected? (This is with 8.4.3 on FreeBSD.)

create schema one;
set search_path to one;

create type foo as (x integer);
create function foo (integer) returns foo
language plpgsql as $$
declare
y foo;
begin
y.x = $1;
return y;
end
$$;
create cast (integer as foo) with function foo (integer);

grant usage on schema one to public;
grant execute on function foo (integer) to public;

create schema two;

-- reconnect as a different user

set search_path to two;
select 3::one.foo;
ERROR: type "foo" does not exist
CONTEXT: compilation of PL/pgSQL function "foo" near line 2

set search_path to two, one;
select 3::foo;
foo
-----
(3)
(1 row)

My understanding of things was that PL/pgSQL functions were compiled at
CREATE FUNCTION time, using the SEARCH_PATH currently in effect. Is that
wrong? Is there some GRANT I'm missing that will make this work?

Ben

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2010-06-08 14:50:42 Re: Casts in foreign schemas
Previous Message reyman 2010-06-07 22:25:42 Re: Multiple subquery with insert into command ?