pg_dump does not honor namespaces when functions are used in index
| От | Jean-Baptiste Quenot |
|---|---|
| Тема | pg_dump does not honor namespaces when functions are used in index |
| Дата | |
| Msg-id | AANLkTinLbpmO1YnK2i5k3lYS9BZWASl8Uiv81wH_P12A@mail.gmail.com обсуждение исходный текст |
| Ответы |
Re: pg_dump does not honor namespaces when functions are
used in index
|
| Список | 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
В списке pgsql-hackers по дате отправления: