- In a concurrent index build, the index is actually entered into the
- system catalogs in one transaction, then the two table scans occur in a
- second and third transaction. All active transactions at the time the
- second table scan starts, not just ones that already involve the table,
- have the potential to block the concurrent index creation until they
- finish. When checking for transactions that could still use the original
- index, concurrent index creation advances through potentially interfering
- older transactions one at a time, obtaining shared locks on their virtual
- transaction identifiers to wait for them to complete.
+ In a concurrent index build, the index is actually entered into
+ the system catalogs in one transaction, then two table scans occur in
+ two more transactions. Any transaction active when the second table
+ scan starts can block concurrent index creation until it completes,
+ even transactions that only reference the table after the second table
+ scan starts. Concurrent index creation serially waits for each old
+ transaction to complete using the method outlined in section
+ linkend="view-pg-locks">.