Обсуждение: pgsql: Fix (hopefully for the last time) problems with datetime values
pgsql: Fix (hopefully for the last time) problems with datetime values
От
tgl@svr1.postgresql.org (Tom Lane)
Дата:
Log Message: ----------- Fix (hopefully for the last time) problems with datetime values displaying like '23:59:60' because of fractional-second roundoff problems. Trying to control this upstream of the actual display code was hopeless; the right way is to explicitly round fractional seconds in the display code and then refigure the results if the fraction rounds up to 1. Per bug #1927. Modified Files: -------------- pgsql/src/interfaces/ecpg/pgtypeslib: dt.h (r1.31 -> r1.32) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/interfaces/ecpg/pgtypeslib/dt.h.diff?r1=1.31&r2=1.32) dt_common.c (r1.29 -> r1.30) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/interfaces/ecpg/pgtypeslib/dt_common.c.diff?r1=1.29&r2=1.30) interval.c (r1.28 -> r1.29) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/interfaces/ecpg/pgtypeslib/interval.c.diff?r1=1.28&r2=1.29) timestamp.c (r1.31 -> r1.32) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/interfaces/ecpg/pgtypeslib/timestamp.c.diff?r1=1.31&r2=1.32) pgsql/contrib/btree_gist: btree_ts.c (r1.10 -> r1.11) (http://developer.postgresql.org/cvsweb.cgi/pgsql/contrib/btree_gist/btree_ts.c.diff?r1=1.10&r2=1.11) pgsql/src/backend/utils/adt: date.c (r1.120 -> r1.121) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/date.c.diff?r1=1.120&r2=1.121) datetime.c (r1.157 -> r1.158) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/datetime.c.diff?r1=1.157&r2=1.158) timestamp.c (r1.153 -> r1.154) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/timestamp.c.diff?r1=1.153&r2=1.154) pgsql/src/include/utils: date.h (r1.30 -> r1.31) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/date.h.diff?r1=1.30&r2=1.31) timestamp.h (r1.55 -> r1.56) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/timestamp.h.diff?r1=1.55&r2=1.56)
On Sun, Oct 09, 2005 at 02:21:47PM -0300, Tom Lane wrote: > Fix (hopefully for the last time) problems with datetime values displaying > like '23:59:60' because of fractional-second roundoff problems. Trying > to control this upstream of the actual display code was hopeless; the right > way is to explicitly round fractional seconds in the display code and then > refigure the results if the fraction rounds up to 1. Per bug #1927. This change causes my FreeBSD 4.11-STABLE box and a couple of FreeBSD 6 members of the buildfarm to fail while building ecpg: timestamp.c: In function `timestamp2tm': timestamp.c:195: `INT_MAX' undeclared (first use in this function) Including <limits.h> in src/interfaces/ecpg/pgtypeslib/timestamp.c fixes the problem. -- Michael Fuhr
On Oct 9, 2005, at 1:56 PM, Michael Fuhr wrote: > On Sun, Oct 09, 2005 at 02:21:47PM -0300, Tom Lane wrote: > >> Fix (hopefully for the last time) problems with datetime values >> displaying >> like '23:59:60' because of fractional-second roundoff problems. >> Trying >> to control this upstream of the actual display code was hopeless; >> the right >> way is to explicitly round fractional seconds in the display code >> and then >> refigure the results if the fraction rounds up to 1. Per bug #1927. >> > > This change causes my FreeBSD 4.11-STABLE box and a couple of > FreeBSD 6 > members of the buildfarm to fail while building ecpg: > > timestamp.c: In function `timestamp2tm': > timestamp.c:195: `INT_MAX' undeclared (first use in this function) > > Including <limits.h> in src/interfaces/ecpg/pgtypeslib/timestamp.c > fixes the problem. firefly (my UnixWare box as well) dies with this. LER > > -- > Michael Fuhr > > ---------------------------(end of > broadcast)--------------------------- > TIP 3: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faq > -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 214-351-4152 E-Mail: ler@lerctr.org US Mail: 3535 Gaspar Drive, Dallas, TX 75220-3611
On Sun, Oct 09, 2005 at 03:43:20PM -0500, Larry Rosenman wrote: > On Oct 9, 2005, at 1:56 PM, Michael Fuhr wrote: > >This change causes my FreeBSD 4.11-STABLE box and a couple of > >FreeBSD 6 members of the buildfarm to fail while building ecpg: > > > >timestamp.c: In function `timestamp2tm': > >timestamp.c:195: `INT_MAX' undeclared (first use in this function) > > > >Including <limits.h> in src/interfaces/ecpg/pgtypeslib/timestamp.c > >fixes the problem. > > firefly (my UnixWare box as well) dies with this. When you say "firefly dies with this," which "this" are you referring to? The original change, my suggestion to include <limits.h>, or both? At least the first, apparently: http://pgbuildfarm.org/cgi-bin/show_log.pl?nm=firefly&dt=2005-10-09%2020:27:01 My Solaris 9 box also failed with the original change. -- Michael Fuhr
Michael Fuhr <mike@fuhr.org> writes: > timestamp.c: In function `timestamp2tm': > timestamp.c:195: `INT_MAX' undeclared (first use in this function) > Including <limits.h> in src/interfaces/ecpg/pgtypeslib/timestamp.c > fixes the problem. Oops, fixed. Thanks for the report. regards, tom lane