On Wed Jan 14, 2026 at 9:23 PM CET, Jacob Champion wrote:
> Partial review follows, in a v4 squash! set, as requested on the Discord :)
All changes in those 3 additional patches look totally reasonable to me.
> = Additional Thoughts =
>
> I want to more clearly decouple ourselves from TLS's GREASE in the
> documentation and comments. We aren't "Generating Random Extensions"
> (we _could_, but that takes a lot more thought), nor are we telling
> OpenSSL to enable GREASE for our TLS connections. It's fine if we want
> to gesture in that direction as broader context, but I don't want to
> cause user confusion. I'll work on some proposed changes for that.
Yeah, I didnt't realize that since TLS GREASE it became a broader term.
Definitely seems reasonable to reference the generic grease RFC instead
(which you have shared in the other protocol thread I think). So yeah
feel free to change the docs/comments to your heart's content.
> I'd like reserve a (protected?) wiki page, or something of the sort,
> that we can point people to directly if they hit any grease failures.
> "Server screwed up" is probably not enough context for a typical user
> to know what to do next.
Seems sensible to have a place to explain something to authors. Why not
put it directly in the protocol docs though? (I'd be fine with a wiki
too, but a docs page is protected by definition)
> I will also work on splitting 0002 into revertable and not-revertable
> halves. The grease constant probably needs to remain documented and
> reserved even if it doesn't do anything for 19.0.
>
> Finally: is there any appetite for retaining the ability to grease
> connections as production functionality, e.g. via
> `max_protocol_version=grease`? Personally I think it'd be nice, but
> it's not a trivial amount of extra work. We'd have to handle the case
> where a future server responds with a legitimate minor version that's
> newer than what our version of libpq supports. And I think we'd want a
> production-grade version of this to add some randomization tricks, to
> discourage people from keying on grease constants.
Both the patch split and max_protocol_version=grease sound reasonable to
me. I'd definitely like to keep all the grease code present on the main
branch, so we can keep using grease by default there.
I think max_protocol_version=grease makes a lot of sense. Because we
really want to make it as easy as possible for people to try out their
implementation of the negotation (see this for example[1])
If we do that then the patch split would be fairly minimal I expect.
i.e. it should only change the libpq default value, and the accompanying
test that tests the default value.
[1]: https://github.com/pgdogdev/pgdog/issues/578#issuecomment-3437244304