From aa783575294f6e3579b9c78a75d54a693f010213 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Fri, 20 May 2022 10:05:31 +0200 Subject: [PATCH] doc: Explain 'invalid' index state for CREATE INDEX CONCURRENTLY It wasn't previously mentioned that the index is created as invalid, which is confusing to new users. Backpatch to 14 (only because of a conflict in 13). Author: Laurenz Albe Reported-by: Lauren Fliksteen Reviewed-by: Rajakavitha Kodhandapani Discussion: https://postgr.es/m/165290238488.670.7500177735573254738@wrigleys.postgresql.org --- doc/src/sgml/ref/create_index.sgml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/src/sgml/ref/create_index.sgml b/doc/src/sgml/ref/create_index.sgml index cc484d5b398..11179f0b9d9 100644 --- a/doc/src/sgml/ref/create_index.sgml +++ b/doc/src/sgml/ref/create_index.sgml @@ -606,7 +606,8 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] - In a concurrent index build, the index is actually entered into + In a concurrent index build, the index is actually entered as an + invalid index into the system catalogs in one transaction, then two table scans occur in two more transactions. Before each table scan, the index build must wait for existing transactions that have modified the table to terminate. @@ -615,7 +616,7 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] valid and ready for use, and the CREATE INDEX command terminates. Even then, however, the index may not be immediately usable for queries: in the worst case, it cannot be used as long as transactions exist that