# Changelog
# $Id: CHANGES,v 1.38.4.206 2005/05/12 15:25:54 mmatthews Exp $
05-17-05:版本3.2.1-alpha
- 现已不再重视Autoreconnect功能(即autoReconnect=true)。
如果尝试并使用它将抛出异常,使用“enableDeprecatedAutoreconnect=true”可继续使用autoReconnect。但是,在Connector/J 3.3中将删除该项特性,请参见手册中关于不需要使用autoReconnect的相应解决方案。
- 现在,驱动程序将检查是否设置了服务器变量“init_connect”,如果设置了该变量,将检查autocommit(自动提交)设置,并应用它。
- 如果连接的服务器版本在5.0.x以上,而且Statement.setFetchSize( > 0),驱动程序将尝试使用服务器预处理语句,并使用结果集“cursors”获取语句。
- ServerPreparedStatements现在能正确地将BLOB/CLOB数据以“流方式”发送至服务器。你可以使用属性“blobSendChunkSize”配置程序块大小的阈值(默认值为1MB)。
- 支持sql模式NO_BACKSLASH_ESCAPES以及非服务器端预处理语句。
12-23-04:版本3.2.0-alpha
-更正了DatabaseMetaData.supportsCatalogIn*()错误的返回值。
-使用ServerPreparedStatements以及MySQL 5.0或更高版本时,支持基于“cursor”的结果集。结果集需为“仅正向”结果集,并需启用针对该项特性的非零获取大小。
- 重新分解了预处理语句的where逻辑,服务器端预处理语句保持有效。
10-07-05:版本3.1.11-stable
- 更正了BUG#11629:当字符编码是“utf8”时控制台上的伪“!”。
-更正了为丢失“;”(用于“plain”语句)的测试案例生成的语句。
- 更正了BUG#11663:为服务器端预处理语句生成的不正确的testcase脚本。
-更正了因修补BUG#11552而导致的回归,对于BUG#11552,当整数处于正号类型的范围内时,对于无符号整数,该缺陷将导致驱动程序返回错误值。
-将源代码移到了svn repo。
-更正了BUG#11797:转义标志不考虑用于转义用途的层套式单引号。
-使用服务器端预处理语句时,不识别GEOMETRY类型。
-更正了BUG#11879:ReplicationConnection不会切换至从连接,抛出“目录不能为空”异常。
-更正了BUG#12218,主连接和具有复制连接的从连接之间共享的属性。
- 更正了BUG#10630。如果语句已关闭,Statement.getWarnings()无法与NPE一起工作。
-需要时,在PreparedStatement.ParseInfo()中,即能从SQL获取char[]。
-更正了BUG#12104,服务器端预处理语句不能处理Geometry类型。
-更正了BUG#11614,使用多字节字符编码时,StringUtils.getBytes()不工作,在“_characters_”中指定了长度。
-更正了BUG#11798,Pstmt.setObject(...., Types.BOOLEAN)抛出异常。
-更正了BUG#11976,maxPerformance.properties拼错“elideSetAutoCommits”。
-更正了BUG#11575,对于在Window平台上的服务器,DBMD.storesLower/Mixed/UpperIdentifiers()通报不正确的值。
-更正了BUG#11190,在ResultSet.moveToCurrentRow()之前调用了ResultSet.moveToInsertRow()时,ResultSet.moveToCurrentRow()不起作用。
-更正了BUG#11115,使用服务器端预处理语句和.setBytes()时,VARBINARY数据发生崩溃。
-更正了BUG#12229,服务器端预处理语句挂起explainSlowQueries。
-更正了BUG#11498,转义处理器不考虑用双引号分隔的字符串。
-对于服务器端预处理语句,增加了对更改流参数的限制。只要在执行前设置了“_all_”流参数,可不必调用.clearParameters()。(由于客户端/服务器协议的限制,预处理语句不能复位服务器端的“_individual_ stream”数据)。
-修改了Field类,*Buffer和MysqlIO,能够识别大于Integer.MAX_VALUE的字段长度。
-更新了DBMD.supportsCorrelatedQueries(),当版本高于4.1时返回“真”,更新了supportsGroupByUnrelated()使之返回“真”,并更新了getResultSetHoldability()使之返回HOLD_CURSORS_OVER_COMMIT。
-更正了BUG#12541,DatabaseMetaData.getIndexInfo()中的catalog(目录)参量处理,它也意味着对DatabaseMetaData中下述方法的更改:
- getBestRowIdentifier()
- getColumns()
- getCrossReference()
- getExportedKeys()
- getImportedKeys()
- getIndexInfo()
- getPrimaryKeys()
- getProcedures() (and thus indirectly getProcedureColumns())
- getTables()
上述所有方法中的“catalog”参量现具有下述行为特征:
-如果指定为Null,表示不会使用catalog来过滤结果(因此将搜索所有数据库),除非在JDBC URL属性中设置了“nullCatalogMeansCurrent=true”。
-指定为“”表示当前catalog,尽管它不是十分兼容JDBC规范,但它是为传统用户保留的。
-指定catalog,使之按API文档中阐明的方式工作。
-使得jdbc2.optional软件包中的“封装”连接能够使用Connection.clientPrepare()(使用ConnectionPoolDataSource实例创建连接)。
-为客户端增加了Connection.isMasterConnection(),以确定多主机主/从连接是否连接至列表中的第1个主机。
-更正了BUG#12753,URL属性用于“=”的标志会导致“sessionVariables=....”无法正确地参数化。
-更正了BUG#11781,当DatabaseMetaData方法使用该信息时,所引用的外键信息不能被正确解析。
-考虑到流缓冲区大小和信息包报头,“sendBlobChunkSize”属性现在与“max_allowed_packet”密切结合在一起,当max_allowed_packet的大小类似于默认的“sendBlobChunkSize”时(为1MB),能避免PacketTooBigExceptions。
-CallableStatement.clearParameters()现能清除与INOUT/OUTPUT参数和INPUT参数相关的属性。
-更正了BUG#12417,Connection.prepareCall()是区分大小写的数据库名称(在Windows系统上)。
-更正了BUG#12752,对于版本高于4.0.x的服务器,Cp1251不正确地映射至win1251。
-更正了BUG#12970,使用DatabaseMetaData.getColumns()时,java.sql.Types.OTHER返回BINARY和VARBINARY列。
-引用参数约束列表前,ServerPreparedStatement.getBinding()现在将检查语句是否已关闭,以避免抛出NullPointerException。
-更正了BUG#13277,无论何时,当调用需要连接引用的方法时,来自Statement.getGeneratedKeys()的ResultSetMetaData将导致NullPointerExceptions的抛出。
-自5.0起,Field类ResultSetMetaData.getColumnClassName()和ResultSet.getObject(int)的反向移植出现了变化,更正了VARCHAR BINARY/VARBINARY和相关类型有关的行为。
-更正了NullPointerException,当参数为NULL时,在很多DatabaseMetaDataMethods中将“catalog”参数转换为byte[]时出现的异常(对于结果集)。(根据JDBC规范,从技术角度上不允许“null”,但从历史观点上,我们允许使用它)。
-从5.0起,VAR[BINARY|CHAR] [BINARY]类型检测的反向移植。
-即使无法打开本地文件,也能读取MysqlIO.sendFileToServer()中响应,否则,下一个发出的查询将失败,这是因为,它正在读取对发送至服务器的空LOAD DATA INFILE信息包的响应。
-避开了BUG#13374,已关闭结果集上的ResultSet.getStatement()返回NULL(按照JDBC 4.0规范,但不具有向后兼容性)。将连接属性“retainStatementAfterResultSetClose”设为“真”,以便能够在通过.getStatement()关闭了结果集后检索结果集的语句(默认为“假”以便与JDBC兼容,并降低使用JDBC的代码名泄漏语句实例的机会)。
-更正了BUG#13453,URL配置参数不允许在它们的值中使用“&”或“=”。现在JDBC驱动程序能够对配置参数进行相应地解析,就像它们是使用application/x-www-form-urlencoded格式(在java.net.URLDecoder中指定,http://java.sun.com/j2se/1.5.0/docs/api/java/net/URLDecoder.html)进行编码那样。
如果在配置属性中出现字符“%”,现在必须用“%25”表示,它是使用“application/x-www-form-urlencoded”编码使“%”的已编码形式。
-配置属性“sessionVariables”现在允许你指定以“@”符号开始的变量。
-更正了BUG#13043,为低于4.1.0版的服务器允许了“gatherPerfMetrics”时,如果查询未使用任何表,结果集的构造函数将抛出NullPointerException。
06-23-05:版本3.1.10-stable
-更正了因无指定数据库而导致的MysqlIO.changeDatabaseTo()中的异常。
-首次实现了用于PreparedStatement.getParameterMetadata()的ParameterMetadata。仅能与CallableStatements一起完全发挥作用,这是因为当前的服务器端预处理语句会将所有参数返回为VARCHAR类型。
06-22-05:版本3.1.9-stable
-彻底检查了字符集配置,现在所有相关项均能位于属性文件中。
-如果在用于Windows-31J的服务器上可用,驱动程序能正确使用CP932,以及CP932和MS932 java编码名称,否则将求助于仅为近似的SJIS。目前,仅在MySQL-5.0.3和更高版本上(以及MySQL-4.1.12/13,取决于何时反向移植字符集),才能可靠地支持任何CP932变体。
-更正了BUG#9064,com.mysql.jdbc.PreparedStatement.ParseInfo对toCharArray()的不必要调用。
-更正了Bug#10144,如果serverPrepare()失败,ServerPreparedStatement中的内存泄漏。
-将清单文件实际写入正确位置,以便其终止于二进制jar文件。
-增加了“createDatabaseIfNotExist”属性(默认为“假”),该属性会使驱动程序请求服务器创建在URL中指定的数据库(如果该数据库不存在的话)。必须拥有恰当的数据库创建权限才能执行该任务。
-更正了BUG#10156,对于ResultSet.getInt(),无符号SMALLINT被当作带符号类型,更正了所有的UNSIGNED整数和服务器端预处理语句,以及用于UNSIGNED TINYINT的ResultSet.getObject()。
-更正了BUG#10155,解析客户端预处理语句时不能识别双引号。
-使得enableStreamingResults()在com.mysql.jdbc.jdbc2.optional.StatementWrapper上可见。
-使得ServerPreparedStatement.asSql()能正确工作,自动解释功能可以与服务器端预处理语句一起工作。
-使得兼容JDBC2的软件包成为公共包,以便允许访问厂家扩展。
-整理了剖析工具事件的记录功能,移动了代码以将剖析工具事件转储为com.mysql.jdbc.log.LogUtils的字符串,以便第三方能够使用它。
- DatabaseMetaData.supportsMultipleOpenResults()现在返回“真”。DBMD刚刚丢失某一内容时,驱动程序在一段时间内支持它。
-更正了BUG#10310,驱动程序不支持用来调用存储程序的{?=CALL(...)}。其中包括,为DatabaseMetaData.getProcedures()和getProcedureColumns()增加了函数检索支持。
-更正了BUG#10485,用ResultSet.getString()检索YEAR(2)时抛出SQLException。现在,驱动程序总是将YEAR类型当作java.sql.Dates对待,并为getString()返回正确值。
另外,可以将“yearIsDateType”连接属性设置为“假”,并将值作为SHORT进行处理。
-当“tinyInt1isBit=true”时(默认),使用新的配置属性“transformedBitIsBoolean”(默认为“假”),对于TINYINT(1)列,返回的数据类型可在Types.BOOLEAN和Types.BIT之间切换。如果设为“假”(默认),对于TINYINT(1)列,DatabaseMetaData.getColumns()和ResultSetMetaData.getColumnType()将返回Types.BOOLEAN。如果为“真”,将返回Types.BOOLEAN。无论该配置属性是如何设置的,如果允许了“tinyInt1isBit”,具有TINYINT(1)类型的列将作为ResultSet.getObject(..)的java.lang.Boolean实例返回,而且ResultSetMetaData.getColumnClassName()将返回“java.lang.Boolean”。
-更正了BUG#10496,与cp932或eucjpms一起使用“characterSetResults”属性时将抛出SQLException。
-重组了目录格局,源码现位于“src”文件夹下,创建时不填充父目录,输出位于“./build”下,分发版位于“./dist”下。
-这类支持/缺陷跟踪特性,将“autoGenerateTestcaseScript”设置为“真”时,该特性能够为STDERR生成.sql测试脚本。
-更正了BUG#10850,使用服务器端预处理语句时,不会将“0长度”流发送给服务器。
-现在,如果设置了“cachePrepStmts=true”,也会使连接进行高速缓冲操作,检查驱动程序的执行情况,以判断预处理语句是否能够在服务器端工作,并能在连接的生命期内对服务器端预处理语句进行高速缓冲处理。与以往一样,参数“prepStmtCacheSize”负责控制这些高速缓冲区的大小。
-进行了尝试,以更为优美的方式处理OutOfMemoryErrors。尽管所能作的事情不是很多,但在大多数情况下它们能关闭所遇到的连接,这样,进一步的操作不会进入状态不明的连接。出现OOM时,连接上的任何进一步操作均将失败,同时抛出“连接已关闭”异常,还将列出作为隐式连接关闭事件原因的OOM异常。
-如果未要求,执行服务器端预处理语句时不发送COM_RESET_STMT。
-驱动程序将检测是否正在运行MySQL-5.0.7或更高版本,而且不扫描正在处理的语句中的“LIMIT ?[,?]”,这是因为目前服务器支持这类查询。
-更正了BUG#11115,使用服务器端预处理语句和ResultSet.getBytes()时,VARBINARY数据发生崩溃
-Connection.setCatalog()想在能够识别“useLocalSessionState”配置属性,将该属性设为“真”时,如果所请求的catalog与当前catalog相同,会阻止驱动程序将“USE ...”发送给服务器。
-增加了下述配置捆包,通过“useConfigs”配置属性使用1个或多个:
* maxPerformance:考虑后果时的最大性能
* solarisMaxPerformance:Solaris的需性能,在可能的情况下避免系统调用。
* 3-0-Compat:与Connector/J 3.0.x功能兼容。
-增加了“"maintainTimeStats”配置属性(默认为“真”),用于通知驱动程序是否应跟踪上次查询时间,以及上次成功将信息包发送到服务器的时间。如果将其设置为“假”,将删除每查询的两次系统调用。
-更正了BUG#11259,autoReconnect的ping操作会导致连接启动时的异常。
-更正了BUG#11360,Connector/J将查询两次转储到SQLException。
-更正了PreparedStatement.setClob(),不接受Null作为参数。
-更正了BUG#11411,生产包不包括JBoss集成类。
-删除了使用“usage advisor”时无意义的“开销昂贵的类型转换”告警。
04-14-05:版本3.1.8-stable
-更正了DatabaseMetaData.getTables(),未要求时,以请求表的类型之一返回视图。
-在5.0.3和更高版本的MySQL中,增加了对新精度数学DECIMAL类型的支持。
-更正了ResultSet.getTime(),作用于服务器端预处理语句的Null值上时抛出NPE。 -使Connection.ping()成为public方法。 -更正了Bug#8868,DATE_FORMAT()查询从getObject()返回BLOB。 - ServerPreparedStatements现在能正确地将BLOB/CLOB数据以“流方式”发送至服务器。你可以使用属性“blobSendChunkSize”配置程序块大小的阈值(默认值为1MB)。
-生成预处理语句时,BlobFromLocator现在能使用正确的ID引用。
-使用连接属性“sessionVariables”的逗号分隔列表方式传递它们,能够在连接时预先设置服务器端会话变量。
-为使用“autoReconnect=true”的用户更正了ping()中的回归问题。
-更正了BUG#9040,PreparedStatement.addBatch()不能与服务器端预处理语句和流式BINARY数据一起工作。
-更正了BUG#8800,对于运行于区分大小写的文件系统上的服务器,DBMD.supportsMixedCase*Identifiers()返回错误值。
-更正了BUG#9206,对于characterSetResults配置属性,不能使用“UTF-8”。
-更正了BUG#9236,连续BUG#8868,在查询中使用了多个函数,查询本应返回非字符串类型,但当临时表解析它们时,返回类型突然变为难以理解的二进制字符串(针对服务器限制采取了相应的避规措施)。此外,还更正了类型为CHAR(n) CHARACTER SET BINARY的字段,使其能够为RSMD.getColumnClassName()和ResultSet.getObject()返回正确/匹配的类。
-更正了BUG#8792,对于“仅正向/只读”结果集(我们支持该方式),DBMD.supportsResultSetConcurrency()未返回“真”。
-更正了BUG#8803,访问时,DBMD.getBestRowIdentifier()的“DATA_TYPE”列导致ArrayIndexOutOfBoundsException(事实上,未返回任何值)。
-检查了将char/varchar列数据转换为数值时的空字符串(''),如果配置属性“emptyStringsConvertToZero”被设为“假”,抛出异常(为了与3.0版的向后兼容,默认情况下,将其设为“真”,但在3.2版中,最可能的默认设置为“假”)。
-更正了BUG#9320,在特定条件下,当未使用服务器端预处理语句时,PreparedStatement.getMetaData()在数据库中插入了空白行。
-Connection.canHandleAsPreparedStatement()现在将尽“最大努力”来识别带有占位符的LIMIT子句,目的在于,对于服务器目前不能将其当作服务器端预处理语句予以处理的语句,为其生成处理措施时,获得较少的错误肯定结果。
-更正了build.xml,如果log4j不可用,不编译log4j日志功能。
-增加了对c3p0连接池的(http://c3p0.sf.net/)验证/连接检验器接口的支持,如果服务器可用,该检验器接口将使用轻型“COM_PING”调用。要想使用它,请配置c3p0连接持的“connectionTesterClassName”属性,以使用“com.mysql.jdbc.integration.c3p0.MysqlConnectionTester”。
-更好的检测引用字符串的内外LIMIT,以便驱动程序能更加正确地判断是否可以在服务器上处理预处理语句。
-更正了BUG#9319,当驱动程序试图确定参数计数/类型时,分不清不同数据库中具有相同名称的存储程序。
-为ResultSet和Statement实施增加了最终确定器,以便与JDBC规范兼容,该规范要求,如果它们未明确关闭,在无用单元收集阶段应关闭这些资源。
-更正了BUG#9682,对于具有DECIMAL参数和存储要求的存储程序,如果包含“,”,将失败。
- PreparedStatement.setObject(int, Object, int type, int scale)现在能使用针对BigDecimal实例的标度值。
-更正了BUG#9704,当已有结果集是.close()d时,Statement.getMoreResults()可能抛出NPE。
-性能度量特性现能收集关于SELECT中引用的表数量的信息。
-现在能够自动配置日志系统。如果用户通过URL属性“logger”或系统属性“com.mysql.jdbc.logger”设置了值,那么将使用用户的设置,否则将采用下述步骤自动检测设置:
如果Log4j可用,将使用它,接下来是JDK1.4日志功能,再接下来是STDERR日志功能。
-更正了BUG#9778,即使数据库版本不支持视图,如果请求了视图,DBMD.getTables()不应返回表。
-更正了驱动程序,当在服务器端预处理语句返回的结果集上调用了ResultSet.getBoolean()时,对于“-1”不返回“真”。
-为.jar文件增加了Manifest.MF文件以及实施信息。
-在Field.isOpaqueBinary()中提供了更多测试,以识别晦涩的二进制字段(即具有CHAR(n)和CHARACTER SET BINARY类型的字段),这类字段来自各种标量函数和聚合函数(返回字符串)的输出。
-更正了BUG#9917,出于传统方面的考虑,即使它与JDBC不兼容,也应接受DBMD方法中用于catalog(使用当前值)的Null。将连接属性“nullCatalogMeansCurrent”设置为“假”可禁止它(在C/J 3.2.x中,它是默认设置)。
-更正了BUG#9769,出于传统方面的考虑,即使它与JDBC不兼容,也应接受DBMD中用于名称(“%”)的Null。将连接属性“nullNamePatternMatchesAll”设置为“假”可禁止它(在C/J 3.2.x中,它是默认设置)。
02-18-05:版本3.1.7-stable
-更正了BUG#7686,Timestamp关键字列数据需要分离的“_binary”,用于UpdatableResultSet.refreshRow()。
-更正了BUG#7715,对于服务器端预处理语句和可更新结果集,Timestamps错误地转换为字符串。
-检测字符串表单(以前为整数)中的sql_mode变量,并恰当调整字符串的引用方法。
-增加了“holdResultsOpenOverStatementClose”属性(默认为“假”),它能将statement.close()的结果集保持打开状态,或执行相同语句(由Kevin Burton推荐)。
-更正了BUG#7952,在故障切换配置下回退至主连接时的无限递归。
-如果允许了高速缓冲,将禁止4.1.10版之前MySQL-4.1版本的多语句功能(如果以允许的话),这是因为在该配置下,服务器会返回错误的结果。
-更正了configureClientCharset()中的重复代码,该类代码将阻止useOldUTF8Behavior=true的恰当运行。
-删除了“dontUnpackBinaryResults”功能,现在,驱动程序将按原样保存来自服务器端预处理语句的结果(与服务器提供的相同,并在需要时展开)。
-更正了BUG#8096,使用服务器端预处理语句时,模拟定位器破坏了二进制数据。
-更正了ServerPreparedStatement.serverPrepare()的同步事宜,如果在多个线程间共享连接,可能会导致死锁/崩溃。
-默认情况下,驱动程序能通过各种Connection.prepareStatement()的各种变体扫描SQL,以判断它是否是能够在服务器端支持的语句类型,如果不被服务器端支持,会将其作为客户端模拟预处理语句进行处理(BUG#4718))。也可以通过在JDBC URL中传递“emulateUnsupportedPstmts=false”禁止该特性。
-从CallableStatement中删除了用作输入/输出参数的“_binary”引介词。
-对于注册为*BINARY的输出参数,总返回byte[]。
-对于PreparedStatement.setObject(n, "true", Types.BIT),将布尔“True”的正确值发送给服务器。
-更正了与连接有关的缺陷,当语句不是服务器端预处理语句时,无法对来自prepareStatement()的语句进行高速缓冲处理。
-使用ResultSet.get(..., cal)和PreparedStatement.set(...., cal)时,如果客户端和服务器均位于GMT(格林威治标准时间)时区,选择进行时间调整的正确方向。
-增加了“dontTrackOpenResources”选项(默认为“假”以便兼容JDBC),对于具有不良特性的应用程序(例如应关闭语句时,却未关闭语句的应用程序),它有助于改善内存的使用。
-更正了BUG#8428,ResultSet.getString()不能保持存储在服务器上的格式,仅当将“noDatetimeStringSync”属性设置为“真”(默认为“假”)时,才能允许缺陷更正。
-更正了使用“usage advisor”而且结果集已关闭时ResultSet.realClose()中的NPE。
-更正了BUG#8487,不创建流式结果集的PreparedStatements。
-不将NULL传给给ResultSet.getNativeConvertToString()中的String.valueOf(),原因在于String.valueOf()会对其进行字符串处理(即返回“null”),对于所述方法,这是错误的。
-更正了BUG#8484,当需要舍入操作以设定标度时,ResultSet.getBigDecimal()抛出异常。如果非舍入性BigDecimal.setScale()失败,驱动程序现在将选择“半向上”舍入模式。
-增加了“useLocalSessionState”配置属性,将其设置为“真”时,JDBC驱动程序将认为应用程序行为良好,并会使用java.sql.Connection提供的方法仅设置autocommit和事务隔离级别,因此,能够在大多数情况下处理这些值,而不引发数据库服务器循环。
-为连接池实施实例的语句增加了enableStreamingResults(),可检查Statement.setFetchSize()是否存在兼容规范的值。调用“Statement.setFetchSize(>=0)”可禁止关于该语句的流式结果。
-增加了对MySQL-5.0.3中BIT类型的支持。驱动程序会将BIT(1-8)当作JDBC的BIT类型对待(映射至java.lang.Boolean),这是因为当声明了“< 9 bits”)时,服务器目前不会发送能确定比特字段(bitfield)大小的足够信息。BIT(>9)将被当作VARBINARY对待,并当调用getObject()时返回byte[]。
12-23-04:版本3.1.6-stable
-更正了SocketInputStream.read()的挂起问题,当驱动程序必须直接截取结果集,而不是跟踪结果集末尾的“LIMIT n”时,与Statement.setMaxRows()和多个结果集一起使用时SocketInputStream.read()挂起。
-更正了BUG#7026,DBMD.getProcedures()不考虑catalog参数。
12-02-04:版本3.1.5-gamma
-更正了字符串常数和动态字符串之间的比较事宜,或是toUpperCase()d或是toLowerCase()d,以使用Locale.ENGLISH,将其用作英语的覆盖规则。此外,还使用StringUtils.indexOfIgnoreCase()替代了.toUpperCase().indexOf(),以避免创建很短的过渡性字符串实例。
-更正了BUG#5235,服务器端预处理语句不考虑“zeroDateTimeBehavior”属性,而且当使用ResultSet.getObject()时会导致类抛弃异常,这是因为总返回全0字符串。
-更正了批更新和服务器预处理语句有关的问题,与以前的集合相比,如果在给定的批参数集合中发生了类型变更,服务器预处理语句不会检测这类变化,从而导致服务器返回错误“Wrong arguments to mysql_stmt_execute()”。
-解决了当时间戳的字符串表示包含后缀“.”但其后没有数字时的情况。
-更正了BUG#5706,对ResultSet.getNativeString()中以前存在字符串实例的低效检测。
-不抛出针对Connection.releaseSavepoint()的异常。
-解码来自ServerPreparedStatements的日期时,默认情况下使用按会话进行的日历实例(通过设置“dynamicCalendars=true”,设置为早期的性能较低的方式)。
-增加了实验性配置属性“dontUnpackBinaryResults”,它延迟了解包二进制结果集取值的功能,直至请求了它们为止(默认情况下设为“假”)。对于某些usecase/jvm组合,它对无用信息收集器更友好。
-更正了BUG#5729,对来自服务器端预处理语句结果集的UNSIGNED BIGINT,未能正确解包。
-更正了BUG#6225,ServerSidePreparedStatement,分配了不必要的具有短生存时间的对象。
-删除了ResultSet构造函数中有害的新Throwable(),原因在于不良合并(导致任何所创建结果集永远不会使用的新对象),分析BUG#6359时发现。
-更正了在EscapeProcessor.escapeSQL()中过早创建StringBuffer的问题,而且在不需要转义功能时仍返回字符串(防止不必要的对象分配)。分析BUG#6359时发现。
-为可更新结果集中的键比较使用“null-safe-equals”。
-更正了BUG#6537,如果需要0填充,作用在Decimal上的SUM()以及服务器端预处理语句均将忽略标度(由于服务器将其转换为DOUBLE,0填充将结束,将其转换为BigDecimal类型的字符串进行解析时,丢失所有的填充“0”)。
-创建DBMD查询时使用DatabaseMetaData.getIdentifierQuoteString()。
-如果在服务器上LOAD DATA LOCAL INFILE小于“max_allowed_packet”,使用1MB的信息包发送文件。
-更正了BUG#6399,对于多字节字符集,ResultSetMetaData.getColumnDisplaySize()返回错误值。
-通过“autoDeserialize”属性(默认为“假”),能够对保存在BLOB中的java.lang.Objects的自动串并转换功能进行配置。
-修改了Field.isOpaqueBinary()以检测“CHAR(n) CHARACTER SET BINARY”,从而能够支持用于ResultSet.getObject()的固定长度二进制字段。
-使用我们自己的缓冲输入流实施方式来处理java.io.BufferedInputStream的封闭行为。使用“useReadAheadInput=false”可禁止它。
-更正了BUG#6348,当给定主机名的某一地址是IPV6时无法连接到服务器(服务器尚未与IPV6捆绑) 驱动程序现在能够查找给定主机的所有IP地址,并停在接受socket.connect()的第1个地址上。
09-04-04:版本3.1.4-beta
-更正了BUG#4510,Connector/j 3.1.3 beta不能正确处理整数(由为了支持Buffer.readInt() -> Buffer.readShort()中的无符号读取操作所作的更改而导致)。
-在DatabaseMetaData.getTables()和getTableTypes()中增加了对VIEW的支持,该类特性现已在MySQL服务器5.0.x版中提供。
-更正了BUG#4642,解包字段元数据时,ServerPreparedStatement.execute*()有时会抛出ArrayIndexOutOfBoundsException。
-优化了整数解析功能,通过“useFastIntParsing=false”属性,允许使用JDK类较慢的解析功能。
-增加了“useOnlyServerErrorMessages”属性,它会使服务器生成的异常中的消息文本仅包含由服务器发送的文本(与SQLState“标准”介绍中给出的相反,此时文本后面还包括服务器的错误消息)。默认情况下,该属性被设置为“真”。
-更正了BUG#4689,如果前面的Null已被返回,对于原语,ResultSet.wasNull()不工作。
-如果“enablePacketDebug=true”,跟踪信息包的序列号,如果收到的信息包次序混乱,抛出异常。
-更正了BUG#4482,使用预处理语句时,对于字符串,ResultSet.getObject()返回错误类型。
-两次调用MysqlPooledConnection.close()(虽然也是应用程序错误)会导致NPE。已更正。
-更正了BUG#5012,处理DECIMAL类型的返回值的ServerPreparedStatements不工作。
-更正了BUG#5032,对于来自4.1.x版预处理语句的伪位类型,ResultSet.getObject()不返回布尔类型(在针对伪位类型的getObject()中使用二进制编码的结果集模糊测试时,它提供了避免额外类型转换的快捷方式)。
-现在能够在“LOAD DATA LOCAL INFILE”语句中使用URL,而且驱动程序将使用Java的内置处理程序来检索数据,并将其发送到服务器。默认情况下不允许该特性,要想使用它,必须将“allowUrlInLocalInfile”连接属性设置为“真”。
-对于在ResultSet.get*()的数值上执行的截取操作,驱动程序将更加严格,而且当检测到截取操作时将抛出SQLException。将“jdbcCompliantTruncation”设置为“假”,可以禁止该功能(在默认情况下允许该功能,这是因为该功能是兼容JDBC所需的)。
-从结果集读取“全零”日期时间值时,增加了三种处理它们的方法,“exception”,(默认值),用代码为“S1009”的SQLState抛出SQLException;“convertToNull”,返回NULL而不是数据;以及“round”,对日期进行舍入处理,使之成为最接近的值,即“0001-01-01”。
-更正了ServerPreparedStatement,使之能够“以脱线”方式读取预处理语句元数据,尽管在目前它是取代在任何时侯均不工作的MysqlIO.clearInputStream()的占位符,之所以如此,是因为目前尚未从服务器读取数据。通过抛出ArrayIndexOutOfBoundExceptions的erverPreparedStatements,它修正了用户遇到的偶发性错误。
-加载资源捆包时使用com.mysql.jdbc.Message的类加载器,应能更正调用器的类加载器不能确定资源捆包位置时出现的偶发性错误。
07-07-04:版本3.1.3-beta
-对CallableStatements的输出参数名进行Mangle处理,使得在与用户变量名一起使用时,这类名称不会崩溃。
-增加了对CallableStatements中INPUT参数的支持。
-更正了BUG#4119,为服务器端预处理语句发送的null比特掩码不正确。
-默认情况下使用SQL的标准SQL状态,除非将“useSqlStateCodes”属性设置为“假”。
-增加了信息包调试代码(请参见“enablePacketDebug”属性文档)。
-为MySQL错误编号增加了常量(可公共访问,请参见com.mysql.jdbc.MysqlErrorNumbers),并增加了生成映射的能力,能够将厂家代码映射为驱动程序使用的SQLStates(出于文档编制目的)。
-使更多消息更为具体(正在努力)。
-更正了BUG#4311,在检索具有预处理语句和二进制协议特性的mediumint列时发生错误。
-当“useTimezone=true”时,在MySQL-4.1.3中支持新的时区变量。
-支持无符号数值作为预处理语句返回的类型。对于“bigint unsigned”类型,这也会导致ResultSet.getObject()中的内容发生变化,“bigint unsigned”类型用于返回BigDecimal实例,现在它将返回java.lang.BigInteger实例。
06-09-04:版本3.1.2-alpha
更正了为参数(如char(), varchar())指定大小时存储程序参数的解析信息。
-通过“cacheCallableStmts”属性,允许对可调用语句进行高速缓冲处理。
-更正了下述问题:未为存储程序指定输出参数时,发出虚假查询来检索输出参数,从而导致服务器语法错误。
-更正了在CallableStatement.setOutputParameters()中没有任何参数会导致NullPointerException的问题。
-删除了MysqlIO.changeUser()中的异常捆包。
-更正了关于发送大型查询分离信息包方面的问题,也允许发送大信息包的nio功能。
-为ServerPreparedStatement增加了.toString()功能,如果你正在调试作为预处理语句(显示为服务器应处理的SQL)的查询,它应有所帮助。
-增加了“gatherPerformanceMetrics”属性,以及用于控制在何时/何处记录这类信息的多种属性(更多信息请参见相关文档)。
-调用.close()时,ServerPreparedStatements实际上不能取消对服务器端资源的分配。
-增加了“logSlowQueries”属性,以及“slowQueriesThresholdMillis”属性,以控制应在何时将查询视为“缓慢”。
-相对于registerOutParameter()中隐含的顺序,正确地将输出参数映射到prepareCall()中给定的位置,;更正了BUG#3146。
-对于版本等于高于4.1.0的服务器,能正确地检测字符集。
-整理了服务器属性的检测功能。
-对于版本等于高于4.1.2的服务器,支持用于参数元数据的占位符。
-更正了BUG#3539,getProcedures()未返回结果集中的任何进程。
-更正了BUG#3540,getProcedureColumns()不能与程序名的通配符一起使用。
-更正了BUG#3520,DBMD.getSQLStateType()返回不正确的值。
-增加了“connectionCollation”属性,如果给定字符集的默认校对不恰当,驱动程序将在连接初始过程中发出“set collation_connection=...”查询。
-更正了在MySQL-5.0.0上运行时的DatabaseMetaData.getProcedures()问题(在5.0.1和5.0.0间,“show procedure status”的输出有所不同)。
-更正了BUG#3804,getWarnings()返回SQLWarning而不是DataTruncation。
-对于版本为5.0.0或5.0.1的服务器,不要启用服务器端预处理语句,这是因为,它们与驱动程序使用的“4.1.2+”风格不兼容(驱动程序预计返回的信息并不存在,因而挂起)。
02-14-04:版本3.1.1-alpha
-更正了与不使用客户端预处理语句的UpdatableResultSets有关的缺陷。
-当MySQL不提供字符集并将JVM设置为多字节编码时,更正了将字节转换为ASCII时的字符编码事宜(通常会影响数值检索)。
-将服务器预处理语句的“未知”数据类型解包为字符串。
-为服务器预处理语句实现了长数据类型(Blob、Clob、InputStreams、Readers)。
-为MySQL-4.1和更高版本实现了Statement.getWarnings()(使用“SHOW WARNINGS”)。
-默认结果集类型更改为TYPE_FORWARD_ONLY(兼容JDBC)。
- 结果集类型和并发性的集中设置。
-再次确定了连接属性的设置方式和显示为DriverPropertyInfo的方式,以及Connection和DataSource属性。
-支持NIO。在支持NIO的平台上使用“useNIO=true”。
-支持SAVEPOINTs(MySQL >= 4.0.14或4.1.1)。
-支持“mysql_change_user()...”,请参见“com.mysql.jdbc.Connection”中的changeUser()方法。
-减少了平均查询中调用的方法数目,使之更有效率。
-自动再连接时重新处理预处理语句。任何遇到的错误均被延迟,直至首次尝试再执行经过重新处理的语句为止。
-按照JDBC规范,确保在预处理语句上执行查询前给出的警告是明确的(目前,我们支持警告功能)。
-在ConnectionProperties中,支持“旧的”profileSql大写特性。该属性已受到冷落,应尽量使用“profileSQL”。
-优化了Buffer.readLenByteArray(),以便当长度为0时返回共享的空字节数组。
-在对.execute*()的多次调用之间,允许保留PreparedStatement.setBlob()的内容。
-处理了EscapeProcessor中的0长度令牌(由可调用语句转义语法导致)。
-在UpdatableResultSet中的删除/更新/插入行操作上,检查关闭的连接。
-更正了检查UpdatableResultSet中的所有主键时对表别名的支持事宜。
-删除了useFastDates连接属性。
-对来自JNDI Refs的数据源属性进行了正确的初始化,包括明确指定的URL。
-对于版本为5.0.0或更高的MySQL,DatabaseMetaData现在能通报supportsStoredProcedures()。
-更正了Connection.prepareCall()中的堆栈溢出问题(不良合并)。
-对低于1.4版的JDK,更正了对DateTimeValue中Calendar.getTimeInMillis()的IllegalAccessError(非法访问错误)。
-更正了BUG#1673,对于非“%”列名,DatabaseMetaData.getColumns()未返回正确的列顺序信息。
-合并了