Thread: Unable to convert null timestamp to date. Bug?

Unable to convert null timestamp to date. Bug?

From
"Edmar Wiggers"
Date:
Strange, this works: select * from users where last_visit > now() + 7;  -- last_visit is nullable, of type timestamp

But this doesn't select * from users where last_visit + 7 > now(); ERROR:  Unable to convert null timestamp to date --
yes,there are users where last_visit IS NULL
 

BTW, this works too: select null+1; -- obviously returns NULL

System is FreeBSD 4.1, PgSQL 7.0.2

Anyone got a clue?

Yours sincerely,

Edmar Wiggers
BRASMAP Information Systems
+55 48 9960 2752


Re: Unable to convert null timestamp to date. Bug?

From
Tom Lane
Date:
"Edmar Wiggers" <edmar@brasmap.com> writes:
>   select * from users where last_visit + 7 > now();
>   ERROR:  Unable to convert null timestamp to date

Yeah, someone who hadn't quite grokked the concept of NULL seems to have
written a lot of the date.c code :-(.

This is fixed for 7.1.  If it's really bothering you in 7.0.*, see
src/backend/utils/adt/date.c, and change code like
   if (!PointerIsValid(timestamp))       elog(ERROR, "Unable to convert null timestamp to date");

to
   if (!PointerIsValid(timestamp))return NULL;

in several places.
        regards, tom lane