]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
fix: only request a pipeline flush in returning executemany()
authorDenis Laxalde <denis.laxalde@dalibo.com>
Mon, 4 Apr 2022 15:19:55 +0000 (17:19 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 7 May 2022 12:51:51 +0000 (14:51 +0200)
A full Sync is not needed as we're only interested in getting results
when returning=True.

psycopg/psycopg/cursor.py
tests/test_pipeline.py
tests/test_pipeline_async.py

index 8a473a9876f92b21043e607eb35279e392ccf6df..4593515819cb99bed6142536e5e7a1372fe2879d 100644 (file)
@@ -241,7 +241,7 @@ class BaseCursor(Generic[ConnectionType, Row]):
         self._last_query = query
 
         if returning:
-            yield from pipeline._exit_gen()
+            yield from pipeline._fetch_gen(flush=True)
 
         for cmd in self._conn._prepared.get_maintenance_commands():
             yield from self._conn._exec_command(cmd)
index 7dba9ec7b0bd7cefb2f49d6c818a1a5a422f24fd..aba1f9b048ef3dd36e49cda0fac35cfbecac9949 100644 (file)
@@ -278,7 +278,7 @@ def test_executemany_trace_returning(conn, trace):
     roundtrips = [k for k, g in groupby(items, key=attrgetter("direction"))]
     assert roundtrips == ["F", "B"] * 3
     assert items[-2].direction == "F"  # last 2 items are F B
-    assert len([i for i in items if i.type == "Sync"]) == 3
+    assert len([i for i in items if i.type == "Sync"]) == 1
 
 
 def test_prepared(conn):
index afee1e6de3a6f23147a537eeeb0ae545c7419035..269af39e675cda4572a1d2c3293374fe26eeceed 100644 (file)
@@ -281,7 +281,7 @@ async def test_executemany_trace_returning(aconn, trace):
     roundtrips = [k for k, g in groupby(items, key=attrgetter("direction"))]
     assert roundtrips == ["F", "B"] * 3
     assert items[-2].direction == "F"  # last 2 items are F B
-    assert len([i for i in items if i.type == "Sync"]) == 3
+    assert len([i for i in items if i.type == "Sync"]) == 1
 
 
 async def test_prepared(aconn):