OIDs depending data -- how to dump/restore?
Hi all,
I have several databases here which I would like to update
from 8.2 to 8.4, which in turn requires a dump/restore.
However, the databases are OIDs depending, so, some values
depend on OIDs in other tables.
AFAIK the dump/restore does not rebuild the original OID
values, so all relations built accross OIDs fail.
(1)
Is there a way to keep the original OID values somehow?
(2)
If I need to go the long way and replace the OIDs with
SERIALs first, updating all relations to it etc: Would a
dump/restore then restore the original values in a SERIAL
column?
Thank You
Felix
On 14/03/2010 16:21, fkater@googlemail.com wrote:
(2)
If I need to go the long way and replace the OIDs with
SERIALs first, updating all relations to it etc: Would a
dump/restore then restore the original values in a SERIAL
column?
So-called SERIAL types are actually just integer columns which take
nextval('some_sequence') as their DEFAULT, so yes - if you first replace
your OIDs with serials, the values will still be there after a dump/restore.
This is probably the more robust way to go long-term.
Ray.
--
Raymond O'Donnell :: Galway :: Ireland
rod@iol.ie
On Sunday 14 March 2010 9:21:06 am fkater@googlemail.com wrote:
Hi all,
I have several databases here which I would like to update
from 8.2 to 8.4, which in turn requires a dump/restore.However, the databases are OIDs depending, so, some values
depend on OIDs in other tables.AFAIK the dump/restore does not rebuild the original OID
values, so all relations built accross OIDs fail.(1)
Is there a way to keep the original OID values somehow?
From here:
http://www.postgresql.org/docs/8.4/interactive/app-pgdump.html
-o
--oids
Dump object identifiers (OIDs) as part of the data for every table. Use this
option if your application references the OID columns in some way (e.g., in a
foreign key constraint). Otherwise, this option should not be used.
(2)
If I need to go the long way and replace the OIDs with
SERIALs first, updating all relations to it etc: Would a
dump/restore then restore the original values in a SERIAL
column?Thank You
Felix
--
Adrian Klaver
adrian.klaver@gmail.com
Adrian Klaver:
AFAIK the dump/restore does not rebuild the original OID
values, so all relations built accross OIDs fail.(1)
Is there a way to keep the original OID values somehow?From here:
http://www.postgresql.org/docs/8.4/interactive/app-pgdump.html-o
--oidsDump object identifiers (OIDs) as part of the data for every table. Use this
option if your application references the OID columns in some way (e.g., in a
foreign key constraint). Otherwise, this option should not be used.
Thanks, but the problem is *restoring* OIDs afterwards,
isn't it? AFAIK the OIDs being restored are not the same
values as the ones being saved, so my internal relations to
those OIDs are all mixed up after a restore.
I'd be happy if someone told me that this was wrong. :-)
Felix
On Sunday 14 March 2010 1:09:37 pm fkater@googlemail.com wrote:
Adrian Klaver:
AFAIK the dump/restore does not rebuild the original OID
values, so all relations built accross OIDs fail.(1)
Is there a way to keep the original OID values somehow?From here:
http://www.postgresql.org/docs/8.4/interactive/app-pgdump.html-o
--oidsDump object identifiers (OIDs) as part of the data for every table.
Use this option if your application references the OID columns in some
way (e.g., in a foreign key constraint). Otherwise, this option should
not be used.Thanks, but the problem is *restoring* OIDs afterwards,
isn't it? AFAIK the OIDs being restored are not the same
values as the ones being saved, so my internal relations to
those OIDs are all mixed up after a restore.I'd be happy if someone told me that this was wrong. :-)
Be happy then. If you do not specify the -o switch the oids are created on
demand when the dump file is restored and you get the situation you describe.
By specifying the -o switch you tell pg_dump to preserve the OIDS used in the
original database. This is why the following is mentioned in the above
description:
"Use this option if your application references the OID columns in some
way (e.g., in a foreign key constraint)."
Felix
--
Adrian Klaver
adrian.klaver@gmail.com