Added support for OpenSSL 3.0. (WL #14815)
Added or renamed collations to align with MySQL Server 8.0.30. This includes adding support for language-specific
utf8mb4collations and renaming all existingutf8_collations toutf8mb3_. In addition,utf8is now an alias forutf8mb4. Support for MySQL 5.7 collations is preserved for connections to a MySQL 5.7 server. (WL #15212)Implemented an authentication mechanism to instantiate only required authentication plugins according to 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
BlackandIsorttooling for PEP 8, andclang-formatfor PEP 7. The integration includes git pre-commit hooks.In addition,
Pylintwas also tested and integrated with a git pre-commit hook. (WL #15035, WL #15137) Removed support for the
bdist_deb,bdist_macos, andbdist_rpmbuild targets fromsetup.py. Instead, use the packages built by Oracle Release Engineering. (WL #15176)
Empty strings (
"") in the collection fields used in methods likeset()that are chained withmodify()are no longer allowed; now only the dollar sign ($) is allowed when trying to replace the entire document. (Bug #34260344)The required version of
protobufis now 3.11.0 through 3.20.1, inclusive, due to a breaking change introduced in Pythonprotobuf4.21.0. (Bug #34231226)C extension and pure Python cursor types are not interchangeable when using connection objects that are not of the same type; now we check for supported cursor classes and raise a ProgrammingError if the cursor is not of a compatible type. (Bug #34223015)
The C Extension did not function with the
NO_BACKSLASH_ESCAPESSQL mode enabled. We fix this by calling themysql_real_escape_string_quote()C API function instead ofmysql_real_escape_string_quote(). Prior to upgrading to this release, you can work around this problem by using the pure Python implementation instead (use_pure=True). (Bug #107434, Bug #34228442)For Django, allow setting the connection isolation level with an
isolation_levelOPTIONSentry in the DjangoDATABASESconfiguration. (Bug #107174, Bug #34127959)-
The
connect()method'sfailoverargument now accepts a tuple, as was documented, when previously it accepted only 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)