Agno's AsyncPostgresDb and AsyncMySQLDb now log a failed delete_run and re-raise the error, the way their sync versions and the async SQLite and MongoDB backends already did. A dropped connection, a deadlock or a timeout used to come back as False, which callers read as "no such run" while the run stayed in the table. delete_runs logged the error and returned as if it had worked, and now raises too.
We ran both releases against an embedded Postgres, deleting a missing run as the owner and then deleting a stored run as a role that can read the runs table but can't delete from it:
Before: missing run -> False
failed delete -> False run-1 still in table: True
Now: missing run -> False
failed delete -> raises ProgrammingError (psycopg.errors.InsufficientPrivilege)
permission denied for table agno_runs
run-1 still in table: TrueCode that calls these methods directly can now catch the exception to retry or report the failure, and keep reading False as a run that was already gone.
See the cookbook, and learn more about async Postgres and async MySQL in the documentation.
Frequently asked questions
It means the table had no run with that id. A delete that fails, from a dropped connection, a deadlock, a timeout or a missing permission, now raises the database error after Agno logs it.
Only a log line. delete_runs caught the error and returned normally, so the caller could not tell that the runs were still stored. It now re-raises the error.
Yes. AsyncPostgresDb and AsyncMySQLDb now match PostgresDb and MySQLDb, and the async SQLite and MongoDB backends, which already re-raised.





