]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Added connection status check on send_query
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 11 Apr 2020 09:01:46 +0000 (21:01 +1200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 11 Apr 2020 09:01:46 +0000 (21:01 +1200)
psycopg3/pq/pq_ctypes.py
tests/pq/test_async.py

index b40e8f31cb63ac77d11b53225c755c8408f62a83..af0df71b908f528685c369b8dc4858d18dc809a3 100644 (file)
@@ -194,6 +194,7 @@ class PGconn:
     def send_query(self, command: bytes) -> None:
         if not isinstance(command, bytes):
             raise TypeError(f"bytes expected, got {type(command)} instead")
+        self._ensure_pgconn()
         if not impl.PQsendQuery(self.pgconn_ptr, command):
             raise PQerror(f"sending query failed: {error_message(self)}")
 
index a04b7d6783e14b4b0d58c38e06d37ff7c2ef601f..d5a0e185d16ec6accc22abb69ec48041c863a431 100644 (file)
@@ -1,4 +1,6 @@
+import pytest
 from select import select
+import psycopg3
 
 
 def test_send_query(pq, pgconn):
@@ -69,9 +71,17 @@ def test_send_query_compact_test(pq, conn):
     assert results[1].fname(0) == b"foo"
     assert results[1].get_value(0, 0) == b"1"
 
+    conn.pgconn.finish()
+    with pytest.raises(psycopg3.OperationalError):
+        conn.pgconn.send_query(b"select 1")
+
 
 def test_send_query_params(pq, conn):
     res = conn.pgconn.send_query_params(b"select $1::int + $2", [b"5", b"3"])
     (res,) = conn.wait(conn._exec_gen(conn.pgconn))
     assert res.status == pq.ExecStatus.TUPLES_OK
     assert res.get_value(0, 0) == b"8"
+
+    conn.pgconn.finish()
+    with pytest.raises(psycopg3.OperationalError):
+        conn.pgconn.send_query_params(b"select $1", [b"1"])