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

2.3.15 パーティションテーブルに依存関係のあるアクセスメソッド削除防止

非互換

Fujitsu Enterprise Postgres 17 SP1では、パーティションテーブルに依存関係のあるアクセスメソッドを削除しようとした際にエラーとなるように変更します。

Fujitsu Enterprise Postgres 17の場合
postgres=# CREATE ACCESS METHOD heap2 TYPE TABLE HANDLER heap_tableam_handler;
CREATE ACCESS METHOD
postgres=# CREATE TABLE am_partitioned(x INT, y INT) PARTITION BY hash (x) USING heap2;
CREATE TABLE
postgres=# SELECT pg_describe_object(classid, objid, objsubid) AS obj,
postgres-#        pg_describe_object(refclassid, refobjid, refobjsubid) as refobj
postgres-#   FROM pg_depend, pg_am
postgres-#   WHERE pg_depend.refclassid = 'pg_am'::regclass
postgres-#     AND pg_am.oid = pg_depend.refobjid
postgres-#     AND pg_depend.objid = 'am_partitioned'::regclass;
 obj | refobj
-----+--------
(0 rows)

postgres=# DROP ACCESS METHOD heap2;
DROP ACCESS METHOD
Fujitsu Enterprise Postgres 17 SP1の場合
postgres=# SELECT pg_describe_object(classid, objid, objsubid) AS obj,
postgres-#        pg_describe_object(refclassid, refobjid, refobjsubid) as refobj
postgres-#   FROM pg_depend, pg_am
postgres-#   WHERE pg_depend.refclassid = 'pg_am'::regclass
postgres-#     AND pg_am.oid = pg_depend.refobjid
postgres-#     AND pg_depend.objid = 'am_partitioned'::regclass;
         obj          |       refobj
----------------------+---------------------
 table am_partitioned | access method heap2
(1 row)

postgres=# DROP ACCESS METHOD heap2;
ERROR:  cannot drop access method heap2 because other objects depend on it
DETAIL:  table am_partitioned depends on access method heap2
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

対処方法

DROP ACCESS METHOD文にCASCADEを指定してください。

ただし、依存関係のあるオブジェクトも同時に削除されることに注意してください。