From: Daniele Varrazzo Date: Sun, 3 Apr 2022 21:33:55 +0000 (+0200) Subject: feat: add ConnectionInfo.pipeline_status X-Git-Tag: 3.1~143 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ee35110cf41361e58318908be8e1ac2f6e30f565;p=thirdparty%2Fpsycopg.git feat: add ConnectionInfo.pipeline_status --- diff --git a/docs/api/objects.rst b/docs/api/objects.rst index bd3679130..b4e277eeb 100644 --- a/docs/api/objects.rst +++ b/docs/api/objects.rst @@ -34,6 +34,8 @@ Connection information is bad. `!ACTIVE` is reported only when a query has been sent to the server and not yet completed. + .. autoattribute:: pipeline_status + .. autoattribute:: backend_pid .. autoattribute:: server_version diff --git a/psycopg/psycopg/conninfo.py b/psycopg/psycopg/conninfo.py index b6ae17496..767952bca 100644 --- a/psycopg/psycopg/conninfo.py +++ b/psycopg/psycopg/conninfo.py @@ -210,6 +210,14 @@ class ConnectionInfo: """ return pq.TransactionStatus(self.pgconn.transaction_status) + @property + def pipeline_status(self) -> pq.PipelineStatus: + """ + The current pipeline status of the client. + See :pq:`PQpipelineStatus()`. + """ + return pq.PipelineStatus(self.pgconn.pipeline_status) + def parameter_status(self, param_name: str) -> Optional[str]: """ Return a parameter setting of the connection. diff --git a/tests/test_conninfo.py b/tests/test_conninfo.py index 65bc9fc4b..a661fc604 100644 --- a/tests/test_conninfo.py +++ b/tests/test_conninfo.py @@ -172,6 +172,19 @@ class TestConnectionInfo: conn.close() assert conn.info.transaction_status.name == "UNKNOWN" + @pytest.mark.libpq(">= 14") + def test_pipeline_status(self, conn): + assert not conn.info.pipeline_status + assert conn.info.pipeline_status.name == "OFF" + with conn.pipeline(): + assert conn.info.pipeline_status + assert conn.info.pipeline_status.name == "ON" + + @pytest.mark.libpq("< 14") + def test_pipeline_status_no_pipeline(self, conn): + assert not conn.info.pipeline_status + assert conn.info.pipeline_status.name == "OFF" + def test_no_password(self, dsn): dsn2 = make_conninfo(dsn, password="the-pass-word") pgconn = psycopg.pq.PGconn.connect_start(dsn2.encode())