Re: ALTER TABLE SET ACCESS METHOD on partitioned tables
Peter Eisentraut <peter@eisentraut.org>
From: Peter Eisentraut <peter@eisentraut.org>
To: Justin Pryzby <pryzby@telsasoft.com>,
Michael Paquier <michael@paquier.xyz>
Cc: Soumyadeep Chakraborty <soumyadeep2007@gmail.com>,
Zhihong Yu <zyu@yugabyte.com>, pgsql-hackers@postgresql.org,
Ashwin Agrawal <ashwinstar@gmail.com>, vanjared@vmware.com
Date: 2024-02-20T14:47:46Z
Lists: pgsql-hackers
On 19.07.23 20:13, Justin Pryzby wrote: > On Thu, Jun 01, 2023 at 08:50:50AM -0400, Michael Paquier wrote: >> On Wed, May 31, 2023 at 06:35:34PM -0500, Justin Pryzby wrote: >>> What do you think the comment ought to say ? It already says: >>> >>> src/backend/catalog/heap.c- * Make a dependency link to force the relation to be deleted if its >>> src/backend/catalog/heap.c- * access method is. >> >> This is the third location where we rely on the fact that >> RELKIND_HAS_TABLE_AM() does not include RELKIND_PARTITIONED_TABLE, so >> it seems worth documenting what we are relying on as a comment? Say: >> * Make a dependency link to force the relation to be deleted if its >> * access method is. >> * >> * No need to add an explicit dependency for the toast table, as the >> * main table depends on it. Partitioned tables have a table access >> * method defined, and RELKIND_HAS_TABLE_AM ignores them. > > You said that this location "relies on" the macro not including > partitioned tables, but I would say the opposite: the places that use > RELKIND_HAS_TABLE_AM() and do *not* say "or relkind==PARTITIONED_TABLE" > are the ones that "rely on" that... > > Anyway, this updates various comments. No other changes. It would be helpful if this patch could more extensively document in its commit message what semantic changes it makes. Various options of possible behaviors were discussed in this thread, but it's not clear which behaviors were chosen in this particular patch version. The general idea is that you can set an access method on a partitioned table. That much seems very agreeable. But then what happens with this setting, how can you override it, how can you change it, what happens when you change it, what happens with existing partitions and new partitions, etc. -- and which of these behaviors are new and old. Many things to specify.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add information about access method for partitioned relations in \dP+
- 978f38c771fb 18.0 landed
-
Fix dumps of partitioned tables with table AMs
- f46bee346c3b 17.0 landed
-
Don't use the pg_am system catalog in new test
- 13b3b62746ec 17.0 landed
-
ALTER TABLE: rework determination of access method ID
- e2395cdbe83a 17.0 landed
-
Allow specifying an access method for partitioned tables
- 374c7a229042 17.0 landed
-
Review wording on tablespaces w.r.t. partitioned tables
- ea299d782511 15.7 landed
- e6c4e01bf440 16.3 landed
- a0390f6ca6c7 17.0 landed
- 58efabdc0ce9 12.19 landed
- 520e7afa5732 13.15 landed
- 33bfbef1d60f 14.12 landed
-
Add support for DEFAULT in ALTER TABLE .. SET ACCESS METHOD
- d61a6cad6418 17.0 landed
-
Update comment of AlterTableCmd->name in parsenodes.h
- 4f8c1e7aaf11 17.0 landed