Documentation Home
MySQL 连接器/J 8.0 发行说明  /  MySQL Connector/J 8.0.17 的变化(2019-07-22,全面上市)

MySQL Connector/J 8.0.17 的变化(2019-07-22,全面上市)

版本 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 对象和数组的两个新运算符和 OVERLAPSNOT OVERLAPS

  • X DevAPI: 现在支持数组字段的索引。有关详细信息,请参阅 X DevAPI 用户指南中的 索引数组字段

  • 和 文件现在包含在独立于平台的 tarball 和 zip 文件中提供的 Connector/J JAR 存档中READMELICENSE(漏洞 #29591275)

  • 许多私有参数 ProfilerEvents(例如, hostname)没有用于从类实例外部访问它们的 getter。现在已经为类的所有参数添加了 Getter 方法。(缺陷 #20010454,缺陷 #74690)

  • 新的连接属性databaseTerm设置应用程序中使用这两个术语中的哪一个来指代数据库。该属性采用两个值之一 CATALOGorSCHEMA并使用它来确定哪些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)