MySQL Connector/J 8.0.25 has been released

Dear MySQL users,

MySQL Connector/J 8.0.25 is the latest General Availability release of the
MySQL Connector/J 8.0 series.  It is suitable for use with MySQL Server
versions 8.0, 5.7, and 5.6.  It supports the Java Database Connectivity (JDBC)
4.2 API, and implements the X DevAPI.

This release includes the following new features and changes, also described in
more detail on

https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-25.html

As always, we recommend that you check the “CHANGES” file in the download
archive to be aware of changes in behavior that might affect your application.

To download MySQL Connector/J 8.0.25 GA, see the “General Availability (GA)
Releases” tab at http://dev.mysql.com/downloads/connector/j/

Enjoy!

Changes in MySQL Connector/J 8.0.25 (2021-05-11, General Availability)

This release contains no functional changes and is published
  to align the version number with the MySQL Server 8.0.25
  release.

On Behalf of the MySQL Engineering Team,
Surabhi Bhat

MySQL Connector/Python 8.0.25 has been released

Dear MySQL users,

MySQL Connector/Python 8.0.25 is the latest GA release version of the
MySQL Connector Python 8.0 series. The X DevAPI enables application
developers to write code that combines the strengths of the relational
and document models using a modern, NoSQL-like syntax that does not
assume previous experience writing traditional SQL.

To learn more about how to write applications using the X DevAPI, see

http://dev.mysql.com/doc/x-devapi-userguide/en/

For more information about how the X DevAPI is implemented in MySQL
Connector/Python, and its usage, see

http://dev.mysql.com/doc/dev/connector-python

Please note that the X DevAPI requires at least MySQL Server version 8.0
or higher with the X Plugin enabled. For general documentation about how
to get started using MySQL as a document store, see

http://dev.mysql.com/doc/refman/8.0/en/document-store.html

To download MySQL Connector/Python 8.0.25, see the “General Availability
(GA) Releases” tab at

http://dev.mysql.com/downloads/connector/python/

Enjoy!

Changes in MySQL Connector/Python 8.0.25 (2021-05-11, General
Availability)

   This release contains no functional changes and is published
   to align the version number with the MySQL Server 8.0.25
   release.

Enjoy and thanks for the support!

On Behalf of the MySQL Engineering Team,
Nawaz Nazeer Ahamed

SSH Tunneling in Connector/Net

A couple of years ago, MySQL Connector/Net shipped with a feature that allowed the connector to automatically create a SSH “tunnel” to a remote MySQL host. This could be useful in that it allows a remote MySQL host to only run with a secure port and a local client could connect to a local port to access it. We wrote about that feature in a blog post you can read here.

Today we are announcing that starting with the 8.0.24 release we are removing that feature. We decided to take this action for a few reasons. First, very few people were actually using the feature. Including a security sensitive feature that few people use is something we always want to examine. In addition, we were starting to encounter some friction between the encryption methods and ciphers that library supported and those that we wanted to support as an official Oracle product. And lastly, and as I’ll demonstrate with the following code, using the library to create your own tunnels is incredibly easy. By removing this library from our connector it helps to simplify our code paths possibly resulting in faster connections and fewer bugs and makes it clearer in your application code exactly what is happening.

To demonstrate how easy it is to create your own tunnels, do the following. First install the SSH.Net library found at https://github.com/sshnet/SSH.NET/. Then in your code you can do something like the following:

var key = new PrivateKeyFile(PrivateKeyPath,SSHServerPassword);
var method = new PrivateKeyAuthenticationMethod(SSHServerUserName, key);
ConnectionInfo conn = new ConnectionInfo(SSHServerHost, SSHServerPort, SSHServerUserName, method);

SshClient = new SshClient(conn);
SshClient.Connect();

ForwardedPortLocal forwardedPortLocal = new ForwardedPortLocal("127.0.0.1",3306, MySQLHost, MySQLPort);
SshClient.AddForwardedPort(forwardedPortLocal);
forwardedPortLocal.Start();

// Connector/Net can now connect to 127.0.0.1:3306 to connect to the remote MySQL host.

By splitting out the library it allows the end user to use all the features of the tunneling library to create the tunnel in just the way that is required and upgrade the tunneling library at the speed they are comfortable with.

We’re sorry for any inconvenience this might cause but we feel like this serves our customers better.

MySQL Connector/ODBC 8.0.24 has been released

Dear MySQL users,

MySQL Connector/ODBC 8.0.24 is a new version in the MySQL Connector/ODBC
8.0 series, the ODBC driver for the MySQL Server.

The available downloads include both a Unicode driver and an ANSI driver
based on the same modern codebase. Please select the driver type you
need based on the type of your application – Unicode or ANSI.
Server-side prepared statements are enabled by default. It is suitable
for use with the latest MySQL server version 8.0.

