Обсуждение: BUG #5390: pg_dump does not check/include additional schema dependencies when writing schema/search path

Поиск
Список
Период
Сортировка
The following bug has been logged online:

Bug reference:      5390
Logged by:          Timothy Seever
Email address:      tim.seever@gmail.com
PostgreSQL version: 8.3.5, others
Operating system:   Linux/RHEL5.2
Description:        pg_dump does not check/include additional schema
dependencies when writing schema/search path
Details:

To reproduce:

1. Create schema A
2. Create schema B
3. Create function in schema A which depends on something in schema B
without specifying it (i.e. the connected user has B included in the
search_path, and the function A.xyz() has something like   val := yyz();
where yyz is actually B.yyz.
4. This works properly in place due to the search path...  however upon
dumping/restoring, pg_dump only specifies the single schema+public before
each section, so it will fail to add A.xyz()/view/etc leading to cascaded
missing items.
"Timothy Seever" <tim.seever@gmail.com> writes:
> 1. Create schema A
> 2. Create schema B
> 3. Create function in schema A which depends on something in schema B
> without specifying it (i.e. the connected user has B included in the
> search_path, and the function A.xyz() has something like   val := yyz();
> where yyz is actually B.yyz.
> 4. This works properly in place due to the search path...  however upon
> dumping/restoring, pg_dump only specifies the single schema+public before
> each section, so it will fail to add A.xyz()/view/etc leading to cascaded
> missing items.

This does not matter because the script is only defining the function
not executing it.  Or are you speaking of an index function or something
like that?  In that case it really behooves you to make the function not
so sensitive to the caller's search path.  There is no way that pg_dump
can know that some function will only work as desired if called with a
particular search_path setting.

            regards, tom lane