MySQL Connector/C++ Release Notes
        Connector/C++ now supports the 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.
       (WL #13094, WL #13502)
Connector/C++ now compiles cleanly using the C++14 compiler. This includes MSVC 2017. Binary distributions from Oracle are still built in C++11 mode using MSVC 2015 for compatibility reasons. (WL #13133)
The maximum permitted length of host names throughout Connector/C++ has been raised to 255 ASCII characters, up from the previous limit of 60 characters. Applications that expect host names to be a maximum of 60 characters should be adjusted to account for this change. (WL #13092)
        Connector/C++ now supports the OVERLAPS and
        NOT OVERLAPS operators for expressions on
        JSON arrays or objects:
      
exprOVERLAPSexprexprNOT OVERLAPSexpr
Suppose that a collection has these contents:
[{
   "_id": "1",
   "list": [1, 4]
 }, {
   "_id": "2",
   "list": [4, 7]
}]
This operation:
auto res = collection.find("[1, 2, 3] OVERLAPS $.list").fields("_id").execute();
res.fetchAll();
Should return:
[{ "_id": "1" }]
This operation:
auto 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. (WL #12721)
        For index specifications passed to the
        Collection::createIndex() method (for
        X DevAPI applications) or the
        mysqlx_collection_create_index() function
        (for X DevAPI for C applications), Connector/C++ now supports indexing
        array fields. 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. For example:
      
coll.createIndex("idx",
  R"({ "fields": [{ "field": "foo", "type": "INT", "array": true }] })"
);
        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(, where the
        length N)N is mandatory. For example:
      
coll.createIndex("idx",
  R"({ "fields": [{ "field": "foo", "type": "CHAR(10)" }] })"
);
(WL #12151)
        Previously, Connector/C++ reported INT in result set
        metadata for all integer result set columns, which required
        applications to check column lengths to determine particular
        integer types. The metadata now reports the more-specific
        TINYINT, SMALLINT,
        MEDIUMINT, INT, and or
        BIGINT types for integer columns.
       (Bug #29525077)
        Calling a method such as .fields() or
        .sort() on existing objects did not overwrite
        the effects of any previous call.
       (Bug #29402358)
When Connector/C++ applications reported connection attributes to the server upon establishing a new connection, some attributes were taken from the host on which Connector/C++ was built, not the host on which the application was being run. Now application host attributes are sent. (Bug #29394723)
        Assignments of the following form on
        CollectionFind objects invoked a copy
        assignment operator, which was nonoptimal and prevented
        potential re-execution of statements using prepared statements:
      
find = find.limit(1);
(Bug #29390170)
Legal constructs of this form failed to compile:
for (string id : res.getGeneratedIds()) { ... }
(Bug #29355100)
During build configuration, CMake could report an incorrect OpenSSL version. (Bug #29282948)