This release of the MySQL ODBC driver is conforming to the ODBC 3.8
specification. It contains implementations of key 3.8 features,
including self-identification as a ODBC 3.8 driver, streaming of out (for
binary types only), and support of the SQL_ATTR_RESET_CONNECTION
connection attribute (for the Unicode driver only).

The release is now available in source and binary form for a number of
platforms from our download pages at

https://dev.mysql.com/downloads/connector/odbc/

For information on installing, please see the documentation at

https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html

Enjoy and thanks for your support!


Changes in MySQL Connector/ODBC 8.0.24 (2021-04-20, General Availability)

Functionality Added or Changed


     * Previously, if the connection to the server was not used
       within the period specified by the wait_timeout system
       variable and the server closed the connection, the client
       received no notification of the reason. Typically, the
       client would see Lost connection to MySQL server during
       query (CR_SERVER_LOST) or MySQL server has gone away
       (CR_SERVER_GONE_ERROR).
       In such cases, the server now writes the reason to the
       connection before closing it, and the client receives a
       more informative error message: The client was
       disconnected by the server because of inactivity. See
       wait_timeout and interactive_timeout for configuring this
       behavior. (ER_CLIENT_INTERACTION_TIMEOUT).
       The previous behavior still applies for client
       connections to older servers and connections to the
       server by older clients.

     * If a classic MySQL protocol connection experiences a
       server timeout, Connector/ODBC now reports more precise
       disconnection information from the server.

