coredump of language internal function

Started by 甄明洋7 months ago2 messagesbugs
Jump to latest
#1甄明洋
zhenmingyang@yeah.net

When creating a function using language internal, if the parameters or function attributes of the alias function are different from those of the internal function, they are not checked during creation and may cause a cordump when called.
a example:
CREATE FUNCTION ftest(integer)
RETURNS numeric
AS 'numeric_in'
LANGUAGE internal
PARALLEL SAFE
STRICT
IMMUTABLE;

I didn't find this mentioned in the manual, so I'm not sure if this is a problem, but it seems like it might be better to do a check when creating the function.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: 甄明洋 (#1)
Re: coredump of language internal function

myzhen <zhenmingyang@yeah.net> writes:

When creating a function using language internal, if the parameters or function attributes of the alias function are different from those of the internal function, they are not checked during creation and may cause a cordump when called.

We have always considered that this is programmer error.

I didn't find this mentioned in the manual, so I'm not sure if this is a problem, but it seems like it might be better to do a check when creating the function.

If you have an idea about how such a check could be done, it would
be worth discussing that. But it seems pretty unlikely to me that
there is any portable way to identify externally what data types
a compiled function is expecting to receive.

regards, tom lane