Overhaul of character set configuration, everything now lives in a properties file.
Driver now correctly uses CP932 if available on the server for Windows-31J, CP932 and MS932 java encoding names, otherwise it resorts to SJIS, which is only a close approximation. Currently only MySQL-5.0.3 and newer (and MySQL-4.1.12 or .13, depending on when the character set gets backported) can reliably support any variant of CP932.
com.mysql.jdbc.PreparedStatement.ParseInfo
does unnecessary call to toCharArray()
.
(Bug#9064)
Memory leak in ServerPreparedStatement
if
serverPrepare()
fails. (Bug#10144)
Actually write manifest file to correct place so it ends up in the binary jar file.
Added createDatabaseIfNotExist
property
(default is false
), which will cause the
driver to ask the server to create the database specified in
the URL if it doesn't exist. You must have the appropriate
privileges for database creation for this to work.
Unsigned SMALLINT
treated as signed for
ResultSet.getInt()
, fixed all cases for
UNSIGNED
integer values and server-side
prepared statements, as well as
ResultSet.getObject()
for
UNSIGNED TINYINT
. (Bug#10156)
Double quotes not recognized when parsing client-side prepared statements. (Bug#10155)
Made enableStreamingResults()
visible on
com.mysql.jdbc.jdbc2.optional.StatementWrapper
.
Made ServerPreparedStatement.asSql()
work
correctly so auto-explain functionality would work with
server-side prepared statements.
Made JDBC2-compliant wrappers public in order to allow access to vendor extensions.
Cleaned up logging of profiler events, moved code to dump a
profiler event as a string to
com.mysql.jdbc.log.LogUtils
so that third
parties can use it.
DatabaseMetaData.supportsMultipleOpenResults()
now returns true
. The driver has
supported this for some time, DBMD just missed that fact.
Driver doesn't support {?=CALL(...)}
for
calling stored functions. This involved adding support for
function retrieval to
DatabaseMetaData.getProcedures()
and
getProcedureColumns()
as well. (Bug#10310)
SQLException
thrown when retrieving
YEAR(2)
with
ResultSet.getString()
. The driver will
now always treat YEAR
types as
java.sql.Dates
and return the correct
values for getString()
. Alternatively,
the yearIsDateType
connection property
can be set to false
and the values will
be treated as SHORT
s. (Bug#10485)
The datatype returned for TINYINT(1)
columns when tinyInt1isBit=true
(the
default) can be switched between
Types.BOOLEAN
and
Types.BIT
using the new configuration
property transformedBitIsBoolean
, which
defaults to false
. If set to
false
(the default),
DatabaseMetaData.getColumns()
and
ResultSetMetaData.getColumnType()
will
return Types.BOOLEAN
for
TINYINT(1)
columns. If
true
, Types.BOOLEAN
will be returned instead. Regardless of this configuration
property, if tinyInt1isBit
is enabled,
columns with the type TINYINT(1)
will be
returned as java.lang.Boolean
instances
from ResultSet.getObject(...)
, and
ResultSetMetaData.getColumnClassName()
will return java.lang.Boolean
.
SQLException
is thrown when using
property characterSetResults
with
cp932
or eucjpms
. (Bug#10496)
Reorganized directory layout. Sources now are in
src
folder. Don't pollute parent
directory when building, now output goes to
./build
, distribution goes to
./dist
.
Added support/bug hunting feature that generates
.sql
test scripts to
STDERR
when
autoGenerateTestcaseScript
is set to
true
.
0-length streams not sent to server when using server-side prepared statements. (Bug#10850)
Setting cachePrepStmts=true
now causes
the Connection
to also cache the check
the driver performs to determine if a prepared statement can
be server-side or not, as well as caches server-side
prepared statements for the lifetime of a connection. As
before, the prepStmtCacheSize
parameter
controls the size of these caches.
Try to handle OutOfMemoryErrors
more
gracefully. Although not much can be done, they will in most
cases close the connection they happened on so that further
operations don't run into a connection in some unknown
state. When an OOM has happened, any further operations on
the connection will fail with a 「Connection
closed」 exception that will also list the OOM
exception as the reason for the implicit connection close
event.
Don't send COM_RESET_STMT
for each
execution of a server-side prepared statement if it isn't
required.
Driver detects if you're running MySQL-5.0.7 or later, and
does not scan for LIMIT ?[,?]
in
statements being prepared, as the server supports those
types of queries now.
VARBINARY
data corrupted when using
server-side prepared statements and
ResultSet.getBytes()
. (Bug#11115)
Connection.setCatalog()
is now aware of
the useLocalSessionState
configuration
property, which when set to true
will
prevent the driver from sending USE ...
to the server if the requested catalog is the same as the
current catalog.
Added the following configuration bundles, use one or many
via the useConfigs
configuration
property:
maxPerformance
— maximum
performance without being reckless
solarisMaxPerformance
— maximum
performance for Solaris, avoids syscalls where it can
3-0-Compat
— Compatibility with
Connector/J 3.0.x functionality
Added maintainTimeStats
configuration
property (defaults to true
), which tells
the driver whether or not to keep track of the last query
time and the last successful packet sent to the server's
time. If set to false
, removes two
syscalls per query.
autoReconnect
ping causes exception on
connection startup. (Bug#11259)
Connector/J dumping query into
SQLException
twice. (Bug#11360)
Fixed PreparedStatement.setClob()
not
accepting null
as a parameter.
Production package doesn't include JBoss integration classes. (Bug#11411)
Removed nonsensical 「costly type conversion」 warnings when using usage advisor.