Re: ALTER TABLE SET ACCESS METHOD on partitioned tables
От | Zhihong Yu |
---|---|
Тема | Re: ALTER TABLE SET ACCESS METHOD on partitioned tables |
Дата | |
Msg-id | CALNJ-vRWNh87w0jHEep6zzB3rxJWe_TEm-YrJsixTOZ0PyTOdQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: ALTER TABLE SET ACCESS METHOD on partitioned tables (Soumyadeep Chakraborty <soumyadeep2007@gmail.com>) |
Ответы |
Re: ALTER TABLE SET ACCESS METHOD on partitioned tables
|
Список | pgsql-hackers |
On Wed, May 18, 2022 at 5:49 PM Soumyadeep Chakraborty <soumyadeep2007@gmail.com> wrote:
On Wed, May 18, 2022 at 4:14 PM Justin Pryzby <pryzby@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,
- /* 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
В списке pgsql-hackers по дате отправления: