SCRAM hashes in users.toml mean your config file is no longer a liability.
For a pooler that speaks SCRAM to Postgres, pgdog had an awkward secret: it still wanted plaintext passwords in its own config. #908 finally closes that gap. Users can now store SCRAM hashes directly in users.toml, which means your config file no longer doubles as a credential dump. The change pairs with work in the scram library (pgdogdev/scram#4) to accept pre-hashed passwords. One less reason to keep your pooler config out of version control.
Session locks matter. Transaction-scoped locks that auto-release? Not so much.
Advisory locks in Postgres come in two flavors: session locks that stick around until you explicitly release them, and transaction locks that vanish on commit. #903 added regex-based detection to catch when clients grab advisory locks — useful for a pooler that needs to know when a connection is "dirty." Problem was, it caught everything. #907 narrows the scope to session locks only, because tracking locks that auto-release is just busywork with extra state.
Regex strikes again: parentheses aren't always subqueries.
CTEs get special handling in pgdog — they affect routing decisions. The detection logic looks for WITH ... AS (...) patterns, which works great until someone writes count(*) inside a query and the parser sees those parentheses as a subquery. #893 fixes the false positive. The lesson, as always: if you're parsing SQL with regex, you're going to have a bad time eventually.
Sometimes you want to override the automatic parallelism. Now you can.
pgdog's parallel COPY support is clever about spreading work across shards, but "clever" and "controllable" aren't the same thing. #896 adds an override mechanism so operators can explicitly set parallelism levels instead of trusting the heuristics. Useful when you know something about your workload that the pooler doesn't.
When things go wrong, they go wrong repeatedly. Your logs don't need to reflect that.
A misbehaving client or a flapping upstream can turn your pooler logs into a firehose. #902 adds log throttling, so the same error message doesn't consume your entire disk while you're trying to diagnose the actual problem. The first occurrence still logs. The next thousand get summarized.
Pre-hashed passwords close the loop on credential handling.
The scram library could generate SCRAM hashes, but it couldn't consume them — you still had to pass in the plaintext password. #4 adds support for accepting already-hashed passwords, which lets callers like pgdog store credentials without ever seeing the original secret. A small change that makes the whole authentication story coherent.
Known issues, documented before you discover them in production.
Some client drivers have opinions about connection behavior that don't mesh well with poolers. #65 adds a known-issues section documenting the specific incompatibilities and workarounds. The kind of page you wish existed six hours ago.
Documentation drift is a slow poison. This week it got an antidote.
rwf's WebSocket implementation had evolved past what the docs described. #79 corrects and expands the documentation to reflect reality. Separately, #81 fixes Nextest installation in CI — not glamorous, but tests that don't run aren't tests.
| pgdogdev/pgdog | ★★★★★★★★★★ | 4,303 |
| rwf | ★★☆☆☆☆☆☆☆☆ | 1,060 |
| pgdogdev/docs | ★☆☆☆☆☆☆☆☆☆ | 5 |
When things go wrong, they go wrong repeatedly. Your logs don't need to reflect that.
A misbehaving client or a flapping upstream can turn your pooler logs into a firehose. #902 adds log throttling, so the same error message doesn't consume your entire disk while you're trying to diagnose the actual problem. The first occurrence still logs. The next thousand get summarized.
Pre-hashed passwords close the loop on credential handling.
The scram library could generate SCRAM hashes, but it couldn't consume them — you still had to pass in the plaintext password. #4 adds support for accepting already-hashed passwords, which lets callers like pgdog store credentials without ever seeing the original secret. A small change that makes the whole authentication story coherent.
Known issues, documented before you discover them in production.
Some client drivers have opinions about connection behavior that don't mesh well with poolers. #65 adds a known-issues section documenting the specific incompatibilities and workarounds. The kind of page you wish existed six hours ago.
Documentation drift is a slow poison. This week it got an antidote.
rwf's WebSocket implementation had evolved past what the docs described. #79 corrects and expands the documentation to reflect reality. Separately, #81 fixes Nextest installation in CI — not glamorous, but tests that don't run aren't tests.
| pgdogdev/pgdog | ★★★★★★★★★★ | 4,303 |
| rwf | ★★☆☆☆☆☆☆☆☆ | 1,060 |
| pgdogdev/docs | ★☆☆☆☆☆☆☆☆☆ | 5 |
Your GitHub week, turned into something worth reading.
Generate your dispatch →