私はクエリシステムを実装していました。アンネスト機能を実装しました。現在、ユーザーは単一の select ステートメントで複数の unnest を使用することについて尋ねていました。ほとんどのユーザーがクエリ システムの前に PostgreSQL を使用していたため、一種のガイドラインとして PostgreSQL を使用していました。
PostgreSQL には次のような奇妙な動作があります。
postgres=# select unnest(array[1,2]), unnest(array[1,2]);
unnest | unnest
--------+--------
1 | 1
2 | 2
(2 rows)
postgres=# select unnest(array[1,2]), unnest(array[1,2,3]);
unnest | unnest
--------+--------
1 | 1
2 | 2
1 | 3
2 | 1
1 | 2
2 | 3
(6 rows)
私の実装は常にデカルト積として生成されました。私は疑問に思っています、これの背後にある正しいロジックは何ですか? PostgreSQL は正しいことをしているのですか、それとも単なるバグですか? ANSI ドキュメントや PostgreSQL ドキュメントに明確な説明が見つかりませんでした。