版本 8.0.17 是 8.0 系列 MySQL Connector/J 的最新通用版本。它适用于 MySQL 服务器版本 8.0、5.7 和 5.6。它支持 Java 数据库连接 (JDBC) 4.2 API,并实现了 X DevAPI。
-
X DevAPI: 以下方法已被弃用:
Collection.find().where()
Collection.modify().where()
Collection.remove().where()
X DevAPI:现在支持 JSON 对象和数组的两个新运算符和
OVERLAPS
。NOT OVERLAPS
X DevAPI: 现在支持数组字段的索引。有关详细信息,请参阅 X DevAPI 用户指南中的 索引数组字段 。
和 文件现在包含在独立于平台的 tarball 和 zip 文件中提供的 Connector/J JAR 存档中
README
。LICENSE
(漏洞 #29591275)许多私有参数
ProfilerEvents
(例如,hostname
)没有用于从类实例外部访问它们的 getter。现在已经为类的所有参数添加了 Getter 方法。(缺陷 #20010454,缺陷 #74690)-
新的连接属性
databaseTerm
设置应用程序中使用这两个术语中的哪一个来指代数据库。该属性采用两个值之一CATALOG
orSCHEMA
并使用它来确定哪些Connection
方法可用于设置/获取当前数据库,哪些参数可在各种DatabaseMetaData
方法中用于过滤结果,以及 方法ResultSet
返回的 哪些字段DatabaseMetaData
包含数据库标识信息。有关详细信息,请参阅 配置属性databaseTerm
中 的条目 。此外,连接属性
nullCatalogMeansCurrent
已重命名为nullDatabaseMeansCurrent
. 旧名称仍然是连接属性的别名。感谢 Harald Aamot 对补丁的贡献。(错误#11891000,错误#27356869,错误#89133)
GitHub 上的 Connector/J 存储库中添加了 一个新
CONTRIBUTING
文件 ,它提供了代码贡献和错误报告指南。现在可以从 Connector/J 源代码生成 MySQL Connector/JX DevAPI Reference 作为 Ant 目标,
xdevapi-docs
.添加了对超过 60 个字符(最多 255 个字符)的主机名的支持,因为它们现在受 MySQL Server 8.0.17 支持。
添加了对
utf8mb4_0900_bin
排序规则的支持,MySQL Server 8.0.17 现在支持该排序规则。-
缓存的服务器端准备好的语句不能再通过调用
Statement.close()
两次来有效关闭。要关闭和取消缓存语句,请执行以下操作之一:关闭连接(假设连接正在跟踪所有打开的资源)。
使用特定于实现的方法
JdbcPreparedStatement.realClose().
Statement.setPoolable(false)
通过在关闭语句之前或之后 调用该方法,将语句设置为不可池化 。
X DevAPI:当 X DevAPI 表达式中 的
IN
运算符后跟方括号 ([
) 时,映射到 X 协议中的错误操作。(漏洞 #29821029)使用复制连接时,从中检索数据
BlobFromLocator
会生成一个ClassCastException
. 这是由于一些错误和不必要的转换,已被此修复程序删除。(缺陷 #29807741,缺陷 #95210)ResultSetMetaData.getTableName()
当无法为列返回适用的结果时,返回 null。但是,JDBC 文档指定了在这种情况下要返回的空字符串。此修复使该方法的行为与记录的一样。getCatalogName()
对和 进行了相同的更正getSchemaName()
。(缺陷 #29452669,缺陷 #94585)ResultSetImpl.getObject()
,当自动装箱从列中检索到的原始类型的值时,当检索到的值为 null 时返回一个非 null 对象。(缺陷 #29446100,缺陷 #94533)ResultSetImpl.getDouble()
效率非常低,因为它调用FloatingPointBoundsEnforcer.createFromBigDecimal
,它不必要地BigDecimal
为固定的最小和最大边界重新创建对象。通过此修复,对象在首次创建BigDecimal.valueOf(min)
后BigDecimal.valueOf(max)
会被缓存,从而避免重新创建它们。(缺陷 #29446059,缺陷 #94442)启用
logSlowQueries
导致许多不必要的LogUtils.findCallingClassAndMethod()
. 通过此修复,LogUtils.findCallingClassAndMethod()
仅在profileSQL
为真时调用,即使在这种情况下,调用次数也会减少到最少,以避免函数用于生成过多的堆栈跟踪数据。感谢 Florian Agsteiner 为修复做出的贡献。(错误#29277648、错误#94101、错误#17640628、错误#70677)a返回的字符在
ResultSet
使用server端时出现乱码PreparedStatement
,查询涉及数字与多字节字符串的拼接。这是由于涉及数字到字符串转换的问题,此修复已更正该问题。(漏洞#27453692)调用
ProfilerEvent.pack()
导致ArrayIndexOutOfBoundsException
. 这是由于数据类型处理不当造成的,此修复程序已纠正该问题。(缺陷 #11750577,缺陷 #41172)