David Johnston <polobo@yahoo.com> writes:
> Moshe Jacobson wrote
>> Why does bool get special treatment?
>>
>> postgres# select 'abc', 1, false;
>> ?column? | ?column? | bool
>> ----------+----------+------
>> abc | 1 | f
>> (1 row)
> It doesn't (at least not as I see things in my client/version - noted
> below):
> *SELECT 'abc'::text;*
> If the type is known the type is used for the column header but since 'abc'
> and 1 do not have types this does not work.
A look into gram.y shows that "false" is parsed as 'f'::bool, so the
default column header name comes from that cast. See also FigureColname()
in parser/parse_target.c, which embodies the heuristics for choosing a
default column name for an expression.
regards, tom lane