Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/C++ 8.0.6 的变化(2017-09-28,发展里程碑)

MySQL Connector/C++ 8.0.6 的变化(2017-09-28,发展里程碑)

X DevAPI 注释

  • 会话现在可以为查找或选择语句返回的文档或行获取锁,以防止在持有锁时更改其他会话的返回值(前提是使用了适当的隔离级别)。对于给定的查找或选择语句,可以多次请求锁定。只有最后的请求才会被执行。获得的锁一直持有到当前事务结束。

    对于 X DevAPI,CollectionFind实现 TableSelect.lockExclusive()方法 .lockShared(),分别在返回的文档或行上请求独占锁或共享锁。这些方法可以 .bind()在 final 之后和之前 调用.execute()

    对于 C 的 X DevAPI, 可以调用新函数来请求对返回的文档或行的独占或共享锁,或者释放锁。参数可以 是 、 或 。前两个值指定要获取的锁的类型。 从语句中删除任何行锁定请求。 mysqlx_set_locking(stmt, lock)lockROW_LOCK_EXCLUSIVEROW_LOCK_SHAREDROW_LOCK_NONEROW_LOCK_NONE

  • 对于 X DevAPI,auth可以在连接字符串或 URI 中指定一个新选项来指示身份验证机制。允许的值为 PLAINMYSQL41。选项名称和值不区分大小写。该 SessionSettings::Options对象支持AUTH具有相同允许值的新枚举。

    对于 C 的 X DevAPI,auth可以在连接字符串或 URI 中指定新设置以指示身份验证机制。允许的值为 PLAINMYSQL41。选项名称和值不区分大小写。一个新 MYSQLX_OPT_AUTH常量被 mysqlx_options_set()函数识别,具有允许的值MYSQLX_AUTH_PLAINMYSQLX_AUTH_MYSQL41

    如果未指定身份验证机制,则默认 PLAIN为安全 (TLS) 连接或 MYSQL41不安全连接。对于 Unix 套接字连接,默认值为PLAIN.

  • 查询和语句中使用的布尔表达式现在支持IN运算符的变体,其中右侧操作数是计算结果为数组或文档的任何表达式。

    X DevAPI 示例:

    coll.find("'car' IN $.toys").execute();

    C 示例的 X DevAPI:

    res = mysqlx_collection_find(coll, "'car' IN $.toys");

    在这种形式下,IN运算符相当于JSON_CONTAINS()SQL 函数。

  • 在 Unix 和类 Unix 系统上,现在支持 Unix 域套接字文件作为 X DevAPI 的连接传输或用于 C 连接的 X DevAPI。套接字文件可以在连接字符串或会话创建选项中给出。

    X DevAPI 示例:

    XSession sess("mysqlx://user:password@(/path/to/mysql.sock)/schema");
    
    XSession sess({ SessionSettings::USER, "user",
    SessionSettings::PWD, "password,
    SessionSettings::SOCKET, "/path/to/mysql.sock"
    SessionSettings::DB, "schema" });

    用于 C 示例的 X DevAPI:

    mysqlx_session_t *sess = mysqlx_get_session_from_url(
      "mysqlx://user:password@(/path/to/mysql.sock)/schema",
      err_buf, &err_code
    );
    
    mysqlx_opt_type_t *sess_opt = mysqlx_session_option_new();
    mysqlx_session_option_set(sess_opt,
      MYSQLX_OPT_SOCKET, "/path/to/mysql.sock",
      MYSQLX_OPT_USER, "user",
      MYSQLX_OPT_PWD, "password",
      MYSQLX_OPT_DB, "schema");
    
    mysqlx_session_t *sess = mysqlx_get_session_from_options(
      sess_opt, err_buf, &err_code
    );

添加或更改的功能

  • 进行了这些 drop API 更改:

    • Session::dropTable(schema, table)和 分别被 和 取代。 Session::dropCollection(schema, coll)Schema::dropTable(table)Schema::dropCollection(coll)

    • Schema::dropView()现在是直接执行方法,返回void 而不是Executable.

    • 如果删除的对象不存在, 所有方法都会成功。dropXXX()

  • 添加了以下Collection方法: addOrReplaceOne()getOne()replaceOne()removeOne()

    和方法仅适用于 MySQL 8.0.3 及更高版本的服务器addOrReplaceOne()replaceOne()对于较旧的服务器,它们会报告错误。

修正错误

  • 仅使用指定的选项创建 TLS 会话ssl-ca 可能会成功,但如果 ssl-mode未指定也应该会失败。(漏洞#26226502)

  • mysqlx_get_node_session_from_options()即使前一个 mysqlx_session_option_set()失败也可以成功。(缺陷号 26188740)