Если я пытаюсь создать столбец со значением выбора, возвращающим более одной строки, я получаю сообщение об ошибке.
=> select (select 1 union select 2);
ERROR: more than one row returned by a subquery used as an expression
Но если я создаю функцию, которая делает то же самое, я получаю желаемое поведение.
=> create or replace function onetwo() returns setof integer as $$
$> select 1 union select 2
$> $$ language 'sql' strict immutable;
CREATE FUNCTION
=> select onetwo();
onetwo
--------
1
2
Почему разница?