Added OpenSSL 3.0 support. (WL #14815)
Added or renamed collations as per MySQL Server 8.0.30. This includes adding support for the new language-specific utf8mb4 collations and renaming all existing utf8_* collations to utf8mb3_*. This also makes utf8 an alias to utf8mb4. Support for MySQL 5.7 collations were preserved for connections to a MySQL 5.7 server. (WL #15212)
Implemented an authentication mechanism to only instantiate required authentication plugins as per the authentication handshake performed with MySQL Server. Previously, all available authentication plugins (and their associated third-party modules) were loaded upon initialization. (WL #14822)
-
Improved PEP 7 and PEP 8 style guideline enforcement by adding Black and Isort tooling for PEP 8, and clang-format for PEP 7. The integration includes git pre-commit hooks.
In addition, Pylint was also tested and integrated with a git pre-commit hook. (WL #15035, WL #15137)
Removed support for the "bdist_deb", "bdist_macos", and "bdist_rpm" build targets from
setup.py
. Instead, use packages built by the Release Engineering team. (WL #15176)
No longer allow empty strings ("") in the collection fields used in methods like set() that are chained with modify(). Now only the dollar sign ("$") is allowed when trying to replace the entire document. (Bug #34260344)
Updated the protobuf version requirement to version >= 3.11.0, <=3.20.1 due to a breaking change introduced in Python protobuf 4.21.0. (Bug #34231226)
Now check for supported cursor classes and raise a ProgrammingError if it's not compatible cursor type; as c-ext and pure Python cursor types are not interchangeable when using connection objects that aren't of the same type. (Bug #34223015)
The C Extension implementation did not function with the NO_BACKSLASH_ESCAPES SQL mode enabled. The fix is to internally call the mysql_real_escape_string_quote() C API function instead of mysql_real_escape_string_quote(). The workaround was to use the pure Python implementation (use_pure=True). (Bug #107434, Bug #34228442)
For Django, allow setting the connection isolation level with an 'isolation_level' OPTIONS entry in Django's DATABASES configuration. (Bug #107174, Bug #34127959)
-
The connect()'s
failover
argument now accepts a tuple, as was documented, when previously it only accepted a list of dictionaries.Thanks to Ville Skyttä for the patch. (Bug #106632, Bug #33923516)
For Django, added the missing DatabaseIntrospection
_parse_constraint_columns()
method. (Bug #105993, Bug #33827760)Fixed potential rounding errors when using arithmetic expressions with decimal data types; decimal values are no longer quoted. (Bug #92790, Bug #28821983)
Disabled SSL usage with Unix socket connections. (Bug #91552, Bug #92260, Bug #28295504, Bug #28880051)