Re: REINDEX CONCURRENTLY 2.0
Michael Paquier <michael.paquier@gmail.com>
From: Michael Paquier <michael.paquier@gmail.com>
To: Jim Nasby <jim@nasby.net>
Cc: PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2014-01-21T13:12:25Z
Lists: pgsql-hackers
Attachments
- 20140121_0_old_snapshots.patch (text/x-diff) patch
- 20140121_1_reindex_conc_core.patch (text/x-diff) patch
Hi, Thanks for your comments. On Fri, Jan 10, 2014 at 9:59 AM, Jim Nasby <jim@nasby.net> wrote: > Sorry for the lateness of this... > > On 11/14/13, 8:40 PM, Michael Paquier wrote: >> >> + /* >> + * Phase 4 of REINDEX CONCURRENTLY >> + * >> + * Now that the concurrent indexes have been validated could be >> used, >> + * we need to swap each concurrent index with its corresponding >> old index. >> + * Note that the concurrent index used for swaping is not marked >> as valid >> + * because we need to keep the former index and the concurrent >> index with >> + * a different valid status to avoid an implosion in the number of >> indexes >> + * a parent relation could have if this operation fails multiple >> times in >> + * a row due to a reason or another. Note that we already know >> thanks to >> + * validation step that >> + */ >> + > > > Was there supposed to be more to that comment? Not really, it seems that this chunk came out after writing multiple successive versions of this patch. > In the loop right below it... > > + /* Swap the indexes and mark the indexes that have the old data as > invalid */ > + forboth(lc, indexIds, lc2, concurrentIndexIds) > ... > + CacheInvalidateRelcacheByRelid(relOid); > > Do we actually need to invalidate the cache on each case? Is it because > we're grabbing a new transaction each time through? This is to force a refresh of the cached plans that have been using the old index before transaction of step 4 began. I have realigned this patch with latest head (d2458e3)... In case someone is interested at some point... Regards, -- Michael
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