Re: REINDEX CONCURRENTLY 2.0
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Andres Freund <andres@2ndquadrant.com>
Cc: 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: 2015-02-03T15:39:01Z
Lists: pgsql-hackers
On Mon, Feb 2, 2015 at 9:10 AM, Andres Freund <andres@2ndquadrant.com> wrote: > On 2014-11-12 16:11:58 -0500, Robert Haas wrote: >> On Wed, Nov 12, 2014 at 4:10 PM, Robert Haas <robertmhaas@gmail.com> wrote: >> > On Thu, Nov 6, 2014 at 9:50 AM, Peter Eisentraut <peter_e@gmx.net> wrote: >> >> If REINDEX cannot work without an exclusive lock, we should invent some >> >> other qualifier, like WITH FEWER LOCKS. >> > >> > What he said. >> >> But more to the point .... why, precisely, can't this work without an >> AccessExclusiveLock? And can't we fix that instead of setting for >> something clearly inferior? > > So, here's an alternative approach of how to get rid of the AEL > locks. They're required because we want to switch the relfilenodes > around. I've pretty much no confidence in any of the schemes anybody has > come up to avoid that. > > So, let's not switch relfilenodes around. > > I think if we should instead just use the new index, repoint the > dependencies onto the new oid, and then afterwards, when dropping, > rename the new index one onto the old one. That means the oid of the > index will change and some less than pretty grovelling around > dependencies, but it still seems preferrable to what we're discussing > here otherwise. > > Does anybody see a fundamental problem with that approach? I'm not sure whether that will work out, but it seems worth a try. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
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