Discussion:
restoring large objects
(too old to reply)
Marion McKelvie
2004-04-06 12:02:35 UTC
Permalink
Please can anyone confirm (or otherwise) the situation with restoring large
objects?

I am running with 7.1.2 (I know it's old, but I don't have a lot of choice
given the application running on it), and have dumped the database with
the -b option. However, the restoration process generates new ids for the
large objects which means the link between the data table referencing them
and the content of pg_largeobject is lost. I have seen a reference in the
list archives to this being a bug, but can not find any reference to a
workround or resolution. Does anyone know if there is one?

I have a separate newer installation on 7.3.4. Is this still a problem on
the newer versions?

Many thanks for any assistance

Marion


---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend
Tom Lane
2004-04-06 15:32:46 UTC
Permalink
Post by Marion McKelvie
I am running with 7.1.2 (I know it's old, but I don't have a lot of choice
given the application running on it), and have dumped the database with
the -b option. However, the restoration process generates new ids for the
large objects which means the link between the data table referencing them
and the content of pg_largeobject is lost.
pg_dump includes code in the dump that is supposed to update references
to match the new large object OIDs. Check into why that didn't work
for you. (One fairly likely possibility is that you stored the
references in the wrong type of column --- it has to be type "oid" or
"lo" or pg_dump won't think it needs updating.)

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to ***@postgresql.org so that your
message can get through to the mailing list cleanly
Marion McKelvie
2004-04-06 15:46:11 UTC
Permalink
Tom

Many thanks - you're right, the references are stored (by the application
using the database) in a column of type text. That presumably means the
only way I can get a reliably restorable dump is by writing something
myself... or adding an extra duplicate column which is of type oid... or
something which somehow tracks the old and new ids... an interesting
challenge!

Regards,

Marion

-----Original Message-----
From: Tom Lane [mailto:***@sss.pgh.pa.us]
Sent: 06 April 2004 16:33
To: Marion McKelvie
Cc: pgsql-***@postgresql.org
Subject: Re: [ADMIN] restoring large objects
Post by Marion McKelvie
I am running with 7.1.2 (I know it's old, but I don't have a lot of choice
given the application running on it), and have dumped the database with
the -b option. However, the restoration process generates new ids for the
large objects which means the link between the data table referencing them
and the content of pg_largeobject is lost.
pg_dump includes code in the dump that is supposed to update references
to match the new large object OIDs. Check into why that didn't work
for you. (One fairly likely possibility is that you stored the
references in the wrong type of column --- it has to be type "oid" or
"lo" or pg_dump won't think it needs updating.)

regards, tom lane


---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
joining column's datatypes do not match
Tom Lane
2004-04-07 06:07:57 UTC
Permalink
Post by Marion McKelvie
Many thanks - you're right, the references are stored (by the application
using the database) in a column of type text.
Yuck :-(. A possible solution is to dump the schema and data separately
(schema in a plain text dump, data in an -Fc or -Ft dump since plain
text doesn't support dumping LOs). Then manually edit the schema file
to change the column data type to "oid". Then load. I honestly am not
sure that this will work cleanly, but it's worth trying --- and if it
doesn't work, please let me know where it goes wrong.

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to ***@postgresql.org
Marion McKelvie
2004-04-07 07:43:50 UTC
Permalink
Good idea but I'm not sure if the application will then handle the changed
column type correctly. I'll give it a go and let you know...

-----Original Message-----
From: pgsql-admin-***@postgresql.org
[mailto:pgsql-admin-***@postgresql.org]On Behalf Of Tom Lane
Sent: 07 April 2004 07:08
To: Marion McKelvie
Cc: pgsql-***@postgresql.org
Subject: Re: [ADMIN] restoring large objects
Post by Marion McKelvie
Many thanks - you're right, the references are stored (by the application
using the database) in a column of type text.
Yuck :-(. A possible solution is to dump the schema and data separately
(schema in a plain text dump, data in an -Fc or -Ft dump since plain
text doesn't support dumping LOs). Then manually edit the schema file
to change the column data type to "oid". Then load. I honestly am not
sure that this will work cleanly, but it's worth trying --- and if it
doesn't work, please let me know where it goes wrong.

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to ***@postgresql.org


---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings
Marion McKelvie
2004-04-07 09:28:34 UTC
Permalink
Good news - the restore worked fine with the new column type and the
application worked fine once I'd added a duplicate column of type text. So
at least I have a workable recovery procedure!

Many thanks for your help.

Marion

-----Original Message-----
From: pgsql-admin-***@postgresql.org
[mailto:pgsql-admin-***@postgresql.org]On Behalf Of Marion McKelvie
Sent: 07 April 2004 08:44
To: pgsql-***@postgresql.org
Subject: Re: [ADMIN] restoring large objects



Good idea but I'm not sure if the application will then handle the changed
column type correctly. I'll give it a go and let you know...

-----Original Message-----
From: pgsql-admin-***@postgresql.org
[mailto:pgsql-admin-***@postgresql.org]On Behalf Of Tom Lane
Sent: 07 April 2004 07:08
To: Marion McKelvie
Cc: pgsql-***@postgresql.org
Subject: Re: [ADMIN] restoring large objects
Post by Marion McKelvie
Many thanks - you're right, the references are stored (by the application
using the database) in a column of type text.
Yuck :-(. A possible solution is to dump the schema and data separately
(schema in a plain text dump, data in an -Fc or -Ft dump since plain
text doesn't support dumping LOs). Then manually edit the schema file
to change the column data type to "oid". Then load. I honestly am not
sure that this will work cleanly, but it's worth trying --- and if it
doesn't work, please let me know where it goes wrong.

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to ***@postgresql.org


---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings


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

http://archives.postgresql.org

Loading...