Обсуждение: now() and date_trunc() apparently corrupting data
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
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
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