MySQL_Prepared_Statement::getMoreResults()
功能已经实现,因此现在可以使用准备好的语句获取多个结果集。(漏洞 #19147677)-
Connector/C++ 现在支持
defaultAuth
、OPT_CONNECT_ATTR_DELETE
、OPT_CONNECT_ATTR_RESET
、OPT_LOCAL_INFILE
、pluginDir
、readDefaultFile
、readDefaultGroup
和charsetDir
连接选项,它们对应于C API 函数 的MYSQL_DEFAULT_AUTH
、MYSQL_OPT_CONNECT_ATTR_DELETE
、MYSQL_OPT_CONNECT_ATTR_RESET
、MYSQL_OPT_LOCAL_INFILE
、MYSQL_PLUGIN_DIR
、MYSQL_READ_DEFAULT_FILE
、MYSQL_READ_DEFAULT_GROUP
和MYSQL_SET_CHARSET_DIR
选项 。mysql_options()
也可以使用
MySQL_Statement::getQueryTimeout()
和MySQL_Statement::setQueryTimeout()
方法获取和设置语句执行时间限制。(错误#73665,错误#19479950) 添加了这些方法:
Connection::isValid()
检查连接是否存在,Connection::reconnect()
如果连接断开则重新连接。(缺陷 #65640,缺陷 #14207722)Boost 依赖项已从连接器/C++ API 标头中删除。这些标头使用的
boost::variant
类型,使得在没有安装 Boost 的情况下无法使用 Connector/C++ 二进制文件。
对于从 MSI 包安装,
variant.h
文件 夹version_info.h
中缺少 。include/cppconn
(漏洞#19973637)对于几个有效的客户端选项,
getClientOption()
没有返回值。(缺陷号 19940314)将
OPT_CONNECT_ATTR_ADD
参数添加到选项列表时发生内存泄漏。(漏洞#19938970)getClientOption()
如果在连接时未设置指定选项,则引发断言。(漏洞#19938922)-
纠正了几个元数据缺陷:
getTables()
TableType=VIEW
和 时没有返回正确的结果metadataUseInfoSchema=false
。getColumns()
时未返回列信息metadataUseInfoSchema=TRUE
。getColumnName()
返回显示名称而不是实际的列名称。getProcedures()
时返回语法错误metadataUseInfoSchema=false
。
(错误#19505348、错误#19147897、错误#19244736、错误#19505421)
全局变量在 Connector/C++ 代码中的
LOCALHOST
两个位置被引用,这可能会导致 double-free 损坏错误。(错误#74616,错误#19910311)driver/version_info.h
(包含版本宏)未包含在已安装的头文件中。(错误#73795,错误#19553971)-
纠正了几个CMake问题:
CMake可能会错误配置链接标志。
CMake没有 选项
libmysqlclient
路径MYSQL_LIB_DIR
对于测试套件编译,CMake没有
libmysqlclient
从用户指定的路径中获取,即使MYSQL_LIB_DIR
给出DYNLOAD_MYSQL_LIB
了。
(错误#73427、错误#19315635、错误#19370844、错误#19940663)
Connector/C++ 每次
isClosed()
在 a 中调用时 都会发出一个 ping 命令Connection
,而不是仅仅检查是否close()
较早调用过或在较早的操作中发生致命错误时。(缺陷 #69785,缺陷 #17186530)结果集类型设置为
TYPE_FORWARD_ONLY
,Statement::executeQuery()
几乎立即返回,但如果连接丢失MySQL_ResultSet::next()
则MySQL_Prepared_ResultSet::next()
返回 false 而不是抛出异常,从而无法区分连接丢失与结果集的正常结束。MySQL_ResultSet::next()
现在MySQL_Prepared_ResultSet::next()
在连接丢失时抛出异常。(漏洞 #69031,漏洞 #18886278)Connection
对象与它们生成的对象共享内部状态Statement
,防止连接关闭,除非Statement
对象先被销毁。现在通过调用对象析构函数关闭与服务器的连接Connection::close()
,Connection
而无需显式销毁语句对象。