On May 12, 2008, at 4:02 PM, Chris Saldanha wrote:
> Hi,
>
> We'd like to ship PostgreSQL as part of a product that runs on both
> PPC and
> Intel Macs, but the database files are tied to the build settings and
> endianness of the computer that the database was initialized on.
>
> Is there any way to cause the server to modify the database files in-
> place
> for endianness issues? I know that a backup-then-restore process
> would fix
> the data, but on Macs, many users use Apple's computer migration
> tools to
> copy all their programs/data/users/etc.. to new Macs.
>
> If the user moves from a PPC to an Intel Mac, for instance, the
> database
> would be copied over, but the data would be for the old computer,
> and the
> database won't start. The backup/restore process is hard for end
> users,
> since they don't understand it -- and they won't contact us until
> after the
> migration is done, and often not until they've discarded the old
> computer.
>
> It would be nice if there was a way to recover the data from the
> existing
> database files.
>
> I found this old thread on a related topic, and it seems that this
> cannot be
> done...
> http://archives.postgresql.org/pgsql-general/2008-01/msg00635.php
You know that you don't have to compile postgresql as "Universal",
right? If you have separate PPC and Intel versions (not lipo'd
together), then, presumably, you should be able to figure out which
one needs to run. The PPC postgresql would then run on the Macintel
under Rosetta and you would then have control to proceed with an
automatic dump/restore. However, this would not work for someone
moving the database from an Intel machine to a PPC machine.
Postgresql is simply not well-suited for such uncontrolled
environments. What happens when you upgrade postgresql? Do you then
ship with 4 version of the db (Intel/PPC * 8.2/83)? Perhaps you should
dump all the non-transient data whenever the application is shut down
(in anticipation of an upgrade)?
Cheers,
M