-
当Connector/C++ 用作应用程序项目的子项目时,修改了CMake配置文件以更好地工作。感谢娄帅的贡献。
此修订不会改变以下事实,即预期(和支持的)使用场景是在单独的项目中构建连接器,将其安装在某个位置,然后在该安装位置的应用程序项目中使用它(例如,通过定义导入的库目标在 CMake中)。(缺陷 #31095993,缺陷 #99093)
对于捆绑了 OpenSSL 库的平台,Connector/C++ 的链接 OpenSSL 库已更新至版本 1.1.1g。在https://www.openssl.org/news/cl111.txt和 https://www.openssl.org/news/vulnerabilities.html中描述了新 OpenSSL 版本中修复的问题 。(缺陷号 31296689)
-
对于 X DevAPI 或 X DevAPI for C 应用程序,创建或修改集合的方法和函数现在接受选项以启用对文档在允许插入或更新之前必须遵守的 JSON 模式的验证。模式验证由服务器执行,如果集合中的文档与模式定义不匹配或者服务器不支持验证,则服务器会返回一条错误消息。
实施这些新类以支持验证选项:
CollectionOptions
: 具有所有选项的基类。包含一个Option
带有常量REUSE
和 的枚举VALIDATION
。CollectionValidation
:仅处理子项验证。包含一个Level
带有常量STRICT
和 的枚举OFF
,以及一个带有常量和 的Option
枚举。SCHEMA
LEVEL
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++ 现在实现了对失败的连接池端点的阻塞,以防止它们在超时期限结束之前被重新使用。这应该减少应用程序在端点暂时不可用的情况下从池中获取连接的平均等待时间。