]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Refactor away internal prepared statements manager function
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Wed, 17 Nov 2021 13:27:35 +0000 (14:27 +0100)
committerDenis Laxalde <denis.laxalde@dalibo.com>
Mon, 29 Nov 2021 08:50:50 +0000 (09:50 +0100)
psycopg/psycopg/_preparing.py

index 34ad77ea243b60b99c004881dd9fc65b1cd75fe1..5ae79ae0cbdcbe937a461a576f97b768d27b0afc 100644 (file)
@@ -91,27 +91,6 @@ class PrepareManager:
                     return self.clear()
         return None
 
-    def _check_in_cache_or_increment(
-        self, query: PostgresQuery, prep: Prepare, name: bytes
-    ) -> Optional[Tuple[Key, Value]]:
-        """Check if the query is already in cache.
-
-        If not, return a new 'key' matching given query. Otherwise, just
-        update the count for that query and record as last used.
-        """
-        key = self.key(query)
-        if key in self._prepared:
-            if isinstance(self._prepared[key], int):
-                if prep is Prepare.SHOULD:
-                    self._prepared[key] = name
-                else:
-                    self._prepared[key] += 1  # type: ignore[operator]
-            self._prepared.move_to_end(key)
-            return None
-
-        value: Value = name if prep is Prepare.SHOULD else 1
-        return key, value
-
     @staticmethod
     def _check_results(results: Sequence["PGresult"]) -> bool:
         """Return False if 'results' are invalid for prepared statement cache."""
@@ -154,12 +133,20 @@ class PrepareManager:
         # don't do anything if prepared statements are disabled
         if self.prepare_threshold is None:
             return None
-        cached = self._check_in_cache_or_increment(query, prep, name)
-        if cached is None:
+
+        key = self.key(query)
+        if key in self._prepared:
+            if isinstance(self._prepared[key], int):
+                if prep is Prepare.SHOULD:
+                    self._prepared[key] = name
+                else:
+                    self._prepared[key] += 1  # type: ignore[operator]
+            self._prepared.move_to_end(key)
             return None
-        key, value = cached
-        self._prepared[key] = value
-        return key
+        else:
+            value: Value = name if prep is Prepare.SHOULD else 1
+            self._prepared[key] = value
+            return key
 
     def validate(
         self,