raise MemoryError("couldn't allocate PGresult")
return PGresult(rv)
+ def describe_portal(self, name):
+ if not isinstance(name, bytes):
+ raise TypeError(
+ "'name' must be bytes, got %s instead" % type(name).__name__
+ )
+ rv = impl.PQdescribePortal(self.pgconn_ptr, name)
+ if rv is None:
+ raise MemoryError("couldn't allocate PGresult")
+ return PGresult(rv)
+
class PGresult:
__slots__ = ("pgresult_ptr",)
)
assert res.status == pq.ExecStatus.PGRES_TUPLES_OK
assert res.get_value(0, 0) == out
+
+
+def test_describe_portal(pq, pgconn):
+ res = pgconn.exec_(
+ b"""
+ begin;
+ declare cur cursor for select * from generate_series(1,10) foo;
+ """
+ )
+ assert res.status == pq.ExecStatus.PGRES_COMMAND_OK, res.error_message
+
+ res = pgconn.describe_portal(b"cur")
+ assert res.status == pq.ExecStatus.PGRES_COMMAND_OK, res.error_message
+ assert res.nfields == 1
+ assert res.fname(0) == b"foo"