Converting a timestamp to a date when it contains nulls.

Started by Michael Richardsover 25 years ago4 messagesbugs
Jump to latest
#1Michael Richards
michael@fastmail.ca

Hi.
I'm not sure if the following behaviour is expected or not.

Version info:
psql (PostgreSQL) 7.0.1
4.0-STABLE FreeBSD 4.0-STABLE #0: Tue Apr 25 18:34:52 EDT 2000

I have a table:
create table test (td timestamp);
I add a row:
insert into test values ('now');
I select from it casting td to a date:
select td::date from test;
?column?
------------
2000-07-23
(1 row)

Everything is peachy.

Now I insert a NULL:
insert into test values (NULL);
Everything is no longer peachy.
select td::date from test;
ERROR: Unable to convert null timestamp to date

Shouldn't all casts be able to handle the case where it is NULL?

-Michael

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Richards (#1)
Re: Converting a timestamp to a date when it contains nulls.

"Michael Richards" <michael@fastmail.ca> writes:

Shouldn't all casts be able to handle the case where it is NULL?

Yup, it's a bug. It's fixed in current sources.

regards, tom lane

#3Michael Richards
michael@fastmail.ca
In reply to: Tom Lane (#2)
Re: Converting a timestamp to a date when it contains nulls.

"Michael Richards" <michael@fastmail.ca> writes:

Shouldn't all casts be able to handle the case where it is NULL?

Yup, it's a bug. It's fixed in current sources.

Is there a patch available that I can apply to the 7.0.2 source to
fix the problem? Or is there going to be a 7.0.3 that I should wait
for?

-Michael

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Richards (#3)
Re: Converting a timestamp to a date when it contains nulls.

"Michael Richards" <michael@fastmail.ca> writes:

Shouldn't all casts be able to handle the case where it is NULL?

Yup, it's a bug. It's fixed in current sources.

Is there a patch available that I can apply to the 7.0.2 source to
fix the problem? Or is there going to be a 7.0.3 that I should wait
for?

Just look for the place where the error is being spit out (somewhere in
backend/utils/adt/) and change the "elog(ERROR, ...)" call into
"return NULL". Should work, but I haven't tried it in 7.0.

regards, tom lane