On Mon, Jan 28, 2013 at 8:44 PM, Andres Freund <andres@anarazel.de> wrote:
> Another argument that would be enough for a rejection of this patch by a
> committer is the problem of invalid toast indexes that cannot be removed up > cleanly by an operator. As long as there is not a clean solution for > that...
I think that part is relatively easy to fix, I wouldn't worry too much. The more complex part is how to get tuptoaster.c to update the concurrently created index. That's what I worry about. Its not going through the normal executor paths but manually updates the toast index - which means it won't update the indisready && !indisvalid index...
I included in the patch some stuff to update the reltoastidxid of the parent relation of the toast index. Have a look at index.c:index_concurrent_swap. The particular case I had in mind was if there is a failure of the server during the concurrent reindex of a toast index. When server restarts, the toast relation will have an invalid index and this cannot be dropped by an operator via SQL.