Re: Support for REINDEX CONCURRENTLY
Andres Freund <andres@2ndquadrant.com>
From: Andres Freund <andres@2ndquadrant.com>
To: Jim Nasby <jim@nasby.net>
Cc: Michael Paquier <michael.paquier@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Alvaro Herrera <alvherre@2ndquadrant.com>, Greg Stark <stark@mit.edu>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2012-10-08T22:08:38Z
Lists: pgsql-hackers
On Monday, October 08, 2012 11:57:46 PM Jim Nasby wrote: > On 10/5/12 9:57 PM, Michael Paquier wrote: > > In the current version of the patch, at the beginning of process a new > > index is created. It is a twin of the index it has to replace, meaning > > that it copies the dependencies of old index and creates twin entries of > > the old index even in pg_depend and pg_constraint also if necessary. So > > the old index and the new index have exactly the same data in catalog, > > they are completely decoupled, and you do not need to worry about the > > OID replacements and the visibility consequences. > > Yeah, what's the risk to renaming an index during concurrent access? The > only thing I can think of is an "old" backend referring to the wrong index > name in an elog. That's certainly not great, but could possibly be dealt > with. We cannot have two indexes with the same oid in the catalog, so the two different names will have to have different oids. Unfortunately the indexes oid is referred to by other tables (e.g. pg_constraint), so renaming the indexes while differering in the oid isn't really helpful :(... Right now I don't see anything that would make switching oids easier than relfilenodes. Andres -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Background worker processes
- da07a1e85651 9.3.0 cited
-
Fix assorted bugs in CREATE/DROP INDEX CONCURRENTLY.
- 3c84046490be 9.3.0 cited
-
Work around unportable behavior of malloc(0) and realloc(NULL, 0).
- 09ac603c36d1 9.3.0 cited
-
Properly set relpersistence for fake relcache entries.
- beb850e1d873 9.3.0 cited