What is new in Connector/C++ 8.0

We are proud to announce that with version 8.0.11 the new MySQL Connector/C++ 8.0 series becomes GA! Connector/C++ 8.0 is your gateway to the new exciting features of MySQL Server 8.0 such as MySQL Document Store. It also lets you perform your usual database tasks in a simpler and more powerful way using new, modern APIs that bring to you the full advantage of modern C++ programming language.

The 8.0 series is a true milestone in the development of Connector/C++. We have not only added new APIs but also completely re-implemented the connector to create good foundation for future innovation and improvements.The new implementation of Connector/C++ is based entirely on the new X Protocol of MySQL Server 8.0 and is highly modular to allow rapid development of new features. For the first time we aligned our APIs with other MySQL connectors. Also, for the first time Connector/C++ is offering a plain C API for code written in C.

New APIs of Connector/C++ 8.0

Up to now Connector/C++ implemented a single API based on JDBC4 standard. While keeping the old API for backward compatibility, the 8.0 series introduces two new APIs that can be used for accessing MySQL database.

  • X DevAPI: a C++ implementation of the new, fluent CRUD API defined for accessing MySQL Document Store and relational data. The same API is also implemented by xshell and other connectors and provides a uniform interface to the MySQL database.
  • XAPI: a new plain C API with functionality similar to that of X DevAPI. This API allows applications written in plain C to have access to the new MySQL features such as Document Store (it might feel strange to have plain C API in a C++ connector but in fact plain C can be seen as a subset of the C++ language; also, placing both APIs in the same connector allows re-using common implementation components).

To give you a feeling of the new APIs, here is a sample code which opens a session, creates a document collection, adds a document to that collection and then lists documents in the collection.

The same thing implemented in plain C, using XAPI, looks as follows (for simplicity, error handling logic is omitted).

Note that the choice of the API is done by including appropriate public header: either <mysqlx/xdevapi.h> or <mysqlx/xapi.h>.

Apart from a CRUD style interface for accessing the MySQL Document Store, which is shared with other MySQL connectors, the new APIs give you full access to SQL and relational data, including transactions, parameter binding, row locking, convenient classes for representing query results and more. For example, the following code shows how to execute a plain SQL query against a relational table using X DevAPI. Similar code can be written using XAPI.

The new APIs can be used as a modern replacement for the previous, JDBC based API of Connector/C++ 1.1 and for the CAPI of the MySQL client library. The X DevAPI brings the advantage and power of modern C++ programming with support for language constructs such as iterators, range loops, method chaining, RAII, overloaded operators, custom type conversions etc. The plain C XAPI is also a major re-design of the traditional MySQL CAPI with automatic memory management, better separation of public interface from internal implementation and with functions for accessing the MySQL Document Store. Note however that these new APIs are implemented over X Protocol and for that reason they will not work with older versions of MySQL Server.

For more information check available documentation on MySQL Document Store and X DevAPI User Guide. See also reference documentation for the Connector/C++ implementation of X DevAPI and XAPI reference documentation.

Getting started with Connector/C++ 8.0

Installing Connector/C++ 8.0

To develop applications that use Connector/C++ 8.0 you need the following files

  • Public headers containing declarations for the APIs implemented by the connector.
  • Connector libraries that contain implementation of the APIs. There are actually two libraries shipped with Connector/C++ 8.0 – the main library with base name mysqlcppconn8, implementing the new APIs (X DevAPI and XAPI), and a legacy library with base name mysqlcppconn which is a drop-in replacement for the 1.1 connector library. Both static and shared variants of each library are shipped.

These files are distributed as TGZ or ZIP packages that you can unpack to the location of your choice. There are several options for how to use the connector during compile time and at run-time, all depending on the platform you are working on and whether you want to install connector locally or system-wide. Below is some basic information to get you started. For more details see usage instructions in the reference manual.

Building code which uses Connector/C++ 8.0

Building code that uses Connector/C++ requires correctly setting include path, so that connector’s public headers can be found by the compiler, and passing connector library to the linker invocation. Assuming that Connector/C++ was installed under $MYSQL_CPPCONN_DIR the include path should be set to $MYSQL_CPPCONN_DIR/include (for gcc use -I option, for MSVC the C/C++ > Additional Include Directories  project setting). After that X DevAPI or XAPI declarations can be loaded using #include <mysqlx/xdevapi.h> or #include <mysqlx/xapi.h> directive, respectively.

Note: The X DevAPI uses C++11 language features. For some compilers C++11 must be explicitly enabled. For example gcc needs option -std=c++11 to understand C++11. This is not required for MSVC nor for XAPI code (which is plain C)

Depending on the platform, the shared Connector/C++ library is named:

  • libmysqlcppconn8.so on Unix platforms (soname libmysqlcppconn8.so.1)
  • libmysqlcppconn8.dylib on the OSX platform (link name libmysqlcppconn8.1.dylib)
  • mysqlcppconn8-1-vs14.dll on Windows platforms (with import library vs14/mysqlcppconn8.lib)

You need to add this library to your compiler/linker invocation when building code that uses the connector  (for gcc add -lmysqlcppconn8 to the linker options, for MSVC add vs14/mysqlcppconn8.lib to Linker > Input > Additional Dependencies  setting of your project). You also need to specify path where the connector library can be found (for gcc use -L option, for MSVC Linker > Additional Library Directories  setting). Assuming that Connector/C++ was installed under $MYSQL_CONCPP_DIR the libraries can be found under $MYSQL_CONCPP_DIR/lib on 32-bit platforms and $MYSQL_CONCPP_DIR/lib64 on 64-bit platforms.

Example gcc invocation for building application with sources in app.cc might look as follows (assuming that environment variable MYSQL_CONCPP_DIR is set to the location where Connector/C++ was installed)

Due to ABI incompatiblities between different compiler versions, the code that uses Connector/C++ libraries should be built with the same compiler version as the connector itself. The information about compiler version used to build connector libraries can be found inside BUILDINFO.txt file distributed with the connector. In principle a different version of the compiler can be used provided that it is ABI compatible, but it is difficult to determine what versions of the compiler are ABI compatible with each other.

Running code which uses Connector/C++ 8.0

Code built against Connector/C++ depends on the shared connector library which must be found at run-time by the dynamic linker. It also requires OpenSSL libraries that are used by Connector/C++.  Here are example run-time dependencies shown by ldd for an application built with Connector/C++.

To be able to run such an application the dynamic linker must be able to find the connector library in its predefined locations. The easiest way of arranging this is to copy the shared connector library to the location of the executable. This method works for any operating system. Otherwise the exact way of registering Connector/C++ libraries with the dynamic linker depends on the operating system.

Note: For platforms such as Windows, that normally do not have OpenSSL libraries available, Connector/C++ packages include these libraries. Putting these libraries next to the connector ones usually ensures that the dynamic linker can find them at run-time.

Note: On Windows the executable will depend on the MSVC 2015 runtime DLLs, that need to be installed on the target system.

Note: Connector/C++ also ships static libraries that can be used to build applications that do not require shared connector libraries to be present on the target system. However, an application linked statically with Connector/C++ will still depend on shared OpenSSL libraries and on MSVC runtime in case of Windows.

In summary

MySQL 8 brings a lot of new, exciting features which allow you to work with your data in new ways, going beyond the traditional SQL paradigm. Connector/C++ 8.0 is a part of this story and it also invites you to exploring new ways of working with MySQL from your C++ or C code. It is a result of a long effort and we are eager to hear about your impressions of the new features we brought to you. Happy coding!

