Каково ожидаемое поведение для нескольких функций, возвращающих множество в предложении select?
Я пытаюсь получить "перекрестное соединение" с результатом двух возвращающих множество функций, но в некоторых случаях я не получаю "перекрестное соединение", см. Пример
Поведение 1: Когда длины набора совпадают, он соответствует элемент за элементом из каждого набора
postgres=# SELECT generate_series(1,3), generate_series(5,7) order by 1,2; generate_series | generate_series -----------------+----------------- 1 | 5 2 | 6 3 | 7 (3 rows)
Поведение 2: Когда длины набора отличаются, это "перекрестное соединение" наборов
postgres=# SELECT generate_series(1,2), generate_series(5,7) order by 1,2; generate_series | generate_series -----------------+----------------- 1 | 5 1 | 6 1 | 7 2 | 5 2 | 6 2 | 7 (6 rows)
Я думаю, что я чего-то здесь не понимаю, может кто-нибудь объяснить такое поведение?
РЕДАКТИРОВАТЬ: еще один пример, более странный, чем предыдущий
postgres=# SELECT generate_series(1,2) x, generate_series(1,4) y order by x,y; x | y ---+--- 1 | 1 1 | 3 2 | 2 2 | 4 (4 rows)
(ПРИМЕЧАНИЕ: я приму ответ, который отвечает на вопрос названия со ссылкой на документацию.)