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:
expr
OVERLAPSexpr
expr
NOT 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)