Qual é o comportamento esperado para várias funções de retorno de conjunto na cláusula select?
Estou tentando obter uma "junção cruzada" com o resultado de duas funções de retorno de conjunto, mas em alguns casos não recebo a "junção cruzada", veja o exemplo
Comportamento 1: Quando o comprimento do conjunto é o mesmo, ele corresponde item a item de cada conjunto
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)
Comportamento 2: Quando os comprimentos dos conjuntos são diferentes, os "conjuntos cruzados" são os conjuntos
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)
Acho que não estou entendendo alguma coisa aqui. Alguém pode explicar o comportamento esperado?
EDITAR: outro exemplo, mais estranho que o anterior
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)
(NOTA: Aceito a resposta que responde à pergunta do título com o link para a documentação.)