PostgreSQL 17 runners are live

Rules

32 ways a migration can hurt production.

Every check ShadowDB runs on a pull request, why it matters in PostgreSQL, and the safer way to write it. Critical and High findings block the merge by default; each project can change that.

[critical]
Data loss or a broken deploy is likely.
[high]
Blocks reads or writes on a busy table, or fails on real data.
[medium]
Risky at scale or easy to get wrong; worth a look.
[low]
Good practice; rarely a problem on its own.
[info]
For your information; never affects the result.

Locking

A statement that queues for a strong lock blocks every query behind it. A lock_timeout makes it give up instead.