mirror of
https://github.com/mariadb-corporation/mariadb-connector-python.git
synced 2025-07-28 06:40:03 +00:00
Error handling fixes:
Instead of OperationalException and IntegrityException will be raised for the following eror types: ER_BAD_NULL_ERROR, ER_DATA_OUT_OF_RANGE, ER_CONSTRAINT_FAILED, ER_DUP_CONSTRAINT_NAME
This commit is contained in:
@ -552,21 +552,23 @@ static int Mrdb_GetFieldInfo(MrdbCursor *self)
|
||||
|
||||
if (self->result_format == RESULT_NAMED_TUPLE) {
|
||||
unsigned int i;
|
||||
PyStructSequence_Desc sequence_desc;
|
||||
|
||||
if (!(self->sequence_fields= (PyStructSequence_Field *)
|
||||
PyMem_RawCalloc(self->field_count + 1,
|
||||
sizeof(PyStructSequence_Field))))
|
||||
return 1;
|
||||
self->sequence_desc.name= mariadb_named_tuple_name;
|
||||
self->sequence_desc.doc= mariadb_named_tuple_desc;
|
||||
self->sequence_desc.fields= self->sequence_fields;
|
||||
self->sequence_desc.n_in_sequence= self->field_count;
|
||||
sequence_desc.name= mariadb_named_tuple_name;
|
||||
sequence_desc.doc= mariadb_named_tuple_desc;
|
||||
sequence_desc.fields= self->sequence_fields;
|
||||
sequence_desc.n_in_sequence= self->field_count;
|
||||
|
||||
|
||||
for (i=0; i < self->field_count; i++)
|
||||
{
|
||||
self->sequence_fields[i].name= self->fields[i].name;
|
||||
}
|
||||
self->sequence_type= PyStructSequence_NewType(&self->sequence_desc);
|
||||
self->sequence_type= PyStructSequence_NewType(&sequence_desc);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
@ -96,6 +96,10 @@ static PyObject *get_exception_type(int error_number)
|
||||
case ER_ROW_IS_REFERENCED_2:
|
||||
case ER_XAER_OUTSIDE:
|
||||
case ER_XAER_RMERR:
|
||||
case ER_BAD_NULL_ERROR:
|
||||
case ER_DATA_OUT_OF_RANGE:
|
||||
case ER_CONSTRAINT_FAILED:
|
||||
case ER_DUP_CONSTRAINT_NAME:
|
||||
return Mariadb_IntegrityError;
|
||||
default:
|
||||
/* MariaDB Error */
|
||||
|
Reference in New Issue
Block a user