Product / voor PostgreSQL

Postgres Migration Safety Auditor.

Onderschep de databasemigratie die je productietabel op slot zet of herschrijft, voordat die in productie komt. Een statische auditor voor Flyway en Liquibase die elk productierisico aanwijst met de precieze reden en de veilige herschrijving, te draaien als CLI, als CI-gate of als Claude Code-skill. Hij maakt nooit verbinding met je database.

Wat het onderschept

De meeste migratiereviews zijn een generalist die een diff leest. Daarmee mis je juist de specifieke manieren waarop een PostgreSQL-migratie je site plat legt. De auditor controleert 36 regels, parst je werkelijke migratie met de echte PostgreSQL-parser (geen regex) en markeert elk risico met een officiële bronvermelding:

De gratis cheatsheet

De tien schemawijzigingen die een draaiende PostgreSQL-database het vaakst plat leggen, met voor elk de veilige herschrijving. Een migratie is gevaarlijk zodra hij een zware lock vasthoudt (ACCESS EXCLUSIVE blokkeert lezen en schrijven, SHARE blokkeert schrijven) terwijl hij een grote tabel scant of herschrijft. Op een kleine tabel merk je er niets van, op een drukke productietabel is het een storing. Flyway en Liquibase verpakken elke migratie standaard in een transactie, en dat maakt voor een aantal hiervan uit.

  1. CREATE INDEX (zonder CONCURRENTLY) neemt een SHARE-lock die elke schrijfactie blokkeert zolang de index bouwt. Veilig: CREATE INDEX CONCURRENTLY ... buiten een transactie.
  2. SET NOT NULL (direct) scant de hele tabel onder ACCESS EXCLUSIVE. Veilig: ADD CONSTRAINT c CHECK (col IS NOT NULL) NOT VALID, dan VALIDATE CONSTRAINT c, dan SET NOT NULL (scan vervalt op PG12+).
  3. ADD CHECK (zonder NOT VALID) scant de hele tabel onder ACCESS EXCLUSIVE. Veilig: voeg hem toe als NOT VALID en doe daarna VALIDATE.
  4. ADD FOREIGN KEY (zonder NOT VALID) valideert elke rij terwijl hij op beide tabellen een lock houdt die schrijven blokkeert. Veilig: toevoegen als NOT VALID, daarna VALIDATE.
  5. ADD COLUMN met een volatile DEFAULT of SERIAL herschrijft de hele tabel (gen_random_uuid(), random(), SERIAL). now() en CURRENT_TIMESTAMP zijn veilig. Veilig: nullable toevoegen, in batches backfillen, daarna SET DEFAULT.
  6. ALTER COLUMN ... TYPE herschrijft de tabel, behalve bij binair converteerbare wijzigingen zoals varchar naar text. Veilig: nieuwe kolom, backfillen, omwisselen, de oude verwijderen.
  7. ADD PRIMARY KEY / UNIQUE (direct) bouwt de index onder ACCESS EXCLUSIVE. Veilig: CREATE UNIQUE INDEX CONCURRENTLY, daarna ADD CONSTRAINT ... USING INDEX.
  8. Backfills in de verkeerde volgorde of in één reusachtige statement lopen vast of veroorzaken bloat. Veilig: nullable toevoegen, in batches backfillen, valideren en pas daarna aanscherpen, verdeeld over losse deploys.
  9. Lock-nemende DDL zonder lock_timeout kan al het verkeer dat erachter in de wachtrij staat laten stilvallen. Veilig: SET lock_timeout = '2s'; vóór riskante DDL, en opnieuw proberen bij een timeout.
  10. Destructieve operaties (DROP / TRUNCATE / DROP COLUMN) zijn onomkeerbaar en breken rolling deploys. Veilig: expand/contract, eerst stoppen met naar het object te verwijzen, en het in een latere deploy verwijderen.

Valkuil: CREATE INDEX CONCURRENTLY kan niet binnen een transactie draaien, en precies zo verpakken Flyway en Liquibase migraties standaard, dus een kale concurrent-index-migratie loopt vast. Zet de omhullende transactie uit voor die ene migratie. De auditor vangt ook dit, plus 25 regels bovenop deze tien.

Wat je krijgt

De tool

De Claude Code-skill en de CLI, gebouwd op libpg_query (de parser die PostgreSQL zelf gebruikt), met alle 5 platformbinaries meegeleverd. Alleen Python 3, verder niets te installeren via pip. Linux, macOS en Windows.

Gemaakt voor CI

Machineleesbare JSON volgens een gedocumenteerd schema, exitcodes gekoppeld aan severity zodat het zo in een pipeline past, en een configbestand voor je Postgres-versie en je drempel voor grote tabellen.

Onderbouwd en getest

Elke regel verwijst naar een officiële bron van Postgres, Flyway of Liquibase. Inclusief een regressiesuite van 224 uitgewerkte voorbeelden die je zelf kunt draaien.

Bewust puur statische analyse: hij leest de tekst van de migratie en maakt nooit verbinding met je database, dus hij heeft geen credentials nodig en draait identiek in CI of op je laptop, zonder dat er iets je machine verlaat. Hij redeneert op basis van de Postgres-versie en de rijaantallen die je meegeeft (of die automatisch worden ingevuld via de optionele lokale read-only introspectie) en vangt de veelvoorkomende risico's met grote impact die een diff-review mist.

Haal het

Deploy migraties zonder de storing om drie uur 's nachts.

Eenmalige aankoop, €14,99. Verkocht via Polar of Lemon Squeezy, allebei merchant of record met de btw geregeld. Directe download, alle platformen.

Eerst de engine zelf draaien? Postgres Migration Guard is de gratis, open source subset: 12 van dezelfde regels, als CLI en als GitHub Action.

Alle producten van Technical Turtle