Re: REINDEX CONCURRENTLY 2.0
Alvaro Herrera <alvherre@2ndquadrant.com>
From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Andres Freund <andres@2ndquadrant.com>
Cc: Robert Haas <robertmhaas@gmail.com>, Peter Eisentraut <peter_e@gmx.net>,
Michael Paquier <michael.paquier@gmail.com>, Jim Nasby <jim@nasby.net>,
PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2014-11-13T01:25:37Z
Lists: pgsql-hackers
Andres Freund wrote: > On 2014-11-12 18:23:38 -0500, Robert Haas wrote: > > > The problem is that it's very hard to avoid the wrong index's > > > relfilenode being used when swapping the relfilenodes between two > > > indexes. > > > > How about storing both the old and new relfilenodes in the same pg_class entry? > > That's quite a cool idea > > [think a bit] > > But I think it won't work realistically. We have a *lot* of > infrastructure that refers to indexes using it's primary key. Hmm, can we make the relmapper do this job instead of having another pg_class column? Essentially the same sketch Robert proposed, instead we would initially set relfilenode=0 and have all onlookers use the relmapper to obtain the correct relfilenode; switching to the new relfilenode can be done atomically, and un-relmap the index once the process is complete. The difference from what Robert proposes is that the transient state is known to cause failures for anyone not prepared to deal with it, so it should be easy to spot what places need adjustment. -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Commits
-
Prevent reindex of invalid indexes on TOAST tables
- 8bca5f93547c 12.3 landed
- 61d7c7bce368 13.0 landed
-
Rework handling of invalid indexes with REINDEX CONCURRENTLY
- a6dcf9df4d91 12.0 landed
-
Split builtins.h to a new header ruleutils.h
- 7b1c2a0f2066 9.5.0 cited