On Wed, May 18, 2022 at 5:49 PM Soumyadeep Chakraborty < soumyadeep2...@gmail.com> wrote:
> > On Wed, May 18, 2022 at 4:14 PM Justin Pryzby <pry...@telsasoft.com> > wrote: > > > 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. > > Regards, > Soumyadeep (VMware) > > Hi, + accessMethodId = ((Form_pg_class) GETSTRUCT(tup))->relam; - /* 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. Cheers