Alex Ignatov <a.ignatov@postgrespro.ru> writes:
> Why string literal like 'Hello world!' doesnt automagicaly cast to text
> type?
Because it's not necessarily a string. It might be meant to be point,
or json, or any number of other types.
> Sure we can create our cast:
> postgres=# create cast (unknown as text) with inout as implicit;
> CREATE CAST
That's a seriously bad idea; it will have all sorts of corner-case
effects that you aren't expecting.
There has been some talk of forcing unknown to text in the output
columns of a sub-SELECT, which would fix the example you show with
a lot less risk of side-effects elsewhere. But it's not exactly
trivial because of interactions with INSERT ... SELECT.
regards, tom lane