MP063WARNINGFree
warn-do-block-ddl
What It Detects
DO block contains DDL that bypasses static analysis — lock impact cannot be determined.
Why It's Dangerous
PL/pgSQL DO blocks execute arbitrary code that cannot be analyzed by SQL linters. DDL inside DO blocks (ALTER TABLE, CREATE INDEX, DROP) acquires the same locks as direct SQL, but the operations are invisible to static analysis. Extract DDL from DO blocks into direct SQL statements for full safety analysis.
Bad Example
DO $$ BEGIN ALTER TABLE users ADD COLUMN age INTEGER; CREATE INDEX idx_users_age ON users (age); END; $$;
Good Example
-- Extract DDL into direct SQL statements ALTER TABLE users ADD COLUMN age INTEGER; CREATE INDEX CONCURRENTLY idx_users_age ON users (age);
Configuration
Disable this rule:
# .migrationpilotrc.yml rules: MP063: false
Or change its severity:
# .migrationpilotrc.yml
rules:
MP063:
severity: warning