XADataSource implemented (ported from 3.2
            branch which won't be released as a product). Use
            com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
            as your datasource class name in your application server to
            utilize XA transactions in MySQL-5.0.10 and newer.
          
            PreparedStatement.setString() didn't work
            correctly when sql_mode on server
            contained NO_BACKSLASH_ESCAPES and no
            characters that needed escaping were present in the string.
          
            Attempt detection of the MySQL type
            BINARY (it's an alias, so this isn't
            always reliable), and use the
            java.sql.Types.BINARY type mapping for
            it.
          
            Moved -bin-g.jar file into separate
            debug subdirectory to avoid confusion.
          
            Don't allow .setAutoCommit(true), or
            .commit() or
            .rollback() on an XA-managed connection
            as per the JDBC specification.
          
            If the connection useTimezone is set to
            true, then also respect time zone
            conversions in escape-processed string literals (for
            example, "{ts ...}" and "{t
            ...}").
          
            Return original column name for
            RSMD.getColumnName() if the column was
            aliased, alias name for .getColumnLabel()
            (if aliased), and original table name for
            .getTableName(). Note this only works for
            MySQL-4.1 and newer, as older servers don't make this
            information available to clients.
          
            Setting
            useJDBCCompliantTimezoneShift=true (it's
            not the default) causes the driver to use GMT for
            all
            TIMESTAMP/DATETIME
            time zones, and the current VM time zone for any other type
            that refers to time zones. This feature can not be used when
            useTimezone=true to convert between
            server and client time zones.
          
            Add one level of indirection of internal representation of
            CallableStatement parameter metadata to
            avoid class not found issues on JDK-1.3 for
            ParameterMetadata interface (which
            doesn't exist prior to JDBC-3.0).
          
            Added unit tests for XADatasource, as
            well as friendlier exceptions for XA failures compared to
            the "stock" XAException (which has no
            messages).
          
            Idle timeouts cause XAConnections to
            whine about rolling themselves back. (Bug#14729)
          
            Added support for Connector/MXJ integration via url
            subprotocol jdbc:mysql:mxj://....
          
            Moved all SQLException constructor usage
            to a factory in SQLError (ground-work for
            JDBC-4.0 SQLState-based exception
            classes).
          
            Removed Java5-specific calls to
            BigDecimal constructor (when result set
            value is '', (int)0
            was being used as an argument indirectly via method return
            value. This signature doesn't exist prior to Java5.)
          
            Added service-provider entry to
            META-INF/services/java.sql.Driver for
            JDBC-4.0 support.
          
            Return "[VAR]BINARY" for
            RSMD.getColumnTypeName() when that is
            actually the type, and it can be distinguished (MySQL-4.1
            and newer).
          
            When fix for Bug#14562 was merged from 3.1.12, added
            functionality for CallableStatement's
            parameter metadata to return correct information for
            .getParameterClassName().
          
            Fuller synchronization of Connection to
            avoid deadlocks when using multithreaded frameworks that
            multithread a single connection (usually not recommended,
            but the JDBC spec allows it anyways), part of fix to Bug#14972).
          
            Implementation of Statement.cancel() and
            Statement.setQueryTimeout(). Both require
            MySQL-5.0.0 or newer server, require a separate connection
            to issue the KILL QUERY statement, and in
            the case of setQueryTimeout() creates an
            additional thread to handle the timeout functionality.
          
            Note: Failures to cancel the statement for
            setQueryTimeout() may manifest themselves
            as RuntimeExceptions rather than failing
            silently, as there is currently no way to unblock the thread
            that is executing the query being cancelled due to timeout
            expiration and have it throw the exception instead.
          

