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
utf8mb4
collations and renaming all existingutf8_
collations toutf8mb3_
. In addition,utf8
is 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
Black
andIsort
tooling for PEP 8, andclang-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
, andbdist_rpm
build 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
protobuf
is now 3.11.0 through 3.20.1, inclusive, due to a breaking change introduced in Pythonprotobuf
4.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_ESCAPES
SQL 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_level
OPTIONS
entry in the DjangoDATABASES
configuration. (Bug #107174, Bug #34127959)-
The
connect()
method'sfailover
argument 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)