非互換
FUJITSU Enterprise Postgres 10では、選択リストに集合を返す関数を複数指定し、これらが異なる行数を返す場合、行数が少ない結果はNULLを加えて最も長い結果に一致するよう変更します。また、集合を返す関数をCASE式やCOALESCE式に指定した場合はエラーにするよう変更します。
集合を返す関数を同時に終了するまで実行し、関数の最小公倍数の周期に等しい行数を返します。また、CASE式やCOALESCE式にも指定できます。
[例]
=# SELECT generate_series(1,2), generate_series(1,3);
generate_series | generate_series
-----------------+-----------------
1 | 1
2 | 2
1 | 3
2 | 1
1 | 2
2 | 3
(6 行)=# select case when true then generate_series(1,2) else null end;
case
------
1
2
(2 行)行数が少ない場合はNULLを加えた結果を返します。また、集合を返す関数はCASE式やCOALESCE式には指定できません。
[例]
=# SELECT generate_series(1,2), generate_series(1,3);
generate_series | generate_series
-----------------+-----------------
1 | 1
2 | 2
| 3(3 行)
=# select case when true then generate_series(1,2) else null end;
ERROR: set-returning functions are not allowed in CASE
行 1: select case when true then generate_series(1,2) else null en...
^
HINT: You might be able to move the set-returning function into a LATERAL FROM item.
対処方法
ありません。