Seems to me there's a bug in HEAD (and probably old branches as well) when compiled with HAVE_INT64_TIMESTAMP. As shown below It sometimes shows things like "-6.-70 secs" where 8.3 showed "-6.70 secs".
I think the attached one-liner patch fixes this, as well as another roundoff regression between HEAD and 8.3. Ron Mayer ================================================================================ == ON HEAD ================================================================================ regression=# set datestyle to sql; SET regression=# select '-10 mons -3 days +03:55:06.70'::interval; interval ---------------------------------------------------- @ 10 mons 3 days -3 hours -55 mins -6.-70 secs ago (1 row) regression=# select '1 year 2 mons 3 days 04:05:06.699999'::interval; interval ------------------------------------------------- @ 1 year 2 mons 3 days 4 hours 5 mins 6.69 secs (1 row) ================================================================================ == ON 8.3 ================================================================================ pg83=# set datestyle to sql; SET pg83=# select '-10 mons -3 days +03:55:06.70'::interval; interval --------------------------------------------------- @ 10 mons 3 days -3 hours -55 mins -6.70 secs ago (1 row) pg83=# select '1 year 2 mons 3 days 04:05:06.699999'::interval; interval ------------------------------------------------- @ 1 year 2 mons 3 days 4 hours 5 mins 6.70 secs (1 row)
*** a/src/backend/utils/adt/datetime.c --- b/src/backend/utils/adt/datetime.c *************** *** 3791,3797 **** EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str) is_before = TRUE; } sprintf(cp, "%s%d.%02d secs", is_nonzero ? " " : "", ! tm->tm_sec, ((int) sec) / 10000); cp += strlen(cp); #else fsec += tm->tm_sec; --- 3791,3797 ---- is_before = TRUE; } sprintf(cp, "%s%d.%02d secs", is_nonzero ? " " : "", ! tm->tm_sec, (int) abs(rint(sec / 10000.0))); cp += strlen(cp); #else fsec += tm->tm_sec;
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers