Каково ожидаемое поведение для нескольких функций, возвращающих множество в предложении 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)

(ПРИМЕЧАНИЕ: я приму ответ, который отвечает на вопрос названия со ссылкой на документацию.)

Ответы на вопрос(0)

Ваш ответ на вопрос