8.0.8版本开发里程碑是MySQL Connector/J 8.0分支的最新开发版本,提供了对即将到来的特性的洞察。适用于MySQL Server 5.5、5.6、5.7、8.0版本。它支持Java数据库连接(JDBC) 4.2 API。
包装:安装Connector/J的RPM和Debian软件包现在可以从连接器/J下载页面。
X DevAPI:Connector/J实现了X Dev API的一个新接口,该接口允许检索、添加、删除和更新持久会话延续数据。实现包括以下内容:
一个
SessionConfig
对象,该对象保存会话配置数据集的信息。一个
PersistenceHandler
接口,该接口允许自定义持久性处理程序的实现。一个
PasswordHandler
接口,该接口允许自定义实现密码处理代码。一个
SessionConfigManager
类用于编辑和获取Sessionconfig
对象的实例,并定义PersistenceHandler
和PasswordHandler
。
看到MySQL连接器/ jx DevAPI参考了解更多详情。
X DevAPI:一个新的连接属性,
xdevapi.auth
,用于指定使用X协议的连接的身份验证机制。允许的值是MYSQL41
,平原
,外部
。中的新属性条目见配置属性获取详细信息。X DevAPI:支持行锁为
find ()
X DevAPI的FindStatement
和SelecStatement
接口的扩展方法如下:lockExclusive(),其工作原理类似于
选择……更新
对于关系表。lockShared(),其工作原理与
选择……共享模式锁定
(MySQL 5.7)或选择……为分享
(适用于MySQL 8.0)用于关系表。
看到MySQL连接器/ jx DevAPI参考了解更多详情。
X DevAPI:的扩展语法
在
和不是在
操作符,可以检查子表达式是否包含在另一个子表达式中;例如://对于文档,col .find("$。b IN [100,101,102]").execute();科尔。Find (" $.a中包含5432的文本").execute();科尔。Find ("1 in [1,2,4]").execute();科尔。找到(“{a: 3}在{“a”:1、“b”:2}"). execute ();//对于关系表table .select()。Where ("3 not in [1,2,4]").execute(); tbl.select().where("'qqq' not in $.a").execute(); tbl.select().where("{'a': 1} in {'a': 1, 'b': 2}").execute();
X DevAPI:已经实现了许多更改”
下降
”X DevAPI的方法:删除
dropCollection (schemaName collectionName)
和dropTable (schemaName,表名)
从会话
。添加
dropCollection (collectionName)
和dropTable(表)
来模式
。Schema.dropView ()
现在立即执行并返回无效
;此外,ViewDrop
接口被移除。Collection.dropIndex ()
现在立即执行并返回无效
;也DropCollectionIndexStatement
接口被移除。的”
下降
”现在,即使要删除的对象不存在,方法也会成功。
从MySQL转换
时间
数据java.sql.Date
现在支持。在过去,a获取当前日期()
从TIME列检索数据将抛出SQLException异常
。现在,这样的检索返回ajava.sql.Date
对象,包含从Java纪元开始以毫秒数表示的时间值;同时返回的是警告:”SQL TIME字段中不存在Date部分,因此在转换为java.sql.Date时将其设置为1970年1月1日GMT。”(错误# 26750807)一个新的连接属性,
enabledTLSProtocols
,现在可以用来覆盖用于连接的TLS版本的默认限制,这是由正在连接的MySQL服务器的版本决定的。通过向该选项提供以逗号分隔的值列表(例如,”TLSv1、TLSv1.1 TLSv1.2”)用户可以,例如,阻止连接使用旧的TLS版本,或允许连接使用仅由用户编译的MySQL服务器支持的TLS版本。中的新属性条目见配置属性获取详细信息。感谢Todd Farmer贡献的代码。(错误# 26646676)使用最新的IANA和CLDR时区数据库更新了时区映射。(错误# 25946965)
的新选项
loadBalancingStrategy
连接属性被调用serverAffinity
已添加。新连接属性中列出的服务器serverAffinityOrder
(它应该是连接URL的主机列表中服务器的一个子集)按照它们列出的顺序进行联系,直到服务器可用或服务器列表耗尽,此时将对未列出的主机使用随机负载平衡策略serverAffinityOrder
。请参阅loadBalancingStrategy
和serverAffinityOrder
在配置属性获取详细信息。(错误# 20182108)
重要的变化:随着MySQL Server 8.0.3的变化,系统变量
tx_isolation
和tx_read_only
已经被transaction_isolation
和transaction_read_only
在连接器/J的代码中。为了连接到MySQL 8.0.3,用户应该将Connector/J更新到这个最新版本。如果他们在自己的代码中使用旧的变量,他们也应该对自己的应用程序进行同样的调整。(错误# 26440544)X DevAPI:调用
schema.dropView ()
使用null参数会导致NullPointerException
。(错误# 26750807)X DevAPI:当
dropCollection ()
应用于空集合,则NullPointerException
发生。(错误# 26393132)当使用缓存的服务器端准备语句时,当语句被分离时,对打开语句的引用被保留,会发生内存泄漏;它发生的时候
close ()
方法在一条语句上调用了两次,或者当一条语句的缓存项存在冲突,并且旧的条目尚未从打开的语句列表中关闭和删除时。此修复确保在这两种情况下都正确关闭语句。感谢Eduard Gurskiy对修复的贡献。(Bug #26633984, Bug #87429)由于系统变量的默认值,Bug#63800的回归测试失败
explicit_defaults_for_timestamp
自8.0.2版以来,MySQL Server的功能发生了变化。考虑到这一变化,测试已经进行了调整。(错误# 26501245)在MySQL Server 8.0上运行可调用语句会导致
SQLException异常
:ResultSet来自UPDATE。没有数据。(错误# 26259384)当没有提供自定义信任库时,安全JDBC连接不会回退到默认信任库。(错误# 26243128)
在
com/mysql/jdbc/ServerPreparedStatement.java
,论点resultSetType
和resultSetConcurrency
为了一个召唤Connection.preparedStatement ()
也被替换。(Bug #25874048, Bug #85885)的正确处理
equals ()
方法,因此甚至可以将这些代理对象中的一个与它自己的对象进行比较equals ()
产生了错误的。的正确处理方法equals ()
方法中的所有相关代理。(Bug #21931572, Bug #78313)当在缓存原始语句时再次准备相同的语句时,服务器端准备的语句不会关闭。这是由于新语句无声地替换旧语句的缓存项造成的。当这种情况反复发生时,它最终引起了人们的抱怨
max_prepared_stmt_count
被超过。此修复确保当语句的缓存项替换旧的缓存项时,旧的语句将立即关闭。(Bug #20066806, Bug #74932)