ページの先頭行へ戻る
Enterprise Postgres 17 リリース情報

2.2.302 関数をORDER BYソートの順序で実行するように変更

非互換

FUJITSU Enterprise Postgres 9.6以降では、SELECT文の出力リスト内の揮発性のある、もしくは高コストの関数をORDER BYソートの順序で実行するように変更します。また、この変更により、LIMIT句を指定している場合は、必要とされる回数以上に関数が実行されなくなります。

FUJITSU Enterprise Postgres 9.5 の場合

関数はORDER BYソートの前に実行します。

[例]

=# CREATE SEQUENCE seq1;
CREATE SEQUENCE
=# SELECT c1,c2,nextval('seq1') FROM t1 ORDER BY c1 LIMIT 3;
 c1 | c2 | nextval
----+----+---------
  1 |  1 |       4
  2 |  2 |       6
  3 |  3 |       2
(3 rows)
=# SELECT curval('seq1')
currval 
---------
      10
(1 row)
FUJITSU Enterprise Postgres 9.6以降の場合

関数はORDER BYソートの順序で実行します。

[例]

=# SELECT c1,c2,nextval('seq1') FROM t1 ORDER BY c1 LIMIT 3;
 c1 | c2 | nextval
----+----+---------
  1 |  1 |       1
  2 |  2 |       2
  3 |  3 |       3
(3 rows)
=# SELECT curval('seq1')
currval 
---------
       3
(1 row)

対処方法

ありません。