Re: Support for REINDEX CONCURRENTLY

Fujii Masao <masao.fujii@gmail.com>

From: Fujii Masao <masao.fujii@gmail.com>
To: Michael Paquier <michael.paquier@gmail.com>
Cc: Andres Freund <andres@2ndquadrant.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>, Peter Eisentraut <peter_e@gmx.net>, Tom Lane <tgl@sss.pgh.pa.us>, Simon Riggs <simon@2ndquadrant.com>
Date: 2013-07-02T20:51:58Z
Lists: pgsql-hackers
On Wed, Jul 3, 2013 at 5:43 AM, Michael Paquier
<michael.paquier@gmail.com> wrote:
> On Wed, Jul 3, 2013 at 5:22 AM, Fujii Masao <masao.fujii@gmail.com> wrote:
>> Why did you remove the check of indisvalid from the --binary-upgrade SQL?
>> Without this check, if there is the invalid toast index, more than one rows are
>> returned and ExecuteSqlQueryForSingleRow() would cause the error.
>>
>> +       foreach(lc, indexlist)
>> +               *toastidxs[i++] = index_open(lfirst_oid(lc), lock);
>>
>> *toastidxs[i++] should be (*toastidxs)[i++]. Otherwise, segmentation fault can
>> happen.
>>
>> For now I've not found any other big problem except the above.

system_views.sql
-    GROUP BY C.oid, N.nspname, C.relname, T.oid, X.oid;
+    GROUP BY C.oid, N.nspname, C.relname, T.oid, X.indexrelid;

I found another problem. X.indexrelid should be X.indrelid. Otherwise, when
there is the invalid toast index, more than one rows are returned for the same
relation.

> OK cool, updated version attached. If you guys think that the attached
> version is fine (only the reltoasyidxid removal part), perhaps it
> would be worth committing it as Robert also committed the MVCC catalog
> patch today. So we would be able to focus on the core feature asap
> with the 2nd patch, and the removal of AccessExclusiveLock at swap
> step.

Yep, will do. Maybe today.

Regards,

-- 
Fujii Masao


Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Background worker processes

  2. Fix assorted bugs in CREATE/DROP INDEX CONCURRENTLY.

  3. Work around unportable behavior of malloc(0) and realloc(NULL, 0).

  4. Properly set relpersistence for fake relcache entries.