Skip to content

Commit 5addfbf

Browse files
author
Erlend E. Aasland
committed
Move sqlite3.DatabaseError to global state
1 parent 4cf1a82 commit 5addfbf

File tree

4 files changed

+20
-15
lines changed

4 files changed

+20
-15
lines changed

Modules/_sqlite/connection.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ pysqlite_connection_init(pysqlite_Connection *self, PyObject *args,
192192
self->Warning = state->Warning;
193193
self->Error = state->Error;
194194
self->InterfaceError = state->InterfaceError;
195-
self->DatabaseError = pysqlite_DatabaseError;
195+
self->DatabaseError = state->DatabaseError;
196196
self->DataError = pysqlite_DataError;
197197
self->OperationalError = pysqlite_OperationalError;
198198
self->IntegrityError = pysqlite_IntegrityError;

Modules/_sqlite/module.c

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ module _sqlite3
4343

4444
/* static objects at module-level */
4545

46-
PyObject *pysqlite_DatabaseError = NULL;
4746
PyObject *pysqlite_InternalError = NULL;
4847
PyObject *pysqlite_OperationalError = NULL;
4948
PyObject *pysqlite_ProgrammingError = NULL;
@@ -414,16 +413,21 @@ PyMODINIT_FUNC PyInit__sqlite3(void)
414413
/* Error subclasses */
415414
ADD_EXCEPTION(module, "InterfaceError", state->InterfaceError,
416415
state->Error);
417-
ADD_EXCEPTION(module, "DatabaseError", pysqlite_DatabaseError,
418-
state->Error);
419-
420-
/* pysqlite_DatabaseError subclasses */
421-
ADD_EXCEPTION(module, "InternalError", pysqlite_InternalError, pysqlite_DatabaseError);
422-
ADD_EXCEPTION(module, "OperationalError", pysqlite_OperationalError, pysqlite_DatabaseError);
423-
ADD_EXCEPTION(module, "ProgrammingError", pysqlite_ProgrammingError, pysqlite_DatabaseError);
424-
ADD_EXCEPTION(module, "IntegrityError", pysqlite_IntegrityError, pysqlite_DatabaseError);
425-
ADD_EXCEPTION(module, "DataError", pysqlite_DataError, pysqlite_DatabaseError);
426-
ADD_EXCEPTION(module, "NotSupportedError", pysqlite_NotSupportedError, pysqlite_DatabaseError);
416+
ADD_EXCEPTION(module, "DatabaseError", state->DatabaseError, state->Error);
417+
418+
/* DatabaseError subclasses */
419+
ADD_EXCEPTION(module, "InternalError", pysqlite_InternalError,
420+
state->DatabaseError);
421+
ADD_EXCEPTION(module, "OperationalError", pysqlite_OperationalError,
422+
state->DatabaseError);
423+
ADD_EXCEPTION(module, "ProgrammingError", pysqlite_ProgrammingError,
424+
state->DatabaseError);
425+
ADD_EXCEPTION(module, "IntegrityError", pysqlite_IntegrityError,
426+
state->DatabaseError);
427+
ADD_EXCEPTION(module, "DataError", pysqlite_DataError,
428+
state->DatabaseError);
429+
ADD_EXCEPTION(module, "NotSupportedError", pysqlite_NotSupportedError,
430+
state->DatabaseError);
427431

428432
/* Set integer constants */
429433
if (add_integer_constants(module) < 0) {

Modules/_sqlite/module.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#define MODULE_NAME "sqlite3"
3131

3232
typedef struct {
33+
PyObject *DatabaseError;
3334
PyObject *Error;
3435
PyObject *InterfaceError;
3536
PyObject *Warning;
@@ -49,7 +50,6 @@ pysqlite_get_state(PyObject *Py_UNUSED(module))
4950
return &pysqlite_global_state;
5051
}
5152

52-
extern PyObject* pysqlite_DatabaseError;
5353
extern PyObject* pysqlite_InternalError;
5454
extern PyObject* pysqlite_OperationalError;
5555
extern PyObject* pysqlite_ProgrammingError;

Modules/_sqlite/util.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ pysqlite_step(sqlite3_stmt *statement)
4343
int
4444
_pysqlite_seterror(sqlite3 *db)
4545
{
46+
pysqlite_state *state = pysqlite_get_state(NULL);
4647
int errorcode = sqlite3_errcode(db);
4748

4849
switch (errorcode)
@@ -73,7 +74,7 @@ _pysqlite_seterror(sqlite3 *db)
7374
PyErr_SetString(pysqlite_OperationalError, sqlite3_errmsg(db));
7475
break;
7576
case SQLITE_CORRUPT:
76-
PyErr_SetString(pysqlite_DatabaseError, sqlite3_errmsg(db));
77+
PyErr_SetString(state->DatabaseError, sqlite3_errmsg(db));
7778
break;
7879
case SQLITE_TOOBIG:
7980
PyErr_SetString(pysqlite_DataError, sqlite3_errmsg(db));
@@ -86,7 +87,7 @@ _pysqlite_seterror(sqlite3 *db)
8687
PyErr_SetString(pysqlite_ProgrammingError, sqlite3_errmsg(db));
8788
break;
8889
default:
89-
PyErr_SetString(pysqlite_DatabaseError, sqlite3_errmsg(db));
90+
PyErr_SetString(state->DatabaseError, sqlite3_errmsg(db));
9091
break;
9192
}
9293

0 commit comments

Comments
 (0)