MySQL Connector/J Release Notes  /  Changes in MySQL Connector/J 3.1  /  Changes in MySQL Connector/J 3.1.9 (2005-06-22)

Changes in MySQL Connector/J 3.1.9 (2005-06-22)

Bugs Fixed

  • Production package doesn't include JBoss integration classes. (Bug #11411)

  • Removed nonsensical costly type conversion warnings when using usage advisor. (Bug #11411)

  • Fixed PreparedStatement.setClob() not accepting null as a parameter. (Bug #11360)

  • Connector/J dumping query into SQLException twice. (Bug #11360)

  • autoReconnect ping causes exception on connection startup. (Bug #11259)

  • 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. (Bug #11115)

  • 3-0-Compat: Compatibility with Connector/J 3.0.x functionality (Bug #11115)

  • maxPerformance: Maximum performance without being reckless (Bug #11115)

  • solarisMaxPerformance: Maximum performance for Solaris, avoids syscalls where it can (Bug #11115)

  • 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. (Bug #11115)

  • VARBINARY data corrupted when using server-side prepared statements and ResultSet.getBytes(). (Bug #11115)

  • Added the following configuration bundles, use one or many using 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

    (Bug #11115)

  • 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. (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. (Bug #10850)

  • Don't send COM_RESET_STMT for each execution of a server-side prepared statement if it isn't required. (Bug #10850)

  • 0-length streams not sent to server when using server-side prepared statements. (Bug #10850)

  • 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. (Bug #10850)

  • 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. (Bug #10496)

  • Added support/bug hunting feature that generates .sql test scripts to STDERR when autoGenerateTestcaseScript is set to true. (Bug #10496)

  • SQLException is thrown when using property characterSetResults with cp932 or eucjpms. (Bug #10496)

  • The data type 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. (Bug #10485)

  • 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 SHORTs. (Bug #10485)

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

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

  • Made ServerPreparedStatement.asSql() work correctly so auto-explain functionality would work with server-side prepared statements. (Bug #10155)

  • Double quotation marks not recognized when parsing client-side prepared statements. (Bug #10155)

  • Made JDBC2-compliant wrappers public to enable access to vendor extensions. (Bug #10155)

  • DatabaseMetaData.supportsMultipleOpenResults() now returns true. The driver has supported this for some time, DBMD just missed that fact. (Bug #10155)

  • 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. (Bug #10155)

  • Made enableStreamingResults() visible on com.mysql.jdbc.jdbc2.optional.StatementWrapper. (Bug #10155)

  • Actually write manifest file to correct place so it ends up in the binary jar file. (Bug #10144)

  • 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. (Bug #10144)

  • Memory leak in ServerPreparedStatement if serverPrepare() fails. (Bug #10144)

  • com.mysql.jdbc.PreparedStatement.ParseInfo does unnecessary call to toCharArray(). (Bug #9064)

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

  • Overhaul of character set configuration, everything now lives in a properties file.

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