pg_largeobject and oid mistmach after restore

Started by Jeremiah Jahnabout 22 years ago3 messagesgeneral
Jump to latest
#1Jeremiah Jahn
jeremiah@cs.earlham.edu

when I run the following two commands all of my OIDs for my blobs (about
5.5 million of them) no longer reference anything in pg_largeobject.
All of the loid values change.

the relevant output from pg_restore:
pg_restore: restoring data for table "BLOBS"
pg_restore: connecting to database "copa" as user "copa"
pg_restore: creating table for large object cross-references
pg_restore: restored 5575606 large objects

pg_dump -F c -v -b -o -U copa copa > judici.pgsql

pg_restore -C -d template1 -F c -v -U copa < europa/judici.pgsql

thanx,
-jj-

--
Jeremiah Jahn <jeremiah@cs.earlham.edu>

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jeremiah Jahn (#1)
Re: pg_largeobject and oid mistmach after restore

Jeremiah Jahn <jeremiah@cs.earlham.edu> writes:

when I run the following two commands all of my OIDs for my blobs (about
5.5 million of them) no longer reference anything in pg_largeobject.
All of the loid values change.

pg_dump/pg_restore do not (and cannot) arrange for large objects to have
the same OIDs after restore as they had before. What they do try to do
is update references to the large objects to have the new OID values.
Last I checked, they look in columns of types "oid" and "lo" (if "lo"
exists) for such references. Maybe you were engaging in some type
punning, like storing your references in int4 or int8 columns?

regards, tom lane

#3Jeremiah Jahn
jeremiah@cs.earlham.edu
In reply to: Tom Lane (#2)
Re: pg_largeobject and oid mistmach after restore

my column types are and have always been oid, but for some weird reason
when I dump and restore, I can't seem to reference my blobs anymore. I
have done this a zillion times, and just can't figure our what the heck
I'm doing wrong (this time).

On Mon, 2004-01-26 at 14:03, Tom Lane wrote:

Jeremiah Jahn <jeremiah@cs.earlham.edu> writes:

when I run the following two commands all of my OIDs for my blobs (about
5.5 million of them) no longer reference anything in pg_largeobject.
All of the loid values change.

pg_dump/pg_restore do not (and cannot) arrange for large objects to have
the same OIDs after restore as they had before. What they do try to do
is update references to the large objects to have the new OID values.
Last I checked, they look in columns of types "oid" and "lo" (if "lo"
exists) for such references. Maybe you were engaging in some type
punning, like storing your references in int4 or int8 columns?

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

--
Jeremiah Jahn <jeremiah@cs.earlham.edu>