- Connector/C++ now supports the - utf8mb4_0900_bincollation added for the- utf8mb4Unicode 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 OVERLAPSandNOT OVERLAPSoperators for expressions on JSON arrays or objects:expr OVERLAPS expr expr NOT OVERLAPS exprSuppose 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 themysqlx_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 namearraythat takes aBooleanvalue. If set totrue, 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 typein index field descriptions) is extended with typeCHAR(, where the lengthN)Nis mandatory. For example:coll.createIndex("idx", R"({ "fields": [{ "field": "foo", "type": "CHAR(10)" }] })" );(WL #12151) 
- Previously, Connector/C++ reported - INTin 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- BIGINTtypes 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 CollectionFindobjects 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)