field notes from the satus team.
- 12 min
Three timezone bugs we found by seeding production-shaped data
Uniformly random timestamps hide timezone bugs. Business-hours-clustered timestamps surface them. Three bugs we have reproduced in support, and the catalog signals that predict each one.
- ·postgres
- ·timezones
- ·testing
- ·seeding
- 8 min
JSONB columns that are secretly relational
Half the JSONB columns we see are key/value bags. The other half are foreign keys in disguise — arrays of IDs pointing at real rows, with no constraint to prove it. How to tell them apart.
- ·postgres
- ·jsonb
- ·modeling
- ·seeding
- 7 min
v0.2.0: deferred constraints, faster planning, and a smaller binary
Cyclic foreign keys now seed end-to-end via deferred constraints and a post-insert wire-up pass. Catalog introspection drops from five round-trips to one. The npm tarball is 77.6% smaller.
- ·postgres
- ·satus
- ·release
- ·foreign-keys
- ·performance
- 8 min
The CITEXT trap
A seed job asked for 10,000 users and inserted 6,200. The unique index on a CITEXT column folded Alice and alice into one row. What CITEXT does, why new schemas avoid it, and what satus generates.
- ·postgres
- ·citext
- ·unique
- ·collations
- ·seeding
- 8 min
Partitioned tables meet RLS, and nobody wins
RLS policies on a partitioned parent do not protect the children. We hit this in two customer schemas last week. Here is what Postgres actually does, and the two-line workaround satus now prints.
- ·postgres
- ·rls
- ·partitioning
- ·seeding
- 10 min
Inside the medical-booking profile: why appointments are harder than they seem
Appointments cluster around mid-morning and afternoon, never at 3am, almost never on holidays, and trail a long tail of no-shows. What the satus medical-booking profile encodes, and why.
- ·profile
- ·medical
- ·distributions
- ·postgres
- ·seeding
- 6 min
NULL vs NOT NULL is not the question
A support ticket about a nullable column that broke an app. The real question is what NULL means to your code, and Postgres gives you three answers, not two.
- ·postgres
- ·null
- ·semantics
- ·seeding
- 1 min
Introducing the satus log
A plain-text changelog and field notebook for schema-aware seed data, written for engineers who read RFCs for fun.
- ·meta
- ·postgres
- 5 min
Cyclic foreign keys in the wild
Most seed-data tools pretend cycles don't exist. They do. Here is how satus splits the graph, inserts with NULLs, and back-patches in a second pass.
- ·postgres
- ·foreign-keys
- ·graphs
- ·seeding
RSS, no email required.
We do not run a newsletter. The full feed lives at /blog/rss.xml. Add it to any reader. There are no tracking pixels in the feed and no cookies on this site.