]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
refactor: add compiled_default option to _get_params 700/head
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Wed, 13 Dec 2023 13:20:49 +0000 (14:20 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Wed, 13 Dec 2023 13:20:49 +0000 (14:20 +0100)
Make it less awkward to come out with a 5432 when we really want a port
number (in name resolution) but still allow to leave it unspecified to
avoid mangling the conninfo.

psycopg/psycopg/conninfo.py

index 3cc8bbb3ed7515c61f4299ad1f1b280aa1e64d66..ef07e5ecac1899e1a7bf5839ebdc8f812984477d 100644 (file)
@@ -422,12 +422,7 @@ async def _resolve_hostnames(params: ConnDict) -> list[ConnDict]:
 
     loop = asyncio.get_running_loop()
 
-    port = _get_param(params, "port")
-    if not port:
-        portdef = _get_param_def("port")
-        if portdef:
-            port = portdef.compiled
-
+    port = _get_param(params, "port", compiled_default=True)
     assert port and "," not in port  # assume a libpq default and no multi
     ans = await loop.getaddrinfo(
         host, int(port), proto=socket.IPPROTO_TCP, type=socket.SOCK_STREAM
@@ -466,7 +461,9 @@ def timeout_from_conninfo(params: ConnDict) -> int:
     return timeout
 
 
-def _get_param(params: ConnDict, name: str) -> str | None:
+def _get_param(
+    params: ConnDict, name: str, compiled_default: bool = False
+) -> str | None:
     """
     Return a value from a connection string.
 
@@ -485,7 +482,7 @@ def _get_param(params: ConnDict, name: str) -> str | None:
     if env is not None:
         return env
 
-    return None
+    return paramdef.compiled if compiled_default else None
 
 
 @dataclass