summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2020-11-30 18:24:55 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2020-11-30 18:24:55 -0300
commitb3d33bf598dd64c95f48111081b6672ec0dc380e (patch)
treedac98354adc240f91bbefc0d1f4ef45e5bb4ea19
parentab4cbb4bceff6f939f12d0edbe84004d85ebea16 (diff)
Document concurrent indexes waiting on each other
Because regular CREATE INDEX commands are independent, and there's no logical data dependency, it's not immediately obvious that transactions held by concurrent index builds on one table will block the second phase of concurrent index creation on an unrelated table, so document this caveat. Backpatch this all the way back. In branch master, mention that only some indexes are involved. Author: James Coleman <jtc331@gmail.com> Reviewed-by: David Johnston <david.g.johnston@gmail.com> Discussion: https://postgr.es/m/CAAaqYe994=PUrn8CJZ4UEo_S-FfRr_3ogERyhtdgHAb2WG_Ufg@mail.gmail.com
-rw-r--r--doc/src/sgml/ref/create_index.sgml5
1 files changed, 3 insertions, 2 deletions
diff --git a/doc/src/sgml/ref/create_index.sgml b/doc/src/sgml/ref/create_index.sgml
index 94d43bf33a5..645431ee10d 100644
--- a/doc/src/sgml/ref/create_index.sgml
+++ b/doc/src/sgml/ref/create_index.sgml
@@ -446,8 +446,9 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] <replaceable class=
wait for existing transactions that have modified the table to terminate.
After the second scan, the index build must wait for any transactions
that have a snapshot (see <xref linkend="mvcc">) predating the second
- scan to terminate. Then finally the index can be marked ready for use,
- and the <command>CREATE INDEX</> command terminates.
+ scan to terminate, including transactions used by any phase of concurrent
+ index builds on other tables. Then finally the index can be marked ready for use,
+ and the <command>CREATE INDEX</command> 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
predate the start of the index build.