From c06a4ffe818feddef3b5083d9746a1c0b82c84ab Mon Sep 17 00:00:00 2001 From: Erlend Egeberg Aasland Date: Fri, 15 Apr 2022 18:27:39 +0200 Subject: gh-69093: improve sqlite3.Connection.blobopen() error handling (GH-91571) Unless sqlite3_blob_open() returns SQLITE_MISUSE, the error code and message are available on the connection object. This means we have to handle SQLITE_MISUSE error messages explicitly. --- Modules/_sqlite/connection.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 85fb128..0028cf7 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -475,7 +475,11 @@ blobopen_impl(pysqlite_Connection *self, const char *table, const char *col, rc = sqlite3_blob_open(self->db, name, table, col, row, !readonly, &blob); Py_END_ALLOW_THREADS - if (rc != SQLITE_OK) { + if (rc == SQLITE_MISUSE) { + PyErr_Format(self->state->InterfaceError, sqlite3_errstr(rc)); + return NULL; + } + else if (rc != SQLITE_OK) { _pysqlite_seterror(self->state, self->db); return NULL; } -- cgit v0.12