Skip to content

Implement support for protocol 3.2#2498

Open
dbussink wants to merge 2 commits intojackc:masterfrom
dbussink:protocol-32
Open

Implement support for protocol 3.2#2498
dbussink wants to merge 2 commits intojackc:masterfrom
dbussink:protocol-32

Conversation

@dbussink
Copy link

@dbussink dbussink commented Feb 3, 2026

This adds support for the new protocol 3.2 that is available in Postgres 18+.

The specific change is that secret keys are now variable length encoded and no longer a fixed uint32. This is to both improve security and to provide room for additional metadata for middleware.

Fixes #2489

This adds support for the new protocol 3.2 that is available in Postgres
18+.

The specific change is that secret keys are now variable length encoded
and no longer a fixed uint32. This is to both improve security and to
provide room for additional metadata for middleware.

Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com>

func TestConnectProtocolVersion32(t *testing.T) {
t.Parallel()
config, err := pgconn.ParseConfig(os.Getenv("PGX_TEST_DATABASE") + " max_protocol_version=3.2")
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on the failures in CI, I think this might need to change to parse the config, then set max protocol version directly on the config struct. I think that string concatenation is yielding an invalid connection string.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jackc Pushed!

Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com>
t.Parallel()
config, err := pgconn.ParseConfig(os.Getenv("PGX_TEST_DATABASE"))
require.NoError(t, err)
config.MaxProtocolVersion = "3.2"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to use a constant instead of a literal?
Then usages could be found easier in IDEs and Agents.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't done that since I don't see it used for example for ssl mode flags. But I think it's really a project style decision then, more a question for @jackc then I think.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support for protocol version 3.2

3 participants