PG Bug reporting form <noreply@postgresql.org> writes: > 1. The following code is successfully executed although it has > incorrect > syntax: there must be comma (,) between _n and _s in 'into' section.
> select 1, 'string1', 'string2' > into _n _s;
I believe this is being read the same as
select 1, 'string1', 'string2' _s into _n;
That is, the lack of a comma causes the INTO sub-clause to end, and then _s is taken as an AS-less column label. As the manual explains, for backwards-compatibility reasons we allow INTO to be embedded anywhere in the command, even though that leads to surprising-looking cases like this one.
As for the question of why you don't get an error for the wrong number of INTO targets, again that's backwards compatibility. There's a "strict_multi_assignment" check you can turn on to make it complain about that [1].