Home > Archive > PostgreSQL Bugs > June 2005 > BUG #1699: Invalid timestamps with timezone and interger timestamps









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author BUG #1699: Invalid timestamps with timezone and interger timestamps
Guillaume Beaudoin

2005-06-03, 9:24 am


The following bug has been logged online:

Bug reference: 1699
Logged by: Guillaume Beaudoin
Email address: guillaume.beaudoin@bdeb.qc.ca
PostgreSQL version: 7.4.8
Operating system: Debian GNU/Linux
Description: Invalid timestamps with timezone and interger timestamps
Details:

SET TIME ZONE INTERVAL '-05:00' HOUR TO MINUTE;
SELECT NOW();

will report something like:

now
--------------------------------------
1979-06-06 09:42:49.854158-227814:06
(1 row)


Please check http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=311533 for
more informations about this.

Regards,

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Tom Lane

2005-06-05, 3:24 am

"Guillaume Beaudoin" <guillaume.beaudoin@bdeb.qc.ca> writes:
> Description: Invalid timestamps with timezone and interger timestamps


Fixed for next releases --- thanks for the report!
The 7.4-branch patch is

Index: variable.c
====================
====================
====================
=======
RCS file: /cvsroot/pgsql/src/backend/commands/variable.c,v
retrieving revision 1.88.2.1
diff -c -r1.88.2.1 variable.c
*** variable.c 11 Aug 2004 21:10:50 -0000 1.88.2.1
--- variable.c 5 Jun 2005 01:39:03 -0000
***************
*** 454,460 ****
--- 454,464 ----
if (doit)
{
/* Here we change from SQL to Unix sign convention */
+ #ifdef HAVE_INT64_TIMESTAMP

+ CTimeZone = -(interval->time / INT64CONST(1000000))
;
+ #else
CTimeZone = -interval->time;
+ #endif
HasCTZSet = true;
}
pfree(interval);
***************
*** 608,614 ****
--- 612,622 ----
Interval interval;

interval.month = 0;
+ #ifdef HAVE_INT64_TIMESTAMP

+ interval.time = -(CTimeZone * INT64CONST(1000000))
;
+ #else
interval.time = -CTimeZone;
+ #endif

tzn = DatumGetCString(Dire
ctFunctionCall1(inte
rval_out,
IntervalPGetDatum(&interval)));


regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com