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

2.2.135 他のオブジェクトに依存される列の削除を制限するように変更

非互換

Fujitsu Enterprise Postgres 15では、行集合を返す関数の結果に依存するビューやルールが存在する場合、依存される列の削除を制限します。

FUJITSU Enterprise Postgres 14 以前の場合

行集合を返す関数の結果に依存するビューやルールが存在する場合に、依存される列を削除することができます。

[例]
postgres=# CREATE FUNCTION tt14f() RETURNS SETOF tt14t AS
postgres-#   $$
postgres$#   declare
postgres$#       rec1 record;
postgres$#   begin
postgres$#       for rec1 in select * from tt14t
postgres$#       loop
postgres$#           return next rec1;
postgres$#       end loop;
postgres$#   end;
postgres$#   $$
postgres-# language plpgsql;
CREATE FUNCTION
postgres=# CREATE VIEW tt14v AS SELECT t.* FROM tt14f() t;
CREATE VIEW
postgres=# ALTER TABLE tt14t DROP COLUMN f4;
ALTER TABLE
postgres=# SELECT * FROM tt14v;
ERROR:  attribute 4 of type record has been dropped (19187)
postgres=#
Fujitsu Enterprise Postgres 15の場合

行集合を返す関数に依存しているビューやルールがある場合に、依存される列を削除することができません。

[例]
postgres=# CREATE FUNCTION tt14f() RETURNS SETOF tt14t AS
postgres-#   $$
postgres$#   declare
postgres$#       rec1 record;
postgres$#   begin
postgres$#       for rec1 in select * from tt14t
postgres$#       loop
postgres$#           return next rec1;
postgres$#       end loop;
postgres$#   end;
postgres$#   $$
postgres-# language plpgsql;
CREATE FUNCTION
postgres=# CREATE VIEW tt14v AS SELECT t.* FROM tt14f() t;
CREATE VIEW
postgres=# ALTER TABLE tt14t DROP COLUMN f4;
ERROR:  cannot drop column f4 of table tt14t because other objects depend on it
DETAIL:  view tt14v depends on column f4 of table tt14t
HINT:  Use DROP ... CASCADE to drop the dependent objects too.
postgres=#

対処方法

ありません。