-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi,
MySQL Connector/J 5.0.3 a new version of the Type-IV all-Java JDBC driver for MySQL has been released. This is the first generally-available, production release of Connector/J 5.0. Notice that Connector/J 3.1 has supported all MySQL-5.0 features other than XA, but this is the first generally-available release that "synchronizes" version numbers with the server (as well as adding support for XA). Version 5.0.3 is suitable for use with any MySQL version including MySQL-4.1, MySQL-5.0 or MySQL-5.1 beta. It is now available in source and binary form from the Connector/J download pages at http://dev.mysql.com/downloads/connector/j/5.0.html and mirror sites (note that not all mirror sites may be up to date at this point of time - if you can't find this version on some mirror, please try again later or choose another download site.) Please notice that the download archives are larger than before as we're now shipping the output of our JUnit release tests and resultant code coverage in the "docs/release-test-output" subdirectory. Features/changes of note in this release: * Support for XA distributed transactions via com.mysql.jdbc.jdbc2.optional.MysqlXADataSource which is an implementation of javax.sql.XADataSource. Notice that depending on whether or not your application server re-uses the same physical XAConnection for a given global transaction, you may have to set the datasource configuration parameter "pinGlobalTxToPhysicalConnection" to "true" so that the driver itself will maintain this mapping, which also allows the driver to emulate the JOIN clause to "XA START", which the server currently does not support natively. Our current testing shows that this configuration parameter is necessary for BEA WebLogic and IBM WebSphere. JBoss has their own configuration parameter for this, "track-connection-by-tx", see http://docs.jboss.org/jbossas/jboss4guide/r5/html/ch7.chapt.html#ch7.xaconf.fig for more information). We also recommend that connection pools that will be backing XAConnections should be configured to test connections on reserve/checkout and not let connections stay idle for long periods of time (ideally not at all), due to the current limitations with XA support in the server as listed here: http://dev.mysql.com/doc/refman/5.0/en/xa-restrictions.html * Loosened synchronization to solve a number of deadlock issues in BUG#18719, BUG#18367, BUG#17709 and BUG#15067. The new strategy basically makes Connection instances threadsafe and thus shareable across threads, and anything else threadsafe, but not necessarily shareable across threads due to JDBC API interactions that can cause non-obvious behavior and/or deadlock scenarios to occur since the JDBC API is not designed to be used from multiple threads at once. Therefore, unless external synchronization is provided, clients should not allow multiple threads to share a given statement or result set. Examples of issues with the API itself not being multi-thread suitable include, but are not limited to race conditions between modifiers and execution and retrieval methods on statements and result sets that are not synchronizable such as ResultSet.get*() and traversal methods, or Statement.execute*() closing result sets without effectively making the driver itself serialized across the board. These changes should not have any effect on "normal" J(2)EE use cases where only one thread ever uses a connection instance and the objects created by it. * Implementation of Statement.cancel() and Statement.setQueryTimeout(). Both methods require MySQL-5.0.0 or newer server, require a separate connection to issue the "KILL QUERY" command, and in the case of setQueryTimeout() the driver will create a separate thread should the timer to cancel the query fire to actually login to the server and cancel the statement. * Added support for Connector/MXJ integration via url subprotocol "jdbc:mysql:mxj://....". As always, we recommend that you check the change log (http://dev.mysql.com/doc/refman/5.0/en/cj-news.html) and "Upgrading" sections (http://dev.mysql.com/doc/refman/5.0/en/cj-upgrading.html) in the manual before upgrading to be aware of changes in behavior that might affect your application. -Mark - - From the change log (this release includes changes and fixes from versions 3.1.13 and 3.1.14): 07-26-06 - Version 5.0.3 - Fixed BUG#20650 - Statement.cancel() causes NullPointerException if underlying connection has been closed due to server failure. - Added configuration option "noAccessToProcedureBodies" which will cause the driver to create basic parameter metadata (all parameters reported as VARCHAR(65535) IN/OUT and not named) for CallableStatements when the user does not have access to procedure bodies via "SHOW CREATE PROCEDURE" or selecting from mysql.proc instead of throwing an exception. The default value for this option is "false". nn-nn-06 - Version 3.1.14 - Fixed BUG#20479 - Updatable result set throws ClassCastException when there is row data and moveToInsertRow() is called. - Fixed BUG#20485 - Updatable result set that contains a BIT column fails when server-side prepared statements are used. - Fixed BUG#16987 - Memory leak with profileSQL=true. - Fixed BUG#19726 - Connection fails to localhost when using timeout and IPv6 is configured. - Fixed BUG#16791 - NullPointerException in MysqlDataSourceFactory due to Reference containing RefAddrs with null content. - Fixed BUG#20306 - ResultSet.getShort() for UNSIGNED TINYINT returns incorrect values when using server-side prepared statements. - Fixed BUG#20687 - Can't pool server-side prepared statements, exception raised when re-using them. - Fixed BUG#21062 - ResultSet.getSomeInteger() doesn't work for BIT(>1). - Fixed BUG#18880 - ResultSet.getFloatFromString() can't retrieve values near Float.MIN/MAX_VALUE. - Fixed BUG#20888 - escape of quotes in client-side prepared statements parsing not respected. Patch covers more than bug report, including NO_BACKSLASH_ESCAPES being set, and stacked quote characters forms of escaping (i.e. '' or ""). - Fixed BUG#19993 - ReplicationDriver does not always round-robin load balance depending on URL used for slaves list. 05-26-05 - Version 3.1.13 - Fixed BUG#15464 - INOUT parameter does not store IN value. - Fixed BUG#14609 - Exception thrown for new decimal type when using updatable result sets. - Fixed BUG#15544, no "dos" character set in MySQL > 4.1.0 - Fixed BUG#15383 - PreparedStatement.setObject() serializes BigInteger as object, rather than sending as numeric value (and is thus not complementary to .getObject() on an UNSIGNED LONG type). - Fixed BUG#11874 - ResultSet.getShort() for UNSIGNED TINYINT returned wrong values. - Fixed BUG#15676 - lib-nodist directory missing from package breaks out-of-box build - Fixed BUG#15854 - DBMD.getColumns() returns wrong type for BIT. - Fixed BUG#14938 - Unable to initialize character set mapping tables. Removed reliance on .properties files to hold this information, as it turns out to be too problematic to code around class loader hierarchies that change depending on how an application is deployed. Moved information back into the CharsetMapping class. - Fixed BUG#16841 - updatable result set doesn't return AUTO_INCREMENT values for insertRow() when multiple column primary keys are used. (the driver was checking for the existence of single-column primary keys and an autoincrement value > 0 instead of a straightforward isAutoIncrement() check). - Fixed BUG#17099 - Statement.getGeneratedKeys() throws NullPointerException when no query has been processed. - Fixed BUG#13469 - Driver tries to call methods that don't exist on older and newer versions of Log4j. The fix is not trying to auto-detect presense of log4j, too many different incompatible versions out there in the wild to do this reliably. If you relied on autodetection before, you will need to add "logger=com.mysql.jdbc.log.Log4JLogger" to your JDBC URL to enable Log4J usage, or alternatively use the new "CommonsLogger" class to take care of this. - Added support for Apache Commons logging, use "com.mysql.jdbc.log.CommonsLogger" as the value for the "logger" configuration property. - LogFactory now prepends "com.mysql.jdbc.log" to log class name if it can't be found as-specified. This allows you to use "short names" for the built-in log factories, for example "logger=CommonsLogger" instead of "logger=com.mysql.jdbc.log.CommonsLogger". - Fixed BUG#15570 - ReplicationConnection incorrectly copies state, doesn't transfer connection context correctly when transitioning between the same read-only states. - Fixed BUG#18041 - Server-side prepared statements don't cause truncation exceptions to be thrown when truncation happens. - Added performance feature, re-writing of batched executes for Statement.executeBatch() (for all DML statements) and PreparedStatement.executeBatch() (for INSERTs with VALUE clauses only). Enable by using "rewriteBatchedStatements=true" in your JDBC URL. - Fixed BUG#17898 - registerOutParameter not working when some parameters pre-populated. Still waiting for feedback from JDBC experts group to determine what correct parameter count from getMetaData() should be, however. - Fixed BUG#17587 - clearParameters() on a closed prepared statement causes NPE. - Map "latin1" on MySQL server to CP1252 for MySQL > 4.1.0. - Added additional accessor and mutator methods on ConnectionProperties so that DataSource users can use same naming as regular URL properties. - Fixed BUG#18740 - Data truncation and getWarnings() only returns last warning in set. - Improved performance of retrieving BigDecimal, Time, Timestamp and Date values from server-side prepared statements by creating fewer short-lived instances of Strings when the native type is not an exact match for the requested type. Fixes BUG#18496 for BigDecimals. - Fixed BUG#18554 - Aliased column names where length of name > 251 are corrupted. - Fixed BUG#17450 - ResultSet.wasNull() not always reset correctly for booleans when done via conversion for server-side prepared statements. - Fixed BUG#16277 - Invalid classname returned for RSMD.getColumnClassName() for BIGINT type. - Fixed case where driver wasn't reading server status correctly when fetching server-side prepared statement rows, which in some cases could cause warning counts to be off, or multiple result sets to not be read off the wire. - Driver now aware of fix for BIT type metadata that went into MySQL-5.0.21 for server not reporting length consistently (BUG#13601). - Fixed BUG#19615, PreparedStatement.setObject(int, Object, int) doesn't respect scale of BigDecimals. - Fixed BUG#19282 - ResultSet.wasNull() returns incorrect value when extracting native string from server-side prepared statement generated result set. - Fixed BUG#19568 - ResultSet.getSomeNumeric() didn't work for the BIT type. - Fixed BUG#19724 - Updatable result set fails when server is in ANSI sql_mode. - -- Mark Matthews MySQL AB, Software Development Manager - Client Connectivity www.mysql.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFEyP/AtvXNTca6JD8RAnsJAKDIcfDLKOvMG8SONrT+2bRDjdaFvwCgk5N/ bZFY4wcjh4IyWpdVe7oaFQs= =XexQ -----END PGP SIGNATURE----- -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]