From: | Jean-Baptiste Quenot <jbq(at)caraldi(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | pg_dump does not honor namespaces when functions are used in index |
Date: | 2010-06-17 11:31:53 |
Message-ID: | AANLkTinLbpmO1YnK2i5k3lYS9BZWASl8Uiv81wH_P12A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Dear hackers,
I have a pretty nasty problem to submit to your careful scrutiny.
Please consider the following piece of SQL code:
CREATE SCHEMA bar;
SET search_path = bar;
CREATE FUNCTION bar() RETURNS text AS $$
BEGIN
RETURN 'foobar';
END
$$ LANGUAGE plpgsql IMMUTABLE;
CREATE SCHEMA foo;
SET search_path = foo;
CREATE FUNCTION foo() RETURNS text AS $$
BEGIN
RETURN bar();
END
$$ LANGUAGE plpgsql IMMUTABLE;
SET search_path = public;
CREATE TABLE foobar (d text);
insert into foobar (d) values ('foobar');
set search_path = public, foo, bar;
CREATE INDEX foobar_d on foobar using btree(foo());
Run this on a newly created database, and dump it with pg_dump. You'll
notice that the dump is unusable. Creating a new database from this
dump will trigger the following error:
ERROR: function bar() does not exist
LINE 1: SELECT bar()
^
HINT: No function matches the given name and argument types. You
might need to add explicit type casts.
QUERY: SELECT bar()
CONTEXT: PL/pgSQL function "foo" line 2 at RETURN
How can we fix this?
--
Jean-Baptiste Quenot
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2010-06-17 11:34:40 | Re: Should the JSON datatype be a specialization of text? |
Previous Message | Felde Norbert | 2010-06-17 08:39:32 | DB crash SOS |