MP075WARNINGFree

warn-toast-bloat-risk

What It Detects

UPDATE on TOAST-eligible columns (TEXT/JSONB/BYTEA) causes storage bloat until VACUUM runs.

Why It's Dangerous

When you UPDATE a row with TOAST-stored columns, PostgreSQL creates new TOAST chunks and marks old chunks as dead. Dead chunks are only reclaimed by VACUUM, causing tables to grow many times their logical size.

Bad Example

UPDATE users SET metadata = jsonb_set(metadata, '{key}', '"value"');

Good Example

UPDATE users SET metadata = jsonb_set(metadata, '{key}', '"value"');
-- Run VACUUM after bulk TOAST-column updates:
VACUUM (VERBOSE) users;

Configuration

Disable this rule:

# .migrationpilotrc.yml
rules:
  MP075: false

Or change its severity:

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