Connector/J 8.0.11, the Face for Your Brand New Document-oriented Database

This is exciting news: MySQL 8.0 is officially GA!

This time around we do not only offer you a new MySQL Server full of exciting new features, but also a brand new toolset that let you make the most out of MySQL, including the now GA Java database driver, MySQL Connector/J 8.0.11!

This story is about Connector/J but before even I get started I must say a few words about the new features that conducted the development of this new driver. If you prefer, you can jump directly to the Connector/J 8.0 topic below.

What’s new in MySQL Server 8.0?

There’s a new Client/Server communication protocol in MySQL: the X Protocol

The X Protocol introduced in MySQL 8.0 series is the backbone for the document-oriented paradigm in the MySQL ecosystem. The new X Protocol and the old MySQL Client/Server Protocol are both available in this new MySQL Server. It is up to the clients to choose which one to implement for connecting to MySQL servers, either through pure protocol implementations or via a MySQL C API library, for example. Clearly the easiest option is to use one of the MySQL connectors that already implement either one or both of the protocols that we offer for the programming language of your choice.

The X Protocol is implemented as a plugin for the MySQL Server—the X Plugin. By default the X Plugin is listening on TCP port 33060.

Among the main features in the X Protocol you’ll find data serialization via Protocol Buffers, Vectored I/O, Pipelining, SASL authentication, extensible messages via protobuf, and so on. We are also working on other interesting features so stay tuned. I invite you to go to the X Protocol documentation to learn all about it.

So, there’s also the new X Plugin

As mentioned before, the X Plugin implements the X Protocol on the MySQL Server side.

Besides implementing the X Protocol, the X Plugin is responsible for defining the message structure that provides the base for the X DevAPI – the API that exposes a MySQL server as a document-oriented database. It is also responsible for communicating with the internal components of the server: the storage engines, the query parser, the query optimizer, query executors, and so on. In the other end, it also manages all active X DevAPI sessions and handles clients’ requests.

As of MySQL 8.0 GA the X Plugin is loaded by default. Chances are that it is already available for you in your new server installation.

Knowledge of the X Plugin will provide you insights into the features of the X DevAPI as well as how MySQL handles those features. The X Plugin documentation is, again, your best companion for learning about the plugin.

MySQL as a document-oriented database: the X DevAPI

It is through the new X DevAPI that the document-oriented database features in MySQL are exposed. This is how you use MySQL as a document store, a schema-less, and therefore schema-flexible storage system for documents. When using MySQL as a document store you do not need to know and define all possible attributes of your data before storing and operating with it. This differs from working with a relational database and storing data in a table, where all columns of the table must be known and defined before adding data to the database.

Long ago MySQL added support for JSON data along with a large variety of functions and operations that allow creating, manipulating, and handling JSON structures and values. This new data type combined with the old and reliable InnoDB based tables, with the ability to create dynamically generated columns and indexes over them, constituted the right environment for spawning MySQL’s interpretation of our document store.

The X DevAPI provides you with a unifying API for creating and handling documents in JSON format in MySQL, which you can use to develop applications. It offers a modern programming interface with a simple yet powerful design that provides support for established industry-standard concepts. One of the major keynotes in the X DevAPI is harmony you get when working with different MySQL Connectors that implement it. It becomes so easy for a developer to switch between different programming languages and still get the same “look & feel” from different Connectors.

Although MySQL Connectors are the typical entry point for using the X DevAPI, you can actually start using it even without jumping into a programming language; just try it in the new command-line client: MySQL Shell.

MySQL Reference Manual contains an overview of MySQL as a Document Store which I recommend reading. The X DevAPI User Guide is the central source of information for all common aspects of this new and exiting API.

And here’s the new MySQL command-line client: MySQL Shell

MySQL Shell is an advanced command-line client and code editor for MySQL server. In addition to the usual SQL functionality provided by the mysql client, MySQL Shell provides scripting capabilities for JavaScript and Python and includes APIs for working with MySQL. When MySQL Shell is connected to the MySQL server through the X Protocol, the X DevAPI can be used to work with both relational tables and document data.

This is the perfect companion tool for your development work with any of the new Connectors supporting X DevAPI, as it allows viewing and manipulating documents and collections easily, so that you can prototype X DevAPI calls, expressions syntax, and a lot more before starting coding them into your projects.

As of MySQL Server 8.0.11, MySQL Shell is not included in the server’s default toolset, so you will have to install it separately. Get started with MySQL Shell by downloading it from MySQL Downloads and get more info from its User Guide.

TL;DR: After all, this post is about Connector/J!

Connector/J 8.0, the new GA JDBC/X DevAPI driver for MySQL databases

I am particularly proud to announce that Connector/J 8.0 is now GA. This is the officially recommended version to use in your projects from now on. And it doesn’t matter what server version you are using.

Note that Connector/J became GA with version 8.0.11, skipping version 8.0.10, which was expected to appear after the last Release Candidate. If you haven’t heard about it, just know that several MySQL products, including Connector/J, will be version aligned with MySQL Server releases from now on. This means that you can expect new releases of Connector/J every time there is a MySQL Server 8.0 release. This doesn’t mean, however, that you must also align the Connector/J library in your projects with the server version you are connecting to. As always, our recommendation is to use the latest Connector/J library, no matter what server version you use.

Connector/J 8.0 is the rightful successor of the widely used Connector/J 5.1. Now compiled in Java 8 only, it comes with huge refactoring. Connector/J 8.0 is better organized and follows better and more up-to-date coding practices, as well as many of the exciting features of Java 8. This is also the driver to use with the new X DevAPI in the Java ecosystem.

We know that, despite our best efforts, no code is ever perfect. This is why we are continuously working on it and we really appreciate your comments and suggestions for improving this product. Therefore, please continue to use the resources we provide to get in touch with us, including the MySQL bug system, the Connector/J forum, the GitHub repository or MySQL Community Slack, with which you can talk to us directly.

Connector/J 8.0 does not only implement the JDBC 4.2 API, but also the X DevAPI for new document store features, so you can use them interchangeably. As matter of fact, the two API implementations share a lot of core base code. This is so to offer you a better user experience and versatility in your projects.

The new X DevAPI implementation provides an up to date and more user-friendly programming method with its Fluent Interface API. It all starts with obtaining a Session object, which is similar to getting a JDBC Connection, and, from then on, you have a tool to work with with Schemas, Collections and even old-style Tables. Always remember to keep Connector/J Developer Guide and the Connector/J X DevAPI Reference handy for quick reference.

Getting started with Connector/J 8.0 and X DevAPI

Initial setup & getting Connector/J binaries

Your first step should be setting up a new Java project using whatever method you prefer, immediately followed by attaching the Connector/J library. You can do it either by setting up a Maven dependency in your pom.xml or by downloading the Connector/J bundle from the official MySQL Downloads page.

In order to setup a Maven dependency just add the following in the <dependencies> section of your project’s pom.xml file, then proceed with the usual Maven commands to build and run your project:

If you choose to download the Connector/J bundle from the MySQL repositories, you must extract its contents to some temporary place and copy the following files to your project’s libraries directory:

  • mysql-connector-java-8.0.11.jar
  • lib/protobuf-java-2.6.0.jar

