Thread: backend dies when a user defined type returns null
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
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