MySQL Connector/J 5.1 Release Notes
URL configuration parameters do not permit
“&
” or
“=
” in their values. The JDBC
driver now parses configuration parameters as if they are
encoded using the application/x-www-form-urlencoded format as
specified by java.net.URLDecoder
(http://java.sun.com/j2se/1.5.0/docs/api/java/net/URLDecoder.html).
If the “%
” character is present
in a configuration property, it must now be represented as
%25
, which is the encoded form of
“%
” when using
application/x-www-form-urlencoded encoding.
(Bug #13453)
The configuration property sessionVariables
now permits you to specify variables that start with the
“@
” sign.
(Bug #13453)
Workaround for Bug #13374:
ResultSet.getStatement()
on closed result set
returns NULL
(as per JDBC 4.0 spec, but not
backward-compatible). Set the connection property
retainStatementAfterResultSetClose
to
true
to be able to retrieve a
ResultSet
's statement after the
ResultSet
has been closed using
.getStatement()
(the default is
false
, to be JDBC-compliant and to reduce the
chance that code using JDBC leaks Statement
instances).
(Bug #13277)
Read response in MysqlIO.sendFileToServer()
,
even if the local file can't be opened, otherwise next query
issued will fail, because it is reading the response to the
empty LOAD DATA
packet sent to
the server.
(Bug #13277)
Fixed NullPointerException
when converting
catalog
parameter in many
DatabaseMetaDataMethods
to
byte[]
s (for the result set) when the
parameter is null
. (null
is not technically permitted by the JDBC specification, but we
have historically permitted it).
(Bug #13277)
Backport of VAR[BINARY|CHAR] [BINARY]
types
detection from 5.0 branch.
(Bug #13277)
Backport of Field
class,
ResultSetMetaData.getColumnClassName()
, and
ResultSet.getObject(int)
changes from 5.0
branch to fix behavior surrounding VARCHAR
BINARY
/VARBINARY
and
related types.
(Bug #13277)
ResultSetMetaData
from
Statement.getGeneratedKeys()
caused a
NullPointerException
to be thrown whenever a
method that required a connection reference was called.
(Bug #13277)
When gatherPerfMetrics
is enabled for servers
older than 4.1.0, a NullPointerException
is
thrown from the constructor of ResultSet
if
the query doesn't use any tables.
(Bug #13043)
java.sql.Types.OTHER
returned for
BINARY
and
VARBINARY
columns when using
DatabaseMetaData.getColumns()
.
(Bug #12970)
ServerPreparedStatement.getBinding()
now
checks if the statement is closed before attempting to reference
the list of parameter bindings, to avoid throwing a
NullPointerException
.
(Bug #12970)
Tokenizer for =
in URL properties was causing
sessionVariables=....
to be parameterized
incorrectly.
(Bug #12753)
cp1251
incorrectly mapped to
win1251
for servers newer than 4.0.x.
(Bug #12752)
Specifying a catalog works as stated in the API docs. (Bug #12541)
Specifying NULL
means that catalog will not
be used to filter the results (thus all databases will be
searched), unless you've set
nullCatalogMeansCurrent=true
in your JDBC URL
properties.
(Bug #12541)
Specifying ""
means “current”
catalog, even though this isn't quite JDBC spec compliant, it is
there for legacy users.
(Bug #12541)
Made Connection.clientPrepare()
available
from “wrapped” connections in the
jdbc2.optional
package (connections built by
ConnectionPoolDataSource
instances).
(Bug #12541)
Handling of catalog argument in
DatabaseMetaData.getIndexInfo()
, which also
means changes to the following methods in
DatabaseMetaData
:
getBestRowIdentifier()
getColumns()
getCrossReference()
getExportedKeys()
getImportedKeys()
getIndexInfo()
getPrimaryKeys()
getProcedures()
(and thus indirectly
getProcedureColumns()
)
getTables()
The catalog
argument in all of these methods
now behaves in the following way:
Specifying NULL
means that catalog will
not be used to filter the results (thus all databases will
be searched), unless you've set
nullCatalogMeansCurrent=true
in your JDBC
URL properties.
Specifying ""
means
“current” catalog, even though this isn't quite
JDBC spec compliant, it is there for legacy users.
Specifying a catalog works as stated in the API docs.
Made Connection.clientPrepare()
available
from “wrapped” connections in the
jdbc2.optional
package (connections built
by ConnectionPoolDataSource
instances).
(Bug #12541)
Added Connection.isMasterConnection()
for
clients to be able to determine if a multi-host master/slave
connection is connected to the first host in the list.
(Bug #12541)
getTables()
(Bug #12541)
getProcedures()
(and thus indirectly
getProcedureColumns()
)
(Bug #12541)
getPrimaryKeys()
(Bug #12541)
getIndexInfo()
(Bug #12541)
getImportedKeys()
(Bug #12541)
getExportedKeys()
(Bug #12541)
getCrossReference()
(Bug #12541)
getColumns()
(Bug #12541)
getBestRowIdentifier()
(Bug #12541)
Connection.prepareCall()
is database name
case-sensitive (on Windows systems).
(Bug #12417)
explainSlowQueries
hangs with server-side
prepared statements.
(Bug #12229)
Properties shared between master and slave with replication connection. (Bug #12218)
Geometry types not handled with server-side prepared statements. (Bug #12104)
maxPerformance.properties
mis-spells
“elideSetAutoCommits”.
(Bug #11976)
ReplicationConnection
won't switch to slave,
throws “Catalog can't be null” exception.
(Bug #11879)
Pstmt.setObject(...., Types.BOOLEAN)
throws
exception.
(Bug #11798)
Escape tokenizer doesn't respect stacked single quotation marks for escapes. (Bug #11797)
GEOMETRY
type not recognized when using
server-side prepared statements.
(Bug #11797)
The sendBlobChunkSize
property is now clamped
to max_allowed_packet
with consideration of stream buffer size and packet headers to
avoid PacketTooBigExceptions
when
max_allowed_packet
is
similar in size to the default
sendBlobChunkSize
which is 1M.
(Bug #11781)
Foreign key information that is quoted is parsed incorrectly
when DatabaseMetaData
methods use that
information.
(Bug #11781)
CallableStatement.clearParameters()
now
clears resources associated with
INOUT
/OUTPUT
parameters as
well as INPUT
parameters.
(Bug #11781)
Moved source code to Subversion repository. (Bug #11663)
Incorrect generation of testcase scripts for server-side prepared statements. (Bug #11663)
Fixed regression caused by fix for Bug #11552 that caused driver to return incorrect values for unsigned integers when those integers where within the range of the positive signed type. (Bug #11663)
Spurious !
on console when character encoding
is utf8
.
(Bug #11629)
Fixed statements generated for testcases missing
;
for “plain” statements.
(Bug #11629)
StringUtils.getBytes()
doesn't work when
using multibyte character encodings and a length in
characters is specified.
(Bug #11614)
DBMD.storesLower/Mixed/UpperIdentifiers()
reports incorrect values for servers deployed on Windows.
(Bug #11575)
Updated DBMD.supportsCorrelatedQueries()
to
return true
for versions > 4.1,
supportsGroupByUnrelated()
to return
true
and
getResultSetHoldability()
to return
HOLD_CURSORS_OVER_COMMIT
.
(Bug #11498)
Reworked Field
class,
*Buffer
, and MysqlIO
to be
aware of field lengths >
Integer.MAX_VALUE
.
(Bug #11498)
Lifted restriction of changing streaming parameters with
server-side prepared statements. As long as
all
streaming parameters were set before
execution, .clearParameters()
does not have
to be called. (due to limitation of client/server protocol,
prepared statements can not reset
individual stream data on the server side).
(Bug #11498)
Escape processor didn't honor strings demarcated with double quotation marks. (Bug #11498)
ResultSet.moveToCurrentRow()
fails to work
when preceded by a call to
ResultSet.moveToInsertRow()
.
(Bug #11190)
VARBINARY
data corrupted when
using server-side prepared statements and
.setBytes()
.
(Bug #11115)
Only get char[]
from SQL in
PreparedStatement.ParseInfo()
when needed.
(Bug #10630)
Statement.getWarnings()
fails with NPE if
statement has been closed.
(Bug #10630)