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

2.3.199 関数と列参照のデフォルト動作の変更

非互換

FUJITSU Enterprise Postgres 11では、関数と列参照において、構文形式を優先するように変更します。

FUJITSU Enterprise Postgres 10以前の場合

関数名と同じ名前の列を定義することで、関数が実行されているかのように振る舞うことができます。

[例]

=# CREATE TABLE t1 (c1 int);
CREATE TABLE
=# CREATE FUNCTION f1(t1) RETURNS TEXT AS 'BEGIN RETURN ''HELLO, WORLD'';  END; ' LANGUAGE 'plpgsql';
CREATE FUNCTION
=# ALTER TABLE t1 ADD COLUMN f1 int;
ALTER TABLE
=# INSERT INTO t1 VALUES (10,10);
INSERT 0 1
=# SELECT f1(t1) FROM t1;
 f1
----
10
(1 行)
FUJITSU Enterprise Postgres 11の場合

関数と同じ名前の列が定義されている場合、構文形式に一致する方を優先します。

[例]

=# CREATE TABLE t1 (c1 int);
CREATE TABLE
=# CREATE FUNCTION f1(t1) RETURNS TEXT AS 'BEGIN RETURN ''HELLO, WORLD'';  END; ' LANGUAGE 'plpgsql';
CREATE FUNCTION
=# ALTER TABLE t1 ADD COLUMN f1 int;
ALTER TABLE
=# INSERT INTO t1 VALUES (10,10);
INSERT 0 1
=# SELECT f1(t1) FROM t1;
      f1
--------------
 HELLO, WORLD
(1 行)

対処方法

ありません。