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