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.