Large object corruption during 'piped' pg_restore

From: Bosco Rama <postgres(at)boscorama(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Large object corruption during 'piped' pg_restore
Date: 2011-01-20 21:24:35
Message-ID: 4D38A813.2030605@boscorama.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers

Hi folks,

We've discovered (or possibly rediscovered?) a corruption when restoring large
objects.

If 'standard_conforming_strings = on' is set in our DB (which is required for
our app) then the piped restore method (e.g. pg_restore -O backup.dat | psql)
results in the large objects being corrupted.

However, when we use the DB-direct restoration method
(e.g. pg_restore -O -d dbname backup.dat) it works just fine.

If I take the output of the non-DB pg_restore command and edit it to set the
standard_conforming_strings off just prior to the large object creation and
then back on again immediately after the last one is created, it works.

It appears that the escaping of the strings used in the lowrite() functions
is not happening properly.

Is this something that is known and should just be avoided? Or is it something
that needs reporting?

TIA.

Bosco.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2011-01-20 21:41:45 Re: Large object corruption during 'piped' pg_restore
Previous Message Ralph Smith 2011-01-20 21:17:10 Re: A Query that works standalone but not in a f(x)

Browse pgsql-hackers by date

  From Date Subject
Next Message Tomas Vondra 2011-01-20 21:27:32 Re: estimating # of distinct values
Previous Message Tom Lane 2011-01-20 21:24:18 Re: ALTER TABLE ... REPLACE WITH