pgtypeslib/timestamp problem

Started by Michael Meskesalmost 23 years ago4 messages
#1Michael Meskes
meskes@postgresql.org

I found it, well not really that is. It seems the problem is triggered
by some gcc optimization. I'm using gcc 3.2.3. If I specify -O2 it does
not work correctly, without optimization it does. Now the big question
is which optimization is causing trouble.

It certainly is not -ffast-math as I do include the corresponding error
message which is not triggered. Unfortunately I cannot install the
complete 7.4 CVS version right now to see if the timestamp code in the
backend compiles correctly.

So here's the question comojng out of this all, anyone out here with an
idea why the timestamp "Wed Jul 12 17:34:29 2000" becomes "Wed Jul 12
4649:34:26.000002 2000" when putting it into timestamp format and back
out. The function is almost identical to timestamp_in resp.
timestamp_out. If these two functions and their helpers are compield
without "-O2" the output is correct.

Michael

--
Michael Meskes
Email: Michael@Fam-Meskes.De
ICQ: 179140304
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Meskes (#1)
Re: pgtypeslib/timestamp problem

Michael Meskes <meskes@postgresql.org> writes:

So here's the question comojng out of this all, anyone out here with an
idea why the timestamp "Wed Jul 12 17:34:29 2000" becomes "Wed Jul 12
4649:34:26.000002 2000" when putting it into timestamp format and back
out. The function is almost identical to timestamp_in resp.
timestamp_out. If these two functions and their helpers are compield
without "-O2" the output is correct.

FWIW, I get the correct answer in CVS tip on Red Hat Linux 8.0, which
is using gcc 3.2 (and -O2, per defaults in our makefiles):

regression=# set DateStyle TO postgres;
SET
regression=# select 'Wed Jul 12 17:34:29 2000'::timestamp;
timestamp
--------------------------
Wed Jul 12 17:34:29 2000
(1 row)

regards, tom lane

#3Michael Meskes
meskes@postgresql.org
In reply to: Tom Lane (#2)
Re: pgtypeslib/timestamp problem

On Thu, Mar 27, 2003 at 09:07:48AM -0500, Tom Lane wrote:

FWIW, I get the correct answer in CVS tip on Red Hat Linux 8.0, which
is using gcc 3.2 (and -O2, per defaults in our makefiles):

Thanks Tom. I just wonder what's different in my makefile. It just does:

include $(top_builddir)/src/Makefile.global
override CPPFLAGS := -O1 -g -I$(top_srcdir)/src/interfaces/ecpg/include
-I$(top_srcdir)/src/include/utils $(CPPFLAGS)

with "-O1" just inserted of course.

Tom, I take it you have released gcc 3.2 right? It seems my ione is
based on a CVS prerelease:

gcc -v
Reading specs from /usr/lib/gcc-lib/i386-linux/3.2.3/specs
Configured with: ../src/configure -v
--enable-languages=c,c++,java,f77,proto,pascal,objc,ada --prefix=/usr
--mandir=/usr/share/man --infodir=/usr/share/info
--with-gxx-include-dir=/usr/include/c++/3.2 --enable-shared
--with-system-zlib --enable-nls --without-included-gettext
--enable-__cxa_atexit --enable-clocale=gnu --enable-java-gc=boehm
--enable-objc-gc i386-linux
Thread model: posix
gcc version 3.2.3 20030316 (Debian prerelease)

Michael
--
Michael Meskes
Email: Michael@Fam-Meskes.De
ICQ: 179140304
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Meskes (#3)
Re: pgtypeslib/timestamp problem

Michael Meskes <meskes@postgresql.org> writes:

Tom, I take it you have released gcc 3.2 right? It seems my ione is
based on a CVS prerelease:

It's whatever came with RH 8.0 ...

$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --host=i386-redhat-linux --with-system-zlib --enable-__cxa_atexit
Thread model: posix
gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)

regards, tom lane