Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/C++ 8.0.17 的变化(2019-07-22,正式发布)

MySQL Connector/C++ 8.0.17 的变化(2019-07-22,正式发布)

字符集支持

  • Connector/C++ 现在支持在 MySQL 8.0.17 中utf8mb4_0900_bin 为 Unicode 字符集添加的排序规则。utf8mb4有关此归类的更多信息,请参阅Unicode 字符集

编译笔记

  • Connector/C++ 现在可以使用 C++14 编译器进行干净的编译。这包括 MSVC 2017。出于兼容性原因,来自 Oracle 的二进制分发版仍然使用 MSVC 2015 在 C++11 模式下构建。

配置注意事项

  • Connector/C++ 中主机名的最大允许长度已从之前的 60 个字符限制增加到 255 个 ASCII 字符。预期主机名最多为 60 个字符的应用程序应进行调整以解决此更改。

功能和操作员注意事项

  • Connector/C++ 现在支持JSON 数组或对象表达式 的OVERLAPS和 运算符:NOT OVERLAPS

    expr OVERLAPS expr
    expr NOT OVERLAPS expr

    假设一个集合有这些内容:

    [{
       "_id": "1",
       "list": [1, 4]
     }, {
       "_id": "2",
       "list": [4, 7]
    }]

    这个操作:

    auto res = collection.find("[1, 2, 3] OVERLAPS $.list").fields("_id").execute();
    res.fetchAll();

    应该返回:

    [{ "_id": "1" }]

    这个操作:

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

    应该返回:

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

    如果应用程序使用任一运算符而服务器不支持它,则会发生错误。

X DevAPI 注释

  • 对于传递给 Collection::createIndex()方法(对于 X DevAPI 应用程序)或 mysqlx_collection_create_index()函数(对于 C 应用程序的 X DevAPI)的索引规范,Connector/C++ 现在支持索引数组字段。单个索引字段描述可以包含一个带有值的新成员array名称 Boolean。如果设置为 true,则假定该字段包含给定类型的元素数组。例如:

    coll.createIndex("idx",
      R"({ "fields": [{ "field": "foo", "type": "INT", "array": true }] })"
    );

    此外,可能的索引字段数据类型集(用作type索引字段描述中成员的值)用 type 扩展 ,其中长度是强制性的。例如: CHAR(N)N

    coll.createIndex("idx",
      R"({ "fields": [{ "field": "foo", "type": "CHAR(10)" }] })"
    );

添加或更改的功能

  • 以前,Connector/C++INT在所有整数结果集列的结果集元数据中报告,这要求应用程序检查列长度以确定特定的整数类型。元数据现在报告整数列的更具体 TINYINT的 、SMALLINTMEDIUMINTINT和 或 BIGINT类型。(漏洞 #29525077)

修正错误

  • 在现有对象上调用诸如.fields()或 之类的方法.sort()不会覆盖任何先前调用的效果。(漏洞#29402358)

  • 当 Connector/C++ 应用程序在建立新连接时向服务器报告连接属性时,某些属性取自构建 Connector/C++ 的主机,而不是运行应用程序的主机。现在发送应用程序主机属性。(漏洞#29394723)

  • 对象上的以下形式 CollectionFind的赋值调用了复制赋值运算符,这不是最佳的并且阻止了使用准备好的语句重新执行语句的可能性:

    find = find.limit(1);

    (漏洞 #29390170)

  • 这种形式的法律结构无法编译:

    for (string id : res.getGeneratedIds()) { ... }

    (漏洞 #29355100)

  • 在构建配置期间,CMake可能会报告不正确的 OpenSSL 版本。(漏洞#29282948)