Prodotto / per PostgreSQL

Postgres Migration Safety Auditor.

Intercetta la migrazione che blocca o riscrive la tua tabella di produzione, prima che arrivi in produzione. Un auditor statico per Flyway e Liquibase che segnala ogni rischio di produzione con il motivo preciso e la riscrittura sicura, da eseguire come CLI, come gate CI o come skill di Claude Code. Non si connette mai al tuo database.

Cosa intercetta

La maggior parte delle revisioni di migrazioni è un generalista che legge un diff. Così sfuggono proprio i modi specifici in cui una migrazione PostgreSQL mette a terra il sito. L'auditor controlla 36 regole, analizza la tua migrazione reale con il vero parser di PostgreSQL (non regex) e segnala ogni rischio con una citazione ufficiale:

Il cheatsheet gratuito

Le dieci modifiche di schema che più facilmente mettono a terra un database PostgreSQL attivo, ognuna con la riscrittura sicura. Una migrazione è pericolosa quando tiene un lock forte (ACCESS EXCLUSIVE blocca letture e scritture, SHARE blocca le scritture) mentre scansiona o riscrive una tabella grande. Su una tabella piccola non te ne accorgi, su una tabella di produzione molto usata è un disservizio. Flyway e Liquibase avvolgono ogni migrazione in una transazione per impostazione predefinita, e per diverse di queste fa la differenza.

  1. CREATE INDEX (senza CONCURRENTLY) prende un lock SHARE che blocca ogni scrittura per tutta la costruzione. Sicuro: CREATE INDEX CONCURRENTLY ... fuori da una transazione.
  2. SET NOT NULL (diretto) scansiona tutta la tabella sotto ACCESS EXCLUSIVE. Sicuro: ADD CONSTRAINT c CHECK (col IS NOT NULL) NOT VALID, poi VALIDATE CONSTRAINT c, poi SET NOT NULL (la scansione viene saltata su PG12+).
  3. ADD CHECK (senza NOT VALID) scansiona tutta la tabella sotto ACCESS EXCLUSIVE. Sicuro: aggiungilo come NOT VALID, poi VALIDATE.
  4. ADD FOREIGN KEY (senza NOT VALID) valida ogni riga tenendo su entrambe le tabelle un lock che blocca le scritture. Sicuro: aggiungilo come NOT VALID, poi VALIDATE.
  5. ADD COLUMN con un DEFAULT volatile o SERIAL riscrive l'intera tabella (gen_random_uuid(), random(), SERIAL). now() e CURRENT_TIMESTAMP sono sicuri. Sicuro: aggiungi nullable, fai il backfill a batch, poi SET DEFAULT.
  6. ALTER COLUMN ... TYPE riscrive la tabella, tranne per conversioni binariamente compatibili come da varchar a text. Sicuro: nuova colonna, backfill, scambio, elimina la vecchia.
  7. ADD PRIMARY KEY / UNIQUE (diretto) costruisce l'indice sotto ACCESS EXCLUSIVE. Sicuro: CREATE UNIQUE INDEX CONCURRENTLY, poi ADD CONSTRAINT ... USING INDEX.
  8. Backfill nell'ordine sbagliato o in un unico statement enorme falliscono o generano bloat. Sicuro: aggiungi nullable, backfill a batch, valida e solo dopo stringi, distribuendo su deploy separati.
  9. DDL che prende lock senza lock_timeout può bloccare tutto il traffico in coda dietro di esso. Sicuro: SET lock_timeout = '2s'; prima di DDL rischiosa, e riprova in caso di timeout.
  10. Operazioni distruttive (DROP / TRUNCATE / DROP COLUMN) sono irreversibili e rompono i deploy progressivi. Sicuro: expand/contract, smetti prima di referenziare l'oggetto, ed eliminalo in un deploy successivo.

Trappola: CREATE INDEX CONCURRENTLY non può girare dentro una transazione, ed è esattamente così che Flyway e Liquibase avvolgono le migrazioni per impostazione predefinita, quindi una migrazione con indice concorrente senza accorgimenti fallisce. Disattiva la transazione avvolgente per quella singola migrazione. L'auditor intercetta anche questo, più 25 regole oltre a queste dieci.

Cosa ottieni

Lo strumento

La skill per Claude Code e la CLI, costruite su libpg_query (il parser che PostgreSQL usa al suo interno), con tutti e 5 i binari di piattaforma inclusi. Solo Python 3, nulla da installare con pip. Linux, macOS e Windows.

Fatto per la CI

JSON leggibile da macchina secondo uno schema documentato, exit code legati alla severità così da inserirsi in una pipeline, e un file di configurazione per la tua versione di Postgres e la soglia per le tabelle grandi.

Documentato e testato

Ogni regola rimanda a una fonte ufficiale di Postgres, Flyway o Liquibase. Include una suite di regressione con 224 esempi svolti che puoi eseguire tu stesso.

Per scelta è analisi puramente statica: legge il testo della migrazione e non si connette mai al tuo database, quindi non serve alcuna credenziale e gira allo stesso modo in CI o sul tuo portatile, senza che nulla lasci la tua macchina. Ragiona sulla versione di Postgres e sui conteggi di righe che gli fornisci (o compilati automaticamente tramite l'introspezione locale opzionale in sola lettura) e intercetta i rischi comuni ad alto impatto che una revisione del diff si perde.

Prendilo

Fai il deploy delle migrazioni senza il disservizio delle tre di notte.

Acquisto una tantum, 14,99 €. Venduto tramite Polar o Lemon Squeezy, entrambi merchant of record con l'IVA gestita. Download immediato, tutte le piattaforme.

Vuoi provare il motore prima di comprare? Postgres Migration Guard è il sottoinsieme gratuito e open source: 12 delle stesse regole, come CLI e come GitHub Action.

Tutti i prodotti di Technical Turtle