MySQL 8.0.13 — What’s New With Connectors

Welcome to MySQL 8.0.13.   If you haven’t already read about all the great new updates please take a minute and read the announcement.  Along with all the new updates in the server we have a full complement of connectors t hat are now available and I wanted to take a moment to share our updates.

First I want to go over the changes related to the X DevAPI, our new API that merges the great relational power of MySQL with our new Document Store.  Unless specified, all of our MySQL 8.0 series connectors includes all the DevAPI updates.

DevAPI

Connection Pooling – One of the most expensive operations that a connector can do is to simply connect to the server.  This is especially true if you are using SSL/TLS (and  you should be!).  So we wanted to make sure all of our connectors implement a connection pool where idle connections are kept open and are available to be reused for future operations.    This is done by using the new getClient operation like this:

Connect Timeout – This is a simple control where you can control how long to wait for a connection to happen.  Not very exciting but certainly important!

Non-DevAPI

The following are some of the key enhancements coming in each of our connectors that are not related to the DevAPI.

  • Connector/J
    • Protobuf library updated to 3.6.1
    • A new sslMode connection property has been introduced to replace the connection properties useSSL, requireSSL, and verifyServerCertificate, which are now deprecated
  • Connector/Net
    • Entity Framework 2.1 support
  • Connector/Python
    • Python 3.7 support
  • Connector/C++
    • Improve JSON parsing speed and efficiency
    • Enable building on Solaris
    • Implement Windows MSI packaging
  • Connector/ODBC
    • Enable support of Solaris
    • Add support for dynamic linking of libmysqlclient
  • PHP
    • Improve building by treating warnings as errors
    • Improve runtime error handling

Each of these products has their own announcement blog post giving more detail on the bugs fixed and features implemented and I would encourage you to read those.  Those links are:

As always, thank you for using MySQL products.  Please let us know what we are doing right and doing wrong and stay tuned for more exciting things coming in 8.0.14!

 

 

MySQL Connector/NET 8.0.13 has been released

Dear MySQL users,

MySQL Connector/NET 8.0.13 is the first version to support
Entity Framework Core 2.1 and the third general availability release
of MySQL Connector/NET to add support for the new X DevAPI,which
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/index.html. For more
information about how the X DevAPI is implemented in Connector/NET, see
http://dev.mysql.com/doc/dev/connector-net.

NuGet packages provide functionality at a project level. To get the
full set of features available in Connector/NET such as availability
in the GAC, integration with Visual Studio’s Entity Framework Designer
and integration with MySQL for Visual Studio, installation through
the MySQL Installer or the stand-alone MSI is required.

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/NET 8.0.13, see
http://dev.mysql.com/downloads/connector/net/

Installation instructions can be found at
https://dev.mysql.com/doc/connector-net/en/connector-net-installation.html


Changes in MySQL Connector/NET 8.0.13 (2018-10-22, General Availability) 

     * Important Changes

     * Functionality Added or Changed

     * Bugs Fixed

