> I didn't look closely yet, but this comment is wrong: > > + * Since these have no storage the tablespace can be updated with a simple > + * metadata only operation to update the tablespace.
Good catch. Fixed.
> It'd be convenient if AMs worked the same way (and a bit odd that they don't). > Note that in v15, pg_dump/restore now allow --no-table-am, an exact parallel to > --no-tablespace.
I agree that ATSET AM should behave in a similar fashion to ATSET tablespaces. However, the way that ATSET tablespace currently behaves is not consistent with the ONLY clause.
On a given partition root: ALTER TABLE ONLY am_partitioned SET TABLESPACE ts; has the same effect as: ALTER TABLE am_partitioned SET TABLESPACE ts;
We are missing out on the feature to set the AM/tablespace throughout the partition hierarchy, with one command.
- /* look up the access method, verify it is for a table */ - if (accessMethod != NULL) - accessMethodId = get_table_am_oid(accessMethod, false); + if (!HeapTupleIsValid(tup))
+ elog(ERROR, "cache lookup failed for relation %u", relid);
The validity check of tup should be done before fetching the value of relam field.