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.
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)
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()」.
Handle case when string representation of timestamp contains
trailing ‘.’ with no numbers
following it.
Inefficient detection of pre-existing string instances in
ResultSet.getNativeString(). (Bug#5706)
Don't throw exceptions for
Connection.releaseSavepoint().
Use a per-session Calendar instance by
default when decoding dates from
ServerPreparedStatements (set to old,
less performant behavior by setting property
dynamicCalendars=true).
Added experimental configuration property
dontUnpackBinaryResults, which delays
unpacking binary result set values until they're asked for,
and only creates object instances for non-numerical values
(it is set to false by default). For some
usecase/jvm combinations, this is friendlier on the garbage
collector.
UNSIGNED BIGINT unpacked incorrectly from
server-side prepared statement result sets. (Bug#5729)
ServerSidePreparedStatement allocating
short-lived objects unnecessarily. (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.
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.
Use null-safe-equals for key comparisons in updatable result sets.
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
DatabaseMetaData.getIdentifierQuoteString()
when building DBMD queries.
Use 1MB packet for sending file for LOAD DATA LOCAL
INFILE if that is <
max_allowed_packet on server.
ResultSetMetaData.getColumnDisplaySize()
returns incorrect values for multi-byte charsets. (Bug#6399)
Make auto-deserialization of
java.lang.Objects stored in
BLOB columns configurable via
autoDeserialize property (defaults to
false).
Re-work Field.isOpaqueBinary() to detect
CHAR( to support fixed-length binary fields for
n) CHARACTER SET
BINARYResultSet.getObject().
Use our own implementation of buffered input streams to get
around blocking behavior of
java.io.BufferedInputStream. Disable this
with useReadAheadInput=false.
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)
