OSDN Git Service

Attempting to insert a value of 'now' into a datetime type
authorBruce Momjian <bruce@momjian.us>
Sun, 14 Mar 1999 16:44:02 +0000 (16:44 +0000)
committerBruce Momjian <bruce@momjian.us>
Sun, 14 Mar 1999 16:44:02 +0000 (16:44 +0000)
commitc10e6bcbed4b5a9ffea40300cff279cb854c1ba3
treef5527fddd4e64b72553e2b789f403d2a0f30ad0c
parente2c4d41f32107b88f92a71d2c53e2ad850d93161
Attempting to insert a value of 'now' into a datetime type
results in a bogus datetime value under AlphaLinux.  (Note that
the link to submit a port-specific bug on your website is broken)

-Test Case:
----------
testdb=> create table dttest (dt datetime);
testdb=> insert into dttest values ('now');

--------------------------------------------------------------------------

Solution:
---------
The basic problem is the typedefs of AbsoluteTime and RelativeTime,
which are both 'int32'.  These types appear to be used synonymously
with the 'time_t' type, which on AlphaLinux is typedef'd as a 'long
int', which is 64-bits (not 32).  The solution included here fixes
the datetime type (it now passes the regression test), but does not
pass the absolute and relative time regression tests.  Presumably, a
more thorough investigation of how these types are used is warranted.
The included patch is from the v6.3.2 source, but can be applied to
the v6.4.2 source.  Please note that there is also a RedHat-specific
patch distributed with the PostgreSQL source package from RedHat
that was applied first.

Rich Edwards
src/backend/utils/adt/date.c
src/include/utils/builtins.h
src/include/utils/nabstime.h