[ too tired to respond to the other points, but: ]
Shay Rojansky <roji@roji.org> writes:
>> It's also possible for a type not to have send/recv functions, i.e. to
>> support text-only use.
> In that case, what would be the behavior of selecting such a type with an
> extended query that specifies "all results in binary"? A PG error?
Yup.
if (!OidIsValid(pt->typsend)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_FUNCTION),
errmsg("no binary output function available for type %s", format_type_be(type))));
There's an exactly parallel error if you try to send a parameter in
binary when its datatype hasn't got a typreceive function.
regards, tom lane