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 Java Client。请将此库上传到 maven 仓库。我很好奇。为什么您选择了 Drizzle JDBC 作为基础而不是 MySQL J/Connector?您是否计划实现 MySQL J/Connector 的可选 URL 参数,例如 cacheServerConfiguration、useLocalSessionState、rewriteBatchedStatements、useAffectedRows。
感谢出色的工作,Pavel Cibulka
我们不能以 MySQL Connector/J 作为基础,它是 GPL 许可的,衍生作品也只能是 GPL。有些用户希望拥有更自由的许可,因此 ConnectorJ 不是一个选项。至于可选的 URL 参数,目前没有引入新参数的计划,除非发现它们很重要。您列出的 4 个参数中,也许 rewriteBatchedStatements 可能有一些价值,需要进行基准测试,但其他参数乍一看似乎不太有趣?我需要一些关于“上传到 maven 仓库”的帮助。我试图了解如何操作,但尝试了几分钟就睡着了 :) 如果您或任何其他熟悉 maven 的人能在 FreeNode 的 #maria IRC 频道告诉我如何操作,那就太好了。谢谢!
MariaDB 的 C 客户端库支持 Android 和 iOS 吗?谢谢
批准。
抱歉,我问错了地方,这篇文章是关于 Java 客户端库的。
谢谢 Daniel,我假设你回答“批准”意味着将来会支持是吗?什么时候?
谢谢
抱歉,“批准”消息是邮件批准评论系统的一个小故障,由于某种原因,它发布了这个,而不是按预期批准您的评论。
我不了解 C 客户端库以及对 Android 和 iOS 的支持。