Re: Should `pg_upgrade --check` check relation filenodes are present?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Craig de Stigter <craig(dot)destigter(at)koordinates(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Should `pg_upgrade --check` check relation filenodes are present?
Date: 2017-01-31 22:24:18
Message-ID: 32222.1485901458@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Craig de Stigter <craig(dot)destigter(at)koordinates(dot)com> writes:
> We attempted to pg_upgrade a database on a replication slave, and got the
> error:

> error while creating link for relation "<schema>.<tablename>"
> ("/var/lib/postgresql-ext/PG_9.2_201204301/19171/141610397" to
> "/var/lib/postgresql-ext/PG_9.5_201510051/16401/9911696"): No such file or
> directory
>>
>>
>>
> The missing table turned out to be an unlogged table, and the data file for
> it was not present on the slave machine. That's reasonable. In our case we
> are able to start over from a snapshot and drop all the unlogged tables
> before trying again.

> However, this problem was not caught by the `--check` command. I'm looking
> at the source code and it appears that pg_upgrade does not attempt to
> verify relation filenodes actually exist before proceeding, whether using
> --check or not.

> Should it? I assume the reasoning is because it would take a long time and
> perhaps the benefit of doing so would be minimal?

This failure would occur before we'd done anything irretrievable to the
source DB, so I'm not all that concerned. You could have just re-initdb'd
the target directory and started over (after dropping the unlogged tables
of course).

regards, tom lane

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2017-01-31 22:45:36 Re: Patch: Write Amplification Reduction Method (WARM)
Previous Message Stephen Frost 2017-01-31 22:24:17 Re: Patch: Write Amplification Reduction Method (WARM)