Two billion OIDs seemed like plenty until it wasn't.
A signed integer masquerading as unsigned finally caught up with databases that have seen some churn.
Postgres OIDs are unsigned 32-bit integers. pgdog was treating them as signed. For most databases, this distinction is academic — until your schema has churned through enough objects that OIDs exceed 2.2 billion, at which point pgdog's type coercion turned valid OIDs into negative garbage. #873 swaps i32 for u32. The kind of fix that's one line to write and years to discover. Also in v0.1.36: count(*) was returning the wrong type when aggregating across shards (#872), and streaming replication was quietly dropping child table rows during resharding (#880). Three data integrity bugs, one release.
A regex trigger lets simple queries skip the full parse.
Not every query needs a full SQL parse — most are simple enough that a regex can determine routing. #889 adds a trigger that only wakes the full parser when the regex suggests complexity. Less CPU burned on SELECT 1, more headroom for the queries that actually need analysis. The optimization is invisible until you're pushing enough QPS that parsing overhead starts showing up in flame graphs.
The parser wasn't walking all the way down.
Wrap a SELECT ... FOR UPDATE in a CTE, and pgdog's query router used to miss it entirely — sending your locking query to a read-only replica, which responds with error 25006 and a polite refusal. The detection logic wasn't recursive. #879 teaches it to descend into CTEs. Straightforward fix once you realize the parser was only looking at the outer query. The issue came from production, naturally.
A new ID generator for apps that pass primary keys straight to the browser.
JavaScript's Number type loses precision past 2^53. If your sharded IDs are 64-bit integers that get JSON-serialized to a frontend, you're rolling the dice every time. #858 adds a 53-bit unique ID generator — still globally unique across shards, but safe for JavaScript's unfortunate numeric limitations. There's also a new pgdog.install_sharded_sequence() function (#881) that works cross-shard, so you can set this up from any node without coordinating manually.
Rolling credentials no longer means coordinated downtime.
Rotating database passwords used to require updating pgdog and all clients simultaneously, or accepting a window where some connections fail. #882 lets you configure multiple valid passwords per user — the old credential keeps working while you roll the new one out. The helm chart picked up support in v0.50. Credential rotation is now a Tuesday, not an incident.
The initial helm-ee chart lands, ready for managed deployments.
The helm-ee repo now exists with 0.1.10, the first release of the enterprise control plane chart. It's the scaffolding for managed pgdog deployments — separate from the core pooler chart, purpose-built for orchestration at scale. Initial commit energy: one PR, one release, all the YAML you'd expect.
Schema manager functions and sharded sequences now have pages.
The 53-bit ID generator and pgdog.install_sharded_sequence() are now documented (#63, #64). Schema manager functions have their own section. The docs repo saw 6 commits this week, mostly @levkk keeping prose in sync with the feature velocity. Unsexy but necessary — features that aren't documented don't get used.
Your GitHub week, turned into something worth reading.
Generate your dispatch →