Implement support for protocol 3.2#2498
Conversation
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>
pgconn/pgconn_test.go
Outdated
|
|
||
| func TestConnectProtocolVersion32(t *testing.T) { | ||
| t.Parallel() | ||
| config, err := pgconn.ParseConfig(os.Getenv("PGX_TEST_DATABASE") + " max_protocol_version=3.2") |
There was a problem hiding this comment.
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.
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" |
There was a problem hiding this comment.
Would it make sense to use a constant instead of a literal?
Then usages could be found easier in IDEs and Agents.
There was a problem hiding this comment.
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.
|
It looks like the test failure is something with CockroachDB not liking the unknown connection string argument. I'm going to merge this and fix that later. |
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