backend dies when a user defined type returns null

Started by Patrick Robinover 25 years ago2 messagesgeneral
Jump to latest
#1Patrick Robin
Patrick.Robin@disney.com

Hi,

I created myself a user defined type following the example in the
Postgres programmer's guide.

In the example in chapter 5 it shows that the input function for the
user defined type returns null when the input type doesn't match the
correct format.

I do that for input strings that don't match my strict n.n.n format ( ex
3.2.1) but it causes the backend to die.

For example, this query causes it to die:

select * from collections where version='3.2'

But this one works because it is in the correct format:

select * from collections where version='3.2.1'

Am I doing something wrong?

Thanks

Patrick

--
________________________________________
Patrick Robin
patrickr@fa.disney.com
Walt Disney Feature Animation
500 South Buena Vista Street
Burbank,California 91521-4817

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Patrick Robin (#1)
Re: backend dies when a user defined type returns null

Patrick Robin <Patrick.Robin@disney.com> writes:

In the example in chapter 5 it shows that the input function for the
user defined type returns null when the input type doesn't match the
correct format.

I do that for input strings that don't match my strict n.n.n format ( ex
3.2.1) but it causes the backend to die.

The example is out to lunch, unfortunately :-( In current releases the
only clean way for an input routine to fail is to throw elog(ERROR).
You cannot return a SQL NULL, and if you try to fake it by returning
a null pointer, you'll just cause a null-pointer-dereference crash.

7.1 has a redesigned function-call interface that allows you to return
a NULL cleanly, but for now elog is the only way.

I'll make a note to fix that example in the 7.1 docs...

regards, tom lane