Обсуждение: 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