非互換
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.
対処方法
ありません。