PostgreSQL 8.1.0 RHEL / Debian incompatible packages

Started by Richard van den Bergover 20 years ago15 messagesgeneral
Jump to latest
#1Richard van den Berg
richard.vandenberg@trust-factory.com

I just tried to move my database files over from a CentOS 4.2 (RHEL AS 4
clone) machine to Debian 3.1. Unfortunately, the server complains:

2005-12-07 11:55:04 CET FATAL: database files are incompatible with server
2005-12-07 11:55:04 CET DETAIL: The database cluster was initialized
without HAVE_INT64_TIMESTAMP but the server was compiled with
HAVE_INT64_TIMESTAMP.
2005-12-07 11:55:04 CET HINT: It looks like you need to recompile or
initdb.

The message is clear enough, but I'm kinda disappointed because I am
using the official packages for both distribution:

RHEL 4:
postgresql-server-8.1.0-2PGDG.i686.rpm from
http://www.postgresql.org/ftp/binary/v8.1.0/linux/rpms/redhat/rhel-as-4/

Debian:
postgresql-8.1_8.1.0-3_i386.deb from
http://packages.debian.org/testing/misc/postgresql-8.1

It's too bad these two binary distributions are not compatible with
respect to the database files.

Is there a good reason that the official RPM on postgresql.org is not
build with HAVE_INT64_TIMESTAMP ? It would have been so nice if this
would have worked. :-/

Sincerely,

--
Richard van den Berg, CISSP
-------------------------------------------
Trust Factory B.V. | www.dna-portal.net
Bazarstraat 44a | www.trust-factory.com
2518AK The Hague | Phone: +31 70 3620684
The Netherlands | Fax : +31 70 3603009
-------------------------------------------

