MariaDB Java客户端 1.1.1 发布

MariaDB Java客户端 1.1.1 已发布。您可以在此下载

请参阅此版本的详细信息: 发布说明 和 变更日志;以及 AskMonty 知识库中的 关于 MariaDB Java客户端 页面,以获取关于该客户端的一般信息。

此版本中的新功能

  • 实现 tcpAbortiveClose 选项,用于“硬”套接字关闭 (CONJ-27)
    • 此选项可用于快速连续创建和关闭连接的环境。在这种环境中,一段时间后通常无法创建套接字,因为所有本地“临时”端口都被处于 TCP_WAIT 状态的 TCP 连接占用。使用 tcpAbortiveClose 可以通过重置 TCP 连接(中止性或硬关闭)而不是有序关闭来解决此问题。这通过使用 socket.setSoLinger(true,0) 进行中止性关闭来实现。

此版本中修复的错误

  • 根据标准要求,MySQLStatement 现在通过从 getUpdateCount() 返回 -1 以及从 getResultSet() 返回 null 来指示没有更多结果 (CONJ-14)
  • 引入 nullCatalogMeansCurrent 参数以兼容 ConnectorJ,并将其设为默认值 (CONJ-16)
    • 在此更改之前,接受目录名并返回结果集的 DatabaseMetadata.getTables() 或 DatabaseMetaData 的其他方法会按照 JDBC 标准(null 表示对使用的目录没有限制)处理 null。为了兼容性,此行为现已更改。从 1.1.1 开始,目录名的 null 将表示当前目录。要获得 JDBC 标准行为,需要将 nullCatalogMeansCurrent 设置为 false。
  • DatabaseMedataData.getColumns() 在处理字符数据时,“COLUMN_SIZE”列返回了不正确的值 (CONJ-15)
    • 在此更改之前,返回的是八位字节大小(以字节为单位的长度)。根据使用的字符集,它可能比 CREATE 或 ALTER table 指定的字符长度大 3 倍。此行为已在 1.1.1 中得到纠正。
  • DatabaseMetaData.getColumns() 总是将 MySQL YEAR 数据类型处理为 SMALLINT (CONJ-19)
    • 此行为现已修复,getColumns 根据“yearIsDateType”参数的设置返回 DATE 或 SMALLINT。
  • ResultSetMetaData.getColumnName() 在特殊情况下返回空字符串 (CONJ-17)
    • ResultSetMetaData.getColumnName() 对于结果集中的“非列”(函数、count(*) 等聚合)返回空字符串。修复方法是如果列名为空,则返回列标签。
  • 确保 getObject() 为 CHAR BINARY 返回字节数组 (CONJ-20)
    • 同时确保 getColumnType()、getColumnClassName()、getColumnTypeName() 返回值对固定二进制类型指示 BINARY。
  • 如果使用了 statement timeout,JVM 不会退出 (CONJ-23)
    • Timer 的构造函数已更正,以确保 Timer 线程是后台线程类型。因此 Timer 不会阻止 JVM 退出。
  • 在“流式”结果集上调用 first() 并在之后使用该结果集会生成 NullPointerException (CONJ-24)
    • 现在,由于流式结果集不可滚动,将在 first() 调用中尽早抛出 SQLException。
  • 如果存在一个打开的流式结果集但未在该结果集上调用 next(),Connection.close() 将会挂起 (CONJ-25)

 

发布者:MariaDB Foundation

Daniel Bartholomew 是 MariaDB 版本经理。他撰写了两本与 MariaDB 相关的书籍:《Getting Started with MariaDB》(现为第 2 版)和《MariaDB Cookbook》,均由 Packt 出版。