now() and date_trunc() apparently corrupting data

Started by Oliver Elphickabout 23 years ago3 messagesbugs
Jump to latest
#1Oliver Elphick
olly@lfix.co.uk

This is with -configure -enable-integer-datetime in 7.3.2, i386 Linux
platform. Is anyone else seeing this? If so, does it happen without
--enable-integer-datetime?

junk=# \d mt
Table "public.mt"
Column | Type | Modifiers
--------+---------------------+-----------
v | time with time zone |

junk=# delete from mt;
DELETE 4
junk=# insert into mt values ('06:25');
INSERT 12554249 1
junk=# select * from mt;
v
-------------
06:25:00+00
(1 row)

junk=# select * from mt where v < now();
v
-------------
00:00:00+00 <-- data has been changed...
(1 row)

junk=# select * from mt;
v
-------------
00:00:00+00 <-- ...permanently, it seems.
(1 row)

The same seems to happen with date_trunc()

--
Oliver Elphick Oliver.Elphick@lfix.co.uk
Isle of Wight, UK http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
========================================
"Who is like Thee among the gods, O Lord? Who is like
Thee, majestic in holiness, awesome in praises,
working wonders?"
Exodus 15:11

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Oliver Elphick (#1)
Re: now() and date_trunc() apparently corrupting data

Oliver Elphick <olly@lfix.co.uk> writes:

This is with -configure -enable-integer-datetime in 7.3.2, i386 Linux
platform. Is anyone else seeing this? If so, does it happen without
--enable-integer-datetime?

junk=# select * from mt;
v
-------------
06:25:00+00
(1 row)

junk=# select * from mt where v < now();
v
-------------
00:00:00+00 <-- data has been changed...
(1 row)

I think this is explained by this bug:

2003-02-13 12:04 tgl

* src/backend/utils/adt/date.c (REL7_3_STABLE): Prevent timetz2tm()
from scribbling on its input in HAVE_INT64_TIMESTAMP case.

Can you try it with CVS tip (either HEAD or REL7_3_STABLE branch)?

regards, tom lane

#3Oliver Elphick
olly@lfix.co.uk
In reply to: Tom Lane (#2)
Re: now() and date_trunc() apparently corrupting data

On Thu, 2003-03-13 at 23:06, Tom Lane wrote:

Oliver Elphick <olly@lfix.co.uk> writes:

This is with -configure -enable-integer-datetime in 7.3.2, i386 Linux
platform. Is anyone else seeing this? If so, does it happen without
--enable-integer-datetime?

junk=# select * from mt;
v
--
06:25:00+00
(1 row)

junk=# select * from mt where v < now();
v
--
00:00:00+00 <-- data has been changed...
(1 row)

I think this is explained by this bug:

2003-02-13 12:04 tgl

* src/backend/utils/adt/date.c (REL7_3_STABLE): Prevent timetz2tm()
from scribbling on its input in HAVE_INT64_TIMESTAMP case.

Can you try it with CVS tip (either HEAD or REL7_3_STABLE branch)?

With HEAD it's OK -- no bug.

Applying that patch to 7.3.2 fixes it there a well. Thanks.

--
Oliver Elphick Oliver.Elphick@lfix.co.uk
Isle of Wight, UK http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
========================================
"Let your light so shine before men, that they may see
your good works, and glorify your Father which is in
heaven." Matthew 5:16