#2Devrim GÜNDÜZ
devrim@gunduz.org
In reply to: Richard van den Berg (#1)
Re: PostgreSQL 8.1.0 RHEL / Debian incompatible packages

Hi,

On Wed, 7 Dec 2005, Richard van den Berg wrote:

I just tried to move my database files over from a CentOS 4.2 (RHEL AS 4
clone) machine to Debian 3.1. Unfortunately, the server complains:

2005-12-07 11:55:04 CET FATAL: database files are incompatible with server
2005-12-07 11:55:04 CET DETAIL: The database cluster was initialized
without HAVE_INT64_TIMESTAMP but the server was compiled with
HAVE_INT64_TIMESTAMP.
2005-12-07 11:55:04 CET HINT: It looks like you need to recompile or
initdb.

The message is clear enough, but I'm kinda disappointed because I am
using the official packages for both distribution:

Well, this is because Debian packages are built
with --enable-integer-datetimes. However we don't build the RPMs with
that. This has been proposed before AFAIR, but it has been rejected.

So you should dump/reload I think, or rebuild our SRPM
with --enable-integer-datetimes enabled.

Regards,
--
The PostgreSQL Company - Command Prompt, Inc. 1.503.667.4564
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Managed Services, Shared and Dedicated Hosting
Co-Authors: plPHP, plPerlNG - http://www.commandprompt.com/

#3Martijn van Oosterhout
kleptog@svana.org
In reply to: Richard van den Berg (#1)
Re: PostgreSQL 8.1.0 RHEL / Debian incompatible packages

On Wed, Dec 07, 2005 at 12:14:05PM +0100, Richard van den Berg wrote:

I just tried to move my database files over from a CentOS 4.2 (RHEL AS 4
clone) machine to Debian 3.1. Unfortunately, the server complains:

2005-12-07 11:55:04 CET FATAL: database files are incompatible with server
2005-12-07 11:55:04 CET DETAIL: The database cluster was initialized
without HAVE_INT64_TIMESTAMP but the server was compiled with
HAVE_INT64_TIMESTAMP.
2005-12-07 11:55:04 CET HINT: It looks like you need to recompile or
initdb.

<snip>

Is there a good reason that the official RPM on postgresql.org is not
build with HAVE_INT64_TIMESTAMP ? It would have been so nice if this
would have worked. :-/

PostgreSQL does not guarentee any kind of portability of the datafiles
between major releases, different platforms and as you pointed out,
different compile options (including for example number of index keys,
blocksize). There are defaults but obviously they were compiled
differently. The exact option here is USE_INTEGER_DATETIMES.

Just be glad the server didn't startup and subsequently crash the first
time you read a timestamp value.

Have a nice day,
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/

Show quoted text

Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
tool for doing 5% of the work and then sitting around waiting for someone
else to do the other 95% so you can sue them.

#4Richard van den Berg
richard.vandenberg@trust-factory.com
In reply to: Martijn van Oosterhout (#3)
Re: PostgreSQL 8.1.0 RHEL / Debian incompatible packages

Martijn van Oosterhout wrote:

Just be glad the server didn't startup and subsequently crash the first
time you read a timestamp value.

I was pleasantly surprised that PostgreSQL gave such a detailed error
message. Even down to the compile option that was different, good job.

I'll just do a pg_dump / pg_restore cycle, as I was planning to do. Is
there any guarantee for compatability the pg_dump format? Say, can a
8.1.0 pg_dump made using a 64 bit Solaris SPARC binary be read using a
32 bit Intel Linux pg_restore 8.1.0 binary? ;-)

--
Richard van den Berg, CISSP
-------------------------------------------
Trust Factory B.V. | www.dna-portal.net
Bazarstraat 44a | www.trust-factory.com
2518AK The Hague | Phone: +31 70 3620684
The Netherlands | Fax : +31 70 3603009
-------------------------------------------

#5Devrim GÜNDÜZ
devrim@gunduz.org
In reply to: Richard van den Berg (#1)
Re: PostgreSQL 8.1.0 RHEL / Debian incompatible packages

Hi,
On Wed, 2005-12-07 at 12:14 +0100, Richard van den Berg wrote:

I just tried to move my database files over from a CentOS 4.2 (RHEL AS 4
clone) machine to Debian 3.1. Unfortunately, the server complains:

2005-12-07 11:55:04 CET FATAL: database files are incompatible with server
2005-12-07 11:55:04 CET DETAIL: The database cluster was initialized
without HAVE_INT64_TIMESTAMP but the server was compiled with
HAVE_INT64_TIMESTAMP.
2005-12-07 11:55:04 CET HINT: It looks like you need to recompile or
initdb.

The message is clear enough, but I'm kinda disappointed because I am
using the official packages for both distribution:

Well, this is because Debian packages are built
with --enable-integer-datetimes. However we don't build the RPMs with
that. This has been proposed before AFAIR, but it has been rejected.

Also I want to remind that these packages are not "official". Debian
packages and RPMs are built by different people.

So you should dump/reload I think, or rebuild our SRPM
with --enable-integer-datetimes enabled.

Regards,
--
The PostgreSQL Company - Command Prompt, Inc. 1.503.667.4564
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Managed Services, Shared and Dedicated Hosting
Co-Authors: plPHP, plPerlNG - http://www.commandprompt.com/

#6Martijn van Oosterhout
kleptog@svana.org
In reply to: Richard van den Berg (#4)
Re: PostgreSQL 8.1.0 RHEL / Debian incompatible packages

On Wed, Dec 07, 2005 at 02:15:29PM +0100, Richard van den Berg wrote:

I'll just do a pg_dump / pg_restore cycle, as I was planning to do. Is
there any guarantee for compatability the pg_dump format? Say, can a
8.1.0 pg_dump made using a 64 bit Solaris SPARC binary be read using a
32 bit Intel Linux pg_restore 8.1.0 binary? ;-)

That's definitly the intention. If you find otherwise, please report as
a bug.

Have a nice day,
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/

Show quoted text

Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
tool for doing 5% of the work and then sitting around waiting for someone
else to do the other 95% so you can sue them.

#7Tom Lane
tgl@sss.pgh.pa.us
In reply to: Richard van den Berg (#1)
Re: PostgreSQL 8.1.0 RHEL / Debian incompatible packages

Richard van den Berg <richard.vandenberg@trust-factory.com> writes:

Is there a good reason that the official RPM on postgresql.org is not
build with HAVE_INT64_TIMESTAMP ? It would have been so nice if this
would have worked. :-/

You've got that 100% backwards: you should be complaining to Debian that
it's not their business to editorialize on the default setting.

regards, tom lane

#8Stephen Frost
sfrost@snowman.net
In reply to: Tom Lane (#7)
Re: PostgreSQL 8.1.0 RHEL / Debian incompatible packages

* Tom Lane (tgl@sss.pgh.pa.us) wrote:

Richard van den Berg <richard.vandenberg@trust-factory.com> writes:

Is there a good reason that the official RPM on postgresql.org is not
build with HAVE_INT64_TIMESTAMP ? It would have been so nice if this
would have worked. :-/

You've got that 100% backwards: you should be complaining to Debian that
it's not their business to editorialize on the default setting.

The default setting sucks. You're advocating a position which would
mean more work for our users (since they'd have to recompile their own
packages to achieve a sane setting). No thanks.

Stephen

#9Richard van den Berg
richard.vandenberg@trust-factory.com
In reply to: Tom Lane (#7)
Re: PostgreSQL 8.1.0 RHEL / Debian incompatible packages

Tom Lane wrote:

You've got that 100% backwards: you should be complaining to Debian that
it's not their business to editorialize on the default setting.

I've forwarded this thread to Debian as a bug report. Their answer is
they will discuss this setting again when 8.2 comes out. The full answer
is here: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=342369

For the Debian bug track system, the full discussion on the postgresql
mailing list starts here:
http://archives.postgresql.org/pgsql-general/2005-12/msg00367.php

Thanks everyone for clearing this up.

Sincerely,

--
Richard van den Berg, CISSP
-------------------------------------------
Trust Factory B.V. | www.dna-portal.net
Bazarstraat 44a | www.trust-factory.com
2518AK The Hague | Phone: +31 70 3620684
The Netherlands | Fax : +31 70 3603009
-------------------------------------------

#10Anand Kumria
wildfire@progsoc.uts.edu.au
In reply to: Richard van den Berg (#9)
Re: Bug#342369: PostgreSQL 8.1.0 RHEL / Debian incompatible packages

On Mon, Dec 12, 2005 at 09:41:47AM +0100, Richard van den Berg wrote:

Tom Lane wrote:

You've got that 100% backwards: you should be complaining to Debian that
it's not their business to editorialize on the default setting.

Actually it *is* the business of Debian maintainers to determine what
works best for our users over and above what upstream decide.

Otherwise you'd get stuff like /usr/libexec, etc.

If Tom could present an actual reason why it shouldn't be enabled, I'm sure
Martin (Pitt) would be interested. But Stephen Frost and Peter
Eisentraut as well as others seem to be suggesting that Debian default is
sane.

I've forwarded this thread to Debian as a bug report. Their answer is
they will discuss this setting again when 8.2 comes out. The full answer
is here: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=342369

The bug has been closed on Peter's advice.

Cheers,
Anand

--
`When any government, or any church for that matter, undertakes to say to
its subjects, "This you may not read, this you must not see, this you are
forbidden to know," the end result is tyranny and oppression no matter how
holy the motives' -- Robert A Heinlein, "If this goes on --"

#11Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Anand Kumria (#10)
Re: Bug#342369: PostgreSQL 8.1.0 RHEL / Debian incompatible

On Tue, 13 Dec 2005, Anand Kumria wrote:

On Mon, Dec 12, 2005 at 09:41:47AM +0100, Richard van den Berg wrote:

Tom Lane wrote:

You've got that 100% backwards: you should be complaining to Debian that
it's not their business to editorialize on the default setting.

Actually it *is* the business of Debian maintainers to determine what
works best for our users over and above what upstream decide.

Otherwise you'd get stuff like /usr/libexec, etc.

If Tom could present an actual reason why it shouldn't be enabled, I'm sure
Martin (Pitt) would be interested. But Stephen Frost and Peter
Eisentraut as well as others seem to be suggesting that Debian default is
sane.

In and of itself it's a good option. However, choosing that option means
that Debian is saying that compatibility of data files with default
compiled PostgreSQL is not one of its primary concerns, which is a
reasonable statement, but it's still not the community's problem when
people can't move data to it.

#12Stephen Frost
sfrost@snowman.net
In reply to: Stephan Szabo (#11)
Re: Bug#342369: PostgreSQL 8.1.0 RHEL / Debian incompatible

* Stephan Szabo (sszabo@megazone.bigpanda.com) wrote:

On Tue, 13 Dec 2005, Anand Kumria wrote:

On Mon, Dec 12, 2005 at 09:41:47AM +0100, Richard van den Berg wrote:

Tom Lane wrote:

You've got that 100% backwards: you should be complaining to Debian that
it's not their business to editorialize on the default setting.

[...]

If Tom could present an actual reason why it shouldn't be enabled, I'm sure
Martin (Pitt) would be interested. But Stephen Frost and Peter
Eisentraut as well as others seem to be suggesting that Debian default is
sane.

I think what Peter said is probably correct- it defaults to double
because some compilers don't support 64bit integers, or it'd be lots
slower because the architecture doesn't support it and so there's alot
of overhead.

In and of itself it's a good option. However, choosing that option means
that Debian is saying that compatibility of data files with default
compiled PostgreSQL is not one of its primary concerns, which is a
reasonable statement, but it's still not the community's problem when
people can't move data to it.

Honestly, in the end I think the default should be changed. It could
fall-back to double with a warning (if it doesn't already) if the
compiler doesn't support 64bit integers. It sure seems like the general
feeling is that, given the choice, 64bit integer timestamps are
preferred. As the situations where you wouldn't want to use 64bit
integer timestamps are alot, lot smaller than the cases where you would
it's more sensible to have the default be to use them if possible.

Of course, another thought would be to have the rpms default to having
it enabled since the rpms provided on postgresql.org are for
architectures which should deal quite happily with 64bit integers (i686
and x86_64, though I don't actually see any rpms for x86_64, just the
directories, kind of odd). I'm reasonably confident that most rpm-based
architectures supported today support 64bit integers quite well, in
fact...

This really *should* be backwards, funny enough; Debian with support for
things like m68k (which doesn't have hardware 64bit integer support,
afaik) could be argued to use the default while rpm-based distros could
probably move to 64bit integer timestamps without any concerns over
using inefficient datatypes for the architectures those rpms would
likely be used on.

I don't think the Debian default should be changed though. If, say, an
m68k user actually complained about the default not being the right
option for them then I'd say we should consider having configure options
be different for those architectures and not that we should move
everyone to using doubles.

Thanks,

Stephen

#13Martin Pitt
martin@piware.de
In reply to: Stephen Frost (#12)
Re: Bug#342369: PostgreSQL 8.1.0 RHEL / Debian incompatible

Hi Stephen!

Stephen Frost [2005-12-13 11:06 -0500]:

Honestly, in the end I think the default should be changed. It could
fall-back to double with a warning (if it doesn't already) if the
compiler doesn't support 64bit integers.
[...]
I don't think the Debian default should be changed though. If, say, an
m68k user actually complained about the default not being the right
option for them then I'd say we should consider having configure options
be different for those architectures and not that we should move
everyone to using doubles.

I fully agree. (BTW, I doubt that double operations on m68k would be
any faster than integer ones...)

Thanks,

Martin

--
Martin Pitt http://www.piware.de
Ubuntu Developer http://www.ubuntu.com
Debian Developer http://www.debian.org

In a world without walls and fences, who needs Windows and Gates?

#14Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Stephen Frost (#12)
Re: Bug#342369: PostgreSQL 8.1.0 RHEL / Debian incompatible

On Tue, 13 Dec 2005, Stephen Frost wrote:

* Stephan Szabo (sszabo@megazone.bigpanda.com) wrote:

In and of itself it's a good option. However, choosing that option means
that Debian is saying that compatibility of data files with default
compiled PostgreSQL is not one of its primary concerns, which is a
reasonable statement, but it's still not the community's problem when
people can't move data to it.

Honestly, in the end I think the default should be changed.

I agree, but that's pretty unrelated to the overall discussion as I see
it. The discussion is not really about whether integer datetime is a good
idea, but instead about packaging because this isn't necessarily the only
option ever going forward for which this could occur. Changing the
defaults might make this case go away, but it doesn't solve the underlying
issue that people have expectations that aren't necessarily true if the
packages (and source tree) don't make equivalent choices.

#15Tom Lane
tgl@sss.pgh.pa.us
In reply to: Martin Pitt (#13)
Re: Bug#342369: PostgreSQL 8.1.0 RHEL / Debian incompatible

Martin Pitt <martin@piware.de> writes:

I fully agree. (BTW, I doubt that double operations on m68k would be
any faster than integer ones...)

Debatable at best --- most later 68k machines had hardware FPUs, but
none of them had any 64-bit-int instructions...

regards, tom lane