On Thu, Nov 5, 2020 at 3:43 PM Mohamed Wael Khobalatte < mkhobala...@grubhub.com> wrote:
> You can always cast to text yourself, of course, but I am not familiar > with the type hierarchy enough to tell why `to_json` can't deduce that as > text whereas the other function can. > My understanding is that "any" is defined to accept that behavior - allowing any pseudo-type and unknown. The "anyelement" polymorphic pseudo-type is defined such that only concrete known types are allowed to match - and then the rules of polymorphism apply when performing a lookup. My uninformed conclusion is that since to_json only defines a single parameter that changing it from "anyelement" to "any" would be reasonable and the hack describe probably "just works" (though I'd test it on a wide-range of built-in types first if I was actually going to use the hack). You only get to use "any" for a C-language function but that is indeed the case here. David J.