Re: pg_upgrade bug found! - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: pg_upgrade bug found!
Date
Msg-id 201104082017.p38KHJ001561@momjian.us
Whole thread Raw
In response to Re: pg_upgrade bug found!  (Bruce Momjian <bruce@momjian.us>)
Responses Re: pg_upgrade bug found!  (Josh Berkus <josh@agliodbs.com>)
List pgsql-hackers
Bruce Momjian wrote:
> I am worried if I mention pg_dump that people will think pg_dump is
> broken, when in fact it is only the --binary-upgrade mode of pg_dump
> that is broken.
> 
> I adjusted the wording of the last paragraph slighly to be clearer, but
> hopefully not confuse.
> 
> We don't actually check the pg_dump version and I am hesistant to add
> such a check.
> 
> I was thinking of sending this out on Monday, but now think people might
> like to have the weekend to fix this so I am thinking of sending it to
> announce tonight, in 8 hours.  OK?

Updated version with IRC user suggestions:

---------------------------------------------------------------------------
       Critical Fix for pg_upgrade/pg_migrator Users       ---------------------------------------------

A bug has been discovered in all released versions of pg_upgrade and
(formerly) pg_migrator.  Anyone who has used pg_upgrade or pg_migrator
should take the following corrective actions as soon as possible.

This bug can cause queries to return the following error:
ERROR: could not access status of transaction ######DETAIL: could not open file "pg_clog/####": No such file or
directory=20

This error prevents access to very wide values stored in the database.
To prevent such failures users need to run the following psql script,
as the superuser, in all upgraded databases as soon as possible:
-- This script fixes data in pre-PG 9.0.4 and pre-8.4.8-- servers that were upgraded by pg_upgrade and pg_migrator.--
Runthe script using psql for every database in the cluster-- except 'template0', e.g.:--     psql -U postgres -a -f
pg_upgrade_fix.sqldbname-- This must be run from a writable directory.-- It will not lock any tables but will generate
I/O.--CREATETEMPORARY TABLE pg_upgrade_fix AS    SELECT 'VACUUM FREEZE pg_toast.' || c.relname || ';'    FROM
pg_classc, pg_namespace n    WHERE     c.relnamespace = n.oid AND        n.nspname = 'pg_toast' AND        c.relkind =
't'   ORDER by c.oid;\copy pg_upgrade_fix TO 'pg_upgrade_tmp.sql';\i pg_upgrade_tmp.sql
 

A fix will be included in upcoming Postgres releases 8.4.8 and 9.0.4.
These releases will remove the need for the above script by correctly
restoring all TOAST tables in the migrated databases.

2011-04-08

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + It's impossible for everything to be true. +


pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: WIP: Allow SQL-language functions to reference parameters by parameter name
Next
From: Noah Misch
Date:
Subject: Re: pg_upgrade bug found!