-
会话现在可以为查找或选择语句返回的文档或行获取锁,以防止在持有锁时更改其他会话的返回值(前提是使用了适当的隔离级别)。对于给定的查找或选择语句,可以多次请求锁定。只有最后的请求才会被执行。获得的锁一直持有到当前事务结束。
对于 X DevAPI,
CollectionFind
实现TableSelect
和.lockExclusive()
方法.lockShared()
,分别在返回的文档或行上请求独占锁或共享锁。这些方法可以.bind()
在 final 之后和之前 调用.execute()
。对于 C 的 X DevAPI, 可以调用新函数来请求对返回的文档或行的独占或共享锁,或者释放锁。参数可以 是 、 或 。前两个值指定要获取的锁的类型。 从语句中删除任何行锁定请求。
mysqlx_set_locking(
stmt
,lock
)lock
ROW_LOCK_EXCLUSIVE
ROW_LOCK_SHARED
ROW_LOCK_NONE
ROW_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
.如果删除的对象不存在, 所有方法都会成功。
drop
XXX
()
-
添加了以下
Collection
方法:addOrReplaceOne()
、getOne()
、replaceOne()
和removeOne()
。和方法仅适用于 MySQL 8.0.3 及更高版本的服务器
addOrReplaceOne()
。replaceOne()
对于较旧的服务器,它们会报告错误。