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)