Fixed DatabaseMetaData.getTables()
returning views when they were not asked for as one of the
requested table types.
Added support for new precision-math
DECIMAL
type in MySQL 5.0.3 and up.
Fixed ResultSet.getTime()
on a
NULL
value for server-side prepared
statements throws NPE.
Made Connection.ping()
a public method.
DATE_FORMAT()
queries returned as
BLOB
s from
getObject()
. (Bug#8868)
ServerPreparedStatements
now correctly
「stream」
BLOB
/CLOB
data to the
server. You can configure the threshold chunk size using the
JDBC URL property blobSendChunkSize
(the
default is 1MB).
BlobFromLocator
now uses correct
identifier quoting when generating prepared statements.
Server-side session variables can be preset at connection
time by passing them as a comma-delimited list for the
connection property sessionVariables
.
Fixed regression in ping()
for users
using autoReconnect=true
.
PreparedStatement.addBatch()
doesn't work
with server-side prepared statements and streaming
BINARY
data. (Bug#9040)
DBMD.supportsMixedCase*Identifiers()
returns wrong value on servers running on case-sensitive
filesystems. (Bug#8800)
Cannot use UTF-8
for characterSetResults
configuration property. (Bug#9206)
A continuation of Bug#8868, where functions used in queries
that should return non-string types when resolved by
temporary tables suddenly become opaque binary strings
(work-around for server limitation). Also fixed fields with
type of CHAR(n) CHARACTER SET BINARY
to
return correct/matching classes for
RSMD.getColumnClassName()
and
ResultSet.getObject()
. (Bug#9236)
DBMD.supportsResultSetConcurrency()
not
returning true
for forward-only/read-only
result sets (we obviously support this). (Bug#8792)
DATA_TYPE
column from
DBMD.getBestRowIdentifier()
causes
ArrayIndexOutOfBoundsException
when
accessed (and in fact, didn't return any value). (Bug#8803)
Check for empty strings (''
) when
converting
CHAR
/VARCHAR
column
data to numbers, throw exception if
emptyStringsConvertToZero
configuration
property is set to false
(for
backward-compatibility with 3.0, it is now set to
true
by default, but will most likely
default to false
in 3.2).
PreparedStatement.getMetaData()
inserts
blank row in database under certain conditions when not
using server-side prepared statements. (Bug#9320)
Connection.canHandleAsPreparedStatement()
now makes 「best effort」 to distinguish
LIMIT
clauses with placeholders in them
from ones without in order to have fewer false positives
when generating work-arounds for statements the server
cannot currently handle as server-side prepared statements.
Fixed build.xml
to not compile
log4j
logging if log4j
not available.
Added support for the c3p0 connection pool's
(http://c3p0.sf.net/) validation/connection
checker interface which uses the lightweight
COM_PING
call to the server if available.
To use it, configure your c3p0 connection pool's
connectionTesterClassName
property to use
com.mysql.jdbc.integration.c3p0.MysqlConnectionTester
.
Better detection of LIMIT
inside/outside
of quoted strings so that the driver can more correctly
determine whether a prepared statement can be prepared on
the server or not.
Stored procedures with same name in different databases confuse the driver when it tries to determine parameter counts/types. (Bug#9319)
Added finalizers to ResultSet
and
Statement
implementations to be JDBC
spec-compliant, which requires that if not explicitly
closed, these resources should be closed upon garbage
collection.
Stored procedures with DECIMAL
parameters
with storage specifications that contained
‘,
’ in them would fail. (Bug#9682)
PreparedStatement.setObject(int, Object, int type,
int scale)
now uses scale value for
BigDecimal
instances.
Statement.getMoreResults()
could throw
NPE when existing result set was
.close()
d. (Bug#9704)
The performance metrics feature now gathers information about number of tables referenced in a SELECT.
The logging system is now automatically configured. If the
value has been set by the user, via the URL property
logger
or the system property
com.mysql.jdbc.logger
, then use that,
otherwise, autodetect it using the following steps:
Log4j, if it's available,
Then JDK1.4 logging,
Then fallback to our STDERR
logging.
DBMD.getTables()
shouldn't return tables
if views are asked for, even if the database version doesn't
support views. (Bug#9778)
Fixed driver not returning true
for
-1
when
ResultSet.getBoolean()
was called on
result sets returned from server-side prepared statements.
Added a Manifest.MF
file with
implementation information to the .jar
file.
More tests in Field.isOpaqueBinary()
to
distinguish opaque binary (that is, fields with type
CHAR(n)
and CHARACTER SET
BINARY
) from output of various scalar and
aggregate functions that return strings.
Should accept null
for catalog (meaning
use current) in DBMD methods, even though it's not
JDBC-compliant for legacy's sake. Disable by setting
connection property
nullCatalogMeansCurrent
to
false
(which will be the default value in
C/J 3.2.x). (Bug#9917)
Should accept null
for name patterns in
DBMD (meaning ‘%
’), even
though it isn't JDBC compliant, for legacy's sake. Disable
by setting connection property
nullNamePatternMatchesAll
to
false
(which will be the default value in
C/J 3.2.x). (Bug#9769)