MP008CRITICALFree

no-multi-ddl-transaction

What It Detects

Multiple DDL statements in a single transaction compound lock duration.

Why It's Dangerous

Each DDL statement acquires locks that are held until the transaction commits. Multiple DDL in one transaction means all locks are held simultaneously for the total duration, multiplying the impact on concurrent queries.

Bad Example

BEGIN;
ALTER TABLE users ADD COLUMN bio TEXT;
CREATE INDEX idx_users_bio ON users (bio);
COMMIT;

Good Example

-- Run each DDL in its own transaction
ALTER TABLE users ADD COLUMN bio TEXT;
-- separate transaction
CREATE INDEX CONCURRENTLY idx_users_bio ON users (bio);

Configuration

Disable this rule:

# .migrationpilotrc.yml
rules:
  MP008: false

Or change its severity:

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