I noticed that the following does not produce consistent cast results:
select 1::int8::"char", 1::int4::"char", 1::int2::"char"
The following yields 49, 1, 49 respectively:
select 1::int8::"char"::int, 1::int4::"char"::int, 1::int2::"char"::int
regards,
Ian Campbell