This is more consistent with PGconn and PGresult.
There doesn't seem to be the need of extending pq.misc.error_message as
we never pass it a PGcancelConn object.
Close #781
elif status == POLL_WRITING:
yield cancel_conn.socket, WAIT_W
elif status == POLL_FAILED:
- raise e.OperationalError(
- f"cancellation failed: {cancel_conn.error_message}"
- )
+ msg = cancel_conn.error_message.decode("utf8", "replace")
+ raise e.OperationalError(f"cancellation failed: {msg}")
else:
raise e.InternalError(f"unexpected poll status: {status}")
def socket(self) -> int: ...
@property
- def error_message(self) -> str: ...
+ def error_message(self) -> bytes: ...
def reset(self) -> None: ...
See :pq:`PQcancelStart` for details.
"""
if not impl.PQcancelStart(self.pgcancelconn_ptr):
- raise e.OperationalError(
- f"couldn't start cancellation: {self.error_message}"
- )
+ msg = self.error_message.decode("utf8", "replace")
+ raise e.OperationalError(f"couldn't start cancellation: {msg}")
def blocking(self) -> None:
"""Requests that the server abandons processing of the current command
See :pq:`PQcancelBlocking` for details.
"""
if not impl.PQcancelBlocking(self.pgcancelconn_ptr):
- raise e.OperationalError(
- f"couldn't start cancellation: {self.error_message}"
- )
+ msg = self.error_message.decode("utf8", "replace")
+ raise e.OperationalError(f"couldn't start cancellation: {msg}")
def poll(self) -> int:
self._ensure_pgcancelconn()
return rv
@property
- def error_message(self) -> str:
- return impl.PQcancelErrorMessage(self.pgcancelconn_ptr).decode()
+ def error_message(self) -> bytes:
+ return impl.PQcancelErrorMessage(self.pgcancelconn_ptr)
def reset(self) -> None:
self._ensure_pgcancelconn()
elif status == libpq.PGRES_POLLING_WRITING:
yield libpq.PQcancelSocket(pgcancelconn_ptr), WAIT_W
elif status == libpq.PGRES_POLLING_FAILED:
- raise e.OperationalError(
- f"cancellation failed: {cancel_conn.error_message}"
- )
+ msg = cancel_conn.error_message.decode("utf8", "replace")
+ raise e.OperationalError(f"cancellation failed: {msg}")
else:
raise e.InternalError(f"unexpected poll status: {status}")
return rv
@property
- def error_message(self) -> str:
- return libpq.PQcancelErrorMessage(self.pgcancelconn_ptr).decode()
+ def error_message(self) -> bytes:
+ return libpq.PQcancelErrorMessage(self.pgcancelconn_ptr)
def reset(self) -> None:
self._ensure_pgcancelconn()