Blog

Technical guides on PostgreSQL migrations, locking behavior, and zero-downtime schema changes.

12 min read

PostgreSQL 18 Changed NOT NULL — Update Your Migration Rules

PostgreSQL 18 introduces SET NOT NULL NOT VALID and NOT ENFORCED constraints. Learn what changed, how it affects your migration safety, and how to update your tooling.

11 min read

Squawk vs MigrationPilot: PostgreSQL Migration Linters Compared

An honest comparison of Squawk and MigrationPilot for PostgreSQL migration linting: rules, lock analysis, auto-fix, CI integration, and when to use each tool.

14 min read

The 5 PostgreSQL Migration Mistakes That Cause Production Outages

Real production incidents caused by unsafe PostgreSQL migrations: missing CONCURRENTLY, table rewrites, lock cascades, and the safe patterns to prevent them.

12 min read

Atlas Paywalled Their Migration Linter — Here Are Your Free Alternatives

Atlas removed migrate lint from their free tier in v0.38. Here are the free, open-source PostgreSQL migration linters you can switch to today.

12 min read

The Complete Guide to PostgreSQL Lock Types for Schema Changes

Understand every PostgreSQL lock level from ACCESS SHARE to ACCESS EXCLUSIVE, which DDL statements acquire which locks, and how they impact your running application.

10 min read

How to Safely Add a Column with a Default Value in PostgreSQL

Learn when adding a column with a DEFAULT value rewrites the entire table, what changed in PostgreSQL 11, and the safe patterns for every scenario.

11 min read

CREATE INDEX CONCURRENTLY: The Complete PostgreSQL Guide

Everything you need to know about CREATE INDEX CONCURRENTLY in PostgreSQL: why it matters, failure modes, retry patterns, and REINDEX CONCURRENTLY.

14 min read

PostgreSQL Migration Best Practices for Zero-Downtime Deployments

A practical guide to running PostgreSQL schema migrations safely in production: lock_timeout, batched backfills, expand-contract, and CI integration.

11 min read

Which ALTER TABLE Operations Lock Your PostgreSQL Table?

A complete reference of which ALTER TABLE operations acquire ACCESS EXCLUSIVE locks, which are safe, and the workarounds for every dangerous operation.

10 min read

How to Add Database Migration Checks to Your CI/CD Pipeline

Set up automated database migration linting in GitHub Actions, GitLab CI, and other CI/CD systems to catch dangerous schema changes before they reach production.

9 min read

Adding NOT NULL Constraints to Existing PostgreSQL Columns Safely

The CHECK constraint NOT VALID + VALIDATE pattern for adding NOT NULL without locking your table. Includes version-specific advice for PG 11 and below vs PG 12+.

13 min read

Flyway vs Liquibase for PostgreSQL: An Honest Comparison

A practical comparison of Flyway and Liquibase for PostgreSQL migrations: features, syntax, rollbacks, team workflows, and where each tool falls short.