Close to the bottom of: https://www.postgresql.org/docs/devel/plpgsql-implementation.html (and all previous version) ... the manual says:
> During the ensuing assignment to the local variable curtime, the PL/pgSQL interpreter casts this string to the timestamp type by calling the text_out and timestamp_in functions for the conversion. Should most probably be "textout" instead of "text_out". See: test=# SELECT proname FROM pg_proc WHERE proname IN ('text_out', 'textout'); proname --------- textout (1 row) "timestamp_in" seems correct, though. Those function names seem rather inconsistent: roughly half of them have the underscore, the rest doesn't. Might explain the confusion. SELECT * FROM pg_proc WHERE proname ~ 'out$' AND prorettype = 'cstring'::regtype ORDER BY proname ~ '_out$'; SELECT * FROM pg_proc WHERE proname ~ 'in$' AND proargtypes = ARRAY['cstring'::regtype]::oidvector ORDER BY proname ~ '_in$'; Regards Erwin