Documentation Home
MySQL Connector/C++ Release Notes
Related Documentation Download these Release Notes
PDF (US Ltr) - 406.4Kb
PDF (A4) - 406.3Kb

MySQL Connector/C++ Release Notes  /  Changes in MySQL Connector/C++ 8  /  Changes in MySQL Connector/C++ 8.0.17 (2019-07-22, General Availability)

Changes in MySQL Connector/C++ 8.0.17 (2019-07-22, General Availability)

Character Set Support

  • 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)

Compilation Notes

  • 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)

Configuration Notes

  • 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)

Function and Operator Notes

  • Connector/C++ now supports the OVERLAPS and NOT 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();

    Should return:

    [{ "_id": "1" }]

    This operation:

    auto res = collection.find("$.list OVERLAPS [4]").fields("_id").execute();

    Should return:

    [{ "_id": "1" }, { "_id": "2" }]

    An error occurs if an application uses either operator and the server does not support it. (WL #12721)

X DevAPI Notes

  • 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:

      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(N), where the length N is mandatory. For example:

      R"({ "fields": [{ "field": "foo", "type": "CHAR(10)" }] })"

    (WL #12151)

Functionality Added or Changed

  • 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)

Bugs Fixed

  • 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)