Important Changes


     * The default value for the SslMode connection option now
       differs based on the protocol used to make the
       connection. The Preferred mode has been reintroduced in
       this release (see Options for Both Classic MySQL Protocol
       and X Protocol
       (http://dev.mysql.com/doc/connector-net/en/connector-net-8-0-connection-options.html#connector-net-8-0-connection-options-classic-xprotocol).
       To summarize the default  Sslmode values in the Connector/NET 8.0 (and 7.0) release series:

       Connector/NET 8.0.13: Preferred mode is the default for
       classic MySQL protocol connections only. Required mode is
       the default for X Protocol connections only (Preferred
       mode is not available for use with X Protocol).

       Connector/NET 8.0.8 to 8.0.12: Preferred mode is not
       supported for any connections. Required mode is the
       default for both classic MySQL protocol and X Protocol
       connections.

       Connector/NET 7.0.0 to 7.0.7: Preferred mode is the
       default for both classic MySQL protocol and X Protocol
       connections. (Bug #28687769)


Functionality Added or Changed

     * Document Store: An incremental improvement was made to
       the performance of session creation with a connection
       string. (Bug #28343655)

     * Support for EF Core 2.1 was added to Connector/NET 8.0.13
       and support for EF Core 2.0 was discontinued in the same
       connector version. Other versions of Connector/NET
       continue to support EF Core 2.0 (see Entity Framework
       Core Support
       (http://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.html).

     * The ConnectionTimeout connection option and property were
       reimplemented as the Connect-Timeout option (and the
       ConnectTimeout property) for X Protocol operations. Some
       aspects of the timeout behavior were changed (see Options
       for X Protocol Only
       (http://dev.mysql.com/doc/connector-net/en/connector-net-8-0-connection-options.html#connector-net-8-0-connection-options-xprotocol).
       The new ConnectTimeout property was added to the
       MySqlX.XDevAPI.MySqlXConnectionStringBuilder class and
       the existing ConnectionTimeout property was removed.

       No modifications were made to the existing implementation
       of the ConnectionTimeout option (or property) for classic
       MySQL operations.

     * Connector/NET now provides connection pooling for
       applications using the X Protocol. The implementation
       includes the new static MySQLX.GetClient method that
       takes two parameters: connectionData (connection string
       or URI) and connectionOptions (JSON-formatted string or
       anonymous object containing the pooling options).
       

       Method overloading enables the following type combinations:
        MySQLX.GetClient(Object, Object)
        MySQLX.GetClient(Object, String)
        MySQLX.GetClient(String, Object)
        MySQLX.GetClient(String, String)

       GetClient returns the new Client object, which retrieves
       an existing and currently unused network connection from
       the pool, resets it, and uses it. Closing a session marks
       the underlying connection as unused and returns it to the
       pool.

       Connection options are configured as follows:
       // Connection options of type String
        Client client = MySQLX.GetClient(ConnectionData, "{ \"pooling\": { \"maxSize\":  5, \"queueTimeout\": 5000 } }");

      // Connection options of type Object (anonymous object)
       Client client = MySQLX.GetClient(ConnectionData, new { pooling = new {maxSize = 5, queueTimeout = 5000 } });

       The new keyword must be used twice when the connection
       options are configured using an anonymous object.
       Connection options are: enabled, maxSize, maxIdleTime,
       and queueTimeout. For more information, see Connection
       and Session Concepts
       (http://dev.mysql.com/doc/x-devapi-userguide/en/devapi-connection-concepts.html).

Bugs Fixed

     * Document Store: Connector-side validation performed when
       the Collection.CreateIndex method was called duplicated
       some of the checks already made by the server. The
       connector now only validates that the indexDefinition
       value passed to the method is a valid JSON document with
       the correct structure. (Bug #28343828)

     * EF Core: An invalid syntax error was generated when a new
       property (defined as numeric, has a default value, and is
       not a primary key) was added to an entity that already
       contained a primary-key column with the AUTO_INCREMENT
       attribute. This fix validates that the entity property
       (column) is a primary key first before adding the
       attribute. (Bug #28293927)

     * Document Store: A mixed alphanumeric value such as
       "1address" when used with the Set and Unset methods
       caused the operations to throw an exception. This fix
       resolves the way mixed values are converted into tokens
       to generate only one token as an identifier. (Bug
       #28094094)

     * EF Core: The implementation of some methods required to
       scaffold an existing database were incomplete. (Bug
       #27898343, Bug #90368)

     * Attempts to create a new foreign key from within an
       application resulted in an exception when the key was
       generated by a server in the MySQL 8.0 release series.
       (Bug #27715069)

     * A variable of type POINT when used properly within an
       application targeting MySQL 8.0 generated an SQL syntax
       error. (Bug #27715007)

     * The case-sensitive lookup of field ordinals was
       initialized using case-insensitive comparison logic. This
       fix removes the original case-sensitive lookup. (Bug
       #27285641, Bug #88950)

     * The MySql.Data.Types.MySqlGeometry constructor called
       with an array of bytes representing an empty geometry
       collection generated an ArgumentOutOfRangeException
       exception, rather than creating the type as expected.
       Thanks to Peet Whittaker for the patch. (Bug #26421346,
       Bug #86974)

     * Slow connections made to MySQL were improved by reducing
       the frequency and scope of operating system details
       required by the server to establish and maintain a
       connection. (Bug #22580399, Bug #80030)


On Behalf of MySQL Release Engineering team,
Surabhi Bhat

MySQL Connector/C++ 8.0.13 has been released

Dear MySQL users,

MySQL Connector/C++ 8.0.13 is a new release version of the MySQL
Connector/C++ 8.0 series.

Connector/C++ 8.0 can be used to access MySQL implementing Document Store or in a traditional way, using SQL queries. It allows writing both C++ and plain C applications using X DevAPI and X DevAPI for C. It also supports the legacy API of Connector/C++ 1.1 based on JDBC4.

To learn more about how to write applications using X DevAPI, see “X DevAPI User Guide”

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

See also “X DevAPI Reference” at

https://dev.mysql.com/doc/dev/connector-cpp/devapi_ref.html

and “X DevAPI for C Reference” at

https://dev.mysql.com/doc/dev/connector-cpp/xapi_ref.html

For generic information on using Connector/C++ 8.0, see

https://dev.mysql.com/doc/dev/connector-cpp/

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/C++ 8.0.13, see the “Generally Available (GA)
Releases” tab at

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



Changes in MySQL Connector/C++ 8.0.13 (2018-10-22, General Availability)

* Character Set Support

* Packaging Notes

* X DevAPI Notes

* Functionality Added or Changed

* Bugs Fixed

Character Set Support


* For connections to the server made using the legacy JDBC
API (that is, not made using X DevAPI or X DevAPI for C),
the default connection character set is now utf8mb4
rather than utf8. Connections to the server made using X
DevAPI or X DevAPI for C continue to use the connection
character set determined by the server. (Bug #28204677)

Packaging Notes


* Connector/C++ 32-bit MSI packages are now available for
Windows. These 32-bit builds enable use of the legacy
JDBC connector.

* Connector/C++ compressed tar file packages are now
available for Solaris.
It is also possible to build Connector/C++ from source on
Solaris. For platform-specific build notes, see Building
Connector/C++ Applications: Platform-Specific Considerations
(http://dev.mysql.com/doc/connector-cpp/8.0/en/connector-cpp-apps-platform-considerations.html).


X DevAPI Notes


* Connector/C++ now provides connection pooling for
applications using X Protocol. This capability is based
on client objects, a new type of X DevAPI object. A
client can be used to create sessions, which take
connections from a pool managed by that client. For a
complete description, see Connecting to a Single MySQL
Server Using Connection Pooling
(http://dev.mysql.com/doc/x-devapi-userguide/en/connecting-connection-pool.html).
X DevAPI example:
using namespace mysqlx;

Client cli("user:password@host_name/db_name", ClientOption::POOL_MAX_SIZE, 7);
Session sess = cli.getSession();

// use sess as before

cli.close();  // close session sess

X DevAPI for C example:
char error_buf[255];
int  error_code;

mysqlx_client_t *cli
= mysqlx_get_client_from_url(
"user:password@host_name/db_name", "{ \"maxSize\": 7 }", error_buf, &error_code);
mysqlx_session_t *sess = mysqlx_get_session_from_client(cli);

// use sess as before

mysqlx_close_client(cli);  // close session sess


* For X DevAPI, a new connect-timeout option can be
specified in connection strings or URIs to indicate a
connection timeout in milliseconds. The
SessionSettings::Options object supports a new
CONNECT_TIMEOUT option.
For X DevAPI for C, the mysqlx_opt_type_t constant is
MYSQLX_OPT_CONNECT_TIMEOUT together with the
OPT_CONNECT_TIMEOUT() macro.
If no timeout option is specified, the default is 10000
(10 seconds). A value of 0 disables the timeout. The
following examples set the connection timeout to 10
milliseconds:
X DevAPI examples:
Session sess("user@host/db?connect-timoeut=10");

Session sess(..., SessionOption::CONNECT_TIMEOUT, 10, ...);

Session sess(
...,
SessionOption::CONNECT_TIMEOUT, std::chrono::milliseconds(10),
...
);

X DevAPI for C example:
mysqlx_session_options_t *opt = mysqlx_session_options_new();
mysqlx_session_option_set(opt, ..., OPT_CONNECT_TIMEOUT(10), ...);

Functionality Added or Changed


* JSON: Connector/C++ now uses RapidJSON for improved
performance of operations that involve parsing JSON
strings. There are no user-visible API changes for X
DevAPI or X DevAPI for C.

Bugs Fixed


* On SLES 15, Connector/C++ installation failed if
libmysqlcppcon7 was already installed. (Bug #28658120)

* Applications that were statically linked to the legacy
JDBC connector could encounter a read access violation at
exit time due to nondeterministic global destruction
order. (Bug #28525266, Bug #91820)

* Configuring with -DCMAKE_BUILD_TYPE=Release did not work
on Linux. (Bug #28045274)

* Field references in .having() expressions could be
interpreted incorrectly and produce errors.
(Bug #26310713)


Enjoy and thanks for the support!

On Behalf of Oracle/MySQL Release Engineering Team,
Balasubramanian Kandasamy

MySQL Connector/Node.js 8.0.13 has been released

Dear MySQL users,

MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, v8.0.13, is a maintenance release of the
MySQL Connector/Node.js 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.

MySQL Connector/Node.js can be downloaded through npm (see
https://www.npmjs.com/package/@mysql/xdevapi for details) or from
https://dev.mysql.com/downloads/connector/nodejs/.

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/Node.js, and
its usage, see http://dev.mysql.com/doc/dev/connector-nodejs/.

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.

Changes in MySQL Connector/Node.js 8.0.13 (2018-10-22, General availability)

Functionality Added or Changed

* To go with the existing asynchronous
mysqlx.getSession(conn_str) method, a new synchronous
mysqlx.getClient(conn_str, options) method was added that
creates a connection pool handler that provides an
asynchronous getSession() method to create and retrieve
connections from the pool. The collection pooling options
are:

+ enabled: enables or disables connection pooling;
boolean and defaults to true.

+ maxSize: maximum number of connections available in
the pool; positive integer and defaults to 25.

+ maxIdleTime: maximum number of milliseconds a
connection can be idle in the queue before being
closed; integer >= 0 and defaults to 0 (infinite).

+ queueTimeout: maximum number of milliseconds a
request will wait for a connection to become
available; integer >= 0 and defaults to 0
(infinite).
This is different than connectTimeout that’s used
for non-pooling. In a pooling scenario, there might
already be connections in the pool and queueTimeout
controls how long to wait for a connection in the
pool.
Example usage:
var mysqlx = require(‘@mysql/xdevapi’)
var client = mysqlx.getClient(
{ user: ‘root’, host: ‘localhost’, port: 33060 },
{ pooling: { enabled: true, maxIdleTime: 5000, maxSize: 25, queueTimeout: 20000 } }
);

client.getSession()
.then(session => {
console.log(session.inspect())
return session.close() // the connection becomes idle in the client pool
})
.then(() => {
return client.getSession()
})
.then(session => {
console.log(session.inspect())
return client.close() // closes all connections and destroys the pool
})

Closing a session attached to the pool makes the
connection available in the pool for subsequent
getSession() calls, while closing (destroying) the pool
effectively closes all server connections.

* Added a connection timeout query parameter. This defines
the length of time (milliseconds) the client waits for a
MySQL server to become available in the given network
addresses. It was added to both the mysqlx.getSession()
(non-pooling sessions) and mysqlx.getClient() (pooling
sessions) interfaces. This option defaults to 10000 (10
seconds). The value 0 disables the timeout so the client
will wait until the underlying socket (platform
dependent) times out.
Similar to other option formatting rules, this option
defined as connection-timeout (kebab-case) for URI
definitions and connectionTimeout (camelCase) for plain
JavaScript configuration objects.
Example usage:
const mysqlx = require(‘@mysql/xdevapi’);
var client = mysqlx.getClient(‘root@localhost?connect-timeout=5000’)
client.getSession()
.catch(err => {
console.log(err.message) // “Connection attempt to the server was aborted. Timeout of 5000 ms was exceeded.”
})

// Or

const mysqlx = require(‘@mysql/xdevapi’);
var client = mysqlx.getClient(‘mysqlx://root:passwd@[localhost:33060, 127.0.0.1:33060]?connect-timeout=5000’)
client.getSession()
.catch(err => {
// connection could not be established after 10 seconds (5 seconds for each server)
console.log(err.message); // All server connection attempts we re aborted. Timeout of 5000 ms was exceeded for each selected server.
});

In a multi-host scenario, the connect-timeout value
applies to each individual host.

Bugs Fixed

* Improved the handling of X Protocol global notices by
properly logging and then ignoring non-fatal errors, and
making the connection unusable for subsequent operations
in the case of a fatal error. (Bug #28653781)

* Calling getCollationName() on non-textual fields, such as
INT, threw the following error “TypeError: Cannot read
property ‘collation’ of undefined”. (Bug #28608923)

* The fields() method did not function with valid
expressions generated by the expr() method. (Bug
#28409639)

* The returned Session.inspect() object now includes the
‘user’ property in addition to the ‘dbUser’ property but
containing the same value. (Bug #28362115)

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

MySQL Connector/ODBC 8.0.13 has been released

Dear MySQL users,

MySQL Connector/ODBC 8.0.13 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 any MySQL server version from 5.5.

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 output parameters (supported 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

Changes in MySQL Connector/ODBC 8.0.13 (2018-10-22, General Availability)

Functionality Added or Changed

  • Added dynamic libmysql linking support via the -DMYSQLCLIENT_STATIC_LINKING:BOOL=TRUE|FALSE option; defaults to FALSE to enable dynamic linking.

Bugs Fixed

  • Fixed column metadata handling with Microsoft Access.
    (Bug #28670725, Bug #91856)
  • The following obsolete options were removed: NO_SCHEMA (use NO_CATALOG instead), DISABLE_SSL_DEFAULT (use SSLMODE instead), and SSL_ENFORCE (use SSLMODE instead). (Bug #28407520)
  • The ODBC Driver returned 0 for the SQL_MAX_SCHEMA_NAME_LEN attribute, and now returns 64 as the maximum length for a MySQL schema name.
    (Bug #28385722)
  • Because the MySQL ODBC driver ignored the SQL_RD_OFF value for the SQL_ATTR_RETRIEVE_DATA attribute, it incorrectly kept writing into the data buffers. This led to write access violation errors when data was written into the buffer when the user application explicitly requested not to write there.
    (Bug #28098219, Bug #91060)

On Behalf of Oracle/MySQL Release Engineering Team,
Kent Boortz

MySQL Connector/J 8.0.13 has been released

Dear MySQL users,

Version 8.0.13 is the latest General Availability release of the 8.0
series of MySQL Connector/J. It is suitable for use with MySQL Server
versions 8.0, 5.7, 5.6, and 5.5. 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-13.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.13 GA, see the “Generally Available
(GA) Releases” tab at http://dev.mysql.com/downloads/connector/j/

Enjoy!


Changes in MySQL Connector/J 8.0.13 (2018-10-22, General
Availability)


Functionality Added or Changed


* Important Change: Connector/J now requires Protocol
Buffers 3.6.1 as an external library for using X DevAPI and for
building Connector/J from source.  See Connector/J Installation
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-installing.html)
on installation requirements for Connector/J.
(Bug #28499094)

* X DevAPI: X DevAPI now provides a connection pooling
feature, which can reduce overhead for applications by allowing
idle connections to be reused. Connection pools are managed by
the new Client objects, from which sessions can be obtained. See
Connecting to a Single MySQL Server Using Connection Pooling in
the X DevAPI User Guide
(http://dev.mysql.com/doc/x-devapi-userguide/en/) for details.

* X DevAPI: A new connection property,
xdevapi.connect-timeout, now defines the timeout (in
milliseconds) for establishing an X-Protocol connection to the
server. Default value is 10000 (10s), and a value of 0 disables
timeout, which makes Connector/J wait for the underlying socket
to time out instead. See Configuration Properties
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-
configuration-properties.html)
for details.

Note that if xdevapi.connect-timeout is not set
explicitly and connectTimeout is, xdevapi.connect-timeout takes
up the value of connectTimeout.

* The connection property useOldUTF8Behavior is no longer
supported. The connection property never had any meaning for
the MySQL Server versions supported by Connector/J 8.0, but
actually corrupted the data when it was used with them.
(Bug #28444461)

* Connector/J now translates the legacy value of
convertToNull for the connection property zeroDateTimeBehavior to
CONVERT_TO_NULL. This allows applications or frameworks that use
the legacy value (for example, NetBeans) to work with Connector/J
8.0. (Bug #28246270, Bug #91421)

* A new connection property, sslMode, has been introduced
to replace the connection properties useSSL, requireSSL, and
verifyServerCertificate, which are now deprecated.  Also, when
not explicitly set, the connection properties xdevapi.ssl-mode,
xdevapi.ssl-truststore, xdevapi.ssl-truststore-password, and
xdevapi.ssl-truststore-type now take up the values of sslMode,
trustCertificateKeyStoreUrl, trustCertificateKeyStorePassword,
and trustCertificateKeyStoreType, respectively. See Connecting
Securely Using SSL
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-using-ssl.html)
and Configuration Properties
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-
configuration-properties.html)
for details.

Note that for ALL server versions, the default setting
of sslMode is PREFERRED, and it is equivalent to the legacy
settings of useSSL=true, requireSSL=false, and
verifyServerCertificate=false, which are different from their
default settings for Connector/J 8.0.12 and earlier in some
situations. Applications that continue to use the deprecated
properties and rely on their old default settings should be
reviewed.  (Bug #27102307)

* The value UTF-8 for the connection property
characterEncoding now maps to the utf8mb4 character set on the
server and, for MySQL Server 5.5.2 and later,
characterEncoding=UTF-8 can now be used to set the connection
character set to utf8mb4 even if character_set_server has been
set to something else on the server. (Before this change, the
server must have character_set_server=utf8mb4 for Connector/J to
use that character set.) Also, if the connection property
connectionCollation is also set and is incompatible with the
value of characterEncoding, characterEncoding will be overridden
with the encoding corresponding to connectionCollation.  See
Using Character Sets and Unicode
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-charsets.html)
for details, including how to use the utf8mb3 character set now
for connection. (Bug #23227334, Bug #81196)


Bugs Fixed


* X DevAPI: Connector/J threw a WrongArgumentException when
it encountered a JSON number with more than ten digits.  This was
due to an error in the JSON parser, which has now been fixed.
(Bug #28594434, Bug #92264)

* X DevAPI: Session.getUri() returned a
NullPointerException when the default value is null for any of
the connection properties contained in the connection URL; and
when Session.getUri() returned a URL, the URL contained a comma
(",") before its first connection property. (Bug #23045604)

* X DevAPI: When handling an invalid JSON document,
Connector/J threw a NullPointerException. With this fix, a
WrongArgumentException is thrown instead in the situation.
(Bug #21914769)

* Setting the connection property characterEncoding to an
encoding that maps to the MySQL character set latin1 or utf8mb4
did not result in the corresponding default connection collation
(latin1_swedish_ci or utf8mb4_0900_ai_ci, respectively) to be
used on the server. With this fix, the server default is used in
the situation. (Bug #28207422)

* Calling UpdatableResultSet.updateClob() resulted in an
SQLFeatureNotSupportedException. It was because the
implementation of the method was missing from Connector/J, and it
has been added with this fix. (Bug #28207088)

* When a connection property's value contained an equal
sign ("=") in itself, an exception ("WrongArgumentException:
Malformed database URL") was thrown. This was due to an error in
the parser for the connection URL, which has been corrected by
this fix.  (Bug #28150662)

* Connector/J threw a SQLSyntaxErrorException when the
parameter tableName for
DatabaseMetaDataUsingInfoSchema.getTables() had a null argument.
(Bug #28034570, Bug #90887)

* Setting rewriteBatchedStatements=true and
useLocalTransactionState=true caused transactions to be
uncommitted for batched UPDATE and DELETE statements. It was due
to the intermediate queries for enabling multiquery support on
the server resetting the local transaction state as a side
effect. With this fix, the local transaction state is preserved
when the intermediate queries are executed.
(Bug #27658489, Bug #89948)

* Rewriting prepared INSERT statements in a multiquery
batch failed with a BatchUpdateException when the statements did
not contain place holders. This was due a faulty mechanism for
query rewriting, which has been corrected by this fix.
(Bug #25501750, Bug #84813)

* When using batched prepared statements with multiple
queries per statement, queries rewriting was incorrect, resulting
in the wrong queries being sent to the server.
(Bug #23098159, Bug #81063)

* Record updates failed for a scrollable and updatable
PreparedStatement when the WHERE clause for the updater or
refresher contained fractional timestamp values and the
connection property sendFractionalSeconds was set to false. It
was because in the situation, Connector/J did not perform the
proper adjustments of the fractional parts in the WHERE clause
values according to the length of the field's fractional part as
defined in the database. This fix makes Connector/J perform the
proper adjustment to the fractional part, so that the WHERE
clause value can be properly compared to the value fetched from
the database. (Bug #22305979)

* Some tests in the testsuite failed as they could not
recognize system time zone values like CEST or WEST, even with
the connection property serverTimezone set. This was because the
value of serverTimezone in the testsuite URLs, after being
processed by the testsuite, was not actually propagated as a
connection property to Connector/J. This fix makes sure the
property is in the actual URLs passed to Connector/J.
(Bug #21774249)

* When a Java Date value was bound to a PreparedStatement
parameter, attempts to format the value by a proleptic
GregorianCalendar failed to make the dates proleptic, so that
dates before the Julian-Gregorian cutover (October 15, 1582) were
stored wrongly. With this fix, a proleptic calendar is properly
used if supplied to the setDate() method.  Note that when trying
to set or retrieve dates before the Julian-Gregorian cutover with
PreparedSatement methods, a proleptic GregorianCalendar should
always be explicitly supplied to the setDate() and getDate()
method. For details, see Known Issues and Limitations
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-
usagenotes-known-issues-limitations.html).
(Bug #18749544, Bug #72609)


Enjoy and thanks for the support!

On behalf of the MySQL Release Team,
Nawaz Nazeer Ahamed

MySQL Connector/Python 8.0.13 has been released

Dear MySQL users,

MySQL Connector/Python 8.0.13 is the third GA release version of the
MySQL Connector Python 8.0 series. This series adds support for Python
3.7. 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.

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.13, see the “General Available
(GA) releases” tab at http://dev.mysql.com/downloads/connector/python/

Enjoy!


Changes in MySQL Connector/Python 8.0.13 (2018-10-22, General Availability)


Functionality Added or Changed


     * Added Python 3.7 support. (Bug #27081809, Bug #87818)

     * To go with the existing mysqlx.get_session(conn_str)
       method, a new mysqlx.get_client(conn_str, options) method was
       added that creates a connection pool handler that provides a
       get_session() method to create and retrieve connections from the
       pool. The collection pooling options are:

          + enabled: enables or disables connection pooling;
            boolean and defaults to true.

          + max_size: maximum number of connections available in
            the pool; positive integer and defaults to 25.

          + max_idle_time: maximum number of milliseconds a
            connection can be idle in the queue before being
            closed; integer >= 0 and defaults to 0 (infinite).

          + queue_timeout: maximum number of milliseconds a
            request will wait for a connection to become
            available; integer >= 0 and defaults to 0
            (infinite).
            This is different than connect_timeout that's used
            for non-pooling. In a pooling scenario there are
            already connections in the pool, so queue_timeout
            controls how long to wait for a connection in the
            pool.
       Example usage:
client = mysqlx.get_client(
    {
    'host': 'localhost',
    'port': 33060,
    'user': 'mike',
    'password': 'password'
    },
    { pooling: {
        enabled: true,
        max_idle_time: 5000,
        max_size: 25,
        queue_timeout: 20000
        }
    }
)

       Closing a session attached to the pool makes the
       connection available in the pool for subsequent
       get+session() calls, while closing (destroying) the pool
       effectively closes all server connections.

     * Added a connection-timeout connection timeout query
       parameter. This defines the length of time (milliseconds)
       the client waits for a MySQL server to become available
       in the given network addresses. It was added to both the
       mysqlx.get_session() (non-pooling sessions) and
       mysqlx.get_client() (pooling sessions) interfaces. This
       option defaults to 10000 (10 seconds). The value 0
       disables the timeout so the client will wait until the
       underlying socket (platform dependent) times out.
       Example usages:
mysqlx.get_session("root@localhost?connect-timeout=0");
mysqlx.get_session("root@[localhost:33060, 127.0.0.1:33060]?connect-ti
meout=5000");

       In a multi-host scenario, the connect-timeout value applies to
       each individual host.

Bugs Fixed


     * On Windows, the 32-bit MSI failed to install. The
       registry key path was updated to allow the CEXT prerequisite
       check to execute and pass. (Bug #28395599, Bug #28464866)

     * Subsequent collection.add() method calls would leak
       memory if the C extension was enabled. (Bug #28278352)

     * Missing bind() parameters could cause an unclear error
       message or unexpectedly halt. (Bug #28037275)

     * The username and password fields are now quoted to allow
       special characters when making X DevAPI connections.
       (Bug #27528819, Bug #89614)

Enjoy and thanks for the support!

On behalf of the MySQL Release Team,
Nawaz Nazeer Ahamed

MySQL Connector/Python 2.1.8 has been released

Dear MySQL users,

MySQL Connector/Python 2.1.8 GA is a sixth GA version of 2.1 release
series of the pure Python database driver for MySQL. It can be used for
production environments.

MySQL Connector/Python version 2.1.8 GA is compatible with MySQL Server
versions 5.5 and greater. Python 2.6 and greater as well as Python 3.4
and greater are supported. Python 2.4, 2.5, and 3.1, 3.2, 3.3 are not
supported.

MySQL Connector/Python 2.1.8 is available for download from:

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

MySQL Connector/Python 2.1.8 (Commercial) will be available for download
on the My Oracle Support (MOS) website. This release will be available
on eDelivery (OSDC) in next month’s upload cycle.

The ChangeLog file included in the distribution contains a brief summary
of changes in MySQL Connector/Python 2.1.8. For a more complete list of
changes, see below or online at:

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

Enjoy!

Changes in MySQL Connector/Python 2.1.8 (2018-08-31, General Availability)

   Known limitation: MySQLConnection.cmd_change_user() with the C
   extension enabled does not establish a connection with the changed
   user. Instantiate a new MySQLConnection() connection as a workaround.

Functionality Added or Changed


     * MySQL Connector/Python now supports connections to MySQL
       accounts that use the caching_sha2_password authentication plugin
       (see Caching SHA-2 Pluggable Authentication
(http://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html)).
       This requires MySQL server version 8.0.3 or higher. It also
       requires use of a secure connection because Connector/Python does
       not support RSA encryption for password exchange.

Bugs Fixed

     * On Windows, the 32-bit MSI failed to install. The
       registry key path was updated to allow the CEXT
       prerequisite check to execute and pass. (Bug #28395599,
       Bug #28464866)

     * In pure Python mode, connecting to a MySQL server with
       default_authentication_plugin = caching_sha2_password would fail,
       even for accounts not using caching_sha2_password, because the
       authentication plugin was unknown to the Python connector.
       (Bug #27371245)

     * When using prepared statements, string columns were
       returned as bytearrays instead of strings. The returned value is
       now a string decoded using the connection's charset (defaults to
       'utf8'), or as a bytearray if this conversion fails.
       (Bug #27364914)

     * Connecting to a MySQL server configured to use TLS
       versions other than TLSv1, such as as TLSv1.1 and TLSv1.2), was
       not possible and failed with a "[SSL: WRONG_VERSION_NUMBER] wrong
       version number" error. This is because the connector restricted
       the connection to use TLSv1.  In addition, tsl_version support
       was added. (Bug #26484601, Bug #87121)

     * The result from JSON_TYPE() was returned as a bytearray
       instead of a string. The returned value is now a string decoded
       using the connection's charset (defaults to 'utf8'), or as a
       bytearray if this conversion fails. (Bug #24948205, Bug #83516)

     * JSON integer values were cast to bytes in Python instead
       of integers. (Bug #24948186, Bug #83513)

Enjoy and thanks for the support!

On behalf of the MySQL Release Team,
Nawaz Nazeer Ahamed

MySQL Connector/J 5.1.47 GA has been released

Dear MySQL Users,

MySQL Connector/J 5.1.47, a maintenance release of the production 5.1
branch has been released. Connector/J is the Type-IV pure-Java JDBC
driver for MySQL.

MySQL Connector/J is available in source and binary form from the
Connector/J download pages at
http://dev.mysql.com/downloads/connector/j/5.1.html
and mirror sites as well as Maven-2 repositories.

MySQL Connector/J (Commercial) is already available for download on
the My Oracle Support (MOS) website. This release will shortly be
available on eDelivery (OSDC).

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.

MySQL Connector/J 5.1.47 includes the following general bug fixes and
improvements, also available in more detail on
https://dev.mysql.com/doc/relnotes/connector-/5.1/en/news-5-1-47.html

Changes in MySQL Connector/J 5.1.47 (2018-08-17, General Availability)

Version 5.1.47 is a maintenance release of the production 5.1 branch.
It is suitable for use with MySQL Server versions 5.5, 5.6, 5.7, and
8.0. It supports the Java Database Connectivity (JDBC) 4.2 API.

     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * The value UTF-8 for the connection property
       characterEncoding now maps to the utf8mb4 character set
       on the server and, for MySQL Server 5.5.2 and later,
       characterEncoding=UTF-8 can now be used to set the
       connection character set to utf8mb4 even if
       character_set_server has been set to something else on
       the server. (Before this change, the server must have
       character_set_server=utf8mb4 for Connector/J to use that
       character set.)
       Also, if the connection property connectionCollation is
       also set and is incompatible with the value of
       characterEncoding, characterEncoding will be overridden
       with the encoding corresponding to connectionCollation.
       See Using Character Sets and Unicode
       (http://dev.mysql.com/doc/connector- j/5.1/en/connector-j-reference-charsets.html )
       for details, including how to use the utf8mb3 character
       set now for connection. (Bug#23227334, Bug #81196)

Bugs Fixed


     * Setting rewriteBatchedStatements=true and
       useLocalTransactionState=true caused transactions to be
       uncommitted for batched UPDATE and DELETE statements. It
       was due to the intermediate queries for enabling
       multiquery support on the server resetting the local
       transaction state as a side effect. With this fix, the
       local transaction state is preserved when the
       intermediate queries are executed. (Bug #27658489, Bug
       #89948)

     * Rewriting prepared INSERT statements in a multiquery
       batch failed with a BatchUpdateException when the
       statements did not contain place holders. This was due a
       faulty mechanism for query rewriting, which has been
       corrected by this fix. (Bug #25501750, Bug #84813)

     * When using batched prepared statements with multiple
       queries per statement, queries rewriting was incorrect,
       resulting in the wrong queries being sent to the server.
       (Bug #23098159, Bug #81063)

     * ResultSet.updateRow() failed when the character set used
       by a column in the ResultSet did not match that of the
       connection's encoding. With this fix, values for the
       affected columns are first converted to String before the
       update, so that the character set difference is properly
       handled. (Bug #22847443, Bug #80532)

     * Record updates failed for a scrollable and updatable
       PreparedStatement when the WHERE clause for the updater
       or refresher contained fractional timestamp values and
       the connection property sendFractionalSeconds was set to
       false. It was because in the situation, Connector/J did
       not perform the proper adjustments of the fractional
       parts in the WHERE clause values according to the length
       of the field's fractional part as defined in the
       database. This fix makes Connector/J perform the proper
       adjustment to the fractional part, so that the WHERE
       clause value can be properly compared to the value
       fetched from the database.
       Moreover, useJDBCCompliantTimezoneShift(),
       useGmtMillisForDatetimes(), and
       useSSPSCompatibleTimezoneShift() were applied to the
       WHERE clause values while they should not be, and this
       fix removes their applications. (Bug #22305979)

     * When a Java Date value was bound to a PreparedStatement
       parameter, attempts to format the value by a proleptic
       GregorianCalendar failed to make the dates proleptic, so
       that dates before the Julian-Gregorian cutover (October
       15, 1582) were stored wrongly. With this fix, a proleptic
       calendar is properly used if supplied to the setDate()
       method.
       Note that when trying to set or retrieve dates before the
       Julian-Gregorian cutover with PreparedSatement methods, a
       proleptic GregorianCalendar should always be explicitly
       supplied to the setDate() and getDate() method.For
       details, see Known Issues and Limitations
       ( http://dev.mysql.com/doc/connector-j/5.1/en/connector-j-usagenotes-known-issues-limitations.html ).
       (Bug#18749544, Bug #72609)          



On Behalf of MySQL Release Engineering Team,
Surabhi Bhat

MySQL Connector/NET 6.10.8 has been released

Dear MySQL users,

MySQL Connector/NET 6.10.8 is the fifth GA release with .NET Core
now supporting various connection-string options and MySQL 8.0 server
features.

To download MySQL Connector/NET 6.10.8 GA, see the “Generally Available
(GA) Releases” tab at http://dev.mysql.com/downloads/connector/net/

Changes in Connector/NET 6.10.8 (2018-08-14, General Availability)

Functionality Added or Changed

* Optimistic locking for database-generated fields was
improved with the inclusion of the [ConcurrencyCheck,
DatabaseGenerated(DatabaseGeneratedOption.Computed)]
attribute. Thanks to Tony Ohagan for the patch. (Bug
#28095165, Bug #91064)

* All recent additions to .NET Core 2.0 now are compatible
with the Connector/NET 6.10 implementation.

* With the inclusion of the Functions.Like extended method,
scalar-function mapping, and table-splitting
capabilities, Entity Framework Core 2.0 is fully
supported.

Bugs Fixed

* EF Core: An invalid syntax error was generated when a new
property (defined as numeric, has a default value, and is
not a primary key) was added to an entity that already
contained a primary-key column with the AUTO_INCREMENT
attribute. This fix validates that the entity property
(column) is a primary key first before adding the
attribute. (Bug #28293927)

* EF Core: The implementation of some methods required to
scaffold an existing database were incomplete. (Bug
#27898343, Bug #90368)

* The Entity Framework Core implementation did not render
accented characters correctly on bases with different
UTF-8 encoding. Thanks to Kleber kleberksms for the
patch. (Bug #27818822, Bug #90316)

* The Microsoft.EntityFrameworkCore assembly (with EF Core
2.0) was not loaded and the absence generated an error
when the application project was built with any version
of .NET Framework. This fix ensures the following
support:

+ EF Core 1.1 with .NET Framework 4.5.2 only

+ EF Core 2.0 with .NET Framework 4.6.1 or later
(Bug #27815706, Bug #90306)

* Attempts to create a new foreign key from within an
application resulted in an exception when the key was
generated by a server in the MySQL 8.0 release series.
(Bug #27715069)

* A variable of type POINT when used properly within an
application targeting MySQL 8.0 generated an SQL syntax
error. (Bug #27715007)

* The case-sensitive lookup of field ordinals was
initialized using case-insensitive comparison logic. This
fix removes the original case-sensitive lookup. (Bug
#27285641, Bug #88950)

* The TreatTinyAsBoolean connection option was ignored when
the MySqlCommand.Prepare() method was called. (Bug
#27113566, Bug #88472)

* The MySql.Data.Types.MySqlGeometry constructor called
with an array of bytes representing an empty geometry
collection generated an ArgumentOutOfRangeException
exception, rather than creating the type as expected.
Thanks to Peet Whittaker for the patch. (Bug #26421346,
Bug #86974)

* Slow connections made to MySQL were improved by reducing
the frequency and scope of operating system details
required by the server to establish and maintain a
connection. (Bug #22580399, Bug #80030)

* All columns of type TINYINT(1) stopped returning the
expected Boolean value after the connector encountered a
NULL value in any column of this type. Thanks to David
Warner for the patch. (Bug #22101727, Bug #78917)

Nuget packages are available at:

https://www.nuget.org/packages/MySql.Data/6.10.8
https://www.nuget.org/packages/MySql.Web/6.10.8
https://www.nuget.org/packages/MySql.Data.Entity/6.10.8
https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/6.10.8
https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore.Design/6.10.8

Enjoy and thanks for the support!

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