Tom Lane wrote:
> What I've done instead is not to weaken type checking, but simply to
> postpone all checking of the body of a SQL function to runtime if it
> has any polymorphic arguments. At runtime, we know the actual types
> for the arguments, and we know the actual assigned result type, and
> then we can run the normal checking operations without any problem.
As usual, big improvement in what I submitted. Thanks.
> Applied patch attached, just FYI. (It still needs documentation
> updates, which I trust you will supply later.)
Yup, you have my gold plated IOU on the doc cleanup for all this stuff.
One note; this change
> Oid
> ! get_fn_expr_rettype(FunctionCallInfo fcinfo)
> {
[snip]
> Oid
> ! get_fn_expr_rettype(FmgrInfo *flinfo)
> {
is a good example why some things, particularly PLs, are better off
being in the main source tree rather than on gborg (or someplace else).
PL/R uses get_fn_expr_rettype() and get_fn_expr_argtype(), so it's now
broken as of CVS tip :(
I know the license issue is the primary reason why PL/R is not in the
main source tree, but I bring it up because I think the tendency to push
things out and over to gborg has been too strong lately.
Joe