Instead of using the provided Protocol Buffers Java API library, you could also get protobuf-java-2.6.0.jar from its official repositories. Note that there are a few other Java libraries in the libs directory and you are not required to add them to your project if you don’t use any of the features that need them.

If you are bold enough, you can even grab the Connector/J source code and compile it yourself. This is not a task for a Java novice but you will find some help in Connector/J Developer Guide – Installing from source.

I will not go into more details but you must make sure the classpath settings include the two libraries in all further Java commands or project configurations in your IDE.

Needless to say that you will also need a MySQL Server 8.0.11 (at least) in order to proceed. If you don’t have one, you can install it in few easy steps; just choose the right package for you and follow the instructions in the Reference Manual.

Hello World, using JSON documents and X DevAPI

It is time to create the a simple demo Java class. Lets call it HelloWorld.java.

You should implement proper exception handling in your application. For the sake of this demo I’ll just throw Exception  in the method main .

First thing to do is to establish a connection to the MySQL server, that is, obtaining a Session in X DevAPI terminology. Lets assume the X Plugin is listening on the default port 33060. To do this in Connector/J you first need to instantiate a SessionFactory  and then use it to create the Session  object for you:

Replace the user and password according to your database setup. The same goes for the host and port parts.

Note that jonhdoe is just a standard MySQL user. Since this user will be used to create objects in the database, please make sure that it has the required permissions to do so.

The connection string in this sample is pretty straightforward. It identifies the protocol to use (mysqlx), the user, password, hostname and port. Except for the part johndoe:password@ this is quite similar to the old JDBC connection strings. In fact, Connector/J 8.0 lets you use this same syntax for JDBC connections too.

The previous code returns a Session  object you can to use manage schemas. A Schema is essentially a MySQL database. Lets create one for this demo:

By now there should be a new database named demo in your MySQL server instance.

The Schema object you have got lets you manage collections and tables in the database. Just keep in mind that collections are just tables with a specific column structure, which you shouldn’t modify in any way other than through a X DevAPI interface.

Let’s now create a collection and add a few documents to it:

So, this creates a table named greetings in the demo database. This table has two columns: doc and _id:

The X DevAPI, through the X Plugin, manages this 1:1 mapping between the collection greetings and the table with the same name. Following X DevAPI code related to this collection operates over this relational table using a panoply of JSON functions available in MySQL server, however, all this happens internally in the server and it is transparent to clients.

Lets wrap this demo up with a couple of data retrieving operations:

This time we work with the Collection instance in order to fetch its data using two simple filters, exactly as what you would do using standard SQL tables.

The returned object DocResult  can then be used to get the list of the documents filtered from the collection. Each document is exposed as a DbDoc  instance. DbDoc  is particularly important in Connector/J X DevAPI implementation, because it represents a JSON object, something that Java doesn’t support natively.

This should be the end result of this simple demo:

With exception of the _id values, which are generated each time you add a document to a collection, you should get the same results as me, if you try out the demo.

What else?

This little demo was about a few basic CRUD operations on Collections, but there’s a lot more in the X DevAPI:

  • CRUD operations on Collections and Tables;
  • Parameter binding;
  • Document patching;
  • Various types of results and metadata;
  • Raw (SQL) statements execution;
  • Transaction save-points;
  • Row locking mechanisms;
  • Simplified expression syntax, etc.

Closing comments

MySQL Connector/J 8.0.11 is the new GA version of Connector/J for MySQL databases. It implements the X DevAPI, an exciting new feature that enables the use of MySQL Server 8.0 as a document-oriented database.

The 8.0 series of the Connector/J driver, fully re-factored from the previous GA version 5.1, requires Java 8 or above to work with. If that is a limitation for you, you can still use the Connector/J 5.1 series that supports Java 5 up to Java 8. We’ll keep maintaining the 5.1 series for the time being, but be mindful that you will only be able to use JDBC with it.

Although a feature preview version of the X DevAPI is also available in the MySQL Server 5.7 series, which you could use with Connector/J 8.0.11 and later, I recommend that you use the X DevAPI with MySQL 8.0. The X Plugin implementation in the  5.7 series has some known limitations and, most likely, no new features will be back ported to MySQL 5.7.

Exiting times are coming for all of us. Enjoy the new features we offer you and let us know what you think about them.

On behalf of the MySQL Connector/J development team, I wish you a pleasant programming experience with Connector/J 8.0.

MySQL Connector/C++ 8.0.11 GA has been released

Dear MySQL users,

MySQL Connector/C++ 8.0.11 is the first GA 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++ applications using X DevAPI or plain C applications using
XAPI.

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/

and “X DevAPI Reference” at

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

For more information about using plain C XAPI see “XAPI 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/

Note
For X DevAPI or XAPI applications, Connector/C++ 8.0 requires
MySQL Server 5.7.12 or higher with X Plugin enabled. For
applications that use the legacy JDBC API, Connector/C++ 8.0
can use MySQL Server 5.5 or higher, and X Plugin is not required.

https://dev.mysql.com/doc/refman/5.7/en/document-store.html

To download MySQL Connector/C++ 8.0.11, see the
“Generally Available(GA) Releases” tab at

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


Changes in MySQL Connector/C++ 8.0.11 (2018-04-19,
General Availability)

