-
会话现在可以为查找或选择语句返回的文档或行获取锁,以防止在持有锁时更改其他会话的返回值(前提是使用了适当的隔离级别)。对于给定的查找或选择语句,可以多次请求锁定。只有最后的请求才会被执行。获得的锁一直持有到当前事务结束。
对于 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 中指定一个新选项来指示身份验证机制。允许的值为PLAIN和MYSQL41。选项名称和值不区分大小写。该SessionSettings::Options对象支持AUTH具有相同允许值的新枚举。对于 C 的 X DevAPI,
auth可以在连接字符串或 URI 中指定新设置以指示身份验证机制。允许的值为PLAIN和MYSQL41。选项名称和值不区分大小写。一个新MYSQLX_OPT_AUTH常量被mysqlx_options_set()函数识别,具有允许的值MYSQLX_AUTH_PLAIN和MYSQLX_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()对于较旧的服务器,它们会报告错误。