MySQL Connector/J 5.1 Release Notes

4.5 Changes in MySQL Connector/J 3.1.11 (2005-10-07)

Bugs Fixed

  • 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)