"John Hansen" <john@geeknet.com.au> writes:
>> You can't override a builtin C function that way because
>> there is a built-in map from function OID to builtin function
>> address, and it's consulted before trying to look in pg_proc.
> That doesn't make sense, since if I delete the entry from pg_proc and
> then create the funtion, everything works fine.
Sure, because then the new entry has a new OID that doesn't match any
entry in the fmgr_builtin table.
> Well, as someone pointed out, if it is possible to execute replace
> function on a builtin, then it should work.
[ shrug... ] Nobody promised that you could change any arbitrary thing
without breaking your system. Superusers are allowed to do "delete from
pg_proc", too, but that doesn't mean you'll be pleased with the results.
regards, tom lane