]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
fix: fix Cursor.rowcount after non-SELECT tuple-returining queries
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Thu, 28 Jul 2022 09:34:57 +0000 (11:34 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Thu, 28 Jul 2022 10:05:13 +0000 (12:05 +0200)
PQcmdTuples doesn't return a value after SHOW and other type of queries.

Close #343

docs/news.rst
psycopg/psycopg/cursor.py

index 6b48e92ae3c41dfc6b704c628489fc4e6c55e1f3..28c2d9acfb9a11c28c0380af74aba53293a42f0f 100644 (file)
@@ -7,6 +7,15 @@
 ``psycopg`` release notes
 =========================
 
+Future releases
+---------------
+
+Psycopg 3.0.16 (unreleased)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Fix missing `~Cursor.rowcount` after SHOW (:ticket:`#343`).
+
+
 Current release
 ---------------
 
index bd83801291c180c87f5e423d7f2523df81d6a51e..ebd1a8e6d2dbd87b19ad24c9df8f3f35d5579b1c 100644 (file)
@@ -435,8 +435,11 @@ class BaseCursor(Generic[ConnectionType, Row]):
 
         self._make_row = self._make_row_maker()
         self._pos = 0
-        nrows = self.pgresult.command_tuples
-        self._rowcount = nrows if nrows is not None else -1
+        if res.status == ExecStatus.TUPLES_OK:
+            self._rowcount = self.pgresult.ntuples
+        else:
+            nrows = self.pgresult.command_tuples
+            self._rowcount = nrows if nrows is not None else -1
 
     def _send_prepare(self, name: bytes, query: PostgresQuery) -> None:
         self._pgconn.send_prepare(name, query.query, param_types=query.types)