]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
refactor: set cursor result in _maybe_prepare_gen() 480/head
authorDenis Laxalde <denis.laxalde@dalibo.com>
Tue, 24 Jan 2023 15:18:24 +0000 (16:18 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 4 Feb 2023 11:16:29 +0000 (12:16 +0100)
When not in pipeline mode, we can actually set the results on the cursor
directly in this method instead of letting the caller handle this.

psycopg/psycopg/cursor.py

index d65be6ae8025c64752ba84c6e5eea2921716bea7..83460c01c89a78e88ca1b608ba2a6bf8f7c42df3 100644 (file)
@@ -193,15 +193,9 @@ class BaseCursor(Generic[ConnectionType, Row]):
         """Generator implementing `Cursor.execute()`."""
         yield from self._start_query(query)
         pgq = self._convert_query(query, params)
-        results = yield from self._maybe_prepare_gen(
-            pgq, prepare=prepare, binary=binary
-        )
+        yield from self._maybe_prepare_gen(pgq, prepare=prepare, binary=binary)
         if self._conn._pipeline:
             yield from self._conn._pipeline._communicate_gen()
-        else:
-            assert results is not None
-            self._check_results(results)
-            self._set_results(results)
 
         self._last_query = query
 
@@ -266,10 +260,7 @@ class BaseCursor(Generic[ConnectionType, Row]):
             else:
                 pgq.dump(params)
 
-            results = yield from self._maybe_prepare_gen(pgq, prepare=True)
-            assert results is not None
-            self._check_results(results)
-            self._set_results(results)
+            yield from self._maybe_prepare_gen(pgq, prepare=True)
 
         self._last_query = query
 
@@ -282,7 +273,7 @@ class BaseCursor(Generic[ConnectionType, Row]):
         *,
         prepare: Optional[bool] = None,
         binary: Optional[bool] = None,
-    ) -> PQGen[Optional[List["PGresult"]]]:
+    ) -> PQGen[None]:
         # Check if the query is prepared or needs preparing
         prep, name = self._get_prepared(pgq, prepare)
         if prep is Prepare.NO:
@@ -309,7 +300,7 @@ class BaseCursor(Generic[ConnectionType, Row]):
             if key is not None:
                 queued = (key, prep, name)
             self._conn._pipeline.result_queue.append((self, queued))
-            return None
+            return
 
         # run the query
         results = yield from execute(self._pgconn)
@@ -317,7 +308,8 @@ class BaseCursor(Generic[ConnectionType, Row]):
         if key is not None:
             self._conn._prepared.validate(key, prep, name, results)
 
-        return results
+        self._check_results(results)
+        self._set_results(results)
 
     def _get_prepared(
         self, pgq: PostgresQuery, prepare: Optional[bool] = None