Joe Conway <mail(at)joeconway(dot)com> writes:
> + /* last check -- polymorphic types? */
> + if (IsPolymorphicCoercible(arg1 , arg2))
> + return optup;
That is surely not what you intended. The test must be whether arg1 and
arg2 are (separately) coercible to the operator's two input types.
Moreover, the test must not be symmetric, any more than
IsBinaryCoercible is. You can coerce int[] to ANYARRAY but not vice
versa.
A bigger problem is that I doubt this will actually work. Most of the
places that call compatible_oper will then proceed to call the function
from specialized code that does not bother with consing up an expression
tree --- so a polymorphic function is going to fail anyway...
regards, tom lane