For MySQL Connector/C++ 8.0.11 and higher, Commercial and
Community distributions require the Visual C++
Redistributable for Visual Studio 2015 to work on Windows
platforms. The Redistributable is available at the Microsoft
Download Center
(http://www.microsoft.com/en-us/download/default.aspx);
install it before installing Connector/C++.

Functionality Added or Changed

* Incompatible Change: When documents without an _id
attribute are added to a collection, the server now
automatically generates IDs for them. The server
determines the ID format, which should be considered
opaque from the API perspective (they are no longer
UUID-based). As before, no _id attribute is generated if
a document already contains one. User-provided document
IDs must not conflict with IDs of other documents in the
collection.
This capability requires a MySQL 8.0 GA server. If the
server does not support document ID generation, the
document-add operation returns an error indicating that
document IDs were missing.
For X DevAPI, the generated IDs resulting from a
document-add operation can be obtained using the new
Result.getGeneratedIds() method, which returns a list.
For XAPI, the generated IDs can be obtained using the new
mysqlx_fetch_generated_id() function, which returns IDs
one by one for successive calls, until it returns NULL to
indicate no more generated IDs are available. For both X
DevAPI and XAPI, document IDs specified explicitly in
added documents are not returned.
Incompatibility: The getGeneratedIds() method replaces
getDocumentId() and getDocumentIds(), which are now
removed. The mysqlx_fetch_generated_id() function
replaces mysqlx_fetch_doc_id(), which is now removed.

* A patch operation has been implemented that enables
specifying a JSON-like object that describes the changes
to apply to documents in a collection.
For X DevAPI, the CollectionModify operation supports a
new patch() clause for patching documents. For XAPI,
there are two new functions:
mysqlx_collection_modify_patch() directly executes
patching on documents in a collection that satisfy given
criteria. mysqlx_set_modify_patch() adds a patch
operation to a modify statement created with the
mysql_collection_modify_new() function.

* For connections to the server made using the legacy JDBC
API (that is, not made using X DevAPI or XAPI),
Connector/C++ 8.0 now supports an
OPT_GET_SERVER_PUBLIC_KEY connection option that enables
requesting the RSA public key from the server. For
accounts that use the caching_sha2_password or
sha256_password authentication plugin, this key can be
used during the connection process for RSA key-pair based
password exchange with TLS disabled. This capability
requires a MySQL 8.0 GA server, and is supported only for
Connector/C++ built using OpenSSL.

Bugs Fixed

* Single-document methods such as Collection.replaceOne()
did not accept expr() as the document specification, but
instead treated it as a plain JSON string. (Bug
#27677910)

* Compiling X DevAPI and XAPI test programs failed with an
error. (Bug #27610760)

* Connecting with an incorrect SSL_CA value could result in
a memory leak. (Bug #27434254)

* For debug builds, specifying a document as _id raised an
assertion rather than producing an error. (Bug #27433969)

As always, a big THANK YOU for using MySQL!

MySQL Connector/NET 8.0.10-rc has been released

Dear MySQL users,

MySQL Connector/NET 8.0.10 is the first release candidate of MySQL
Connector/NET to add support for the new X DevAPI. 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/index.html. For more
information about how the X DevAPI is implemented in Connector/NET, see
http://dev.mysql.com/doc/dev/connector-net.

Please note that the X DevAPI requires at least MySQL Server version
5.7.12 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/5.7/en/document-store.html.

To download MySQL Connector/NET 8.0.10-rc, see the “Development
Releases” tab at
http://dev.mysql.com/downloads/connector/net/


Changes in MySQL Connector/NET 8.0.10 (2018-01-30, Release Candidate)

   Functionality Added or Changed

     * The .NET Core 2.0 implementation now supports the
       following connection-string options: AutoEnlist,
       InteractiveSession, Logging, Replication, and
       UseUsageAdvisor. For more information about the options,
       see Connector/NET Connection-String Options Reference
(http://dev.mysql.com/doc/connector-net/en/connector-net-connection-options.html).
       (Bug #27297337)

     * X DevAPI: In the process of refining the definition of
       the X DevAPI to cover the most relevant usage scenarios,
       the following API components have been removed from the X
       DevAPI implementation for MySQL Connector/NET:

          + API components that support session configurations
            The MySqlX.XDevAPI.Config namespace and all members
            of the namespace.

          + API components that support views
            CreateView(), DropView(), and ModifyView() methods
            from the MySqlX.XDevAPI.Schema class.
            ViewAlgorithm, ViewSqlSecurityEnum, and
            ViewCheckOptionEnum enumerations from the
            MySqlX.DataAccess namespace.
            Note
            The Table.IsView property remains available for
            query operations.

     * Support for .NET Core 2.0 and .NET Standard 2.0 has been
       added (.NET Core 1.1 support continues). With .NET Core
       2.0, most of the common ADO.NET classes are available for
       use, such as:

          + System.Data.DataTable, System.Data.DataColumn, and
            System.Data.DataRow

          + System.Data.DataSet

          + System.Data.Common.DataAdapter

     * Support for Entity Framework Core 2.0 has been added
       (Entity Framework 1.1 support continues). Currently, the
       MySQL Connector/NET implementation excludes the following
       2.0 features:

          + Modeling: table splitting, owned types, model-level
            query filters, database scalar function mapping,
            self-contained type configuration for code first.

          + High performance: DbContext pooling and explicitly
            compiled queries.

          + Change tracking: attach can track a graph of new and
            existing entities.

          + Query: improved LINQ translation, group-join
            improvements, string interpolation in FromSql and
            ExecuteSqlCommand, new EF.Functions.Like().

          + Database management: pluralization hook for
            DbContext scaffolding.

          + Others: only one provider per model, consolidated
            logging and diagnostics.

     * X DevAPI: MySQL Connector/NET now supports setting and
       releasing named transaction savepoints, which can be
       assigned a name explicitly or by default using the
       savepoint_(uuid) format. In addition, a transaction can
       be rolled back to a named savepoint.
       New methods were added to the MySqlX.XDevAPI.BaseSession
       class to implement corresponding SQL statements using the
       X Protocol:

          + SetSavepoint() and SetSavepoint(name) correspond to
            the SAVEPOINT statement.

          + ReleaseSavepoint() corresponds to the RELEASE
            SAVEPOINT statement.

          + RollbackTo() corresponds to the ROLLBACK TO
            statement.
       All errors generated by MySQL when one of the new methods
       is called will be returned by MySQL Connector/NET.

     * X DevAPI: The MySqlX.XDevAPI.CRUD.ModifyStatement.Patch
       method was added to enable the inclusion of JSON-like
       objects within Collection.Modify() operations that
       describe the changes to apply to all documents matching
       the condition.

     * Support for the caching_sha2_password authentication
       plugin through the classic MySQL protocol was added.
       Support through the X Protocol is limited to secure
       connections only (sslmode=required). Caching SHA-2
       pluggable authentication offers faster authentication
       than basic SHA-256 authentication.
       A new and related connection option,
       AllowPublicKeyRetrieval, was also added.

     * X DevAPI: The MySqlX.XDevAPI.Collection.CreateIndex
       method implementation was modified to enable the
       inclusion of a JSON document that defines the index to be
       created. Index-definition details can include the fields
       affected, data types, and so on.

   Bugs Fixed

     * X DevAPI: When the PLAIN authentication option was used
       to make a secure connection, the database name was
       excluded from the authenticating data and the database
       value was not set. PLAIN authentication is the default
       option for connections made with TLS or Unix Sockets.
       (Bug #27098974, Bug #88427)

     * Boolean values within a JSON document were improperly
       stored as strings. (Bug #26837112)

     * Invoking the
       MySql.Web.Security.MySqlWebSecurity.CreateUserAndAccount
       method with valid arguments, including
       additionalUserAttributes as an object with key/value
       pairs, returned an out-of-range exception. Thanks to
       Stein Setvik for contributing to the fix. (Bug #25046364)

     * The default character set and encoding were not set
       properly when making a connection to MySQL 5.6 and 5.7
       servers configured to use the utf8 character set. (Bug
       #23257011)

     * SSL connections made to a single MySQL instance could not
       be disconnected and created repeatedly without restarting
       the client application to clear the half-open sockets.
       (Bug #20393654, Bug #75022)

Nuget packages are available at:

https://www.nuget.org/packages/MySql.Data/8.0.10-rc
https://www.nuget.org/packages/MySql.Web/8.0.10-rc
https://www.nuget.org/packages/MySql.Data.EntityFramework/8.0.10-rc
https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/8.0.10-rc
https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore.Design/8.0.10-rc

Enjoy and thanks for the support!

On Behalf of the MySQL/ORACLE RE Team
Gipson Pulla

MySQL Connector/Net 6.9.10 has been released

Dear MySQL users,

MySQL Connector/Net 6.9.10 is a maintenance release for the 6.9.x
series of the .NET driver for MySQL. It can be used for production
environments.

It is appropriate for use with MySQL server versions 5.5-5.7.

It is now available in source and binary form from
http://dev.mysql.com/downloads/connector/net/#downloadsandmirrorsites
(note that not all mirror sites may be up to date at this point-if you
can’t find this version on some mirror, please try again later or choose
another download site.)


Changes in MySQL Connector/Net 6.9.10 (2017-10-23, General Availability)

   Bugs Fixed

     * Executing MySql.Web.Security.CreateUserAndAccount with
       valid arguments returned an out-of-range exception.
       Thanks to Stein Setvik for contributing to the fix.
       (Bug #25046364)

     * The default character set and encoding were not set
       properly when making a connection to MySQL 5.6 and 5.7
       servers configured to use the utf8 character set.
       (Bug #23257011)

The documentation is available at:
http://dev.mysql.com/doc/connector-net/en/

Nuget packages are available at:
https://www.nuget.org/packages/MySql.Data/6.9.10
https://www.nuget.org/packages/MySql.Data.Entity/6.9.10
https://www.nuget.org/packages/MySql.Fabric/6.9.10
https://www.nuget.org/packages/MySql.Web/6.9.10


Enjoy and thanks for the support!

On behalf of the MySQL Connector/NET and the MySQL/ORACLE RE Team
Gipson Pulla

MySQL Connector/Java 8.0.8-dmr has been released

Dear MySQL users,

MySQL Connector/J 8.0.8 Development Release is a development milestone
release for the 8.0.x series.

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-8.html

MySQL Connectors and other MySQL client tools and applications now
synchronize the first digit of their version number with the (highest)
MySQL server version they support.
This change makes it easy and intuitive to decide which client version
to use for which server version.

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.8 dmr, see the “Development
Releases” tab at http://dev.mysql.com/downloads/connector/j/

Enjoy!


Changes in MySQL Connector/J 8.0.8 (2017-09-28, Development Milestone)

   Version 8.0.8 Development Milestone is the latest development
   release of the 8.0 branch of MySQL Connector/J, providing an
   insight into upcoming features. 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

     * Packaging: RPM and Debian packages for installing
       Connector/J are now available from the Connector/J
       Download page
       (http://dev.mysql.com/downloads/connector/j/).

     * X DevAPI: Connector/J has implemented a new interface of
       the X Dev API that allows the retrieving, adding,
       removing, and updating of persistent session continuation
       data. The implementation includes the following:

          + A SessionConfig object that holds the information
            for a session configuration data set.

          + A PersistenceHandler interface that allows custom
            implementations of persistence handlers.

          + A PasswordHandler interface that allows custom
            implementations of password handling code.

          + A SessionConfigManager class for editing and
            fetching Sessionconfig objects, and defining
            instances of the PersistenceHandler and
            PasswordHandler.
       See MySQL Connector/J X DevAPI Reference
       (http://dev.mysql.com/doc/dev/connector-j) for more
       details.

     * X DevAPI: A new connection property, xdevapi.auth, has
       been added for specifying the authentication mechanism
       for connections using the X Protocol. Allowed values are
       MYSQL41, PLAIN, and EXTERNAL. See the entry for the new
       property in Configuration Properties
 (http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html)
       for details. 

     * X DevAPI: To support row locks
(http://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html)
       for the find() method of the X DevAPI, the
       FindStatement and the SelecStatement interfaces have been
       extended with the following methods:

          + lockExclusive(), which works like SELECT ... FOR
            UPDATE for relational tables.

          + lockShared(), which works like the SELECT ... LOCK
            IN SHARED MODE (for MySQL 5.7) or SELECT ... FOR
            SHARE (for MySQL 8.0) for relational tables.
       See MySQL Connector/J X DevAPI Reference
       (http://dev.mysql.com/doc/dev/connector-j) for more
       details.

     * X DevAPI: Connector/J now supports the expanded syntax
       for the IN and NOT IN operator, which can check if a
       sub-expression is contained inside another one; for
       example:
       // For documents
       coll.find("$.b IN [100,101,102]").execute();
       coll.find("'some text with 5432' in $.a").execute();
       coll.find("1 in [1, 2, 4]").execute();
       coll.find("{'a': 3} not in {'a': 1, 'b': 2}").execute();
       // For relational tables
       tbl.select().where("3 not in [1, 2, 4]").execute();
       tbl.select().where("'qqq' not in $.a").execute();
       tbl.select().where("{'a': 1} in {'a': 1, 'b': 2}").execute();


     * X DevAPI: A number of changes have been implemented for
       the "drop" methods for the X DevAPI:

          + Removed dropCollection(schemaName, collectionName)
            and dropTable(schemaName, tableName) from Session.

          + Added dropCollection(collectionName) and
            dropTable(tableName) to Schema.

          + Schema.dropView() now executes immediately and
            returns void; also, the ViewDrop interface has been
            removed.

          + Collection.dropIndex() now executes immediately and
            returns void; also the DropCollectionIndexStatement
            interface has been removed.

          + The "drop" methods now succeed even if the objects
            to be dropped do not exist.

     * Conversion from the MySQL TIME data to java.sql.Date is
       now supported. In the past, a getDate() retrieving data
       from a TIME column would throw an SQLException. Now, such
       a retrieval returns a java.sql.Date object containing the
       time value expressed in number of milliseconds from the
       Java epoch; also returned is the warning: "Date part does
       not exist in SQL TIME field, thus it is set to January 1,
       1970 GMT while converting to java.sql.Date." (Bug
       #26750807)

     * A new connection property, enabledTLSProtocols, can now
       be used to override the default restrictions on the TLS
       versions to be used for connections, which are determined
       by the version of the MySQL Server that is being
       connected to. By providing a comma-separated list of
       values to this option (for example,
       "TLSv1,TLSv1.1,TLSv1.2") users can, for example, prevent
       connections from using older TLS version, or allow
       connections to use TLS versions only supported by a
       user-compiled MySQL Server. See the entry for the new
       property in Configuration Properties
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html)
       for details.
       Thanks to Todd Farmer for contributing the code. (Bug
       #26646676)

     * Updated the timezone mappings using the latest IANA and
       CLDR time zone databases. (Bug #25946965)

     * A new option for the loadBalancingStrategy connection
       property called serverAffinity has been added. The
       servers listed in the new connection property
       serverAffinityOrder (which should be a subset of the
       servers in the host list of the connection URL) are
       contacted in the order they are listed until a server is
       available or until the list of servers is exhausted, at
       which point a random load-balancing strategy is used with
       the hosts not listed by serverAffinityOrder. See
       descriptions for loadBalancingStrategy and
       serverAffinityOrder in Configuration Properties
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html)
       for details. (Bug #20182108)

   Bugs Fixed

     * Important Change: Following the changes in MySQL Server
       8.0.3, the system variables tx_isolation and tx_read_only
       have been replaced with transaction_isolation and
       transaction_read_only in the code of Connector/J. Users
       should update Connector/J to this latest release in order
       to connect to MySQL 8.0.3. They should also make the same
       adjustments to their own applications if they use the old
       variables in their codes. (Bug #26440544)

     * X DevAPI: Calling schema.dropView() with a null argument
       resulted in a NullPointerException. (Bug #26750807)

     * X DevAPI: When dropCollection() was applied on a null
       collection, a NullPointerException occurred. (Bug
       #26393132)

     * When using cached server-side prepared statements, a
       memory leak occurred as references to opened statements
       were being kept while the statements were being decached;
       it happened when either the close() method has been
       called twice on a statement, or when there were
       conflicting cache entries for a statement and the older
       entry had not been closed and removed from the opened
       statement list. This fix makes sure the statements are
       properly closed in both cases. Thanks to Eduard Gurskiy
       for contributing to the fix. (Bug #26633984, Bug #87429)

     * The regression test for Bug#63800 failed because the
       default value of the system variable
       explicit_defaults_for_timestamp of MySQL Server has been
       changed since release 8.0.2. The test has been adjusted
       to take the change into consideration. (Bug #26501245)

     * Running callable statements against MySQL Server 8.0
       resulted in the SQLException: ResultSet is from UPDATE.
       No Data. (Bug #26259384)

     * Secure JDBC connections did not fall back to the default
       truststore when a custom one was not provided. (Bug
       #26243128)

     * In com/mysql/jdbc/ServerPreparedStatement.java, the
       arguments resultSetType and resultSetConcurrency for a
       call of Connection.preparedStatement() were swapped. (Bug
       #25874048, Bug #85885)

     * Some JDBC proxied objects were missing the proper
       handlings of the equals() methods, thus even comparison
       of one of these proxied objects to its own self with
       equals() yielded false. This patch introduces proper
       handlings for the equals() method in all the relevant
       proxies. (Bug #21931572, Bug #78313)

     * A server-side prepared statement was not closed when the
       same statement was being prepared again while the
       original statement was being cached. This was caused by
       the silent replacement of the cache entry of the old
       statement by the new. When this happened repeatedly, it
       caused eventually the complaint that
       max_prepared_stmt_count was exceeded. This fix makes sure
       that when a cache entry for a statement replaces an older
       one, the older statement is immediately closed. (Bug
       #20066806, Bug #74932)


On behalf of Oracle MySQL Release Team
Balasubramanian Kandasamy

MySQL Connector/Net 8.0.9-dmr has been released

Dear MySQL users,

MySQL Connector/Net 8.0.9 is the sixth development release that expands
cross-platform support to Linux and macOS when using Microsoft’s .NET Core
framework. Now, .NET developers can use the X DevAPI with .NET Core and
Entity Framework Core (EF Core) 1.0 to create server applications that run
on Windows, Linux and macOS. We are very excited about this change and
really look forward to your feedback on it!

MySQL Connector/Net 8.0.9 is also the eighth development release of MySQL
Connector/Net to add support for the new X DevAPI.  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/index.html. For more
information about how the X DevAPI is implemented in Connector/Net, see
http://dev.mysql.com/doc/dev/connector-net.

Please note that the X DevAPI requires at least MySQL Server version
5.7.12 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/5.7/en/document-store.html.

To download MySQL Connector/Net 8.0.9-dmr, see the “Development
Releases” tab at http://dev.mysql.com/downloads/connector/net/


Changes in MySQL Connector/Net 8.0.9 (2017-09-28, Development Milestone)


* Functionality Added or Changed

* Bugs Fixed

Functionality Added or Changed

* For accuracy, the following Entity Framework 6 items were
renamed:

+ NuGet package - MySql.Data.EntityFramework (was
MySql.Data.Entity)

+ Namespace - MySql.Data.EntityFramework (was
MySql.Data.Entity)

+ Assembly - MySql.Data.EntityFramework.dll (was
MySql.Data.Entity.EF6.dll)
(Bug #26396260)

* X DevAPI: The SessionConfigManager.Update method was
removed and the SessionConfigManager.Save method now
always overwrites the data with the given key. For
example:
SessionConfigManager.Save(
"mysess",
"{ \"uri\": \"mysqlx://myuser@localhost/mysess\", \"appdata\": { \"biz\": \"quux\" } }"
);

SessionConfigManager.Save(
"mysess",
"{ \"uri\": \"mysqlx://test@localhost/mysess\", \"appdata\": { \"tar\": \"zzzz\" } }"
);

The mysess.uri and mysess.appdata values set by the first
statement are replaced with the new values set by the
second statement. (Bug #25829054, Bug #25860579)

* MySQL Connector/Net now supports MySQL servers configured
to use utf8mb4 as the default character set.

* The following methods are available for use with EF Core
in asynchronous command and connection operations:

+ Microsoft.EntityFrameworkCore.DbContext.AddAsync

+ Microsoft.EntityFrameworkCore.DbContext.AddRangeAsync

+ Microsoft.EntityFrameworkCore.DbContext.FindAsync

+ Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync

+ Microsoft.EntityFrameworkCore.Infrastructure.Databas
eFacade.EnsureDeletedAsync

+ Microsoft.EntityFrameworkCore.Infrastructure.Databas
eFacade.EnsureCreatedAsync

+ Microsoft.EntityFrameworkCore.DbContext.ToListAsync

* X DevAPI: The following methods execute directly, whereas
each method previously required .execute() as the final
item in the method chain:

+ BaseSession.DropSchema

+ Collection.DropIndex

+ Schema.DropCollection

+ Schema.DropView
In addition, the methods now succeed even if the objects
to be dropped do not exist.

* The AutoEnlist and IncludeSecurityAsserts
connection-string options are not appropriate for use by
applications that target .NET Core and now return an
error when used.

* EF Core: Support for explicit loading was added. Explicit
loading is an object-relational mapper (O/RM) pattern
introduced in EF Core 1.1.0, which enables .NET
developers to explicitly load related data from the
database at a later time.

* The following connection-string options are not currently
supported for use by applications that target .NET Core
and now return an error when used:

+ SharedMemoryName

+ IntegratedSecurity

+ PipeName

+ Logging

+ UseUsageAdvisor

+ UsePerformanceMonitor

+ InteractiveSession

+ Replication

* X DevAPI: To provide safe transactional document and row
updates, the following new methods were added:

+ FindStatement.LockShared

+ FindStatement.LockExclusive

+ TableSelectStatement.LockShared

+ TableSelectStatement.LockExclusive
The LockShared() and LockExclusive() methods can be
called any number of times with either the
Collection.Find() or Table.Select() method chains and in
any combination. If multiple calls to the methods are
made, only the final method is invoked. For additional
information about the two types of locking, see Shared
and Exclusive Locks
(http://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html#innodb-shared-exclusive-locks).

* X DevAPI: When creating a new session, multiple hosts can
be tried until a successful connection is established. A
list of hosts can be given in a connection string or as
session creation options, with or without priorities.
var mySession = MySQLX.GetSession(
"mysqlx://dbuser:password@[" +
"(address=localhost:33060, priority=90)," +
"(address=192.1.10.10:33060, priority=100)," +
"(address=[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33060, priority=30)
" +
"]"
);

var mySession = MySQLX.GetSession(
"user=dbuser;" +
"password=dbpassword;" +
"server=" +
"(address=192.1.10.10, priority=90)," +
"(address=server.example.com, priority=100)," +
"(address=localhost, priority=30);" +
"port=33060;"
);


* X DevAPI: The IN and NOT IN operators have been updated
to expand the range of operands that can be evaluated by
the Find(), Modify(), and Remove() methods for
collections and the Select(), Update(), and Delete()
methods for tables. This update provides support for
expressions using the following syntax:
compExpr ["NOT"] "IN" compExpr

The previous syntax used with IN and NOT IN operators is
still valid and it takes precedence over the new syntax
when both are present.

* X DevAPI: Several new direct-execution methods were added
to the Collection class that operate at a single document
level, unlike the other CRUD methods that operate on all
documents that match a filter. The new methods are:
ReplaceOne(), AddOrReplaceOne(), GetOne(), and
RemoveOne().

* Support for connections using Unix domain socket files
was extended to include MySQL servers deployed on Linux
hosts.
X DevAPI connection example:
"server=/path/to/socket;protocol=unix;user=root;password=mypass;ssl-mode=none"

Classic MySQL connection example:
"server=/path/to/socket;protocol=unix;user=root;password=mypass"

* Connections to the MySQL server now can be made using
accounts that authenticate with the sha256_password
plugin. For more information, see SHA-256 Pluggable
Authentication
(http://dev.mysql.com/doc/refman/5.7/en/sha256-pluggable-authentication.html).
In addition, a new connection option was added to extend
authentication support for connections made using the X
Protocol with either basic or URI connection strings and
as an anonymous type. The auth connection option enables
the MYSQL41, PLAIN, or EXTERNAL authentication mechanism
if supported by the server. For a description of the auth
option, see Connector/Net Connection-String Options
Reference
(http://dev.mysql.com/doc/connector-net/en/connector-net-connection-options.html).

Bugs Fixed

* Assemblies within NuGet packages were not fully signed.
(Bug #26739307)

* EF Core: Some methods in the DbContext class were not
supported for use with asynchronous operations. (Bug
#26448321, Bug #84814)

* X DevAPI: Priority assignment when connecting to the
server in client-side failover situations was not
supported in earlier versions of the connector by design.
Priority-based failover is now available. (Bug #26198794)

* EF Core: When attempting to commit a transaction in which
the FirstOrDefaultAsync method was called, the connector
returned "System.InvalidOperationException: Connection
must be valid and open to commit transaction." instead of
committing the transaction. (Bug #26026972, Bug #86199)

* X DevAPI: Passing in a value of 0 or lower to the Limit
method now produces a more relevant error message
indicating that the argument is out of range. (Bug
#24384660)

* X DevAPI: Passing in the NULL value as a parameter to the
DbDoc.SetValue method resulted in an exception. This fix
ensures that NULL is accepted for this method. (Bug
#23542093)

Nuget packages are available at:

https://www.nuget.org/packages/MySql.Data/8.0.9-dmr
https://www.nuget.org/packages/MySql.Web/8.0.9-dmr
https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/8.0.9-dmr
https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore.Design/8.0.9-dmr

Enjoy and thanks for the support!

On Behalf of the MySQL/ORACLE RE Team
Gipson Pulla

MySQL Connector/Python 8.0.5 DMR has been released

Dear MySQL users,

MySQL Connector/Python 8.0.5 dmr is the sixth development release of the
MySQL Connector Python 8.0 series. This series adds support for the new X
DevAPI. 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 MySQL Server version 5.7.12 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/5.7/en/document-store.html

To download MySQL Connector/Python 8.0.5 dmr, see the “Development Releases”
tab at
http://dev.mysql.com/downloads/connector/python/

Enjoy!



Changes in MySQL Connector/Python 8.0.5 (2017-09-28, Development Milestone)


     * Packaging Notes

     * Functionality Added or Changed

   Packaging Notes

     * MySQL Connector/Python packages are now available in two
       formats: Pure Python packages that contain only Python
       files, and packages that contain the Python files plus
       the C Extension and C Protobuf extension. Exception
       platforms are Solaris, macOS, and Windows, for which
       packages containing the Python files and C extensions are
       available but not pure Python packages. (Bug #26648417)

   Functionality Added or Changed

     * MySQL Connector/Python now supports connections to MySQL
       accounts that use the caching_sha2_password
       authentication plugin (see SHA-2 Pluggable Authentication
       (http://dev.mysql.com/doc/refman/8.0/en/caching-sha2-plug
       gable-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.

     * MySQL Connector/Python now supports an auth connection
       option to specify the authentication methanism. Permitted
       values are plain, mysql41, and external. The option name
       and value are not case sensitive.
       If the authentication mechanism is not specified, it
       defaults to plain for secure (TLS) or Unix socket
       connections, or mysql41 for insecure connections.

     * MySQL Connector/Python now supports a pure Python
       implementation of Protobuf. Consequently, the Protobuf C
       extension has become optional. Connector/Python will use
       the Python implementation if the C extension is not
       available. The Protobuf Python package is required if it
       is desired not to use the C extension.
       The version requirements are Protobuf C++ 2.6.0 or
       higher, Protobuf Python 3.0.0 or higher.

     * A mysqlx.sessions variable is now exposed to scripts that
       can be used for session-related tasks such as saving or
       loading session configuration information.

     * These methods have been added for Collection:
       add_or_replace_one(), get_one(), replace_one(), and
       remove_one().

     * These methods have been added for FindStatement and
       SelectStatement, to enable shared and exclusive locks to
       be acquired: lock_shared() and lock_exclusive().

     * There is support for new forms of comparisons that use
       the IN operator:
item IN list
item IN document path
dict IN dict

       The left-hand-side value must be castable to the JSON
       type.


Documentation
——————–

Online:
http://dev.mysql.com/doc/connector-python/en/index.html

The source distribution includes the manual in various formats under
the docs/ folder.

Reporting Bugs
——————–

We welcome and appreciate your feedback and bug reports:
http://bugs.mysql.com/

On Behalf of the MySQL/Oracle Release Engineering Team,
Prashant Tekriwal

MySQL Connector/Net 8.0.8-dmr has been released

MySQL Connector/Net 8.0.8 is the fifth development release that expands cross-platform
support to Linux and macOS when using Microsoft’s .NET Core framework. Now, .NET
developers can use the X DevAPI with .NET Core and Entity Framework Core (EF Core)
1.0 to create server applications that run on Windows, Linux and macOS. We are very
excited about this change and really look forward to your feedback on it!

MySQL Connector/Net 8.0.8 is also the seventh development release of MySQL
Connector/Net to add support for the new X DevAPI. 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/index.html.
For more information about how the X DevAPI is implemented in Connector/Net, see
http://dev.mysql.com/doc/dev/connector-net.

Note

The X DevAPI requires at least MySQL Server version 5.7.12 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/5.7/en/document-store.html.

To download MySQL Connector/Net 8.0.8-dmr, see the “Development Releases” tab at
http://dev.mysql.com/downloads/connector/net/

 


Changes in MySQL Connector/Net 8.0.8 (2017-07-10, Development Milestone)

   MySQL Connectors and other MySQL client tools and
   applications now synchronize the first digit of their version
   number with the (highest) MySQL server version they support.
   For example, MySQL Connector/Net 8.0.12 would be designed to
   support all features of MySQL server version 8 (or lower).
   This change makes it easy and intuitive to decide which
   client version to use for which server version.

   MySQL Connector/Net 8.0.8 is the first release to use the new
   numbering. It is the successor to MySQL Connector/Net 7.0.7.

     * Functionality Added or Changed

     * Bugs Fixed

   Functionality Added or Changed

     * X DevAPI: The format of document ID values generated when
       adding documents to a collection has changed. It is still
       a string of 32 hexadecimal digits based on UUID, but the
       order of digits was changed to match the requirement of a
       stable ID prefix.

     * All connections created using MySQL Connector/Net now are
       secure by default. Also, the Ssl-Enable connection option
       has been replaced by Ssl-Mode. Permitted Ssl-Mode values
       are None, Required (the default), VerifyCA, and
       VerifyFull.

       With this change, a non-SSL enabled server now requires
       the Ssl-Mode option be set to None explicitly in the
       connection string or the connection will fail.

     * X DevAPI: It is no longer permitted to pass an empty
       search condition, such as the NULL value or an empty
       string, to the Collection.Modify and Collection.Remove
       methods.
	
     * X DevAPI: The NodeSession class has been renamed to
       Session and the MySQLX.GetNodeSession method has been
       renamed to MySQLX.GetSession. Also, the XSession class
       has been removed.

     * X DevAPI: When creating a new connection, multiple hosts
       now can be specified as part of the connection string,
       which will try each host until a successful connection is
       established or all elements from the host list have been
       tried. The following connection-string formats are
       supported:

	    var mySession = MySQLX.GetSession(
	      "mysqlx://dbuser:password@[" +
	      "localhost:33060," +
	      "192.1.10.10:33060," +
	      "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33060" +
	      "]"
	    );

	    var mySession = MySQLX.GetSession(
	      "user=dbuser;" +
	      "password=dbpassword;" +
	      "server=" +
	      "192.1.10.10," +
	      "server.example.com," +
	      "localhost;" +
	      "port=33060;"
	    );

   Bugs Fixed

     * EF Core: The Database First feature did not support the
       following data types: BINARY, VARBINARY, MEDIUMBLOB,
       LONGBLOB, SET, DATE, TIME, and YEAR. (Bug #25493209)

     * EF Core: Database First support produced an error when
       the existing MySQL database included one or more views.
       (Bug #25493086)

     * EF Core: Using
       System.ComponentModel.DataAnnotations.Schema.TableAttribu
       te to initialize a new class instance that specified the
       name of an existing MySQL table produced incorrect
       mappings of table and column names.
       (Bug #25394223, Bug #84423)

Nuget

Packages are available at:

https://www.nuget.org/packages/MySql.Data/8.0.8-dmr
https://www.nuget.org/packages/MySql.Web/8.0.8-dmr
https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/8.0.8-dmr
https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore.Design/8.0.8-dmr

Enjoy and thanks for the support!

On Behalf of MySQL/Oracle Release Engineering Team
Prashant Team

MySQL Connector/Java 8.0.7-dmr has been released

Dear MySQL users,

MySQL Connector/J 8.0.7 Development Release is a development milestone release for the 8.0.x series.
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-7.html

MySQL Connectors and other MySQL client tools and applications now synchronize the first digit of their version number with the (highest) MySQL server version they support.
This change makes it easy and intuitive to decide which client version to use for which server version.

Connector/J 8.0.7 is the first release to use the new numbering. It is the successor to Connector/J 6.0.6

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.7 dmr, see the “Development Releases” tab at http://dev.mysql.com/downloads/connector/j/

Enjoy!


Changes in MySQL Connector/J 8.0.7 (2017-07-10, Development Milestone)

MySQL Connectors and other MySQL client tools and
applications now synchronize the first digit of their version
number with the (highest) MySQL server version they support.
This change makes it easy and intuitive to decide which
client version to use for which server version.

Connector/J 8.0.7 is the first release to use the new
numbering. It is the successor to Connector/J 6.0.6.

* Functionality Added or Changed

* Bugs Fixed

Functionality Added or Changed

* X DevAPI: There are changes to some methods related to
the Result interface:

+ getLastDocumentId() and getLastDocumentIds() have
been replaced with getDocumentId() and
getDocumentIds(), which are put under a new
AddResult interface that extends Result.

+ A new getAutoIncrementValue() method is added to the
new InsertResult interface that extends Result.
See MySQL Connector/J X DevAPI Reference
(http://dev.mysql.com/doc/dev/connector-j) for more
details. (Bug #25207784)

* X DevAPI: It is no longer permitted to pass an empty
search condition, such as the NULL value or an empty
string, to the Collection.Modify() and
Collection.Remove() methods.

* X DevAPI: Connections using the X Protocol are now secure
by default. Also, the xdevapi.ssl-enable connection
option has been replaced by the xdevapi.ssl-mode option,
which has DISABLED, REQUIRED (default), VERIFY_CA, and
VERIFY_IDENTITY as its permitted values; see the
description for the new option in Configuration
Properties
http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-
reference-configuration-properties.html
for details.

* X DevAPI: Consolidated the BaseSession, NodeSession, and
XSession interfaces into a single
com.mysql.cj.api.xdevapi.Session interface. The following
related changes were also made:

+ Renamed XSessionFactory to SessionFactory.

+ Consolidated the AbstractSession, NodeSessionImpl,
and XSessionImpl classes into the
com.mysql.cj.xdevapi.SessionImpl class.

+ Removed the Session.bindToDefaultShard() method and
the VirtualNodeSession interface.

+ The mysqlx.getNodeSession() method has been renamed
to mysqlx.getSession() and it now returns a Session
object.

+ The DatabaseObject.getSession() method now returns a
Session object (instead of the old Session
interface).
See MySQL Connector/J X DevAPI Reference
(http://dev.mysql.com/doc/dev/connector-j) for more
details.

* To avoid using JDBC statements inside core Connector/J
classes, the following changes have been implemented:

+ Created a new com.mysql.cj.api.Query interface,
which is implemented by StatementImpl.

+ Replaced the
com.mysql.cj.api.jdbc.interceptors.StatementIntercep
tor interface with the
com.mysql.cj.api.interceptors.QueryInterceptor
interface.

+ Added a new method, PacketPayload
preProcess(PacketPayload queryPacket), to
QueryInterceptor.

+ Renamed the connection property
statementInterceptors to queryInterceptors. See
Configuration Properties
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-
reference-configuration-properties.html)
for details.

* Added Japanese collation for the utf8mb4 character set.

Bugs Fixed

* X DevAPI: createView() failed with a NullPointerException
when there were null inputs to it. This fix adds checks
for nulls, and makes Connector/J throw the proper errors
for them. (Bug #25575156)

* X DevAPI: createaTable() failed with a
NullPointerException when there were null inputs to it.
This fix adds checks for nulls, and makes Connector/J
throw the proper errors for them. (Bug #25575103)

* X DevAPI: The connection properties
enabledSSLCipherSuites, clientCertificateKeyStoreUrl,
clientCertificateKeyStoreType, and
clientCertificateKeyStorePassword were ignored for
connections using the X Protocol. (Bug #25494338)

* X DevAPI: Calling getNodeSession() with an URL string
containing SSL parameters caused a
CJCommunicationsException. This has been fixed by
creating a byte buffer to handle SSL handshake data.
(Notice that getNodeSession() has since been consolidated
into getSession().) (Bug #23597281)

* X DevAPI: Concurrent asynchronous operations resulted in
hangs, null pointer exceptions, or other unexpected
exceptions. This has been fixed by correcting a number of
problems with the SerializingBufferWriter and by limiting
the number of buffers sent with a gathering write. (Bug
#23510958)

* X DevAPI: When a thread failed to make a connection to
the server using the X Protocol, the client application
hung. A new connection property,
xdevapi.asyncResponseTimeout (default value is 300s), now
provides a duration beyond which the attempt to connect
timeouts, and a proper error is then thrown. See
description for the new option in Configuration
Properties
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-
reference-configuration-properties.html)
for details. (Bug #22972057)

* Connector/J failed a number of regression tests in the
test suite related to geographic information system (GIS)
functions, because of changes to GIS support by the MySQL
server. The fix corrects the tests. (Bug #26239946, Bug
#26140577)

* Configuration templates named by the connection property
useConfigs were not recognized by Connector/J. (Bug
#25757019, Bug #85555)

* A NullPointerException was returned when getDate(),
getTime(), or getTimestamp() was called with a null
Calendar. This fix makes Connector/J throw an
SQLException in the case. (Bug #25650305)

* An ArrayIndexOutOfBoundsException was thrown when a
server-side prepared statement was used and there was a
NULL in a BLOB, TEXT, or JSON type column in the
ResultSet. (Bug #25215008, Bug #84084)

On Behalf of MySQL/ORACLE RE Team
Gipson Pulla