MySQL Connector/C++ 8.0.19 has been released

Dear MySQL users,

MySQL Connector/C++ 8.0.19 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” at

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.19, see the “General Availability (GA)
Releases” tab at

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


==================================================

Changes in MySQL Connector/C++ 8.0.19 (2020-01-13, General Availability)

* Error Handling

* Legacy (JDBC API) Notes

* Packaging Notes

* X DevAPI Notes

* Functionality Added or Changed

* Bugs Fixed

Error Handling

* If an application tries to obtain a result set from a statement that does not produce one, an exception occurs. For applications that do not catch such exceptions, Connector/C++ now produces a more informative error message to indicate why the exception occurred. (Bug #28591814, Bug #92263)

Legacy (JDBC API) Notes

* For applications that use the legacy JDBC API (that is, not made using X DevAPI or X DevAPI for C), it is now possible when creating a new session to specify multiple hosts to be tried until a successful connection is established. A list of hosts can be given in the session creation options. The new OPT_MULTI_HOST option is disabled by default for backward compatibility, but if enabled in the ConnectionOptionsMap parameter passed to connect() calls, it permits other map parameters to specify multiple hosts. Examples:

sql::ConnectOptionsMap opts;
opts[“hostName”]=”host1,host2:13001,localhost:13000″;
opts[“schema”]=”test”; opts[“OPT_MULTI_HOST”] = true;
opts[“userName”]=”user”; opts[“password”]=”password”;
driver->connect(opts);

sql::ConnectOptionsMap opts; opts[“hostName”]=”tcp://host1,host2:13001,localhost:13000/test”; opts[“OPT_MULTI_HOST”] = true;
opts[“userName”]=”user”; opts[“password”]=”password”;
driver->connect(opts);

sql::ConnectOptionsMap opts; opts[“hostName”]=”mysql://host1,host2:13001,localhost:13000/test”; opts[“OPT_MULTI_HOST”] = true;
opts[“userName”]=”user”;
opts[“password”]=”password”;
driver->connect(opts);

Port values are host specific. If a host is specified without a port number, the default port is used. These rules apply:

+ If OPT_MULTI_HOST is disabled and multiple hosts are specified, an error occurs.

+ If OPT_MULTI_HOST is disabled and a single host that resolves to multiple hosts is specified, the first host is used for backward compatibility.

+ If OPT_MULTI_HOST is enabled and multiple hosts are specified, one of them is randomly chosen as the connection target. If the target fails, another host is randomly chosen from those that remain. If all targets fail, an error occurs.

+ The hostName parameter can accept a URI that contains a list of comma-separated hosts. The URI scheme can be mysql://, which works like tcp://. The URI scheme can also be omitted, so the parameter can be a list of comma-separated hosts.

+ The connect() syntax that takes URI, user, and password parameters does not permit multiple hosts because in that case OPT_MULTI_HOST is disabled.

Packaging Notes

* Connector/C++ now is compatible with MSVC 2019, while retaining compatibility with MSVC 2017:

+ Previously, Connector/C++ binary distributions were compatible with projects built using MSVC 2017 or 2015. Binary distributions now are compatible with projects built using MSVC 2019 (using either dynamic or static connector libraries) or MSVC 2017 (using dynamic connector libraries). Building using MSVC 2015 might work, but is not supported.

+ Previously, Connector/C++ source distributions could be built using MSVC 2017 or 2015. Source distributions now can be built using MSVC 2019 or 2017. Building using MSVC 2015 might work, but is not supported.

+ Previously, the MSI installer accepted the Visual C++ Redistributable for Visual Studio 2017 or 2015. The MSI installer now accepts the Visual C++ Redistributable for Visual Studio 2019 or 2017.

X DevAPI Notes

* For applications that use X DevAPI or X DevAPI for C, Connector/C++ now provides options that enable specifying the permitted TLS protocols and ciphersuites for TLS connection negotiation:

+ TLS protocols must be chosen from this list: TLSv1, TLSv1.1, TLSv1.2, TLSv1.3. (TLSv1.3 requires that both the server and Connector/C++ be compiled with OpenSSL 1.1.1 or higher.)

+ Ciphersuite values must be IANA ciphersuite names. TLS protocols and ciphersuites now may be specified in these contexts:

+ Connection strings permit tls-versions and tls-ciphersuites options. The tls-versions value is a list of one or more comma-separated TLS protocol versions. The tls-ciphersuites value is a list of one or more comma-separated ciphersuite names. Examples:
…?tls-versions=[TLSv1.3]&…
…?tls-versions=[TLSv1.2,TLSv1.3]&…
…?tls-ciphersuites=[
TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256
]&…

+ SessionSettings objects permit TLS_VERSIONS and TLS_CIPHERSUITES options. Each value is either a string containing one or more comma-separated items or a container with strings (that is, any type that can be iterated with a loop that yields string values).
Example of single string values:
Session s(…,
TLS_VERSIONS, “TLSv1.2,TLSv1.3”,
TLS_CIPHERSUITES, “TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,TLS_CHACHA20_POLY1305_SHA256” ,
…);
Example of string container values:
std::list<std::string> tls_versions = {
“TLSv1.2”,
“TLSv1.3”
};

std::list<std::string> ciphers = {
“TLS_DHE_PSK_WITH_AES_128_GCM_SHA256”, “TLS_CHACHA20_POLY1305_SHA256”
};

Session s(…,
TLS_VERSIONS, tls_versions
TLS_CIPHERSUITES, ciphers,
…);

Session s(…,
TLS_VERSIONS, std::vector{“TLSv1.2″,”TLSv1.3”},
TLS_CIPHERSUITES, std::vector{“TLS_DHE_PSK_WITH_AES_128_GCM_SHA256”, “TLS_CHACHA20_POLY1305_SHA256”},
…);

+ mysqlx_session_option_set() and friends permit MYSQLX_OPT_TLS_VERSIONS and MYSQLX_OPT_TLS_CIPHERSUITES session option constants, together with the corresponding OPT_TLS_VERSIONS() and OPT_TLS_CIPHERSUITES() macros. MYSQLX_OPT_TLS_VERSIONS and MYSQLX_OPT_TLS_CIPHERSUITES accept a string containing one or more comma-separated items. Examples:
mysqlx_session_option_set(opts, …,
OPT_TLS_VERSIONS(“TLSv1.2,TLSv1.3”),
OPT_TLS_CIPHERSUITES( “TLS_DHE_PSK_WITH_AES_128_GCM_SHA256,TLS_CHACHA20_POLY1305_SHA256”
),
…)

For more information about TLS protocols and ciphersuites in MySQL, see Encrypted Connection TLS Protocols and Ciphers (https://dev.mysql.com/doc/refman/8.0/en/encrypted-connection-protocols-ciphers.html). (Bug #28964583, Bug #93299)

* For X DevAPI or X DevAPI for C, when creating a new connection (given by a connection string or other means), if the connection data contains several target hosts that have no explicit priority assigned, the behavior of the failover logic now is the same as if all those target hosts have the same priority. That is, the next candidate for making a connection is chosen randomly from the remaining available hosts. This is a change from previous behavior, where hosts with no explicit priority were assigned implicit decreasing priorities and tried in the same order as listed in the connection data.

Functionality Added or Changed

* Connector/C++ now supports the use of DNS SRV records to specify multiple hosts:

+ Session and session-pool creation accepts a URI scheme of mysqlx+srv:// that enables the DNS SRV feature in connect strings. Example: mysqlx+srv://example.com/db?options

+ For X DevAPI, mysqlx::Session objects permit a SessionOption::DNS_SRV entry to enable use of a DNS SRV record to specify available services. Example:
mysqlx::Session sess(
SessionOption::HOST, “example.com”,
SessionOption::DNS_SRV, true,
SessionOption::USER, “user”,
SessionOption::PWD, “password”);

Similarly, for X DevAPI for C, the mysqlx_session_option_set() function permits an OPT_DNS_SRV() option in the argument list. Example: mysqlx_session_option_set(opt,
OPT_HOST(“example.com”),
OPT_DNS_SRV(true)
OPT_USER(“user”),
OPT_PWD(“password”),
PARAM_END));

+ For applications that use the legacy JDBC API (that is, not made using X DevAPI or X DevAPI for C), connection maps permit an OPT_DNS_SRV element. A map should specify the host for SRV lookup as a full lookup name and without a port. Example:
sql::ConnectOptionsMap opts;
opts[“hostName”] = “_mysql._tcp.host1.example.com”;
opts[“OPT_DNS_SRV”] = true;
opts[“userName”] = “user”;
opts[“password”] = “password”;
driver->connect(opts);

In legacy applications, DNS SRV resolution cannot be enabled in URI connect strings because parameters are not supported in such strings.

Bugs Fixed

* Connector/C++ failed to compile using Clang on Linux. (Bug #30450484)

* Connector/C++ set the transaction isolation level to REPEATABLE READ at connect time, regardless of the current server setting. (Bug #22038313, Bug #78852, Bug #30294415)

On Behalf of MySQL Release Engineering Team,
Surabhi Bhat

MySQL Connector/Python 8.0.19 has been released

Dear MySQL users,

MySQL Connector/Python 8.0.19 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.19, see the “General Availability
(GA) Releases” tab at

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

Enjoy!

==============================================================================

Changes in MySQL Connector/Python 8.0.19 (2020-01-13, General Availability)


     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Added DNS SRV support.
       To automatically resolve any SRV record available in a
       target DNS server or service discovery endpoint, use the
       mysqlx+srv scheme+extension in a X DevAPI connection
       string, or mysqlx+srv for the classic protocol, or by
       enabling the dns-srv=True (or dns_srv=True) connection
       option when using keyword arguments or dictionaries.

     * Added two new connection options that evaluate during the
       TLS handshake to restrict the negotiated TLS protocols
       and ciphers; along with those configured on the server
       that can further restrict the final choices. The new
       options are tls-versions to define the allowed TLS
       protocol versions, and tls-ciphersuites for the allowed
       cipher suitess. These definitions are comma-separated,
       and accepted by the getSession() and getClient() methods.
       tls-versions: accepts one or more of the following:
       TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3. Other values
       generate an error. Example usage:
mysqlx://myserver/db?tls-versions=[TLSv1.2,TLSv1.3]
       tls-ciphersuites: accepts IANA cipher suite names, as
       listed on IANA’s TLS Cipher Suites
(https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4)
       page. Unsupported or
       unknown values are ignored. Example usage:
mysqlx://myserver/db?tls-ciphersuites=[TLS_DHE_PSK_WITH_A
       ES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256]

     * The internal X Protocol namespace changed from xplugin to
       mysqlx.
       MySQL Server removed xplugin namespace support in
       v8.0.19; for Connector/Python this means:

          + With Connector/Python v8.0.19 and higher, some X
            DevAPI Protocol operations do not function with
            MySQL Server v8.0.18 and lower, operations such as
            Schema.create_collection(), Schema.get_collections(),
            Schema.get_tables(), and Collection.create_index().

          + Connector/Python 8.0.19 can connect to MySQL Server
            8.0.18 and lower, as both the ‘xplugin’ (with deprecation
            warnings) and ‘mysqlx’ namespaces can be used.

Bugs Fixed


     * Fixed the reserved SSL authentication filed; it changed
       from 23 to 22. Thanks to Qianqian Bu for the patch. (Bug
       #30270760, Bug #96770)
       References: This issue is a regression of: Bug #29855733.

     * Fixed LOAD DATA INFILE LOCAL handling; the file handle
       was not closed. Thanks to Micah Gale for the patch. (Bug
       #29417117, Bug #94496)


On Behalf of Oracle/MySQL Engineering Team
Prashant Tekriwal

MySQL Connector/ODBC 8.0.19 has been released

Dear MySQL users,

MySQL Connector/ODBC 8.0.19 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 the support!

==============================================================================

Changes in MySQL Connector/ODBC 8.0.19 (2020-01-13, General Availability)


     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Added DNS SRV support.
       To automatically resolve any SRV record available in a
       target DNS server or service discovery endpoint, specify
       ENABLE_DNS_SRV=1 in the DSN; the host is passed for SRV
       lookup without a port and with a full lookup name. For
       example: DRIVER={MySQL ODBC 8.0
Driver};SERVER=_mysql._tcp.foo.abc.com;ENABLE_DNS_SRV=1;U
       SER=user;PWD=passwd;

     * Confirmed support for compiling with VS2019, and for
       supporting the Visual C++ 2019 redistributable.

     * When creating a new connection using the classic MySQL
       protocol, multiple hosts can be tried until a successful
       connection is established. A list of hosts can be given
       in a connection string, along with passing MULTI_HOST=1
       to to enable this functionality. The connection string
       looks similar to
SERVER=address1[:port1],address2[:port2]….;MULTI_HOST=1
       ;.
       Other notes: the default port is used if port is not
       specified, the connector randomly picks hosts, and if a
       host fails then a new host is chosen. An error is
       returned if SERVER contains multiple hosts when
       MULTI_HOST is not enabled.

Bugs Fixed


     * With prepared SELECT statements the fixed-length numeric
       types such as INT were set to 0 instead of their stored
       value. (Bug #30428851, Bug #97191)

     * Connector/ODBC failed to compile when dynamically linking
       to the MySQL client library
       (MYSQLCLIENT_STATIC_LINKING=0); due to a mismatch between
       an internal copy of the library headers and the version
       of code implementing the library internals. (Bug
       #30292290, Bug #96835)

     * Improved handling for stored procedures and the INOUT
       parameter.
       For example, if a stored procedure had one or more
       parameters then an incomplete result set could be
       returned. (Bug #29467224, Bug #94623)

On Behalf of Oracle/MySQL Engineering Team
Prashant Tekriwal

MySQL Connector/C++ 8.0.18 has been released

Dear MySQL users,

MySQL Connector/C++ 8.0.18 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” at

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.18, see the “General Availability (GA)
Releases” tab at

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


Changes in MySQL Connector/C++ 8.0.18 (2019-10-14, General Availability)

Compilation Notes

     * It is now possible to compile Connector/C++ using OpenSSL
       1.1.

     * Connector/C++ no longer supports using wolfSSL as an
       alternative to OpenSSL. All Connector/C++ builds now use
       OpenSSL.

On Behalf of MySQL Release Engineering Team,
Surabhi Bhat

MySQL Connector/ODBC 8.0.18 has been released

Dear MySQL users,

MySQL Connector/ODBC 8.0.18 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 the support!

==================================================

Changes in MySQL Connector/ODBC 8.0.18 (2019-10-14,
General Availability)

Bugs Fixed

     * On Linux, memory was leaked on each server connection
       attempt due to how mysql_server_end was implemented and
       executed. (Bug #26194929)

     * On Windows, fixed direct setlocale() usage for
       multi-threaded applications.
       The workaround was to add ;NO_LOCALE=1 to the connection
       string.
       Thanks to Jacques Germishuys for the patch.
      (Bug#24814467, Bug #83297)

On Behalf of Oracle/MySQL Release Engineering Team
Prashant Tekriwal

MySQL Connector/NET 6.10.9 has been released

Dear MySQL users,

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

MySQL Connector/NET 6.10.9 is the final release in the 6.10 series.

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

Changes in MySQL Connector/NET 6.10.9 (2019-07-29, General Availability)


     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Connector/NET now supports IPV6 connections made using
       the classic MySQL protocol when the operating system on
       the server host also supports IPV6. (Bug #29682333)

     * Support was added for .NET Core 2.2, which is a
       cross-platform version of .NET for building applications
       that run on Linux, macOS and Windows (see Connector/NET
       Versions
       (https://dev.mysql.com/doc/connector-net/en/connector-net-versions.html)).

Bugs Fixed


     * The InvariantCulture property was missing from some data
       types, which created issues during platform migration
       operations. Thanks to Effy Teva for the patch. (Bug
       #29262195, Bug #94045)

     * Connector/NET connections executed SHOW VARIABLES
       unnecessarily. (Bug #28928543, Bug #93202)

     * An exception was generated when the MySqlDbType
       enumeration was given an explicit value and then passed
       as a parameter to the MySqlCommand.Prepare method. (Bug
       #28834253, Bug #92912)

     * The CreateCommandBuilder and CreateDataAdapter methods
       were added to MySqlClientFactory class. Thanks to Cédric
       Luthi for the patch. (Bug #28560189, Bug #92206)

     * Validation was added to ensure that when a column is of
       type TIME and the value is 00:00:00, it takes the value
       instead of setting NULL. (Bug #28383726, Bug #91752)

     * Connector/NET returned the wrong time zone when the
       TIMESTAMP column was read from a MySQL table. (Bug
       #28156187)

     * Entity Framework Core: A syntax error was generated
       during an operation attempting to rename a table that was
       previously migrated from code. Now, the primary key
       constraint for an existing table can be dropped without
       errors when the follow-on migration operation is
       performed. (Bug #28107555, Bug #90958)

     * The implementation of DbProviderFactory prevented an
       application from connecting to MySQL in a generic way.
       Now, invoking the CreateDataAdapter method returns a
       valid adapter instead of returning the null value. (Bug
       #27292344, Bug #88660)

     * Connector/NET access to MySQL stopped working after the
       computer hosting the server was started and continued to
       operate uninterrupted for a defined period of time. (Bug
       #26930306, Bug #75604)

On Behalf of MySQL Release Engineering Team,
Surabhi Bhat

MySQL Connector/NET 8.0.17 has been released

Dear MySQL users,

MySQL Connector/NET 8.0.17 is the fifth version to support Entity Framework Core 2.1 and the sixth 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.

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/NET 8.0.17, 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.17 (2019-07-22, General
Availability)


     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Connector/NET supports SSL PEM certificate versions 1, 2,
       and 3 to enable use with the full range of applications
       that generate certificates. (Bug #29756058)

     * Support was added for .NET Core 2.2, which is a
       cross-platform version of .NET for building applications
       that run on Linux, macOS and Windows (see Connector/NET
       Versions
(https://dev.mysql.com/doc/connector-net/en/connector-net-versions.html)).

     * Document Store: The Where() method is deprecated
       (Obsolete attribute applied) and will return a warning
       when called in the following method constructs:
       Find().Where(), Modify().Where(), and Remove().Where().

     * New README.md and CONTRIBUTING.md files now accompany
       MySQL Connector/NET code for compatibility with Git.
       Distribution packages (NuGet, MSI, ZIP) continue to
       include the original README file, but do not include the
       new files.

     * Connector/NET now supports the new utf8mb4_0900_bin
       collation added for the utf8mb4 Unicode character set in
       MySQL 8.0.17. For more information about this collation,
       see Unicode Character Sets
(https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html).

     * Document Store: Connector/NET now supports the OVERLAPS
       and NOT OVERLAPS operators for expressions on JSON arrays
       or objects:
expr OVERLAPS expr
expr NOT OVERLAPS expr

       Suppose that a collection has these contents:
[{
   “_id”: “1”,
   “list”: [1, 4]
 }, {
   “_id”: “2”,
   “list”: [4, 7]
}]

       This operation:
var res = collection.Find(“[1, 2, 3] OVERLAPS $.list”).Fields(“_id”).E
xecute();
res.FetchAll();

       Should return:
[{ “_id”: “1” }]

       This operation:
var res = collection.Find(“$.list OVERLAPS [4]”).Fields(“_id”).Execute
();
res.FetchAll();

       Should return:
[{ “_id”: “1” }, { “_id”: “2” }]

       An error occurs if an application uses either operator
       and the server does not support it.

     * Document Store: For index specifications passed to the
       Collection.CreateIndex() method, Connector/NET now
       supports indexing array fields. For example, consider a
       collection with this array:
Session session = MySQLX.GetSession(connString);
Schema schema = session.GetSchema(schemaName);
Collection coll = schema.CreateCollection(collectionName);

var docs = new[]
{
  new {  _id = 1, name = “John Smith”, emails = [ “john.smith@mycompan
y.com”, “jsmith@php.net”, “jsmith@mail.com” ] }
};

coll.Add(docs).Execute();

       A single index field description can contain a new member
       name array that takes a Boolean value. If set to true,
       the field is assumed to contain arrays of elements of the
       given type. In addition, the set of possible index field
       data types (used as values of member type in index field
       descriptions) is extended with type CHAR(N), where the
       length N is mandatory. For example, to create the
       emails_idx index with an array field:
coll.CreateIndex(“emails_idx”,
    “{\”fields\”: [{\”field\”: $.emails,
                   \”type\”:\”CHAR(128)\”,
                   \”array\”: true }]}”
);

       To find an element of the array:
collection
   .Find(“:mail IN $.emails”)
   .Bind(“mail”, “jsmith@php.net”)
   .Execute();


     * New support for SSH tunneling enables Connector/NET to
       create secure connections to a remote MySQL server using
       TCP/IP over SSH. With SSH server authorization, an
       application can establish a connection from behind a
       firewall when the MySQL Server port is blocked. The new
       connection-string options (and equivalent class
       properties) for SSH tunneling are supported by both the
       classic MySQL protocol and X Protocol connections.

Bugs Fixed


     * The BouncyCastle assembly was loaded into memory whenever
       a connection attempt was made using any SSL mode type,
       except None. Now the assembly loads only when the SSL
       mode type is VerifyCA or VerifyFull, or when PEM
       certificates are used. (Bug #29611216)

     * Document Store: The MySqlConnection.GetSchema() method
       sometimes returned columns in an unexpected order when
       used with the INFORMATION_SCHEMA.COLUMNS table. This fix
       ensures that returned columns now correspond to the
       ordinal position only. (Bug #29536344)

     * The InvariantCulture property was missing from some data
       types, which created issues during platform migration
       operations. Thanks to Effy Teva for the patch. (Bug
       #29262195, Bug #94045)

     * Connector/NET connections executed SHOW VARIABLES
       unnecessarily. (Bug #28928543, Bug #93202)

     * Connector/NET access to MySQL stopped working after the
       computer hosting the server was started and continued to
       operate uninterrupted for a defined period of time. (Bug
       #26930306, Bug #75604)

On Behalf of Oracle/MySQL Engineering Team
Prashant Tekriwal

MySQL Connectors 8.0.16 – Time to Catch up!

HI again! It’s been some time since I wrote and shared some of our updates with you. My intention back then was to give you an update with every release — if only all my plans worked out! However we’ve now had 3 releases since last I shared an update with you so it’s time that I updated everyone on what we’ve been working on.

All of our connectors (well except for ODBC) implement our new X DevAPI and so I’ll briefly go over these features and then break out some of the major connector specific features included.

X DevAPI

Handling of default schema

We had some inconsistencies regarding how a default schema given on a connection string was handled by some of our connectors. If a user gives a schema on the connection string — such as this – it was expected that myschema would be the default schema set on the session. This would mean that any SQL issued against that session would work against that schema. Not all connectors were handling this the correct way.

var session = mysqlx.getSession("mysqlx://localhost/myschema")

Various API standardization efforts

With many of our releases we’ll included various API standardizing efforts. We are always comparing our connectors and trying to make sure that the “core” API is essentially the same among all of them. When we see differences we schedule updates to correct those. Our goal is that if you understand the X DevAPI in one language then you can understand it in all the languages.

Prepared Statement support

With 8.0.16 we released prepared statement support when working with our X DevAPI/Document Store connectors. The first thing you may notice is that there isn’t any specific API for accessing prepared statements. This fits in with our general philosophy of letting the connectors “do the right thing” for the user rather than force the user to always write code. In this case the connector will notice that you are executing a “preparable” query more than once and will automatically make use of prepared statements for you. As of right now there is no way to configure or adjust this behavior. You should see a significant performance improvement from 8.0.15 to 8.0.16 when doing something like a loop of inserts or updates.

Connection Pooling Enhancements

An enhancement was included in 8.0.16 to improve our connection pooling by speeding how our connectors could “reset” the internal connection to the server. This is entirely an internal improvement. Developers will see this as a faster connection pool.

Connection Attributes

Connection attributes are a feature where you can pass in key value pairs when a connection is made. These values will be stored in the server performance schema and can be queried later as a way of “profiling” your application. Think of it simply as “tagging” your connections. These values can be given when the pool is created or when old style sessions are opened. Here is an example code snippet giving some connection attributes when opening an old-style session:

var session = mysqlx.getSession("mysqlx://localhost/schema
?connection-attributes=[key1=value1,key2=value2]")

Connector specific Features

Now I’d like to make a quick list of some of the larger changes we made to our connectors that are *not* connected to the X DevAPI. These are not all of the changes in our connectors. Each connector puts out a release announcement giving the entire change list with each release.

  • Connector/CPP
    • Support for MSVC 2017
    • Improved internal string handling
    • Improved our CMaked-based build system
  • Connector/Python
    • Removed support for Django versions less then 1.11
  • Connector/Net
    • Can now use SSL certificates in the PEM file format

As always, we really appreciate your willingness to work with our products and look forward to your feedback.

MySQL Connector/ODBC 5.3.13 has been released

Dear MySQL users,

MySQL Connector/ODBC 5.3.13, a new version of the ODBC driver for the
MySQL database management system, has been released.

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 version from 5.6.

This is the sixth release of the MySQL ODBC driver 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

http://dev.mysql.com/downloads/connector/odbc/5.3.html

For information on installing, please see the documentation at

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

Changes in MySQL Connector/ODBC 5.3.13 (2019-04-29, General Availability)

Bugs Fixed

* Connector/ODBC 5.3 is now built with MySQL client library
5.7.26, which includes OpenSSL 1.0.2R. Issues fixed in
the new OpenSSL version are described at
http://www.openssl.org/news/vulnerabilities.html. (Bug
#29489006)

* An exception was emitted when fetching contents of a
BLOB/TEXT records after executing a statement as a
server-side prepared statement with a bound parameter.
The workaround is not using parameters or specifying
NO_SSPS=1 in the connection string; this allows the
driver to fetch the data. (Bug #29282638, Bug #29512548,
Bug #28790708, Bug #93895, Bug #94545, Bug #92078)

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

MySQL Connector/NET 8.0.16 has been released

Dear MySQL users,

MySQL Connector/NET 8.0.16 is the fourth version to support
Entity Framework Core 2.1 and the sixth 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.

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/NET 8.0.16, 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.16 ( 2019-04-25, General Availability )

* Functionality Added or Changed

* Bugs Fixed

Functionality Added or Changed

* Document Store: Support was added for the -> operator to
be used with JSON document paths in relational
statements. For example:
table.Select().Where("additionalinfo->$.hobbies = 'Reading'");

(Bug #29347028)

* Document Store: The performance for statements that are
executed repeatedly (two or more times) is improved by
using server-side prepared statements for the second and
subsequent executions. This happens internally;
applications need take no action and API behavior should
be the same as previously. For statements that change,
repreparation occurs as needed. Providing different data
values or different OFFSET or LIMIT clause values does
not count as a change. Instead, the new values are passed
to a new invocation of the previously prepared statement.

* Document Store: Connector/NET now supports the ability to
send connection attributes (key-value pairs that
application programs can pass to the server at connect
time). Connector/NET defines a default set of attributes,
which can be disabled or enabled. In addition,
applications can specify attributes to be passed together
with the default attributes. The default behavior is to
send the default attribute set.
The aggregate size of connection attribute data sent by a
client is limited by the value of the
performance_schema_session_connect_attrs_size server
variable. The total size of the data package should be
less than the value of the server variable. For X DevAPI
applications, specify connection attributes as a
connection-attributes parameter in a connection string.
For usage information, 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).
For general information about connection attributes, see
Performance Schema Connection Attribute Tables
(http://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html).

* Document Store: Connector/NET now has improved support
for resetting sessions in connection pools. Returning a
session to the pool drops session-related objects such as
temporary tables, session variables, and transactions,
but the connection remains open and authenticated so that
reauthentication is not required when the session is
reused.

* Connector/NET applications now can use certificates in
PEM format to validate SSL connections in addition to the
native PFX format (see Tutorial: Using SSL with Connector/NET
(http://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl.html)).
PEM support applies to both classic MySQL protocol
and X Protocol connections.

Bugs Fixed

* Document Store: All methods able to execute a statement
were unable to execute the same statement a second time.
Now, the values and binding parameters remain available
after the method is executed and string parameters are no
longer converted to numbers. Both changes enable a
follow-on execution to reuse the previous parameters.
(Bug #29249857, Bug #29304767)

* An exception was generated when the MySqlDbType
enumeration was given an explicit value and then passed
as a parameter to the MySqlCommand.Prepare method. (Bug
#28834253, Bug #92912)

* Validation was added to ensure that when a column is of
type TIME and the value is 00:00:00, it takes the value
instead of setting NULL. (Bug #28383726, Bug #91752)

On Behalf of MySQL Release Engineering Team,
Surabhi Bhat