Skip to content

Latest commit

 

History

History
657 lines (412 loc) · 17.3 KB

HISTORY.rst

File metadata and controls

657 lines (412 loc) · 17.3 KB

What's new in 2.2.6

Release: 2024-11-12

  • MariaDB Connector/C 3.4 and MairaDB 11.4 enabled SSL and CA verification by default. It affected 2.2.5 windows wheel. This release disables SSL and CA verification by default. (#731)
  • Add server_public_key_path option. It is needed to connect MySQL server with sha256_password or caching_sha2_password authentication plugin without secure connection. (#744)

What's new in 2.2.5

Release: 2024-10-20

  • (Windows wheel) Update MariaDB Connector/C to 3.4.1. #726
  • (Windows wheel) Build wheels for Python 3.13. #726

What's new in 2.2.4

Release: 2024-02-09

  • Support ssl=True in connect(). (#700) This makes better compatibility with PyMySQL and mysqlclient==2.2.1 with libmariadb. See #698 for detail.

What's new in 2.2.3

Release: 2024-02-04

  • Fix Connection.kill() method that broken in 2.2.2. (#689)

What's new in 2.2.2

Release: 2024-02-04

  • Support building with MySQL 8.3 (#688).
  • Deprecate db.shutdown() and db.kill() methods in docstring. This is because mysql_shutdown() and mysql_kill() were removed in MySQL 8.3. They will emit DeprecationWarning in the future but not for now.

What's new in 2.2.1

Release: 2023-12-13

  • Connection.ping() avoid using MYSQL_OPT_RECONNECT option until reconnect=True is specified. MySQL 8.0.33 start showing warning when the option is used. (#664)
  • Windows: Update MariaDB Connector/C to 3.3.8. (#665)
  • Windows: Build wheels for Python 3.12 (#644)

What's new in 2.2.0

Release: 2023-06-22

  • Use pkg-config instead of mysql_config (#586)
  • Raise ProgrammingError on -inf (#557)
  • Raise IntegrityError for ER_BAD_NULL. (#579)
  • Windows: Use MariaDB Connector/C 3.3.4 (#585)
  • Use pkg-config instead of mysql_config (#586)
  • Add collation option (#564)
  • Drop Python 3.7 support (#593)
  • Use pyproject.toml for build (#598)
  • Add Cursor.mogrify (#477)
  • Partial support of ssl_mode option with mariadbclient (#475)
  • Discard remaining results without creating Python objects (#601)
  • Fix executemany with binary prefix (#605)

What's new in 2.1.1

Release: 2022-06-22

  • Fix qualname of exception classes. (#522)
  • Fix range check in MySQLdb._mysql.result.fetch_row(). Invalid how argument caused SEGV. (#538)
  • Fix docstring of _mysql.connect. (#540)
  • Windows: Binary wheels are updated. (#541)
    • Use MariaDB Connector/C 3.3.1.
    • Use cibuildwheel to build wheels.
    • Python 3.8-3.11

What's new in 2.1.0

Release: 2021-11-17

  • Add multistatement=True option. You can disable multi statement. (#500).
  • Remove unnecessary bytes encoder which is remained for Django 1.11 compatibility (#490).
  • Deprecate passwd and db keyword. Use password and database instead. (#488).
  • Windows: Binary wheels are built with MariaDB Connector/C 3.2.4. (#508)
  • set_character_set() sends SET NAMES query always. This means all new connections send it too. This solves compatibility issues when server and client library are different version. (#509)
  • Remove escape() and escape_string() from MySQLdb package. (#511)
  • Add Python 3.10 support and drop Python 3.5 support.

What's new in 2.0.3

Release: 2021-01-01

  • Add -std=c99 option to cflags by default for ancient compilers that doesn't accept C99 by default.
  • You can customize cflags and ldflags by setting MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS. It overrides mysql_config.

What's new in 2.0.2

Release: 2020-12-10

  • Windows: Update MariaDB Connector/C to 3.1.11.
  • Optimize fetching many rows with DictCursor.

What's new in 2.0.1

Release: 2020-07-03

  • Fixed multithread safety issue in fetching row.
  • Removed obsolete members from Cursor. (e.g. messages, _warnings, _last_executed)

What's new in 2.0.0

Release: 2020-07-02

  • Dropped Python 2 support
  • Dropped Django 1.11 support
  • Add context manager interface to Connection which closes the connection on __exit__.
  • Add ssl_mode option.

What's new in 1.4.6

Release: 2019-11-21

  • The cp1252 encoding is used when charset is "latin1". (#390)

What's new in 1.4.5

Release: 2019-11-06

  • The auth_plugin option is added. (#389)

What's new in 1.4.4

Release: 2019-08-12

  • charset option is passed to mysql_options(mysql, MYSQL_SET_CHARSET_NAME, charset) before mysql_real_connect is called. This avoid extra SET NAMES <charset> query when creating connection.

What's new in 1.4.3

Release: 2019-08-09

  • --static build supports libmariadbclient.a
  • Try mariadb_config when mysql_config is not found
  • Fixed warning happened in Python 3.8 (#359)
  • Fixed from MySQLdb import *, while I don't recommend it. (#369)
  • Fixed SEGV MySQLdb.escape_string("1") when libmariadb is used and no connection is created. (#367)
  • Fixed many circular references are created in Cursor.executemany(). (#375)

What's new in 1.4.2

Release: 2019-02-08

  • Fix Django 1.11 compatibility. (#327) mysqlclient 1.5 will not support Django 1.11. It is not because mysqlclient will break backward compatibility, but Django used unsupported APIs and Django 1.11 don't fix bugs including compatibility issues.

What's new in 1.4.1

Release: 2019-01-19

  • Fix dict parameter support (#323, regression of 1.4.0)

What's new in 1.4.0

Release: 2019-01-18

  • Dropped Python 3.4 support.
  • Removed threadsafe and embedded build options.
  • Remove some deprecated cursor classes and methods.
  • _mysql and _mysql_exceptions modules are moved under MySQLdb package. (#293)
  • Remove errorhandler from Connection and Cursor classes.
  • Remove context manager API from Connection. It was for transaction. New context manager API for closing connection will be added in future version.
  • Remove waiter option from Connection.
  • Remove escape_sequence, and escape_dict methods from Connection class.
  • Remove automatic MySQL warning checking.
  • Drop support for MySQL Connector/C with MySQL<5.1.12.
  • Remove _mysql.NULL constant.
  • Remove _mysql.thread_safe() function.
  • Support non-ASCII field name with non-UTF-8 connection encoding. (#210)
  • Optimize decoding speed of string and integer types.
  • Remove MySQLdb.constants.REFRESH module.
  • Remove support for old datetime format for MySQL < 4.1.
  • Fix wrong errno is raised when mysql_real_connect is failed. (#316)

What's new in 1.3.14

Release: 2018-12-04

  • Support static linking of MariaDB Connector/C (#265)
  • Better converter for Decimal and Float (#267, #268, #273, #286)
  • Add Connection._get_native_connection for XTA project (#269)
  • Fix SEGV on MariaDB Connector/C when some methods of Connection objects are called after Connection.close() is called. (#270, #272, #276) See https://jira.mariadb.org/browse/CONC-289
  • Fix Connection.client_flag (#266)
  • Fix SSCursor may raise same exception twice (#282)
    • This removed Cursor._last_executed which was duplicate of Cursor._executed. Both members are private. So this type of changes are not documented in changelog generally. But Django used the private member for last_executed_query implementation. If you use the method the method directly or indirectly, this version will break your application. See https://code.djangoproject.com/ticket/30013
  • waiter option is now deprecated. (#285)
  • Fixed SSL support is not detected when built with MySQL < 5.1 (#291)

What's new in 1.3.13

Support build with MySQL 8

Fix decoding tiny/medium/long blobs (#215)

Remove broken row_seek() and row_tell() APIs (#220)

Reduce callproc roundtrip time (#223)

What's new in 1.3.12

Fix tuple argument again (#201)

InterfaceError is raised when Connection.query() is called for closed connection (#202)

What's new in 1.3.11

Support MariaDB 10.2 client library (#197, #177, #200)

Add NEWDECIMAL to the NUMBER DBAPISet (#167)

Allow bulk insert which no space around VALUES (#179)

Fix leak of connection->converter. (#182)

Support error numbers > CR_MAX_ERROR (#188)

Fix tuple argument support (#145)

What's new in 1.3.10

Added binary_prefix option (disabled by default) to support _binary prefix again. (#134)

Fix SEGV of _mysql.result() when argument's type is unexpected. (#138)

Deprecate context interface of Connection object. (#149)

Don't use workaround of bytes.decode('ascii', 'surrogateescape') on Python 3.6+. (#150)

What's new in 1.3.9

Revert adding _binary prefix for bytes/bytearray parameter. It broke backward compatibility.

Fix Windows compile error on MSVC.

What's new in 1.3.8

Update error constants (#113)

Use _binary prefix for bytes/bytearray parameters (#106)

Use mysql_real_escape_string_quote() if exists (#109)

Better Warning propagation (#101)

Fix conversion error when mysql_affected_rows returns -1

Fix Cursor.callproc may raise TypeError (#90, #91)

connect() supports the 'database' and 'password' keyword arguments.

Fix accessing dangling pointer when using ssl (#78)

Accept %% in Cursor.executemany (#83)

Fix warning that caused TypeError on Python 3 (#68)

What's new in 1.3.7

Support link args other than '-L' and '-l' from mysql_config.

Missing value for column without default value cause IntegrityError. (#33)

Support BIT type. (#38)

More tests for date and time columns. (#41)

Fix calling .execute() method for closed cursor cause TypeError. (#37)

Improve performance to parse date. (#43)

Support geometry types (#49)

Fix warning while multi statement cause ProgrammingError. (#48)

What's new in 1.3.6

Fix escape_string() doesn't work.

Remove Cursor.__del__ to fix uncollectable circular reference on Python 3.3.

Add context manager support to Cursor. It automatically closes cursor on __exit__.

with conn.cursor() as cur:
    cur.execute("SELECT 1+1")
    print(cur.fetchone())
# cur is now closed

What's new in 1.3.5

Fix TINYBLOB, MEDIUMBLOB and LONGBLOB are treated as string and decoded to unicode or cause UnicodeError.

Fix aware datetime is formatted with timezone offset (e.g. "+0900").

What's new in 1.3.4

  • Remove compiler warnings.
  • Fix compile error when using libmariadbclient.
  • Fix GIL deadlock while dealloc.

What's new in 1.3.3

  • Fix exception reraising doesn't work.

What's new in 1.3.2

  • Add send_query() and read_query_result() method to low level connection.
  • Add waiter option.

What's new in 1.3.1

This is a first fork of MySQL-python. Now named "mysqlclient"

  • Support Python 3
  • Add autocommit option
  • Support microsecond in datetime field.

What's new in 1.2.4

final

No changes.

rc 1

Fixed a dangling reference to the old types module.

beta 5

Another internal fix for handling remapped character sets.

_mysql.c was broken for the case where read_timeout was not available. (Issue #6)

Documentation was converted to sphinx but there is a lot of cleanup left to do.

beta 4

Added support for the MySQL read_timeout option. Contributed by Jean Schurger ([email protected]).

Added a workaround so that the MySQL character set utf8mb4 works with Python; utf8 is substituted on the Python side.

beta 3

Unified test database configuration, and set up CI testing with Travis.

Applied several patches from André Malo ([email protected]) which fix some issues with exception handling and reference counting and TEXT/BLOB conversion.

beta 2

Reverted an accidental change in the exception format. (issue #1)

Reverted some raise statements so that they will continue to work with Python < 2.6

beta 1

A lot of work has been done towards Python 3 compatibility, and avoiding warnings with Python 2.7. This includes import changes, converting dict.has_kay(k) to k in dict, updating some test suite methods, etc.

Due to the difficulties of supporting Python 3 and Python < 2.7, 1.2.4 will support Python 2.4 though 2.7. 1.3.0 will support Python 3 and Python 2.7 and 2.6.

MySQLdb-2.0 is instead going to become moist-1.0. See https://github.com/farcepest/moist

The Windows build has been simplified, and I plan to correct pre-built i386 packages built against the python.org Python-2.7 package and MySQL Connector/C-6.0. Contact me if you need ia64 packages.

The connection's cursorclass (if not default) was being lost on reconnect.

Newer versions of MySQL don't use OpenSSL and therefore don't have HAVE_SSL defined, but they do have a different SSL library. Fixed this so SSL support would be enabled in this case.

The regex that looked for SQL INSERT statement and VALUES in cursor.executemany() was made case-insensitive again.

What's new in 1.2.3

ez_setup.py has been update to include various fixes that affect the build.

Better Python version and dependency detection as well as eliminate exception warnings under Python 2.6.

Eliminated memory leaks related to Unicode and failed connections.

Corrected connection .escape() functionality.

Miscellaneous cleanups and and expanded testing suite to ensure ongoing release quality.

What's new in 1.2.2

The build system has been completely redone and should now build on Windows without any patching; uses setuptools.

Added compatibility for Python 2.5, including support for with statement.

connection.ping() now takes an optional boolean argument which can enable (or disable) automatic reconnection.

Support returning SET columns as Python sets was removed due to an API bug in MySQL; corresponding test removed.

Added a test for single-character CHAR columns.

BLOB columns are now returned as Python strings instead of byte arrays.

BINARY character columns are always returned as Python strings, and not unicode.

Fixed a bug introduced in 1.2.1 where the new SHOW WARNINGS support broke SSCursor.

Only encode the query (convert to a string) when it is a unicode instance; re-encoding encoded strings would break things.

Make a deep copy of conv when connecting, since it can be modified.

Added support for new VARCHAR and BIT column types.

DBAPISet objects were broken, but nobody noticed.

What's new in 1.2.1_p2

There are some minor build fixes which probably only affect MySQL older than 4.0.

If you had MySQL older than 4.1, the new charset and sql_mode parameters didn't work right. In fact, it was impossible to create a connection due to the charset problem.

If you are using MySQL-4.1 or newer, there is no practical difference between 1.2.1 and 1.2.1_p2, and you don't need to upgrade.

What's new in 1.2.1

Switched to Subversion. Was going to do this for 1.3, but a SourceForge CVS outage has forced the issue.

Mapped a lot of new 4.1 and 5.0 error codes to Python exceptions

Added an API call for mysql_set_character_set(charset) (MySQL > 5.0.7)

Added an API call for mysql_get_character_set_info() (MySQL > 5.0.10)

Revamped the build system. Edit site.cfg if necessary (probably not in most cases)

Python-2.3 is now the minimum version.

Dropped support for mx.Datetime and stringtimes; always uses Python datetime module now.

Improved unit tests

New connect() options: * charset: sets character set, implies use_unicode * sql_mode: sets SQL mode (i.e. ANSI, etc.; see MySQL docs)

When using MySQL-4.1 or newer, enables MULTI_STATEMENTS

When using MySQL-5.0 or newer, enables MULTI_RESULTS

When using MySQL-4.1 or newer, more detailed warning messages are produced

SET columns returned as Python Set types; you can pass a Set as a parameter to cursor.execute().

Support for the new MySQL-5.0 DECIMAL implementation

Support for Python Decimal type

Some use of weak references internally. Cursors no longer leak if you don't close them. Connections still do, unfortunately.

ursor.fetchXXXDict() methods raise DeprecationWarning

cursor.begin() is making a brief reappearence.

cursor.callproc() now works, with some limitations.