Bugs Fixed


     * The ODBC SQLProcedureColumns function returns incomplete
       results, fetches after usage would only return the first
       40 parameters.
       The workaround was to increase the group_concat_max_len
       size, for example ‘group-concat-max-len = 1000000’ under
       [mysqld]. (Bug #32504915, Bug #102589)

     * MySQL 8.0.24 added a new ER_CLIENT_INTERACTION_TIMEOUT
       error code, and it caused the ODBC driver to report the
       wrong SQLSTATE HY000 instead of 08S01 after the
       connection is terminated on the server by
       wait_/_interactive timeout. The ODBC driver is now linked
       against libmysqlclient 8.0.24 to handle this situation.
       (Bug #32394545)

On Behalf of Oracle/MySQL Engineering Team,
Gipson Pulla

MySQL Connector/Python 8.0.24 has been released


Dear MySQL users,

MySQL Connector/Python 8.0.24 is the latest GA release version of the
MySQL Connector Python 8.0 series. The X DevAPI enables application
developers to write code that combines the strengths of the relational
and document models using a modern, NoSQL-like syntax that does not
assume previous experience writing traditional SQL.

To learn more about how to write applications using the X DevAPI, see

  http://dev.mysql.com/doc/x-devapi-userguide/en/

For more information about how the X DevAPI is implemented in MySQL
Connector/Python, and its usage, see

  http://dev.mysql.com/doc/dev/connector-python

Please note that the X DevAPI requires at least MySQL Server version 8.0
or higher with the X Plugin enabled. For general documentation about how
to get started using MySQL as a document store, see

  http://dev.mysql.com/doc/refman/8.0/en/document-store.html

To download MySQL Connector/Python 8.0.24, see the “General Availability
(GA) Releases” tab at

  http://dev.mysql.com/downloads/connector/python/

Enjoy!

Changes in MySQL Connector/Python 8.0.24 (2021-04-20, General Availability)

Functionality Added or Changed

  • Removed Python 2.7 and 3.5 support, and added Python 3.9
    support. (Bug #32144255, Bug #32192619, Bug #32001787)
  • Improved server disconnection handling of X Protocol
    connections now creates a log entry and returns an error
    message, as needed, after Connector/Python receives a
    connection-close notice from the server. Connector/Python
    detects three new types of warning notices.
    Connection idle notice. This notice applies to a server
    connection that remains idle for longer than the relevant
    timeout setting. Connector/Python closes the connection
    when it receives the notice in an active session or while
    a new session is being created. An attempt to use the
    invalid session returns the “Connection closed. Reason:
    connection idle too long” error message.
    Server shutdown notice. If a connection-close notice is
    received in a session as a result of a server shutdown,
    Connector/Python terminates the session with the
    “Connection closed. Reason: server shutdown” error
    message. All other sessions that are connected to the
    same endpoint are removed from the pool, if connection
    pooling is used.
    Connection killed notice. If the connection being killed
    from another client session, Connector/Python closes the
    connection when it receives the notice in an active
    session or while a new session is being created. An
    attempt to use the invalid session returns the
    “Connection closed. Reason: connection killed by a
    different session” error message.
  • If a classic MySQL protocol connection experiences a
    server timeout, Connector/Python now reports more precise
    disconnection information from the server.

Bugs Fixed

  • For the C-extension, executing prepared statements
    emitted errors when placeholders were defined without
    associated parameters. Now they are not executed. (Bug 32497631)
  • For prepared statements any type or argument was
    accepted, which could produce undesired results. Now the
    use of list or type objects for the argument is enforced,
    and passing in other types raise an error. (Bug 32496788)
  • Added Django 3.2 support while preserving compatibility
    with Django 2.2, 3.0, and 3.1. (Bug #32435181)
  • Added context manager support for pooled connections; a
    feature added to standard connections in 8.0.21. (Bug 32029891)
  • Replaced the deprecated PyUnicode_GetSize with
    PyUnicode_GET_LENGTH to fix the casting of Python’s
    unicode to std::string. (Bug #31490101, Bug #99866)
  • Binary columns were returned as strings instead of
    ‘bytes’ or ‘bytearray’. (Bug #30416704, Bug #97177)


Enjoy and thanks for the support!

On Behalf of the MySQL Engineering Team,
Balasubramanian Kandasamy

Support EOL for MySQL Connector/J 5.1

Per Oracle’s Lifetime Support policy, as of Feb 9th, 2021, MySQL Connector/J 5.1 series is covered under Oracle Sustaining Support. Downloadable binaries can be found in the MySQL Products Archives and in the Maven Central Repository.

MySQL Connector/J 5.1.49 has been the last release of Connector/J 5.1 series.

It is time to move on. Users are encouraged to upgrade to MySQL Connector/J 8.0 series which provides the same features as Connector/J 5.1 and a lot more, including a brand new date/time handling support, introduced in version 8.0.23, and the X DevAPI that empowers the MySQL Document Store.

We like to hear from you. Please join us in the MySQL Forums or in #connectors channel in:

New MySQL Entity Framework Core packages for the Connector/NET Provider at NuGet

Hello MySQL Connector/NET community,

Starting with the 8.0.23 release, our provider for Entity Framework Core has a new name. The main goal is to keep support for the different versions of Microsoft Entity Framework Core and to ensure those versions remain tighly coupled with our releases. Also, this new naming is more specific regarding the purpose of the package. Hence the Data part of the name was removed.

Before:

    MySql.Data.EntityFrameworkCore v8.0.x

Now:

    MySql.EntityFrameworkCore v8.0.x

Now that Microsoft maintains more than a single version of Entity Framework Core, we needed to find a way to name our packages and maintain the correlation between the versions of Entity Framework Core and MySQL. So that’s when we came up with using the metadata of the packages. The package version now consists of two parts, the first corresponds to the currently supported version of Microsoft Entity Framework Core and then a “plus” sign that indicates the metadata where we include the MySQL version.

    MySql.EntityFrameworkCore v5.0.0+MySQL8.0.23
    MySql.EntityFrameworkCore v3.1.10+MySQL8.0.23

Well, there is one more future scenario to consider. What if Microsoft does not release a new version for Entity Framework Core in time for our newer Connector/NET version? Let’s say that the currently supported version for Entity Framework Core is 5.0.0 so our package looks like MySql.EntityFrameworkCore 5.0.0+MySQL8.0.23, and at the time we release the next version, 8.0.24, Microsoft latest version for Entity Framework Core is still the 5.0.0. In this case, we will add a fourth digit to the version, naming the package like this: MySql.EntityFrameworkCore 5.0.0.1+MySQL8.0.23.

We hope you find this new naming model useful and more precise. Your feedback is always welcome and all your comments inspire us to keep improving so that we offer you a product with top quality.

Finally, here are some links that could be useful for you:

We hope to hear from you!

Deprecating End-of-life runtime engines on Connector/Node.js

Starting with the 8.0.23 release, Connector/Node.js will be deprecating support for End-of-life Node.js engine versions. Support for these versions will eventually be removed on subsequent releases which will focus on compatibility with the available LTS versions at the date of each release.

Continue reading

MySQL Connector/ODBC 8.0.23 has been released

Dear MySQL users,

MySQL Connector/ODBC 8.0.23 is a new version in the MySQL Connector/ODBC
8.0 series, the ODBC driver for the MySQL Server.

The available downloads include both a Unicode driver and an ANSI driver
based on the same modern codebase. Please select the driver type you
need based on the type of your application – Unicode or ANSI.
Server-side prepared statements are enabled by default. It is suitable
for use with the latest MySQL server version 8.0.

This release of the MySQL ODBC driver is conforming to the ODBC 3.8
specification. It contains implementations of key 3.8 features,
including self-identification as a ODBC 3.8 driver, streaming of out (for
binary types only), and support of the SQL_ATTR_RESET_CONNECTION
connection attribute (for the Unicode driver only).

The release is now available in source and binary form for a number of
platforms from our download pages at

https://dev.mysql.com/downloads/connector/odbc/

For information on installing, please see the documentation at

https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html

Enjoy and thanks for your support!

Changes in MySQL Connector/ODBC 8.0.23 (2021-01-18, General Availability)

Bugs Fixed

* Using the commercial glib package
(authentication_ldap_sasl) with auth using GSSAPI
(authentication_ldap_sasl_auth_method_name=’GSSAPI’) did
not function. Added the missing sasl2 modules package.
(Bug #32175842)

* On Debian based systems, the post-installation script
uses dpkg-architecture ODBC drivers path, so the
associated dpkg-dev package was added as a runtime
dependency. (Bug #32157740)

* Microsoft Access halted when opening a linked table with
only a JSON column. The JSON column type is now
supported, and JSON data is only editable if another
column is used as a primary key. Because JSON is a long
data type with the maximum length of 4GB, it can’t be
used as a primary key by Microsoft Access and therefore
tables having only JSON columns are only available in
read-only mode. (Bug #32114901)

* Removed the mysql-client-plugins dependency. It remains
required for connections using commercial MySQL server
accounts with LDAP authentication, so must be manually
installed for that situation. The mysql-client-plugins
package has conflicts with MySQL server versions before
8.0.21, so earlier versions (such as MySQL 5.7) require
an 8.0 server upgrade to use it. (Bug #31875490)

* On macOS, Connector/ODBC would not report an error if
SQL_ATTR_PARAMSET_SIZE was set but not supported; instead
the setting was ignored. (Bug #29862441, Bug #95608)

On Behalf of Oracle/MySQL Release Engineering Team,
Hery Ramilison

MySQL Connector/Python 8.0.23 has been released

Dear MySQL users,

MySQL Connector/Python 8.0.23 is the latest GA release version of the MySQL Connector Python 8.0 series. The X DevAPI enables application developers to write code that combines the strengths of the relational and document models using a modern, NoSQL-like syntax that does not assume previous experience writing traditional SQL.

To learn more about how to write applications using the X DevAPI, see

http://dev.mysql.com/doc/x-devapi-userguide/en/

For more information about how the X DevAPI is implemented in MySQL Connector/Python, and its usage, see

http://dev.mysql.com/doc/dev/connector-python

Please note that the X DevAPI requires at least MySQL Server version 8.0 or higher with the X Plugin enabled. For general documentation about how

http://dev.mysql.com/doc/refman/8.0/en/document-store.html

To download MySQL Connector/Python 8.0.23, see the “General Availability (GA) Releases” tab at

http://dev.mysql.com/downloads/connector/python/

Enjoy!

Changes in MySQL Connector/Python 8.0.23 (2021-01-18, General Availability)

Functionality Added or Changed

  • Deprecated Python 2.7 support; a warning was added to describe Python 2.7 support being removed in Connector/Python 8.0.24.

    Previously, Connector/Python added client support for the MySQL Enterprise Edition SASL LDAP authentication plugin with SCRAM-SHA-1 as an authentication method. Connector/Python now also supports SCRAM-SHA-256 as an alternative authentication method for classic MySQL protocol connections. SASL-based LDAP authentication does not apply to clients running macOS.

  • Added SASL authentication protocol support using the GSSAPI (Kerberos) authentication method for the pure python implementation (this is not available for the c-ext version of Connector/Python).

    This functionality requires the GSSAPI pypi module, which provides both low-level and high-level wrappers around the GSSAPI C libraries. The GSSAPI pypi module requires MIT kerberos installed opn the system to function and request tickets to authenticate Connector/Python with the MySQL server when the user is IDENTIFIED WITH authentication_ldap_sasl and the authentication_ldap_sasl plugin is configured to use the GSSAPI mechanism.

    This also adds a new krb_service_principal option, which must be a string in the form “primary/instance@realm” such as “ldap/ldapauth@MYSQL.COM” where “@realm” is optional. The “@realm” defaults to the default realm, as configured in the krb5.conf file.

Bugs Fixed

  • Fixed the AttributeError raised when getting the connection ID from a closed CMySQLConnection. (Bug #31882419, Bug #100825)

  • Fixed support for named tuple (an invalid exception was generated) and dictionary cursors (incorrect type of result was returned). (Bug #29195610)

  • Fixed cursor.fetchone() and cursor.fetchmany() to comply with PEP 249, which specifies that an exception must be raised if the previous call to cursor.execute*() does not produce any result set or no call was issued yet. (Bug #26834307, Bug #87815)

  • Fixed the microsecond conversion from MySQL datetime to Python datetime when using fractional values with the C extension enabled. For example, 2016-10-20 15:40:23.8 from MySQL resulted in datetime.datetime(2016, 10, 20, 15, 40, 23, 8) instead of datetime.datetime(2016, 10, 20, 15, 40, 23, 800000). Thanks to Vilnis Termanis for the patch. (Bug #24938411, Bug #83479)