BUG #18674: Partitioned table doesn't depend on access method it uses

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: exclusion@gmail.com
Date: 2024-10-26T06:00:00Z
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      18674
Logged by:          Alexander Lakhin
Email address:      exclusion@gmail.com
PostgreSQL version: 17.0
Operating system:   Ubuntu 22.04
Description:        

The following script:
CREATE ACCESS METHOD ham TYPE TABLE HANDLER heap_tableam_handler;
CREATE TABLE pt (a int) PARTITION BY LIST (a) USING ham;
DROP ACCESS METHOD ham;

ends successfully, with the access method dropped, though then:
CREATE TABLE tp1 PARTITION OF pt FOR VALUES IN (1);

fails with
ERROR:  cache lookup failed for access method 16385

Whilst
CREATE TABLE t (a int) USING ham;
DROP ACCESS METHOD ham;

fails with
ERROR:  cannot drop access method ham because other objects depend on it
DETAIL:  table t depends on access method ham
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

Reproduced starting from 374c7a229.

Commits

  1. Fix dependency of partitioned table and table AM with CREATE TABLE .. USING