Connector/C++ now supports the
utf8mb4_0900_bin
collation added for theutf8mb4
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
andNOT 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:
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 namearray
that takes aBoolean
value. 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
type
in index field descriptions) is extended with typeCHAR(
, where the lengthN
)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-specificTINYINT
,SMALLINT
,MEDIUMINT
,INT
, and orBIGINT
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)