- The pure Python implementation unexpectedly delivered - TEXTcolumns having binary (- _bin) collations as byte objects. (Bug #33987119)
- Changed the - warning_countproperty from private to public in the- cursorclass; this is used to retrieve the number of warnings generated by the previously executed operation. (Bug #27634910)
- When using buffered cursors with the C extension, it was possible - cursor.executemany()to return InternalError: No result set available for- SELECTstatements. (Bug #21529893)
- The - MySQLConnection.set_charset_collation()method returned an UnboundLocalError exception when given a empty character set name; now the default character set is used in such cases. (Bug #21402805)
- 
On macOS, compiling the C Extension implementation assumed that gcc and g++ were the default compilers. Now the compilation process checks the CCandCXXenvironment variables for the use of clang.Thanks to Jonathan Ringer for the contribution. (Bug #107841, Bug #34373612) 
- Selecting binary data that began with - 0x00returned an empty string. (Bug #107568, Bug #34283402)
- Calling a stored procedure by its fully qualified name (of the form - database_name.- procedure_name
- The binary protocol halted unexpectedly when passed a time value of - 0, while the expected behavior is to receive a- 00:00:00time when such a payload is passed to it. (Bug #91974, Bug #28491115)
- Aligned the exception types raised by pure Python and the C extension when assigning a non-existent database or when executing an invalid query using the - connection.info_query()method. (Bug #91315, Bug #28295478)
- Destroying a connection object now raises a ProgrammingError exception stating the cursor is not connected. Previously, it raised a ReferenceError exception about weakly referenced objects, which related to how cursors contain a weak reference to the connection. (Bug #76181, Bug #21463298)