Re: BUG #16577: Segfault on altering a table located in a dropped tablespace
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Tomas Vondra <tomas.vondra@2ndquadrant.com>, Tom Lane <tgl@sss.pgh.pa.us>, exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2021-01-14T04:49:49Z
Lists: pgsql-bugs
On Wed, Jan 13, 2021 at 09:57:00AM -0300, Alvaro Herrera wrote: > On 2021-Jan-13, Michael Paquier wrote: >> I have not found a thread discussing that around the date of this >> commit, but I'll take your word on that. > > I bet you didn't search pgsql-patches ;-) > https://www.postgresql.org/message-id/flat/20050703051522.GA13207%40surnet.cl Ah, thanks. I only looked at -hackers and -bugs. This makes sense. >> For now we assume that this code path is taken only for partitioned >> tables or indexes per the logic in heap_create(). Perhaps it would be >> better to add to this code path, or to recordDependencyOnTablespace() >> an assertion to check that only the supported relkinds register this >> dependency? If a new relkind is added, it would be easy to miss that >> this shared dependency may need to be supported. > > Hmm ... the intent here is that if there is no storage, but a tablespace > is specified, then a dependency protects. This should be agnostic to > relkind considerations. I had first written the new symbol as > SHARED_DEPENDENCY_PARTITIONED_TABLE but then I realized the error of my > ways :-) Yeah, SHARED_DEPENDENCY_TABLESPACE is much better. Perhaps I am just too much willing to add unnecessary defenses, so I am fine with any decision you'll take here. In short, I am fine with what you have. Thanks for taking the time to sort this stuff out. -- Michael
Commits
-
Prevent drop of tablespaces used by partitioned relations
- ebfe2dbd6b62 14.0 landed
- c9b702552acc 12.6 landed
- c442b32c2e6d 11.11 landed
- 5b01a6f13ff7 13.2 landed
-
Don't create relfilenode for relations without storage
- 807ae415c546 12.0 cited