requireConcurrentIndexCreation

Diagnostic Category: lint/safety/requireConcurrentIndexCreation

Since: vnext

Sources: - Inspired from: squawk/require-concurrent-index-creation

Description

Creating indexes non-concurrently can lock the table for writes.

When creating an index on an existing table, using CREATE INDEX without CONCURRENTLY will lock the table against writes for the duration of the index build. This can cause downtime in production systems. Use CREATE INDEX CONCURRENTLY to build the index without blocking concurrent operations.

Examples

Invalid

CREATE INDEX users_email_idx ON users (email);
code-block.sql:1:1 lint/safety/requireConcurrentIndexCreation ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ! Creating an index non-concurrently blocks writes to the table.

  > 1 │ CREATE INDEX users_email_idx ON users (email);
      │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    2 │ 

  i Use CREATE INDEX CONCURRENTLY to avoid blocking concurrent operations on the table.


Valid

CREATE INDEX CONCURRENTLY users_email_idx ON users (email);

How to configure


{
  "linter": {
    "rules": {
      "safety": {
        "requireConcurrentIndexCreation": "error"
      }
    }
  }
}