-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
With the release of this PR, this method was added to construct the connection string for the connection to Postgres with psycopg3.
However, when a password contains special characters, they are not properly escaped, which leads to connection errors.
Expected Behavior
The special characters are escaped properly.
Current Behavior
The special characters are not escaped properly, leading to connection errors.
Steps to reproduce
In the setup file for the postgres integration tests, update all occurrences of the password test to something like test% or test!#$%&()*+,-./:;<=>?@[\]^_{|}~±`.
Then run all postgres online store integration tests by running:
make test-python-universal-postgres-onlineSpecifications
Version: 0.36.0
Platform: MacOS - M1
Subsystem: Sonoma 14.1.1
Possible Solution
The potential solution is to use update these lines of code to the following:
from psycopg.conninfo import make_conninfo
def _get_conninfo(config: PostgreSQLConfig) -> str:
"""Get the `conninfo` argument required for connection objects."""
psycopg_config = {
"user": config.user,
"password": config.password,
"host": config.host,
"port": int(config.port),
"dbname": config.database,
}
return make_conninfo(**psycopg_config)Instead of using a connection string, this passes the config in key-value pairs. When passing it as key-value pairs the special characters are escaped properly.
More info here.