Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/C++ 8.0.21 的变化(2020-07-13,全面上市)

MySQL Connector/C++ 8.0.21 的变化(2020-07-13,全面上市)

配置注意事项

  • 当Connector/C++ 用作应用程序项目的子项目时,修改了CMake配置文件以更好地工作。感谢娄帅的贡献。

    此修订不会改变以下事实,即预期(和支持的)使用场景是在单独的项目中构建连接器,将其安装在某个位置,然后在该安装位置的应用程序项目中使用它(例如,通过定义导入的库目标在 CMake中)。(缺陷 #31095993,缺陷 #99093)

JSON 注释

  • Connector/C++ 中包含的rapidjson库已升级到 2020 年 1 月 16 日的 GitHub 快照。

安全说明

X DevAPI 注释

  • 对于 X DevAPI 或 X DevAPI for C 应用程序,创建或修改集合的方法和函数现在接受选项以启用对文档在允许插入或更新之前必须遵守的 JSON 模式的验证。模式验证由服务器执行,如果集合中的文档与模式定义不匹配或者服务器不支持验证,则服务器会返回一条错误消息。

    实施这些新类以支持验证选项:

    • CollectionOptions: 具有所有选项的基类。包含一个Option 带有常量REUSE和 的枚举VALIDATION

    • CollectionValidation:仅处理子项验证。包含一个Level带有常量STRICT和 的枚举OFF,以及一​​个带有常量和 的Option 枚举。 SCHEMALEVEL

    X DevAPI 现在具有以下 createCollection()(和 modifyCollection())的签名:

    // Accepts the full document
    createCollection("name", "JSON_Document"); 
    
    // DbDoc usage is also permitted
    createCollection("name", DbDoc("validation", DbDoc("level","off",...))); 
    
    // List of pairs with Option enum constant and value
    createCollection(CollectionOptions::REUSE, true,
                     CollectionOptions::VALIDATION, CollectionValidation(...));
    
    // Old REUSE way is also acceptable
    createCollection("name", true);
    
    createCollection("name", CollectionValidation(...));
    
    // createCollection also allows a list of pairs of
    // CollectionValidation Option enum constant and value
    createCollection("name", CollectionOptions::VALIDATION,
                             CollectionValidation::OFF,
                             CollectionValidation::SCHEMA,
                             "Object");

    用于 C 示例的 X DevAPI:

    这些是可能的选项 mysqlx_collection_options_set()

    OPT_COLLECTION_VALIDATION_LEVEL(VALIDATION_OFF)
    OPT_COLLECTION_VALIDATION_SCHEMA("Object")
    OPT_COLLECTION_REUSE(true)

    像这样执行选项操作:

    mysqlx_collection_options_t
    *options = mysqlx_collection_options_new() //creates collection options object
    mysqlx_free(options) //frees collection options
    mysqlx_collection_options_set(options,...);

    创建和修改函数具有以下签名:

    mysqlx_collection_create_with_options(mysqlx_schema_t *schema,
                                          mysqlx_collection_options_t *options);
    
    mysqlx_collection_create_with_json_options(mysqlx_schema_t *schema,
                                               const char* json_options);
    
    mysqlx_collection_modify_with_options(mysqlx_schema_t *schema, 
                                          mysqlx_collection_options_t *options);
    
    mysqlx_collection_modify_with_json_options(mysqlx_schema_t *schema, 
                                               const char* json_options);

    对于修改,REUSE不支持该选项,使用会报错。

添加或更改的功能

  • MySQL_Connection_Options枚举不再对在 C API 源代码中声明基础选项的顺序敏感 。(缺陷号 30799197)

  • Connector/C++ 现在实现了对失败的连接池端点的阻塞,以防止它们在超时期限结束之前被重新使用。这应该减少应用程序在端点暂时不可用的情况下从池中获取连接的平均等待时间。

修正错误

  • 对于在未安装 OpenSSL 库的系统上使用旧版 JDBC API(即不是 X DevAPI 或 X DevAPI for C)的应用程序,解析运行时时找不到与 Connector/C++ 捆绑的库应用程序的依赖性。(缺陷号 31007317)

  • 对于具有多个结果集的回复(例如来自执行多个查询的存储过程的结果),回复处理逻辑中的错误可能会在读取第一个结果集后错误地注销回复对象,而来自服务器的更多结果集正在等待处理,导致应用程序错误。(缺陷号 30989042)