Documentation Home
MySQL Connector/J Release Notes
Related Documentation Download these Release Notes
PDF (US Ltr) - 482.1Kb
PDF (A4) - 482.3Kb
EPUB - 127.7Kb

MySQL Connector/J Release Notes  /  Changes in MySQL Connector/J 5.1  /  Changes in MySQL Connector/J 5.1.7 (2008-10-21)

Changes in MySQL Connector/J 5.1.7 (2008-10-21)

Functionality Added or Changed

  • When statements include ON DUPLICATE UPDATE, and rewriteBatchedStatements is set to true, batched statements are not rewritten into the form INSERT INTO table VALUES (), (), (), instead the statements are executed sequentially.

Bugs Fixed

  • When an application using Connector/J ran into an error, the SQLException.getMessage() method was returning null instead of an error description. This has been fixed by calling the setRowPositionValidity() method in the ResultSetImpl constructor. (Bug #11749413, Bug #38943)

  • When using trustCertificateKeyStoreUrl or clientCertificateKeyStoreUrl, an IllegalStateException was caused by an uninitialized TrustManagerFactoryImpl object. (Bug #11748637, Bug #36948, Bug #38192)

  • Statement.getGeneratedKeys() returned two keys when using ON DUPLICATE KEY UPDATE and the row was updated, not inserted. (Bug #42309)

  • When using the replication driver with autoReconnect=true, Connector/J checks in PreparedStatement.execute (also called by CallableStatement.execute) to determine if the first character of the statement is an S, in an attempt to block all statements that are not read-only-safe, for example non-SELECT statements. However, this also blocked CALLs to stored procedures, even if the stored procedures were defined as SQL READ DATA or NO SQL. (Bug #40031)

  • With large result sets ResultSet.findColumn became a performance bottleneck. (Bug #39962)

  • Connector/J ignored the value of the MySQL Server variable auto_increment_increment. (Bug #39956)

  • Connector/J failed to parse TIMESTAMP strings for nanos correctly. (Bug #39911)

  • When the LoadBalancingConnectionProxy handles a SQLException with SQL state starting with 08, it calls invalidateCurrentConnection, which in turn removes that Connection from liveConnections and the connectionsToHostsMap, but it did not add the host to the new global blacklist, if the global blacklist was enabled.

    There was also the possibility of a NullPointerException when trying to update stats, where connectionsToHostsMap.get(this.currentConn) was called:

    int hostIndex = ((Integer) this.hostsToListIndexMap.get(this.connectionsToHostsMap.get(this.currentConn))).intValue();

    This could happen if a client tried to issue a rollback after catching a SQLException caused by a connection failure. (Bug #39784)

  • When configuring the Java Replication Driver the last slave specified was never used. (Bug #39611)

  • When an INSERT ON DUPLICATE KEY UPDATE was performed, and the key already existed, the affected-rows value was returned as 1 instead of 0. (Bug #39352)

  • When using loadbalancing, Connector/J might not cycle through the whole list of configured hosts in its attempt to make a connection. This fix corrects the implementation of the configuration parameter retriesAllDown, making sure that Connector/J cycles through the whole list of hosts for each of its attempt to connect. (Bug #38785, Bug #11749331)

  • When using the random load balancing strategy and starting with two servers that were both unavailable, an IndexOutOfBoundsException was generated when removing a server from the whiteList. (Bug #38782)

  • Connector/J threw the following exception when using a read-only connection:

    java.sql.SQLException: Connection is read-only. Queries leading to data
    modification are not allowed.

    (Bug #38747)

  • Connector/J was unable to connect when using a non-latin1 password. (Bug #37570)

  • The useOldAliasMetadataBehavior connection property was ignored. (Bug #35753)

  • Incorrect result is returned from isAfterLast() in streaming ResultSet when using setFetchSize(Integer.MIN_VALUE). (Bug #35170)

  • When getGeneratedKeys() was called on a statement that had not been created with RETURN_GENERATED_KEYS, no exception was thrown, and batched executions then returned erroneous values. (Bug #34185)

  • The loadBalance bestResponseTime blacklists did not have a global state. (Bug #33861)

Download these Release Notes
PDF (US Ltr) - 482.1Kb
PDF (A4) - 482.3Kb
EPUB - 127.7Kb