pg_upgrade incorrectly equates pg_default and database tablespace

Ants Aasma <ants@cybertec.at>

From: Ants Aasma <ants@cybertec.at>
To: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2012-03-22T12:55:32Z
Lists: pgsql-hackers

Attachments

Hi,

while working on a support case I stumbled upon a bug in pg_upgrade.
Upgrade fails with "No such file or directory" when a database is
moved to a non-default tablespace and contains a table that is moved
to pg_default. The cause seems to be that the following test
incorrectly equates empty spclocation with database tablespace:

tblspace = PQgetvalue(res, relnum, i_spclocation);
/* if no table tablespace, use the database tablespace */
if (strlen(tblspace) == 0)
    tblspace = dbinfo->db_tblspace;

Patch to fix this is attached.

Regards,
Ants Aasma
-- 
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt
Web: http://www.postgresql-support.de