MySQL Lists are EOL. Please join:

List:Announcements« Previous MessageNext Message »
From:Mark Matthews Date:July 27 2006 6:02pm
Subject:MySQL Connector/J 5.0.3 Has Been Released
View as plain text  
Hash: SHA1


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
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
  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:

* 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

As always, we recommend that you check the change log
( and "Upgrading"
sections ( in
the manual before upgrading to be aware of changes in behavior that
might affect your application.


- - 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

    - 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
    - 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

      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

    - 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

    - 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

    - 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

Version: GnuPG v1.4.2.2 (MingW32)
Comment: Using GnuPG with Mozilla -

MySQL Connector/J 5.0.3 Has Been ReleasedMark Matthews27 Jul