MP025CRITICALFree

ban-concurrent-in-transaction

What It Detects

CONCURRENTLY operations inside a transaction block always fail at runtime.

Why It's Dangerous

CREATE INDEX CONCURRENTLY, DROP INDEX CONCURRENTLY, and REINDEX CONCURRENTLY cannot run inside a transaction. If your migration framework wraps in BEGIN/COMMIT, the operation will error.

Bad Example

BEGIN;
CREATE INDEX CONCURRENTLY idx_users_email ON users (email);
COMMIT;

Good Example

-- Must run outside a transaction
CREATE INDEX CONCURRENTLY idx_users_email ON users (email);

Configuration

Disable this rule:

# .migrationpilotrc.yml
rules:
  MP025: false

Or change its severity:

# .migrationpilotrc.yml
rules:
  MP025:
    severity: warning