MySQL Connector/J 5.1 Release Notes  /  Changes in MySQL Connector/J 3.1  /  Changes in MySQL Connector/J 3.1.5 (2004-12-02)

Changes in MySQL Connector/J 3.1.5 (2004-12-02)

Bugs Fixed

  • Use 1MB packet for sending file for LOAD DATA LOCAL if that is < max_allowed_packet on server. (Bug #6537)

  • Use DatabaseMetaData.getIdentifierQuoteString() when building DBMD queries. (Bug #6537)

  • SUM() on DECIMAL with server-side prepared statement ignores scale if zero-padding is needed (this ends up being due to conversion to DOUBLE by server, which when converted to a string to parse into BigDecimal, loses all padding zeros). (Bug #6537)

  • Use our own implementation of buffered input streams to get around blocking behavior of Disable this with useReadAheadInput=false. (Bug #6399)

  • Re-work Field.isOpaqueBinary() to detect CHAR(n) CHARACTER SET BINARY to support fixed-length binary fields for ResultSet.getObject(). (Bug #6399)

  • Make auto-deserialization of java.lang.Objects stored in BLOB columns configurable using autoDeserialize property (defaults to false). (Bug #6399)

  • ResultSetMetaData.getColumnDisplaySize() returns incorrect values for multibyte charsets. (Bug #6399)

  • Failing to connect to the server when one of the addresses for the given host name is IPV6 (which the server does not yet bind on). The driver now loops through all IP addresses for a given host, and stops on the first one that accepts() a socket.connect(). (Bug #6348)

  • Use null-safe-equals for key comparisons in updatable result sets. (Bug #6225)

  • Removed unwanted new Throwable() in ResultSet constructor due to bad merge (caused a new object instance that was never used for every result set created). Found while profiling for Bug #6359. (Bug #6225)

  • Fixed too-early creation of StringBuffer in EscapeProcessor.escapeSQL(), also return String when escaping not needed (to avoid unnecessary object allocations). Found while profiling for Bug #6359. (Bug #6225)

  • ServerSidePreparedStatement allocating short-lived objects unnecessarily. (Bug #6225)

  • UNSIGNED BIGINT unpacked incorrectly from server-side prepared statement result sets. (Bug #5729)

  • Use a per-session Calendar instance by default when decoding dates from ServerPreparedStatements (set to old, less performant behavior by setting property dynamicCalendars=true). (Bug #5706)

  • Inefficient detection of pre-existing string instances in ResultSet.getNativeString(). (Bug #5706)

  • Don't throw exceptions for Connection.releaseSavepoint(). (Bug #5706)

  • Added experimental configuration property dontUnpackBinaryResults, which delays unpacking binary result set values until they're asked for, and only creates object instances for nonnumeric values (it is set to false by default). For some usecase/jvm combinations, this is friendlier on the garbage collector. (Bug #5706)

  • Server-side prepared statements did not honor zeroDateTimeBehavior property, and would cause class-cast exceptions when using ResultSet.getObject(), as the all-zero string was always returned. (Bug #5235)

  • Handle case when string representation of timestamp contains trailing . with no numbers following it. (Bug #5235)

  • Fixed batched updates with server prepared statements weren't looking if the types had changed for a given batched set of parameters compared to the previous set, causing the server to return the error Wrong arguments to mysql_stmt_execute(). (Bug #5235)

  • Fix comparisons made between string constants and dynamic strings that are converted with either toUpperCase() or toLowerCase() to use Locale.ENGLISH, as some locales override case rules for English. Also use StringUtils.indexOfIgnoreCase() instead of .toUpperCase().indexOf(), avoids creating a very short-lived transient String instance.