db: Add support for key-value pair DSNs in postgresql #4072
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
It turns out that it isn't always possible to express the connection
parameters in a URI-style DSN. The postgresql primitives provide an
alternative in the form of key-value DSNs 1, which allow for a far wider
range of possible configuration parameters. Specifically in my case I wanted
to have mutual authentication using TLS/SSL server and client certificates, on
top of password authentication.
With this change we still use the
scheme://
portion of the DSN to selectwhich backend to use, while we attempt to parse the connection string without
it first (which is the key-value option) and if that fails we fall back to the
full URI connection. Since we only attempt to parse, and don't directly
connect we don't actually connect twice.
So this is now a possibility: