Обсуждение: BUG #4957: search_path and pg_dump -T switch

Поиск
Список
Период
Сортировка

BUG #4957: search_path and pg_dump -T switch

От
"Maxim.Boguk"
Дата:
The following bug has been logged online:

Bug reference:      4957
Logged by:          Maxim.Boguk
Email address:      maxim.boguk@gmail.com
PostgreSQL version: 8.3
Operating system:   Any
Description:        search_path and pg_dump -T switch
Details:

If table lies outside of database search path
pg_dump -T table will dump this table contents/structure.

(i found that bug when i creating custom backup plan for complicated db).

Test case:

empty DB:

pgsql@[local] postgres=#CREATE schema test;
CREATE SCHEMA
pgsql@[local] postgres=#CREATE TABLE test.test1 (id serial);
CREATE TABLE
pgsql@[local] postgres=#CREATE TABLE test2 (id serial);
CREATE TABLE
pgsql@[local] postgres=#INSERT into test.test1 values (1);
INSERT 0 1
pgsql@[local] postgres=#INSERT into test2 values (1);
INSERT 0 1

Now we have table test1 with one row outside of search_path and table test2
with one row inside of search path.

Now
pg_dump -F p -D -T test1 -a test_db | grep test1
will out:
INSERT INTO test1 (id) VALUES (1);

And
pg_dump -F p -D -T test2 -a test_db | grep test2
will out empty.

First result is wrong.

Re: BUG #4957: search_path and pg_dump -T switch

От
Tom Lane
Дата:
"Maxim.Boguk" <maxim.boguk@gmail.com> writes:
> Now we have table test1 with one row outside of search_path and table test2
> with one row inside of search path.

> Now
> pg_dump -F p -D -T test1 -a test_db | grep test1
> will out:
> INSERT INTO test1 (id) VALUES (1);

> And
> pg_dump -F p -D -T test2 -a test_db | grep test2
> will out empty.

> First result is wrong.

No, I don't believe it is.  The switch means "don't dump the table named
test1 as found in your search path".  So in this case it doesn't do
anything.  You could do "-T test.test1" or "-T *.test1" if you want to
suppress that table.

We could have pg_dump throw an error if -t or -T doesn't seem to refer
to any actual table, but I'm not sure that would make it more useful.
Particularly not with wild-card-pattern switches.

            regards, tom lane