Hello

Yet another review of this patch from me...

>        An index build with the <literal>CONCURRENTLY</literal> option failed, 
> leaving
>        an <quote>invalid</quote> index. Such indexes are useless but it can be
> -      convenient to use <command>REINDEX</command> to rebuild them. Note that
> -      <command>REINDEX</command> will not perform a concurrent build. To 
> build the
> -      index without interfering with production you should drop the index and
> -      reissue the <command>CREATE INDEX CONCURRENTLY</command> command.
> +      convenient to use <command>REINDEX</command> to rebuild them.

Not sure we can just say "use REINDEX" since only non-concurrently reindex can 
rebuild such index. I propose to not change this part.

> +    The following steps occur in a concurrent index build, each in a separate
> +    transaction except when the new index definitions are created
> 
> +       All the constraints and foreign keys which refer to the index are 
> swapped...
> +       ... This step is done within a single transaction
> +       for each temporary entry.
> 
> +       Old indexes have <literal>pg_index.indisready</literal> switched to 
> <quote>false</quote>
> +       to prevent any new tuple insertions after waiting for running queries 
> which
> +       may reference the old index to complete. This step is done within a 
> single
> +       transaction for each temporary entry.

According to the code index_concurrently_swap is called in loop inside one 
transaction for all processed indexes of table. Same for 
index_concurrently_set_dead and index_concurrently_drop calls. So this part of 
documentation seems incorrect.

And few questions:
- reindexdb has concurrently flag logic even in reindex_system_catalogs, but 
"reindex concurrently" can not reindex system catalog. Is this expected?
- should reindexdb check server version? For example, binary from patched HEAD 
can reindex v11 cluster and obviously fail if --concurrently was requested.
- psql/tab-complete.c vs old releases? Seems we need suggest CONCURRENTLY 
keyword only for releases with concurrently support.

Well, i still have no new questions about backend logic. Maybe we need mark 
patch as "Ready for Committer" in order to get more attention from other 
committers?

regards, Sergei

Reply via email to