Author: paul
Date: 2006-01-04 05:14:25 +0100 (Wed, 04 Jan 2006)
New Revision: 664
Log:
r5810@frost: paul | 2006-01-03 22:05:41 -0600
Unix line endings.
Modified:
trunk/
trunk/refman-common/news-connector-j.xml
Property changes on: trunk
___________________________________________________________________
Name: svk:merge
- b5ec3a16-e900-0410-9ad2-d183a3acac99:/mysqldoc-local/mysqldoc/trunk:5807
bf112a9c-6c03-0410-a055-ad865cd57414:/mysqldoc-local/mysqldoc/trunk:1848
+ b5ec3a16-e900-0410-9ad2-d183a3acac99:/mysqldoc-local/mysqldoc/trunk:5810
bf112a9c-6c03-0410-a055-ad865cd57414:/mysqldoc-local/mysqldoc/trunk:1848
Modified: trunk/refman-common/news-connector-j.xml
===================================================================
--- trunk/refman-common/news-connector-j.xml 2006-01-04 04:14:02 UTC (rev 663)
+++ trunk/refman-common/news-connector-j.xml 2006-01-04 04:14:25 UTC (rev 664)
@@ -1,2738 +1,2738 @@
<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
-[
- <!ENTITY % fixedchars.entities SYSTEM "fixedchars.ent">
- %fixedchars.entities;
- <!ENTITY % title.entities SYSTEM "titles.en.ent">
- %title.entities;
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % fixedchars.entities SYSTEM "fixedchars.ent">
+ %fixedchars.entities;
+ <!ENTITY % title.entities SYSTEM "titles.en.ent">
+ %title.entities;
]>
<section id="cj-changelog">
<title>&title-cj-changelog;</title>
-<programlisting>
-12-22-05 - Version 5.0.0-beta
-
- - XADataSource implemented (ported from 3.2 branch which won't be
- released as a product). Use
- "com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" as your datasource
- class name in your application server to utilize XA transactions
- in MySQL-5.0.10 and newer.
-
- - PreparedStatement.setString() didn't work correctly when
- sql_mode on server contained NO_BACKSLASH_ESCAPES, and no characters
- that needed escaping were present in the string.
-
- - Attempt detection of the MySQL type "BINARY" (it's an alias, so this isn't
- always reliable), and use the java.sql.Types.BINARY type mapping for it.
-
- - Moved -bin-g.jar file into separate "debug" subdirectory to avoid confusion.
-
- - Don't allow .setAutoCommit(true), or .commit() or .rollback() on an XA-managed
- connection as-per the JDBC specification.
-
- - If the connection "useTimezone" is set to "true", then also respect timezone
- conversions in escape-processed string literals (e.g. "{ts ...}" and
- "{t ...}").
-
- - Return original column name for RSMD.getColumnName() if the column was aliased,
- alias name for .getColumnLabel() (if aliased), and original table name
- for .getTableName(). Note this only works for MySQL-4.1 and newer, as
- older servers don't make this information available to clients.
-
- - Setting "useJDBCCompliantTimezoneShift=true" (it's not the default)
- causes the driver to use GMT for _all_ TIMESTAMP/DATETIME timezones,
- and the current VM timezone for any other type that refers to timezones.
- This feature can not be used when "useTimezone=true" to convert between
- server and client timezones.
-
- - Add one level of indirection of internal representation of CallableStatement
- parameter metadata to avoid class not found issues on JDK-1.3 for
- ParameterMetadata interface (which doesn't exist prior to JDBC-3.0).
-
- - Added unit tests for XADatasource, as well as friendlier exceptions
- for XA failures compared to the "stock" XAException (which has no
- messages).
-
- - Fixed BUG#14279 - Idle timeouts cause XAConnections to whine about rolling
- themselves back
-
- - Added support for Connector/MXJ integration via url subprotocol
- "jdbc:mysql:mxj://....".
-
- - Moved all SQLException constructor usage to a factory in SQLError
- (ground-work for JDBC-4.0 SQLState-based exception classes).
-
- - Removed Java5-specific calls to BigDecimal constructor (when
- result set value is '', (int)0 was being used as an argument
- in-directly via method return value. This signature doesn't exist
- prior to Java5.)
-
- - Moved all SQLException creation to a factory method in SQLError,
- groundwork for JDBC-4.0 SQLState class-based exceptions.
-
- - Added service-provider entry to META-INF/services/java.sql.Driver
- for JDBC-4.0 support.
-
- - Return "[VAR]BINARY" for RSMD.getColumnTypeName() when that is actually
- the type, and it can be distinguished (MySQL-4.1 and newer).
-
- - When fix for BUG#14562 was merged from 3.1.12, added functionality
- for CallableStatement's parameter metadata to return correct
- information for .getParameterClassName().
-
- - Fuller synchronization of Connection to avoid deadlocks when
- using multithreaded frameworks that multithread a single connection
- (usually not recommended, but the JDBC spec allows it anyways),
- part of fix to BUG#14972).
-
- - Implementation of Statement.cancel() and Statement.setQueryTimeout().
- Both require MySQL-5.0.0 or newer server, require a separate connection
- to issue the "KILL QUERY" command, and in the case of setQueryTimeout()
- creates an additional thread to handle the timeout functionality.
-
- Note: Failures to cancel the statement for setQueryTimeout() may manifest
- themselves as RuntimeExceptions rather than failing silently, as there
- is currently no way to unblock the thread that is executing the query being
- cancelled due to timeout expiration and have it throw the exception
- instead.
-
-xx-xx-05 - Version 3.1.13
-
- - Fixed BUG#15464 - INOUT parameter does not store IN value.
-
- - Fixed BUG#14609 - Exception thrown for new decimal type when
- using updatable result sets.
-
- - Fixed BUG#15544, no "dos" character set in MySQL > 4.1.0
-
- - Fixed BUG#15383 - PreparedStatement.setObject() serializes
- BigInteger as object, rather than sending as numeric value
- (and is thus not complementary to .getObject() on an UNSIGNED
- LONG type).
-
- - Fixed BUG#11874 - ResultSet.getShort() for UNSIGNED TINYINT
- returned wrong values.
-
- - Fixed BUG#15676 - lib-nodist directory missing from
- package breaks out-of-box build
-
- - Fixed BUG#15854 - DBMD.getColumns() returns wrong type for BIT.
-
-11-30-05 - Version 3.1.12
-
- - Fixed client-side prepared statement bug with embedded ? inside
- quoted identifiers (it was recognized as a placeholder, when it
- was not).
-
- - Don't allow executeBatch() for CallableStatements with registered
- OUT/INOUT parameters (JDBC compliance).
-
- - Fall back to platform-encoding for URLDecoder.decode() when
- parsing driver URL properties if the platform doesn't have a
- two-argument version of this method.
-
- - Fixed BUG#14562 - Java type conversion may be incorrect for
- mediumint.
-
- - Added configuration property "useGmtMillisForDatetimes" which
- when set to true causes ResultSet.getDate(), .getTimestamp() to
- return correct millis-since GMT when .getTime() is called on
- the return value (currently default is "false" for legacy
- behavior).
-
- - Fixed DatabaseMetaData.stores*Identifiers():
-
- * if lower_case_table_names=0 (on server):
-
- storesLowerCaseIdentifiers() returns false
- storesLowerCaseQuotedIdentifiers() returns false
- storesMixedCaseIdentifiers() returns true
- storesMixedCaseQuotedIdentifiers() returns true
- storesUpperCaseIdentifiers() returns false
- storesUpperCaseQuotedIdentifiers() returns true
-
- * if lower_case_table_names=1 (on server):
-
- storesLowerCaseIdentifiers() returns true
- storesLowerCaseQuotedIdentifiers() returns true
- storesMixedCaseIdentifiers() returns false
- storesMixedCaseQuotedIdentifiers() returns false
- storesUpperCaseIdentifiers() returns false
- storesUpperCaseQuotedIdentifiers() returns true
-
- - Fixed BUG#14815 - DatabaseMetaData.getColumns() doesn't
- return TABLE_NAME correctly.
-
- - Fixed BUG#14909 - escape processor replaces quote character
- in quoted string with string delimiter.
-
- - Fixed BUG#12975 - OpenOffice expects
- DBMD.supportsIntegrityEnhancementFacility() to return "true"
- if foreign keys are supported by the datasource, even though
- this method also covers support for check constraints,
- which MySQL _doesn't_ have. Setting the configuration property
- "overrideSupportsIntegrityEnhancementFacility" to "true" causes
- the driver to return "true" for this method.
-
- - Added "com.mysql.jdbc.testsuite.url.default" system property to
- set default JDBC url for testsuite (to speed up bug resolution
- when I'm working in Eclipse).
-
- - Fixed BUG#14938 - Unable to initialize character set mapping
- tables (due to J2EE classloader differences).
-
- - Fixed BUG#14972 - Deadlock while closing server-side prepared
- statements from multiple threads sharing one connection.
-
- - Fixed BUG#12230 - logSlowQueries should give better info.
-
- - Fixed BUG#13775 - Extraneous sleep on autoReconnect.
-
- - Fixed BUG#15024 - Driver incorrectly closes streams passed as
- arguments to PreparedStatements. Reverts to legacy behavior by
- setting the JDBC configuration property "autoClosePStmtStreams"
- to "true" (also included in the 3-0-Compat configuration "bundle").
-
- - Fixed BUG#13048 - maxQuerySizeToLog is not respected. Added logging of
- bound values for execute() phase of server-side prepared statements
- when profileSQL=true as well.
-
- - Fixed BUG#15065 - Usage advisor complains about unreferenced
- columns, even though they've been referenced.
-
- - Don't increase timeout for failover/reconnect (BUG#6577)
-
- - Process escape tokens in Connection.prepareStatement(...), fix
- for BUG#15141. You can disable this behavior by setting
- the JDBC URL configuration property "processEscapeCodesForPrepStmts"
- to "false".
-
- - Fixed BUG#13255 - Reconnect during middle of executeBatch()
- should not occur if autoReconnect is enabled.
-
-10-07-05 - Version 3.1.11-stable
-
- - Fixed BUG#11629 - Spurious "!" on console when character
- encoding is "utf8".
-
- - Fixed statements generated for testcases missing ";" for
- "plain" statements.
-
- - Fixed BUG#11663 - Incorrect generation of testcase scripts
- for server-side prepared statements.
-
- - 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.
-
- - Moved source code to svn repo.
-
- - Fixed BUG#11797 - Escape tokenizer doesn't respect stacked single quotes
- for escapes.
-
- - GEOMETRY type not recognized when using server-side prepared statements.
-
- - Fixed BUG#11879 -- ReplicationConnection won't switch to slave, throws
- "Catalog can't be null" exception.
-
- - Fixed BUG#12218, properties shared between master and slave with
- replication connection.
-
- - Fixed BUG#10630, Statement.getWarnings() fails with NPE if statement
- has been closed.
-
- - Only get char[] from SQL in PreparedStatement.ParseInfo() when needed.
-
- - Fixed BUG#12104 - Geometry types not handled with server-side prepared
- statements.
-
- - Fixed BUG#11614 - StringUtils.getBytes() doesn't work when using
- multibyte character encodings and a length in _characters_ is
- specified.
-
- - Fixed BUG#11798 - Pstmt.setObject(...., Types.BOOLEAN) throws exception.
-
- - Fixed BUG#11976 - maxPerformance.properties mis-spells
- "elideSetAutoCommits".
-
- - Fixed BUG#11575 -- DBMD.storesLower/Mixed/UpperIdentifiers()
- reports incorrect values for servers deployed on Windows.
-
- - Fixed BUG#11190 - ResultSet.moveToCurrentRow() fails to work when
- preceeded by a call to ResultSet.moveToInsertRow().
-
- - Fixed BUG#11115, VARBINARY data corrupted when using server-side
- prepared statements and .setBytes().
-
- - Fixed BUG#12229 - explainSlowQueries hangs with server-side
- prepared statements.
-
- - Fixed BUG#11498 - Escape processor didn't honor strings demarcated
- with double quotes.
-
- - 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).
-
- - Reworked Field class, *Buffer, and MysqlIO to be aware of field
- lengths > Integer.MAX_VALUE.
-
- - Updated DBMD.supportsCorrelatedQueries() to return true for versions >
- 4.1, supportsGroupByUnrelated() to return true and
- getResultSetHoldability() to return HOLD_CURSORS_OVER_COMMIT.
-
- - Fixed 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's 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).
-
- - 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.
-
- - Fixed BUG#12753 - Tokenizer for "=" in URL properties was causing
- sessionVariables=.... to be parameterized incorrectly.
-
- - Fixed BUG#11781, foreign key information that is quoted is
- parsed incorrectly when DatabaseMetaData methods use that
- information.
-
- - 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.
-
- - CallableStatement.clearParameters() now clears resources associated
- with INOUT/OUTPUT parameters as well as INPUT parameters.
-
- - Fixed BUG#12417 - Connection.prepareCall() is database name
- case-sensitive (on Windows systems).
-
- - Fixed BUG#12752 - Cp1251 incorrectly mapped to win1251 for
- servers newer than 4.0.x.
-
- - Fixed BUG#12970 - java.sql.Types.OTHER returned for
- BINARY and VARBINARY columns when using
- DatabaseMetaData.getColumns().
-
- - ServerPreparedStatement.getBinding() now checks if the statement
- is closed before attempting to reference the list of parameter
- bindings, to avoid throwing a NullPointerException.
-
- - Fixed BUG#13277 - ResultSetMetaData from
- Statement.getGeneratedKeys() caused NullPointerExceptions to be
- thrown whenever a method that required a connection reference
- was called.
-
- - 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.
-
- - Fixed NullPointerException when converting "catalog" parameter
- in many DatabaseMetaDataMethods to byte[]s (for the result set)
- when the parameter is null. ("null" isn't technically allowed
- by the JDBC specification, but we've historically allowed it).
-
- - Backport of VAR[BINARY|CHAR] [BINARY] types detection from
- 5.0 branch.
-
- - Read response in MysqlIO.sendFileToServer(), even if the
- local file can't be opened, otherwise next query issued
- will fail, because it's reading the response to the empty
- LOAD DATA INFILE packet sent to the server.
-
- - 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 via .getStatement() (the default is "false", to
- be JDBC-compliant and to reduce the chance that code using
- JDBC leaks Statement instances).
-
- - Fixed BUG#13453 - URL configuration parameters don't allow
- '&' 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.
-
- - The configuration property "sessionVariables" now allows you to
- specify variables that start with the "@" sign.
-
- - Fixed BUG#13043 - 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.
-
-06-23-05 - Version 3.1.10-stable
-
- - Fixed connecting without a database specified raised an exception
- in MysqlIO.changeDatabaseTo().
-
- - Initial implemention of ParameterMetadata for
- PreparedStatement.getParameterMetadata(). Only works fully
- for CallableStatements, as current server-side prepared statements
- return every parameter as a VARCHAR type.
-
-06-22-05 - Version 3.1.9-stable
-
- - 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.
-
- - Fixed BUG#9064 - com.mysql.jdbc.PreparedStatement.ParseInfo
- does unnecessary call to toCharArray().
-
- - Fixed Bug#10144 - Memory leak in ServerPreparedStatement if
- serverPrepare() fails.
-
- - 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.
-
- - Fixed BUG#10156 - 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.
-
- - Fixed BUG#10155, double quotes not recognized when parsing
- client-side prepared statements.
-
- - 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.
-
- - Fixed BUG#10310 - Driver doesn't support {?=CALL(...)} for calling
- stored functions. This involved adding support for function retrieval
- to DatabaseMetaData.getProcedures() and getProcedureColumns() as well.
-
- - Fixed 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.
-
- - 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. Irregardless 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".
-
- - Fixed BUG#10496 - SQLException is thrown when using property
- "characterSetResults" with cp932 or eucjpms.
-
- - Reorganized directory layout, sources now 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".
-
- - Fixed BUG#10850 - 0-length streams not sent to server when
- using server-side prepared statements.
-
- - 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.
-
- - Fixed BUG#11115, Varbinary data corrupted when using server-side
- prepared statements and ResultSet.getBytes().
-
- - 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.
-
- - Fixed BUG#11259, autoReconnect ping causes exception on connection
- startup.
-
- - Fixed BUG#11360 Connector/J dumping query into SQLException twice
-
- - Fixed PreparedStatement.setClob() not accepting null as a parameter.
-
- - Fixed BUG#11411 - Production package doesn't include JBoss integration
- classes.
-
- - Removed nonsensical "costly type conversion" warnings when using
- usage advisor.
-
-
-04-14-05 - Version 3.1.8-stable
-
- - Fixed DatabaseMetaData.getTables() returning views when they were
- not asked for as one of the requested table types.
-
- - Added support for new precision-math DECIMAL type in MySQL >= 5.0.3.
-
- - Fixed ResultSet.getTime() on a NULL value for server-side prepared
- statements throws NPE.
-
- - Made Connection.ping() a public method.
-
- - Fixed Bug#8868, DATE_FORMAT() queries returned as BLOBs from getObject().
-
- - ServerPreparedStatements now correctly 'stream' BLOB/CLOB data to the
- server. You can configure the threshold chunk size using the
- JDBC URL property 'blobSendChunkSize' (the default is one megabyte).
-
- - BlobFromLocator now uses correct identifier quoting when generating
- prepared statements.
-
- - Server-side session variables can be preset at connection time by
- passing them as a comma-delimited list for the connection property
- 'sessionVariables'.
-
- - Fixed regression in ping() for users using autoReconnect=true.
-
- - Fixed BUG#9040 - PreparedStatement.addBatch() doesn't work with server-side
- prepared statements and streaming BINARY data.
-
- - Fixed BUG#8800 - DBMD.supportsMixedCase*Identifiers() returns wrong
- value on servers running on case-sensitive filesystems.
-
- - Fixed BUG#9206, can not use 'UTF-8' for characterSetResults
- configuration property.
-
- - Fixed BUG#9236, a continuation of BUG#8868, where functions used in queries
- that should return non-string types when resolved by temporary tables suddenly
- become opaque binary strings (work-around for server limitation). Also fixed
- fields with type of CHAR(n) CHARACTER SET BINARY to return correct/matching
- classes for RSMD.getColumnClassName() and ResultSet.getObject().
-
- - Fixed BUG#8792 - DBMD.supportsResultSetConcurrency() not returning
- true for forward-only/read-only result sets (we obviously support this).
-
- - Fixed BUG#8803, 'DATA_TYPE' column from DBMD.getBestRowIdentifier()
- causes ArrayIndexOutOfBoundsException when accessed (and in fact, didn't
- return any value).
-
- - Check for empty strings ('') when converting char/varchar column data to numbers,
- throw exception if 'emptyStringsConvertToZero' configuration property is set
- to 'false' (for backward-compatibility with 3.0, it is now set to 'true'
- by default, but will most likely default to 'false' in 3.2).
-
- - Fixed BUG#9320 - PreparedStatement.getMetaData() inserts blank row in database
- under certain conditions when not using server-side prepared statements.
-
- - Connection.canHandleAsPreparedStatement() now makes 'best effort' to distinguish
- LIMIT clauses with placeholders in them from ones without in order to have fewer
- false positives when generating work-arounds for statements the server cannot
- currently handle as server-side prepared statements.
-
- - Fixed build.xml to not compile log4j logging if log4j not available.
-
- - Added support for the c3p0 connection pool's (http://c3p0.sf.net/)
- validation/connection checker interface which uses the lightweight
- 'COM_PING' call to the server if available. To use it, configure your
- c3p0 connection pool's 'connectionTesterClassName' property to use
- 'com.mysql.jdbc.integration.c3p0.MysqlConnectionTester'.
-
- - Better detection of LIMIT inside/outside of quoted strings so that
- the driver can more correctly determine whether a prepared statement
- can be prepared on the server or not.
-
- - Fixed BUG#9319 - Stored procedures with same name in
- different databases confuse the driver when it tries to determine
- parameter counts/types.
-
- - Added finalizers to ResultSet and Statement implementations to be JDBC
- spec-compliant, which requires that if not explicitly closed, these
- resources should be closed upon garbage collection.
-
- - Fixed BUG#9682 - Stored procedures with DECIMAL parameters with
- storage specifications that contained "," in them would fail.
-
- - PreparedStatement.setObject(int, Object, int type, int scale) now
- uses scale value for BigDecimal instances.
-
- - Fixed BUG#9704 - Statement.getMoreResults() could throw NPE when
- existing result set was .close()d.
-
- - The performance metrics feature now gathers information about
- number of tables referenced in a SELECT.
-
- - The logging system is now automatically configured. If the value has
- been set by the user, via the URL property "logger" or the system
- property "com.mysql.jdbc.logger", then use that, otherwise, autodetect
- it using the following steps:
-
- Log4j, if it's available,
- Then JDK1.4 logging,
- Then fallback to our STDERR logging.
-
- - Fixed BUG#9778, DBMD.getTables() shouldn't return tables if views
- are asked for, even if the database version doesn't support views.
-
- - Fixed driver not returning 'true' for '-1' when ResultSet.getBoolean()
- was called on result sets returned from server-side prepared statements.
-
- - Added a Manifest.MF file with implementation information to the .jar
- file.
-
- - More tests in Field.isOpaqueBinary() to distinguish opaque binary (i.e.
- fields with type CHAR(n) and CHARACTER SET BINARY) from output of
- various scalar and aggregate functions that return strings.
-
- - Fixed BUG#9917 - Should accept null for catalog (meaning use current)
- in DBMD methods, even though it's not JDBC-compliant for legacy's sake.
- Disable by setting connection property "nullCatalogMeansCurrent" to "false"
- (which will be the default value in C/J 3.2.x).
-
- - Fixed BUG#9769 - Should accept null for name patterns in DBMD (meaning "%"),
- even though it isn't JDBC compliant, for legacy's sake. Disable by setting
- connection property "nullNamePatternMatchesAll" to "false" (which will be
- the default value in C/J 3.2.x).
-
-02-18-05 - Version 3.1.7-stable
-
- - Fixed BUG#7686, Timestamp key column data needed "_binary'"
- stripped for UpdatableResultSet.refreshRow().
-
- - Fixed BUG#7715 - Timestamps converted incorrectly to strings
- with Server-side prepared statements and updatable result sets.
-
- - Detect new sql_mode variable in string form (it used to be
- integer) and adjust quoting method for strings appropriately.
-
- - Added 'holdResultsOpenOverStatementClose' property (default is
- false), that keeps result sets open over statement.close() or new
- execution on same statement (suggested by Kevin Burton).
-
- - Fixed BUG#7952 -- Infinite recursion when 'falling back' to master
- in failover configuration.
-
- - Disable multi-statements (if enabled) for MySQL-4.1 versions prior
- to version 4.1.10 if the query cache is enabled, as the server
- returns wrong results in this configuration.
-
- - Fixed duplicated code in configureClientCharset() that prevented
- useOldUTF8Behavior=true from working properly.
-
- - Removed 'dontUnpackBinaryResults' functionality, the driver now
- always stores results from server-side prepared statements as-is
- from the server and unpacks them on demand.
-
- - Fixed BUG#8096 where emulated locators corrupt binary data
- when using server-side prepared statements.
-
- - Fixed synchronization issue with
- ServerPreparedStatement.serverPrepare() that could cause
- deadlocks/crashes if connection was shared between threads.
-
- - By default, the driver now scans SQL you are preparing via all
- variants of Connection.prepareStatement() to determine if it is a
- supported type of statement to prepare on the server side, and if
- it is not supported by the server, it instead prepares it as a
- client-side emulated prepared statement (BUG#4718). You can
- disable this by passing 'emulateUnsupportedPstmts=false' in your
- JDBC URL.
-
- - Remove _binary introducer from parameters used as in/out
- parameters in CallableStatement.
-
- - Always return byte[]s for output parameters registered as *BINARY.
-
- - Send correct value for 'boolean' "true" to server for
- PreparedStatement.setObject(n, "true", Types.BIT).
-
- - Fixed bug with Connection not caching statements from
- prepareStatement() when the statement wasn't a server-side
- prepared statement.
-
- - Choose correct 'direction' to apply time adjustments when both
- client and server are in GMT timezone when using
- ResultSet.get(..., cal) and PreparedStatement.set(...., cal).
-
- - Added 'dontTrackOpenResources' option (default is false, to be
- JDBC compliant), which helps with memory use for non-well-behaved
- apps (i.e applications which don't close Statements when they
- should).
-
- - Fixed BUG#8428 - ResultSet.getString() doesn't maintain format
- stored on server, bug fix only enabled when 'noDatetimeStringSync'
- property is set to 'true' (the default is 'false').
-
- - Fixed NPE in ResultSet.realClose() when using usage advisor and
- result set was already closed.
-
- - Fixed BUG#8487 - PreparedStatements not creating streaming result
- sets.
-
- - Don't pass NULL to String.valueOf() in
- ResultSet.getNativeConvertToString(), as it stringifies it (i.e.
- returns "null"), which is not correct for the method in question.
-
- - Fixed BUG#8484 - ResultSet.getBigDecimal() throws exception
- when rounding would need to occur to set scale. The driver now
- chooses a rounding mode of 'half up' if non-rounding
- BigDecimal.setScale() fails.
-
- - Added 'useLocalSessionState' configuration property, when set to
- 'true' the JDBC driver trusts that the application is well-behaved
- and only sets autocommit and transaction isolation levels using
- the methods provided on java.sql.Connection, and therefore can
- manipulate these values in many cases without incurring
- round-trips to the database server.
-
- - Added enableStreamingResults() to Statement for connection pool
- implementations that check Statement.setFetchSize() for
- specification-compliant values. Call Statement.setFetchSize(>=0)
- to disable the streaming results for that statement.
-
- - Added support for BIT type in MySQL-5.0.3. The driver will treat
- BIT(1-8) as the JDBC standard BIT type (which maps to
- java.lang.Boolean), as the server does not currently send enough
- information to determine the size of a bitfield when < 9 bits are
- declared. BIT(>9) will be treated as VARBINARY, and will return
- byte[] when getObject() is called.
-
-12-23-04 - Version 3.1.6-stable
-
- - Fixed hang on SocketInputStream.read() with Statement.setMaxRows() and
- multiple result sets when driver has to truncate result set directly,
- rather than tacking a 'LIMIT n' on the end of it.
-
- - Fixed BUG#7026 - DBMD.getProcedures() doesn't respect catalog parameter.
-
-12-02-04 - Version 3.1.5-gamma
-
- - Fix comparisons made between string constants and dynamic strings that
- are either toUpperCase()d or toLowerCase()d to use Locale.ENGLISH, as
- some locales 'override' case rules for English. Also use
- StringUtils.indexOfIgnoreCase() instead of .toUpperCase().indexOf(),
- avoids creating a very short-lived transient String instance.
-
- - Fixed BUG#5235 - Server-side prepared statements did not honor
- 'zeroDateTimeBehavior' property, and would cause class-cast
- exceptions when using ResultSet.getObject(), as the all-zero string
- was always returned.
-
- - Fixed batched updates with server prepared statements weren't looking if
- the types had changed for a given batched set of parameters compared
- to the previous set, causing the server to return the error
- 'Wrong arguments to mysql_stmt_execute()'.
-
- - Handle case when string representation of timestamp contains trailing '.'
- with no numbers following it.
-
- - Fixed BUG#5706 - Inefficient detection of pre-existing string instances
- in ResultSet.getNativeString().
-
- - Don't throw exceptions for Connection.releaseSavepoint().
-
- - Use a per-session Calendar instance by default when decoding dates
- from ServerPreparedStatements (set to old, less performant behavior by
- setting property 'dynamicCalendars=true').
-
- - Added experimental configuration property 'dontUnpackBinaryResults',
- which delays unpacking binary result set values until they're asked for,
- and only creates object instances for non-numerical values (it is set
- to 'false' by default). For some usecase/jvm combinations, this is
- friendlier on the garbage collector.
-
- - Fixed BUG#5729 - UNSIGNED BIGINT unpacked incorrectly from
- server-side prepared statement result sets.
-
- - Fixed BUG#6225 - ServerSidePreparedStatement allocating short-lived
- objects un-necessarily.
-
- - Removed un-wanted new Throwable() in ResultSet constructor due to bad
- merge (caused a new object instance that was never used for every result
- set created) - Found while profiling for BUG#6359.
-
- - Fixed too-early creation of StringBuffer in EscapeProcessor.escapeSQL(),
- also return String when escaping not needed (to avoid unnecssary object
- allocations). Found while profiling for BUG#6359.
-
- - Use null-safe-equals for key comparisons in updatable result sets.
-
- - Fixed BUG#6537, SUM() on Decimal with server-side prepared statement ignores
- scale if zero-padding is needed (this ends up being due to conversion to DOUBLE
- by server, which when converted to a string to parse into BigDecimal, loses all
- 'padding' zeros).
-
- - Use DatabaseMetaData.getIdentifierQuoteString() when building DBMD
- queries.
-
- - Use 1MB packet for sending file for LOAD DATA LOCAL INFILE if that
- is < 'max_allowed_packet' on server.
-
- - Fixed BUG#6399, ResultSetMetaData.getColumnDisplaySize() returns incorrect
- values for multi-byte charsets.
-
- - Make auto-deserialization of java.lang.Objects stored in BLOBs
- configurable via 'autoDeserialize' property (defaults to 'false').
-
- - Re-work Field.isOpaqueBinary() to detect 'CHAR(n) CHARACTER SET BINARY'
- to support fixed-length binary fields for ResultSet.getObject().
-
- - Use our own implementation of buffered input streams to get around
- blocking behavior of java.io.BufferedInputStream. Disable this with
- 'useReadAheadInput=false'.
-
- - Fixed BUG#6348, failing to connect to the server when one of the
- addresses for the given host name is IPV6 (which the server does
- not yet bind on). The driver now loops through _all_ IP addresses
- for a given host, and stops on the first one that accepts() a
- socket.connect().
-
-09-04-04 - Version 3.1.4-beta
-
- - Fixed BUG#4510 - connector/j 3.1.3 beta does not handle integers
- correctly (caused by changes to support unsigned reads in
- Buffer.readInt() -> Buffer.readShort()).
-
- - Added support in DatabaseMetaData.getTables() and getTableTypes()
- for VIEWs which are now available in MySQL server version 5.0.x.
-
- - Fixed BUG#4642 -- ServerPreparedStatement.execute*() sometimes
- threw ArrayIndexOutOfBoundsException when unpacking field metadata.
-
- - Optimized integer number parsing, enable 'old' slower integer parsing
- using JDK classes via 'useFastIntParsing=false' property.
-
- - Added 'useOnlyServerErrorMessages' property, which causes message text
- in exceptions generated by the server to only contain the text sent by
- the server (as opposed to the SQLState's 'standard' description, followed
- by the server's error message). This property is set to 'true' by default.
-
- - Fixed BUG#4689 - ResultSet.wasNull() does not work for primatives if a
- previous null was returned.
-
- - Track packet sequence numbers if enablePacketDebug=true, and throw an
- exception if packets received out-of-order.
-
- - Fixed BUG#4482, ResultSet.getObject() returns wrong type for strings
- when using prepared statements.
-
- - Calling MysqlPooledConnection.close() twice (even though an application
- error), caused NPE. Fixed.
-
- - Fixed BUG#5012 -- ServerPreparedStatements dealing with return of
- DECIMAL type don't work.
-
- - Fixed BUG#5032 -- ResultSet.getObject() doesn't return
- type Boolean for pseudo-bit types from prepared statements on 4.1.x
- (shortcut for avoiding extra type conversion when using binary-encoded
- result sets obscurred test in getObject() for 'pseudo' bit type)
-
- - You can now use URLs in 'LOAD DATA LOCAL INFILE' statements, and the
- driver will use Java's built-in handlers for retreiving the data and
- sending it to the server. This feature is not enabled by default,
- you must set the 'allowUrlInLocalInfile' connection property to 'true'.
-
- - The driver is more strict about truncation of numerics on
- ResultSet.get*(), and will throw an SQLException when truncation is
- detected. You can disable this by setting 'jdbcCompliantTruncation' to
- false (it is enabled by default, as this functionality is required
- for JDBC compliance).
-
- - Added three ways to deal with all-zero datetimes when reading them from
- a ResultSet, 'exception' (the default), which throws an SQLException
- with an SQLState of 'S1009', 'convertToNull', which returns NULL instead of
- the date, and 'round', which rounds the date to the nearest closest value
- which is '0001-01-01'.
-
- - Fixed ServerPreparedStatement to read prepared statement metadata off
- the wire, even though it's currently a placeholder instead of using
- MysqlIO.clearInputStream() which didn't work at various times because
- data wasn't available to read from the server yet. This fixes sporadic
- errors users were having with ServerPreparedStatements throwing
- ArrayIndexOutOfBoundExceptions.
-
- - Use com.mysql.jdbc.Message's classloader when loading resource bundle,
- should fix sporadic issues when the caller's classloader can't locate
- the resource bundle.
-
-07-07-04 - Version 3.1.3-beta
-
- - Mangle output parameter names for CallableStatements so they
- will not clash with user variable names.
-
- - Added support for INOUT parameters in CallableStatements.
-
- - Fix for BUG#4119, null bitmask sent for server-side prepared
- statements was incorrect.
-
- - Use SQL Standard SQL states by default, unless 'useSqlStateCodes'
- property is set to 'false'.
-
- - Added packet debuging code (see the 'enablePacketDebug' property
- documentation).
-
- - Added constants for MySQL error numbers (publicly-accessible,
- see com.mysql.jdbc.MysqlErrorNumbers), and the ability to
- generate the mappings of vendor error codes to SQLStates
- that the driver uses (for documentation purposes).
-
- - Externalized more messages (on-going effort).
-
- - Fix for BUG#4311 - Error in retrieval of mediumint column with
- prepared statements and binary protocol.
-
- - Support new timezone variables in MySQL-4.1.3 when
- 'useTimezone=true'
-
- - Support for unsigned numerics as return types from prepared statements.
- This also causes a change in ResultSet.getObject() for the 'bigint unsigned'
- type, which used to return BigDecimal instances, it now returns instances
- of java.lang.BigInteger.
-
-06-09-04 - Version 3.1.2-alpha
-
- - Fixed stored procedure parameter parsing info when size was
- specified for a parameter (i.e. char(), varchar()).
-
- - Enabled callable statement caching via 'cacheCallableStmts'
- property.
-
- - Fixed case when no output parameters specified for a
- stored procedure caused a bogus query to be issued
- to retrieve out parameters, leading to a syntax error
- from the server.
-
- - Fixed case when no parameters could cause a NullPointerException
- in CallableStatement.setOutputParameters().
-
- - Removed wrapping of exceptions in MysqlIO.changeUser().
-
- - Fixed sending of split packets for large queries, enabled nio
- ability to send large packets as well.
-
- - Added .toString() functionality to ServerPreparedStatement,
- which should help if you're trying to debug a query that is
- a prepared statement (it shows SQL as the server would process).
-
- - Added 'gatherPerformanceMetrics' property, along with properties
- to control when/where this info gets logged (see docs for more
- info).
-
- - ServerPreparedStatements weren't actually de-allocating
- server-side resources when .close() was called.
-
- - Added 'logSlowQueries' property, along with property
- 'slowQueriesThresholdMillis' to control when a query should
- be considered 'slow'.
-
- - Correctly map output parameters to position given in
- prepareCall() vs. order implied during registerOutParameter() -
- fixes BUG#3146.
-
- - Correctly detect initial character set for servers >= 4.1.0
-
- - Cleaned up detection of server properties.
-
- - Support placeholder for parameter metadata for server >= 4.1.2
-
- - Fix for BUG#3539 getProcedures() does not return any procedures in
- result set
-
- - Fix for BUG#3540 getProcedureColumns() doesn't work with wildcards
- for procedure name
-
- - Fixed BUG#3520 -- DBMD.getSQLStateType() returns incorrect value.
-
- - Added 'connectionCollation' property to cause driver to issue
- 'set collation_connection=...' query on connection init if default
- collation for given charset is not appropriate.
-
- - Fixed DatabaseMetaData.getProcedures() when run on MySQL-5.0.0 (output of
- 'show procedure status' changed between 5.0.1 and 5.0.0.
-
- - Fixed BUG#3804 -- getWarnings() returns SQLWarning instead of DataTruncation
-
- - Don't enable server-side prepared statements for server version 5.0.0 or 5.0.1,
- as they aren't compatible with the '4.1.2+' style that the driver uses (the driver
- expects information to come back that isn't there, so it hangs).
-
-02-14-04 - Version 3.1.1-alpha
-
- - Fixed bug with UpdatableResultSets not using client-side
- prepared statements.
-
- - Fixed character encoding issues when converting bytes to
- ASCII when MySQL doesn't provide the character set, and
- the JVM is set to a multi-byte encoding (usually affecting
- retrieval of numeric values).
-
- - Unpack 'unknown' data types from server prepared statements
- as Strings.
-
- - Implemented long data (Blobs, Clobs, InputStreams, Readers)
- for server prepared statements.
-
- - Implemented Statement.getWarnings() for MySQL-4.1 and newer
- (using 'SHOW WARNINGS').
-
- - Default result set type changed to TYPE_FORWARD_ONLY
- (JDBC compliance).
-
- - Centralized setting of result set type and concurrency.
-
- - Re-factored how connection properties are set and exposed
- as DriverPropertyInfo as well as Connection and DataSource
- properties.
-
- - Support for NIO. Use 'useNIO=true' on platforms that support
- NIO.
-
- - Support for SAVEPOINTs (MySQL >= 4.0.14 or 4.1.1).
-
- - Support for mysql_change_user()...See the changeUser() method
- in com.mysql.jdbc.Connection.
-
- - Reduced number of methods called in average query to be more
- efficient.
-
- - Prepared Statements will be re-prepared on auto-reconnect. Any errors
- encountered are postponed until first attempt to re-execute the
- re-prepared statement.
-
- - Ensure that warnings are cleared before executing queries
- on prepared statements, as-per JDBC spec (now that we support
- warnings).
-
- - Support 'old' profileSql capitalization in ConnectionProperties.
- This property is deprecated, you should use 'profileSQL' if possible.
-
- - Optimized Buffer.readLenByteArray() to return shared empty byte array
- when length is 0.
-
- - Allow contents of PreparedStatement.setBlob() to be retained
- between calls to .execute*().
-
- - Deal with 0-length tokens in EscapeProcessor (caused by callable
- statement escape syntax).
-
- - Check for closed connection on delete/update/insert row operations in
- UpdatableResultSet.
-
- - Fix support for table aliases when checking for all primary keys in
- UpdatableResultSet.
-
- - Removed useFastDates connection property.
-
- - Correctly initialize datasource properties from JNDI Refs, including
- explicitly specified URLs.
-
- - DatabaseMetaData now reports supportsStoredProcedures() for
- MySQL versions >= 5.0.0
-
- - Fixed stack overflow in Connection.prepareCall() (bad merge).
-
- - Fixed IllegalAccessError to Calendar.getTimeInMillis() in DateTimeValue
- (for JDK < 1.4).
-
- - Fix for BUG#1673, where DatabaseMetaData.getColumns() is not
- returning correct column ordinal info for non '%' column name patterns.
-
- - Merged fix of datatype mapping from MySQL type 'FLOAT' to
- java.sql.Types.REAL from 3.0 branch.
-
- - Detect collation of column for RSMD.isCaseSensitive().
-
- - Fixed sending of queries > 16M.
-
- - Added named and indexed input/output parameter support to CallableStatement.
- MySQL-5.0.x or newer.
-
- - Fixed NullPointerException in ServerPreparedStatement.setTimestamp(),
- as well as year and month descrepencies in
- ServerPreparedStatement.setTimestamp(), setDate().
-
- - Added ability to have multiple database/JVM targets for compliance
- and regression/unit tests in build.xml.
-
- - Fixed NPE and year/month bad conversions when accessing some
- datetime functionality in ServerPreparedStatements and their
- resultant result sets.
-
- - Display where/why a connection was implicitly closed (to
- aid debugging).
-
- - CommunicationsException implemented, that tries to determine
- why communications was lost with a server, and displays
- possible reasons when .getMessage() is called.
-
- - Fixed BUG#2359, NULL values for numeric types in binary
- encoded result sets causing NullPointerExceptions.
-
- - Implemented Connection.prepareCall(), and DatabaseMetaData.
- getProcedures() and getProcedureColumns().
-
- - Reset 'long binary' parameters in ServerPreparedStatement when
- clearParameters() is called, by sending COM_RESET_STMT to the
- server.
-
- - Merged prepared statement caching, and .getMetaData() support
- from 3.0 branch.
-
- - Fixed off-by-1900 error in some cases for
- years in TimeUtil.fastDate/TimeCreate() when unpacking results
- from server-side prepared statements.
-
- - Fixed BUG#2502 -- charset conversion issue in getTables().
-
- - Implemented multiple result sets returned from a statement
- or stored procedure.
-
- - Fixed BUG#2606 -- Server side prepared statements not returning
- datatype 'YEAR' correctly.
-
- - Enabled streaming of result sets from server-side prepared
- statements.
-
- - Fixed BUG#2623 -- Class-cast exception when using
- scrolling result sets and server-side prepared statements.
-
- - Merged unbuffered input code from 3.0.
-
- - Fixed ConnectionProperties that weren't properly exposed
- via accessors, cleaned up ConnectionProperties code.
-
- - Fixed BUG#2671, NULL fields not being encoded correctly in
- all cases in server side prepared statements.
-
- - Fixed rare buffer underflow when writing numbers into buffers
- for sending prepared statement execution requests.
-
- - Use DocBook version of docs for shipped versions of drivers.
-
-02-18-03 - Version 3.1.0-alpha
-
- - Added 'requireSSL' property.
-
- - Added 'useServerPrepStmts' property (default 'false'). The
- driver will use server-side prepared statements when the
- server version supports them (4.1 and newer) when this
- property is set to 'true'. It is currently set to 'false'
- by default until all bind/fetch functionality has been
- implemented. Currently only DML prepared statements are
- implemented for 4.1 server-side prepared statements.
-
- - Track open Statements, close all when Connection.close()
- is called (JDBC compliance).
-
-06-23-05 - Version 3.0.17-ga
-
- - Fixed BUG#5874, Timestamp/Time conversion goes in the wrong 'direction'
- when useTimeZone='true' and server timezone differs from client timezone.
-
- - Fixed BUG#7081, DatabaseMetaData.getIndexInfo() ignoring 'unique'
- parameter.
-
- - Support new protocol type 'MYSQL_TYPE_VARCHAR'.
-
- - Added 'useOldUTF8Behavoior' configuration property, which causes
- JDBC driver to act like it did with MySQL-4.0.x and earlier when
- the character encoding is 'utf-8' when connected to MySQL-4.1 or
- newer.
-
- - Fixed BUG#7316 - Statements created from a pooled connection were
- returning physical connection instead of logical connection when
- getConnection() was called.
-
- - Fixed BUG#7033 - PreparedStatements don't encode Big5 (and other
- multi-byte) character sets correctly in static SQL strings.
-
- - Fixed BUG#6966, connections starting up failed-over (due to down master)
- never retry master.
-
- - Fixed BUG#7061, PreparedStatement.fixDecimalExponent() adding extra
- '+', making number unparseable by MySQL server.
-
- - Fixed BUG#7686, Timestamp key column data needed "_binary'" stripped for
- UpdatableResultSet.refreshRow().
-
- - Backported SQLState codes mapping from Connector/J 3.1, enable with
- 'useSqlStateCodes=true' as a connection property, it defaults to
- 'false' in this release, so that we don't break legacy applications (it
- defaults to 'true' starting with Connector/J 3.1).
-
- - Fixed BUG#7601, PreparedStatement.fixDecimalExponent() adding extra
- '+', making number unparseable by MySQL server.
-
- - Escape sequence {fn convert(..., type)} now supports ODBC-style types
- that are prepended by 'SQL_'.
-
- - Fixed duplicated code in configureClientCharset() that prevented
- useOldUTF8Behavior=true from working properly.
-
- - Handle streaming result sets with > 2 billion rows properly by fixing
- wraparound of row number counter.
-
- - Fixed BUG#7607 - MS932, SHIFT_JIS and Windows_31J not recog. as
- aliases for sjis.
-
- - Fixed BUG#6549 (while fixing #7607), adding 'CP943' to aliases for
- sjis.
-
- - Fixed BUG#8064, which requires hex escaping of binary data when using
- multi-byte charsets with prepared statements.
-
- - Fixed BUG#8812, NON_UNIQUE column from DBMD.getIndexInfo() returned
- inverted value.
-
- - Workaround for server BUG#9098 - default values of CURRENT_* for
- DATE/TIME/TIMESTAMP/TIMESTAMP columns can't be distinguished from
- 'string' values, so UpdatableResultSet.moveToInsertRow() generates
- bad SQL for inserting default values.
-
- - Fixed BUG#8629 - 'EUCKR' charset is sent as 'SET NAMES euc_kr' which
- MySQL-4.1 and newer doesn't understand.
-
- - DatabaseMetaData.supportsSelectForUpdate() returns correct value based
- on server version.
-
- - Use hex escapes for PreparedStatement.setBytes() for double-byte charsets
- including 'aliases' Windows-31J, CP934, MS932.
-
- - Added support for the "EUC_JP_Solaris" character encoding, which maps
- to a MySQL encoding of "eucjpms" (backported from 3.1 branch). This only
- works on servers that support eucjpms, namely 5.0.3 or later.
-
-11-15-04 - Version 3.0.16-ga
-
- - Re-issue character set configuration commands when re-using pooled
- connections and/or Connection.changeUser() when connected to MySQL-4.1
- or newer.
-
- - Fixed ResultSetMetaData.isReadOnly() to detect non-writable columns
- when connected to MySQL-4.1 or newer, based on existence of 'original'
- table and column names.
-
- - Fixed BUG#5664, ResultSet.updateByte() when on insert row
- throws ArrayOutOfBoundsException.
-
- - Fixed DatabaseMetaData.getTypes() returning incorrect (i.e. non-negative)
- scale for the 'NUMERIC' type.
-
- - Fixed BUG#6198, off-by-one bug in Buffer.readString(string).
-
- - Made TINYINT(1) -> BIT/Boolean conversion configurable via 'tinyInt1isBit'
- property (default 'true' to be JDBC compliant out of the box).
-
- - Only set 'character_set_results' during connection establishment if
- server version >= 4.1.1.
-
- - Fixed regression where useUnbufferedInput was defaulting to 'false'.
-
- - Fixed BUG#6231, ResultSet.getTimestamp() on a column with TIME in it
- fails.
-
-09-04-04 - Version 3.0.15-production
-
- - Fixed BUG#4010 - StringUtils.escapeEasternUnicodeByteStream is still
- broken for GBK
-
- - Fixed BUG#4334 - Failover for autoReconnect not using port #'s for any
- hosts, and not retrying all hosts. (WARN: This required a change to
- the SocketFactory connect() method signature, which is now
-
- public Socket connect(String host, int portNumber, Properties props)
-
- therefore any third-party socket factories will have to be changed
- to support this signature.
-
- - Logical connections created by MysqlConnectionPoolDataSource will
- now issue a rollback() when they are closed and sent back to the pool.
- If your application server/connection pool already does this for you, you
- can set the 'rollbackOnPooledClose' property to false to avoid the
- overhead of an extra rollback().
-
- - Removed redundant calls to checkRowPos() in ResultSet.
-
- - Fixed BUG#4742, 'DOUBLE' mapped twice in DBMD.getTypeInfo().
-
- - Added FLOSS license exemption.
-
- - Fixed BUG#4808, calling .close() twice on a PooledConnection causes NPE.
-
- - Fixed BUG#4138 and BUG#4860, DBMD.getColumns() returns incorrect JDBC
- type for unsigned columns. This affects type mappings for all numeric
- types in the RSMD.getColumnType() and RSMD.getColumnTypeNames() methods
- as well, to ensure that 'like' types from DBMD.getColumns() match up
- with what RSMD.getColumnType() and getColumnTypeNames() return.
-
- - 'Production' - 'GA' in naming scheme of distributions.
-
- - Fix for BUG#4880, RSMD.getPrecision() returning 0 for non-numeric types
- (should return max length in chars for non-binary types, max length
- in bytes for binary types). This fix also fixes mapping of
- RSMD.getColumnType() and RSMD.getColumnTypeName() for the BLOB types based
- on the length sent from the server (the server doesn't distinguish between
- TINYBLOB, BLOB, MEDIUMBLOB or LONGBLOB at the network protocol level).
-
- - Fixed BUG#5022 - ResultSet should release Field[] instance in .close().
-
- - Fixed BUG#5069 -- ResultSet.getMetaData() should not return
- incorrectly-initialized metadata if the result set has been closed, but
- should instead throw an SQLException. Also fixed for getRow() and
- getWarnings() and traversal methods by calling checkClosed() before
- operating on instance-level fields that are nullified during .close().
-
- - Parse new timezone variables from 4.1.x servers.
-
- - Use _binary introducer for PreparedStatement.setBytes() and
- set*Stream() when connected to MySQL-4.1.x or newer to avoid
- misinterpretation during character conversion.
-
-05-28-04 - Version 3.0.14-production
-
- - Fixed URL parsing error
-
-05-27-04 - Version 3.0.13-production
-
- - Fixed BUG#3848 - Using a MySQLDatasource without server name fails
-
- - Fixed BUG#3920 - "No Database Selected" when using
- MysqlConnectionPoolDataSource.
-
- - Fixed BUG#3873 - PreparedStatement.getGeneratedKeys() method returns only
- 1 result for batched insertions
-
-05-18-04 - Version 3.0.12-production
-
- - Add unsigned attribute to DatabaseMetaData.getColumns() output
- in the TYPE_NAME column.
-
- - Added 'failOverReadOnly' property, to allow end-user to configure
- state of connection (read-only/writable) when failed over.
-
- - Backported 'change user' and 'reset server state' functionality
- from 3.1 branch, to allow clients of MysqlConnectionPoolDataSource
- to reset server state on getConnection() on a pooled connection.
-
- - Don't escape SJIS/GBK/BIG5 when using MySQL-4.1 or newer.
-
- - Allow 'url' parameter for MysqlDataSource and MysqlConnectionPool
- DataSource so that passing of other properties is possible from
- inside appservers.
-
- - Map duplicate key and foreign key errors to SQLState of
- '23000'.
-
- - Backport documentation tooling from 3.1 branch.
-
- - Return creating statement for ResultSets created by
- getGeneratedKeys() (BUG#2957)
-
- - Allow java.util.Date to be sent in as parameter to
- PreparedStatement.setObject(), converting it to a Timestamp
- to maintain full precision (BUG#3103).
-
- - Don't truncate BLOBs/CLOBs when using setBytes() and/or
- setBinary/CharacterStream() (BUG#2670).
-
- - Dynamically configure character set mappings for field-level
- character sets on MySQL-4.1.0 and newer using 'SHOW COLLATION'
- when connecting.
-
- - Map 'binary' character set to 'US-ASCII' to support DATETIME
- charset recognition for servers >= 4.1.2
-
- - Use 'SET character_set_results" during initialization to allow any
- charset to be returned to the driver for result sets.
-
- - Use charsetnr returned during connect to encode queries before
- issuing 'SET NAMES' on MySQL >= 4.1.0.
-
- - Add helper methods to ResultSetMetaData (getColumnCharacterEncoding()
- and getColumnCharacterSet()) to allow end-users to see what charset
- the driver thinks it should be using for the column.
-
- - Only set character_set_results for MySQL >= 4.1.0.
-
- - Fixed BUG#3511, StringUtils.escapeSJISByteStream() not covering all
- eastern double-byte charsets correctly.
-
- - Renamed StringUtils.escapeSJISByteStream() to more appropriate
- escapeEasternUnicodeByteStream().
-
- - Fixed BUG#3554 - Not specifying database in URL caused MalformedURL
- exception.
-
- - Auto-convert MySQL encoding names to Java encoding names if used
- for characterEncoding property.
-
- - Added encoding names that are recognized on some JVMs to fix case
- where they were reverse-mapped to MySQL encoding names incorrectly.
-
- - Use junit.textui.TestRunner for all unit tests (to allow them to be
- run from the command line outside of Ant or Eclipse).
-
- - Fixed BUG#3557 - UpdatableResultSet not picking up default values
- for moveToInsertRow().
-
- - Fixed BUG#3570 - inconsistent reporting of column type. The server
- still doesn't return all types for *BLOBs *TEXT correctly, so the
- driver won't return those correctly.
-
- - Fixed BUG#3520 -- DBMD.getSQLStateType() returns incorrect value.
-
- - Fixed regression in PreparedStatement.setString() and eastern character
- encodings.
-
- - Made StringRegressionTest 4.1-unicode aware.
-
-02-19-04 - Version 3.0.11-stable
-
- - Trigger a 'SET NAMES utf8' when encoding is forced to 'utf8' _or_
- 'utf-8' via the 'characterEncoding' property. Previously, only the
- Java-style encoding name of 'utf-8' would trigger this.
-
- - AutoReconnect time was growing faster than exponentially (BUG#2447).
-
- - Fixed failover always going to last host in list (BUG#2578)
-
- - Added 'useUnbufferedInput' parameter, and now use it by default
- (due to JVM issue
- http://developer.java.sun.com/developer/bugParade/bugs/4401235.html)
-
- - Detect 'on/off' or '1','2','3' form of lower_case_table_names on
- server.
-
- - Return 'java.lang.Integer' for TINYINT and SMALLINT types from
- ResultSetMetaData.getColumnClassName() (fix for BUG#2852).
-
- - Return 'java.lang.Double' for FLOAT type from ResultSetMetaData.
- getColumnClassName() (fix for BUG#2855).
-
- - Return '[B' instead of java.lang.Object for BINARY, VARBINARY and
- LONGVARBINARY types from ResultSetMetaData.getColumnClassName()
- (JDBC compliance).
-
- - Issue connection events on all instances created from a
- ConnectionPoolDataSource.
-
-01-13-04 - Version 3.0.10-stable
-
- - Don't count quoted id's when inside a 'string' in PreparedStatement
- parsing (fix for BUG#1511).
-
- - 'Friendlier' exception message for PacketTooLargeException
- (BUG#1534).
-
- - Backported fix for aliased tables and UpdatableResultSets in
- checkUpdatability() method from 3.1 branch.
-
- - Fix for ArrayIndexOutOfBounds exception when using Statement.setMaxRows()
- (BUG#1695).
-
- - Fixed BUG#1576, dealing with large blobs and split packets not being
- read correctly.
-
- - Fixed regression of Statement.getGeneratedKeys() and REPLACE statements.
-
- - Fixed BUG#1630, subsequent call to ResultSet.updateFoo() causes NPE if
- result set is not updatable.
-
- - Fix for 4.1.1-style auth with no password.
-
- - Fix for BUG#1731, Foreign Keys column sequence is not consistent in
- DatabaseMetaData.getImported/Exported/CrossReference().
-
- - Fix for BUG#1775 - DatabaseMetaData.getSystemFunction() returning
- bad function 'VResultsSion'.
-
- - Fix for BUG#1592 -- cross-database updatable result sets
- are not checked for updatability correctly.
-
- - DatabaseMetaData.getColumns() should return Types.LONGVARCHAR for
- MySQL LONGTEXT type.
-
- - ResultSet.getObject() on TINYINT and SMALLINT columns should return
- Java type 'Integer' (BUG#1913)
-
- - Added 'alwaysClearStream' connection property, which causes the driver
- to always empty any remaining data on the input stream before
- each query.
-
- - Added more descriptive error message 'Server Configuration Denies
- Access to DataSource', as well as retrieval of message from server.
-
- - Autoreconnect code didn't set catalog upon reconnect if it had been
- changed.
-
- - Implement ResultSet.updateClob().
-
- - ResultSetMetaData.isCaseSensitive() returned wrong value for CHAR/VARCHAR
- columns.
-
- - Fix for BUG#1933 -- Connection property "maxRows" not honored.
-
- - Fix for BUG#1925 -- Statements being created too many times in
- DBMD.extractForeignKeyFromCreateTable().
-
- - Fix for BUG#1914 -- Support escape sequence {fn convert ... }
-
- - Fix for BUG#1958 -- ArrayIndexOutOfBounds when parameter number ==
- number of parameters + 1.
-
- - Fix for BUG#2006 -- ResultSet.findColumn() should use first matching
- column name when there are duplicate column names in SELECT query
- (JDBC-compliance).
-
- - Removed static synchronization bottleneck from
- PreparedStatement.setTimestamp().
-
- - Removed static synchronization bottleneck from instance factory
- method of SingleByteCharsetConverter.
-
- - Enable caching of the parsing stage of prepared statements via
- the 'cachePrepStmts', 'prepStmtCacheSize' and 'prepStmtCacheSqlLimit'
- properties (disabled by default).
-
- - Speed up parsing of PreparedStatements, try to use one-pass whenever
- possible.
-
- - Fixed security exception when used in Applets (applets can't
- read the system property 'file.encoding' which is needed
- for LOAD DATA LOCAL INFILE).
-
- - Use constants for SQLStates.
-
- - Map charset 'ko18_ru' to 'ko18r' when connected to MySQL-4.1.0 or
- newer.
-
- - Ensure that Buffer.writeString() saves room for the \0.
-
- - Fixed exception 'Unknown character set 'danish' on connect w/ JDK-1.4.0
-
- - Fixed mappings in SQLError to report deadlocks with SQLStates of '41000'.
-
- - 'maxRows' property would affect internal statements, so check it for all
- statement creation internal to the driver, and set to 0 when it is not.
-
-10-07-03 - Version 3.0.9-stable
-
- - Faster date handling code in ResultSet and PreparedStatement (no longer
- uses Date methods that synchronize on static calendars).
-
- - Fixed test for end of buffer in Buffer.readString().
-
- - Fixed ResultSet.previous() behavior to move current
- position to before result set when on first row
- of result set (bugs.mysql.com BUG#496)
-
- - Fixed Statement and PreparedStatement issuing bogus queries
- when setMaxRows() had been used and a LIMIT clause was present
- in the query.
-
- - Fixed BUG#661 - refreshRow didn't work when primary key values
- contained values that needed to be escaped (they ended up being
- doubly-escaped).
-
- - Support InnoDB contraint names when extracting foreign key info
- in DatabaseMetaData BUG#517 and BUG#664
- (impl. ideas from Parwinder Sekhon)
-
- - Backported 4.1 protocol changes from 3.1 branch (server-side SQL
- states, new field info, larger client capability flags,
- connect-with-database, and so forth).
-
- - Fix UpdatableResultSet to return values for getXXX() when on
- insert row (BUG#675).
-
- - The insertRow in an UpdatableResultSet is now loaded with
- the default column values when moveToInsertRow() is called
- (BUG#688)
-
- - DatabaseMetaData.getColumns() wasn't returning NULL for
- default values that are specified as NULL.
-
- - Change default statement type/concurrency to TYPE_FORWARD_ONLY
- and CONCUR_READ_ONLY (spec compliance).
-
- - Don't try and reset isolation level on reconnect if MySQL doesn't
- support them.
-
- - Don't wrap SQLExceptions in RowDataDynamic.
-
- - Don't change timestamp TZ twice if useTimezone==true (BUG#774)
-
- - Fixed regression in large split-packet handling (BUG#848).
-
- - Better diagnostic error messages in exceptions for 'streaming'
- result sets.
-
- - Issue exception on ResultSet.getXXX() on empty result set (wasn't
- caught in some cases).
-
- - Don't hide messages from exceptions thrown in I/O layers.
-
- - Don't fire connection closed events when closing pooled connections, or
- on PooledConnection.getConnection() with already open connections (BUG#884).
-
- - Clip +/- INF (to smallest and largest representative values for the type in
- MySQL) and NaN (to 0) for setDouble/setFloat(), and issue a warning on the
- statement when the server does not support +/- INF or NaN.
-
- - Fix for BUG#879, double-escaping of '\' when charset is SJIS or GBK and '\'
- appears in non-escaped input.
-
- - When emptying input stream of unused rows for 'streaming' result sets,
- have the current thread yield() every 100 rows in order to not monopolize
- CPU time.
-
- - Fixed BUG#1099, DatabaseMetaData.getColumns() getting confused about the
- keyword 'set' in character columns.
-
- - Fixed deadlock issue with Statement.setMaxRows().
-
- - Fixed CLOB.truncate(), BUG#1130
-
- - Optimized CLOB.setChracterStream(), BUG#1131
-
- - Made databaseName, portNumber and serverName optional parameters
- for MysqlDataSourceFactory (BUG#1246)
-
- - Fix for BUG#1247 -- ResultSet.get/setString mashing char 127
-
- - Backported auth. changes for 4.1.1 and newer from 3.1 branch.
-
- - Added com.mysql.jdbc.util.BaseBugReport to help creation of testcases
- for bug reports.
-
- - Added property to 'clobber' streaming results, by setting the
- 'clobberStreamingResults' property to 'true' (the default is 'false').
- This will cause a 'streaming' ResultSet to be automatically
- closed, and any oustanding data still streaming from the server to
- be discarded if another query is executed before all the data has been
- read from the server.
-
-05-23-03 - Version 3.0.8-stable
-
- - Allow bogus URLs in Driver.getPropertyInfo().
-
- - Return list of generated keys when using multi-value INSERTS
- with Statement.getGeneratedKeys().
-
- - Use JVM charset with filenames and 'LOAD DATA [LOCAL] INFILE'
-
- - Fix infinite loop with Connection.cleanup().
-
- - Changed Ant target 'compile-core' to 'compile-driver', and
- made testsuite compilation a separate target.
-
- - Fixed result set not getting set for Statement.executeUpdate(),
- which affected getGeneratedKeys() and getUpdateCount() in
- some cases.
-
- - Unicode character 0xFFFF in a string would cause the driver to
- throw an ArrayOutOfBoundsException (Bug #378)
-
- - Return correct amount of generated keys when using 'REPLACE'
- statements.
-
- - Fix problem detecting server character set in some cases.
-
- - Fix row data decoding error when using _very_ large packets.
-
- - Optimized row data decoding.
-
- - Issue exception when operating on an already-closed
- prepared statement.
-
- - Fixed SJIS encoding bug, thanks to Naoto Sato.
-
- - Optimized usage of EscapeProcessor.
-
- - Allow multiple calls to Statement.close()
-
-04-08-03 - Version 3.0.7-stable
-
- - Fixed MysqlPooledConnection.close() calling wrong event type.
-
- - Fixed StringIndexOutOfBoundsException in PreparedStatement.
- setClob().
-
- - 4.1 Column Metadata fixes
-
- - Remove synchronization from Driver.connect() and
- Driver.acceptsUrl().
-
- - IOExceptions during a transaction now cause the Connection to
- be closed.
-
- - Fixed missing conversion for 'YEAR' type in ResultSetMetaData.
- getColumnTypeName().
-
- - Don't pick up indexes that start with 'pri' as primary keys
- for DBMD.getPrimaryKeys().
-
- - Throw SQLExceptions when trying to do operations on a forcefully
- closed Connection (i.e. when a communication link failure occurs).
-
- - You can now toggle profiling on/off using
- Connection.setProfileSql(boolean).
-
- - Fixed charset issues with database metadata (charset was not
- getting set correctly).
-
- - Updatable ResultSets can now be created for aliased tables/columns
- when connected to MySQL-4.1 or newer.
-
- - Fixed 'LOAD DATA LOCAL INFILE' bug when file > max_allowed_packet.
-
- - Fixed escaping of 0x5c ('\') character for GBK and Big5 charsets.
-
- - Fixed ResultSet.getTimestamp() when underlying field is of type DATE.
-
- - Ensure that packet size from alignPacketSize() does not
- exceed MAX_ALLOWED_PACKET (JVM bug)
-
- - Don't reset Connection.isReadOnly() when autoReconnecting.
-
-02-18-03 - Version 3.0.6-stable
-
- - Fixed ResultSetMetaData to return "" when catalog not known.
- Fixes NullPointerExceptions with Sun's CachedRowSet.
-
- - Fixed DBMD.getTypeInfo() and DBMD.getColumns() returning
- different value for precision in TEXT/BLOB types.
-
- - Allow ignoring of warning for 'non transactional tables' during
- rollback (compliance/usability) by setting 'ignoreNonTxTables'
- property to 'true'.
-
- - Fixed SQLExceptions getting swallowed on initial connect.
-
- - Fixed Statement.setMaxRows() to stop sending 'LIMIT' type queries
- when not needed (performance)
-
- - Clean up Statement query/method mismatch tests (i.e. INSERT not
- allowed with .executeQuery()).
-
- - More checks added in ResultSet traversal method to catch
- when in closed state.
-
- - Fixed ResultSetMetaData.isWritable() to return correct value.
-
- - Add 'window' of different NULL sorting behavior to
- DBMD.nullsAreSortedAtStart (4.0.2 to 4.0.10, true, otherwise,
- no).
-
- - Implemented Blob.setBytes(). You still need to pass the
- resultant Blob back into an updatable ResultSet or
- PreparedStatement to persist the changes, as MySQL does
- not support 'locators'.
-
- - Backported 4.1 charset field info changes from Connector/J 3.1
-
-01-22-03 - Version 3.0.5-gamma
-
- - Fixed Buffer.fastSkipLenString() causing ArrayIndexOutOfBounds
- exceptions with some queries when unpacking fields.
-
- - Implemented an empty TypeMap for Connection.getTypeMap() so that
- some third-party apps work with MySQL (IBM WebSphere 5.0 Connection
- pool).
-
- - Added missing LONGTEXT type to DBMD.getColumns().
-
- - Retrieve TX_ISOLATION from database for
- Connection.getTransactionIsolation() when the MySQL version
- supports it, instead of an instance variable.
-
- - Quote table names in DatabaseMetaData.getColumns(),
- getPrimaryKeys(), getIndexInfo(), getBestRowIdentifier()
-
- - Greatly reduce memory required for setBinaryStream() in
- PreparedStatements.
-
- - Fixed ResultSet.isBeforeFirst() for empty result sets.
-
- - Added update options for foreign key metadata.
-
-
-01-06-03 - Version 3.0.4-gamma
-
- - Added quoted identifiers to database names for
- Connection.setCatalog.
-
- - Added support for quoted identifiers in PreparedStatement
- parser.
-
- - Streamlined character conversion and byte[] handling in
- PreparedStatements for setByte().
-
- - Reduce memory footprint of PreparedStatements by sharing
- outbound packet with MysqlIO.
-
- - Added 'strictUpdates' property to allow control of amount
- of checking for 'correctness' of updatable result sets. Set this
- to 'false' if you want faster updatable result sets and you know
- that you create them from SELECTs on tables with primary keys and
- that you have selected all primary keys in your query.
-
- - Added support for 4.0.8-style large packets.
-
- - Fixed PreparedStatement.executeBatch() parameter overwriting.
-
-12-17-02 - Version 3.0.3-dev
-
- - Changed charsToByte in SingleByteCharConverter to be non-static
-
- - Changed SingleByteCharConverter to use lazy initialization of each
- converter.
-
- - Fixed charset handling in Fields.java
-
- - Implemented Connection.nativeSQL()
-
- - More robust escape tokenizer -- recognize '--' comments, and allow
- nested escape sequences (see testsuite.EscapeProcessingTest)
-
- - DBMD.getImported/ExportedKeys() now handles multiple foreign keys
- per table.
-
- - Fixed ResultSetMetaData.getPrecision() returning incorrect values
- for some floating point types.
-
- - Fixed ResultSetMetaData.getColumnTypeName() returning BLOB for
- TEXT and TEXT for BLOB types.
-
- - Fixed Buffer.isLastDataPacket() for 4.1 and newer servers.
-
- - Added CLIENT_LONG_FLAG to be able to get more column flags
- (isAutoIncrement() being the most important)
-
- - Because of above, implemented ResultSetMetaData.isAutoIncrement()
- to use Field.isAutoIncrement().
-
- - Honor 'lower_case_table_names' when enabled in the server when
- doing table name comparisons in DatabaseMetaData methods.
-
- - Some MySQL-4.1 protocol support (extended field info from selects)
-
- - Use non-aliased table/column names and database names to fullly
- qualify tables and columns in UpdatableResultSet (requires
- MySQL-4.1 or newer)
-
- - Allow user to alter behavior of Statement/
- PreparedStatement.executeBatch() via 'continueBatchOnError' property
- (defaults to 'true').
-
- - Check for connection closed in more Connection methods
- (createStatement, prepareStatement, setTransactionIsolation,
- setAutoCommit).
-
- - More robust implementation of updatable result sets. Checks that
- _all_ primary keys of the table have been selected.
-
- - 'LOAD DATA LOCAL INFILE ...' now works, if your server is configured
- to allow it. Can be turned off with the 'allowLoadLocalInfile'
- property (see the README).
-
- - Substitute '?' for unknown character conversions in single-byte
- character sets instead of '\0'.
-
- - NamedPipeSocketFactory now works (only intended for Windows), see
- README for instructions.
-
-11-08-02 - Version 3.0.2-dev
-
- - Fixed issue with updatable result sets and PreparedStatements not
- working
-
- - Fixed ResultSet.setFetchDirection(FETCH_UNKNOWN)
-
- - Fixed issue when calling Statement.setFetchSize() when using
- arbitrary values
-
- - Fixed incorrect conversion in ResultSet.getLong()
-
- - Implemented ResultSet.updateBlob().
-
- - Removed duplicate code from UpdatableResultSet (it can be inherited
- from ResultSet, the extra code for each method to handle updatability
- I thought might someday be necessary has not been needed).
-
- - Fixed "UnsupportedEncodingException" thrown when "forcing" a
- character encoding via properties.
-
- - Fixed various non-ASCII character encoding issues.
-
- - Added driver property 'useHostsInPrivileges'. Defaults to true.
- Affects whether or not '@hostname' will be used in
- DBMD.getColumn/TablePrivileges.
-
- - All DBMD result set columns describing schemas now return NULL
- to be more compliant with the behavior of other JDBC drivers
- for other databases (MySQL does not support schemas).
-
- - Added SSL support. See README for information on how to use it.
-
- - Properly restore connection properties when autoReconnecting
- or failing-over, including autoCommit state, and isolation level.
-
- - Use 'SHOW CREATE TABLE' when possible for determining foreign key
- information for DatabaseMetaData...also allows cascade options for
- DELETE information to be returned
-
- - Escape 0x5c character in strings for the SJIS charset.
-
- - Fixed start position off-by-1 error in Clob.getSubString()
-
- - Implemented Clob.truncate()
-
- - Implemented Clob.setString()
-
- - Implemented Clob.setAsciiStream()
-
- - Implemented Clob.setCharacterStream()
-
- - Added com.mysql.jdbc.MiniAdmin class, which allows you to send
- 'shutdown' command to MySQL server...Intended to be used when 'embedding'
- Java and MySQL server together in an end-user application.
-
- - Added 'connectTimeout' parameter that allows users of JDK-1.4 and newer
- to specify a maxium time to wait to establish a connection.
-
- - Failover and autoReconnect only work when the connection is in a
- autoCommit(false) state, in order to stay transaction safe
-
- - Added 'queriesBeforeRetryMaster' property that specifies how many
- queries to issue when failed over before attempting to reconnect
- to the master (defaults to 50)
-
- - Fixed DBMD.supportsResultSetConcurrency() so that it returns true
- for ResultSet.TYPE_SCROLL_INSENSITIVE and ResultSet.CONCUR_READ_ONLY or
- ResultSet.CONCUR_UPDATABLE
-
- - Fixed ResultSet.isLast() for empty result sets (should return false).
-
- - PreparedStatement now honors stream lengths in setBinary/Ascii/Character
- Stream() unless you set the connection property
- 'useStreamLengthsInPrepStmts' to 'false'.
-
- - Removed some not-needed temporary object creation by using Strings
- smarter in EscapeProcessor, Connection and DatabaseMetaData classes.
-
-09-21-02 - Version 3.0.1-dev
-
- - Fixed ResultSet.getRow() off-by-one bug.
-
- - Fixed RowDataStatic.getAt() off-by-one bug.
-
- - Added limited Clob functionality (ResultSet.getClob(),
- PreparedStatemtent.setClob(),
- PreparedStatement.setObject(Clob).
-
- - Added socketTimeout parameter to URL.
-
- - Connection.isClosed() no longer "pings" the server.
-
- - Connection.close() issues rollback() when getAutoCommit() == false
-
- - Added "paranoid" parameter...sanitizes error messages removing
- "sensitive" information from them (such as hostnames, ports, or
- usernames), as well as clearing "sensitive" data structures
- when possible.
-
- - Fixed ResultSetMetaData.isSigned() for TINYINT and BIGINT.
-
- - Charsets now automatically detected. Optimized code for single-byte
- character set conversion.
-
- - Implemented ResultSet.getCharacterStream()
-
- - Added "LOCAL TEMPORARY" to table types in DatabaseMetaData.getTableTypes()
-
- - Massive code clean-up to follow Java coding conventions (the time had come)
-
-
-07-31-02 - Version 3.0.0-dev
-
- - !!! LICENSE CHANGE !!! The driver is now GPL. If you need
- non-GPL licenses, please contact me <mark@stripped>
-
- - JDBC-3.0 functionality including
- Statement/PreparedStatement.getGeneratedKeys() and
- ResultSet.getURL()
-
- - Performance enchancements - driver is now 50-100% faster
- in most situations, and creates fewer temporary objects
-
- - Repackaging...new driver name is "com.mysql.jdbc.Driver",
- old name still works, though (the driver is now provided
- by MySQL-AB)
-
- - Better checking for closed connections in Statement
- and PreparedStatement.
-
- - Support for streaming (row-by-row) result sets (see README)
- Thanks to Doron.
-
- - Support for large packets (new addition to MySQL-4.0 protocol),
- see README for more information.
-
- - JDBC Compliance -- Passes all tests besides stored procedure tests
-
-
- - Fix and sort primary key names in DBMetaData (SF bugs 582086 and 582086)
-
- - Float types now reported as java.sql.Types.FLOAT (SF bug 579573)
-
- - ResultSet.getTimestamp() now works for DATE types (SF bug 559134)
-
- - ResultSet.getDate/Time/Timestamp now recognizes all forms of invalid
- values that have been set to all zeroes by MySQL (SF bug 586058)
-
- - Testsuite now uses Junit (which you can get from www.junit.org)
-
- - The driver now only works with JDK-1.2 or newer.
-
- - Added multi-host failover support (see README)
-
- - General source-code cleanup.
-
- - Overall speed improvements via controlling transient object
- creation in MysqlIO class when reading packets
-
- - Performance improvements in string handling and field
- metadata creation (lazily instantiated) contributed by
- Alex Twisleton-Wykeham-Fiennes
-
-
-05-16-02 - Version 2.0.14
-
- - More code cleanup
-
- - PreparedStatement now releases resources on .close() (SF bug 553268)
-
- - Quoted identifiers not used if server version does not support them. Also,
- if server started with --ansi or --sql-mode=ANSI_QUOTES then '"' will be
- used as an identifier quote, otherwise '`' will be used.
-
- - ResultSet.getDouble() now uses code built into JDK to be more precise (but slower)
-
- - LogicalHandle.isClosed() calls through to physical connection
-
- - Added SQL profiling (to STDERR). Set "profileSql=true" in your JDBC url.
- See README for more information.
-
- - Fixed typo for relaxAutoCommit parameter.
-
-04-24-02 - Version 2.0.13
-
- - More code cleanup.
-
- - Fixed unicode chars being read incorrectly (SF bug 541088)
-
- - Faster blob escaping for PrepStmt
-
- - Added set/getPortNumber() to DataSource(s) (SF bug 548167)
-
- - Added setURL() to MySQLXADataSource (SF bug 546019)
-
- - PreparedStatement.toString() fixed (SF bug 534026)
-
- - ResultSetMetaData.getColumnClassName() now implemented
-
- - Rudimentary version of Statement.getGeneratedKeys() from JDBC-3.0
- now implemented (you need to be using JDK-1.4 for this to work, I
- believe)
-
- - DBMetaData.getIndexInfo() - bad PAGES fixed (SF BUG 542201)
-
-04-07-02 - Version 2.0.12
-
- - General code cleanup.
-
- - Added getIdleFor() method to Connection and MysqlLogicalHandle.
-
- - Relaxed synchronization in all classes, should fix 520615 and 520393.
-
- - Added getTable/ColumnPrivileges() to DBMD (fixes 484502).
-
- - Added new types to getTypeInfo(), fixed existing types thanks to
- Al Davis and Kid Kalanon.
-
- - Added support for BIT types (51870) to PreparedStatement.
-
- - Fixed getRow() bug (527165) in ResultSet
-
- - Fixes for ResultSet updatability in PreparedStatement.
- - Fixed timezone off by 1-hour bug in PreparedStatement (538286, 528785).
-
- - ResultSet: Fixed updatability (values being set to null
- if not updated).
-
- - DataSources - fixed setUrl bug (511614, 525565),
- wrong datasource class name (532816, 528767)
-
- - Added identifier quoting to all DatabaseMetaData methods
- that need them (should fix 518108)
-
- - Added support for YEAR type (533556)
-
- - ResultSet.insertRow() should now detect auto_increment fields
- in most cases and use that value in the new row. This detection
- will not work in multi-valued keys, however, due to the fact that
- the MySQL protocol does not return this information.
-
- - ResultSet.refreshRow() implemented.
-
- - Fixed testsuite.Traversal afterLast() bug, thanks to Igor Lastric.
-
-01-27-02 - Version 2.0.11
-
- - Fixed missing DELETE_RULE value in
- DBMD.getImported/ExportedKeys() and getCrossReference().
-
- - Full synchronization of Statement.java.
-
- - More changes to fix "Unexpected end of input stream"
- errors when reading BLOBs. This should be the last fix.
-
-01-24-02 - Version 2.0.10
-
- - Fixed spurious "Unexpected end of input stream" errors in
- MysqlIO (bug 507456).
-
- - Fixed null-pointer-exceptions when using
- MysqlConnectionPoolDataSource with Websphere 4 (bug 505839).
-
-01-13-02 - Version 2.0.9
-
- - Ant build was corrupting included jar files, fixed
- (bug 487669).
-
- - Fixed extra memory allocation in MysqlIO.readPacket()
- (bug 488663).
-
- - Implementation of DatabaseMetaData.getExported/ImportedKeys() and
- getCrossReference().
-
- - Full synchronization on methods modifying instance and class-shared
- references, driver should be entirely thread-safe now (please
- let me know if you have problems)
-
- - DataSource implementations moved to org.gjt.mm.mysql.jdbc2.optional
- package, and (initial) implementations of PooledConnectionDataSource
- and XADataSource are in place (thanks to Todd Wolff for the
- implementation and testing of PooledConnectionDataSource with
- IBM WebSphere 4).
-
- - Added detection of network connection being closed when reading packets
- (thanks to Todd Lizambri).
-
- - Fixed quoting error with escape processor (bug 486265).
-
- - Report batch update support through DatabaseMetaData (bug 495101).
-
- - Fixed off-by-one-hour error in PreparedStatement.setTimestamp()
- (bug 491577).
-
- - Removed concatenation support from driver (the '||' operator),
- as older versions of VisualAge seem to be the only thing that
- use it, and it conflicts with the logical '||' operator. You will
- need to start mysqld with the "--ansi" flag to use the '||'
- operator as concatenation (bug 491680)
-
- - Fixed casting bug in PreparedStatement (bug 488663).
-
-11-25-01 - Version 2.0.8
-
- - Batch updates now supported (thanks to some inspiration
- from Daniel Rall).
-
- - XADataSource/ConnectionPoolDataSource code (experimental)
-
- - PreparedStatement.setAnyNumericType() now handles positive
- exponents correctly (adds "+" so MySQL can understand it).
-
- - DatabaseMetaData.getPrimaryKeys() and getBestRowIdentifier()
- are now more robust in identifying primary keys (matches
- regardless of case or abbreviation/full spelling of Primary Key
- in Key_type column).
-
-10-24-01 - Version 2.0.7
-
- - PreparedStatement.setCharacterStream() now implemented
-
- - Fixed dangling socket problem when in high availability
- (autoReconnect=true) mode, and finalizer for Connection will
- close any dangling sockets on GC.
-
- - Fixed ResultSetMetaData.getPrecision() returning one
- less than actual on newer versions of MySQL.
-
- - ResultSet.getBlob() now returns null if column value
- was null.
-
- - Character sets read from database if useUnicode=true
- and characterEncoding is not set. (thanks to
- Dmitry Vereshchagin)
-
- - Initial transaction isolation level read from
- database (if avaialable) (thanks to Dmitry Vereshchagin)
-
- - Fixed DatabaseMetaData.supportsTransactions(), and
- supportsTransactionIsolationLevel() and getTypeInfo()
- SQL_DATETIME_SUB and SQL_DATA_TYPE fields not being
- readable.
-
- - Fixed PreparedStatement generating SQL that would end
- up with syntax errors for some queries.
-
- - Fixed ResultSet.isAfterLast() always returning false.
-
- - Fixed timezone issue in PreparedStatement.setTimestamp()
- (thanks to Erik Olofsson)
-
- - Captialize type names when "captializeTypeNames=true"
- is passed in URL or properties (for WebObjects, thanks
- to Anjo Krank)
-
- - Updatable result sets now correctly handle NULL
- values in fields.
-
- - PreparedStatement.setDouble() now uses full-precision
- doubles (reverting a fix made earlier to truncate them).
-
- - PreparedStatement.setBoolean() will use 1/0 for values
- if your MySQL version is 3.21.23 or higher.
-
-06-16-01 - Version 2.0.6
-
- - Fixed PreparedStatement parameter checking
-
- - Fixed case-sensitive column names in ResultSet.java
-
-06-13-01 - Version 2.0.5
-
- - Fixed ResultSet.getBlob() ArrayIndex out-of-bounds
-
- - Fixed ResultSetMetaData.getColumnTypeName for TEXT/BLOB
-
- - Fixed ArrayIndexOutOfBounds when sending large BLOB queries
- (Max size packet was not being set)
-
- - Added ISOLATION level support to Connection.setIsolationLevel()
-
- - Fixed NPE on PreparedStatement.executeUpdate() when all columns
- have not been set.
-
- - Fixed data parsing of TIMESTAMPs with 2-digit years
-
- - Added Byte to PreparedStatement.setObject()
-
- - ResultSet.getBoolean() now recognizes '-1' as 'true'
-
- - ResultSet has +/-Inf/inf support
-
- - ResultSet.insertRow() works now, even if not all columns are
- set (they will be set to "NULL")
-
- - DataBaseMetaData.getCrossReference() no longer ArrayIndexOOB
-
- - getObject() on ResultSet correctly does TINYINT->Byte and
- SMALLINT->Short
-
-12-03-00 - Version 2.0.3
-
- - Implemented getBigDecimal() without scale component
- for JDBC2.
-
- - Fixed composite key problem with updateable result sets.
-
- - Added detection of -/+INF for doubles.
-
- - Faster ASCII string operations.
-
- - Fixed incorrect detection of MAX_ALLOWED_PACKET, so sending
- large blobs should work now.
-
- - Fixed off-by-one error in java.sql.Blob implementation code.
-
- - Added "ultraDevHack" URL parameter, set to "true" to allow
- (broken) Macromedia UltraDev to use the driver.
-
-04-06-00 - Version 2.0.1
-
- - Fixed RSMD.isWritable() returning wrong value.
- Thanks to Moritz Maass.
-
- - Cleaned up exception handling when driver connects
-
- - Columns that are of type TEXT now return as Strings
- when you use getObject()
-
- - DatabaseMetaData.getPrimaryKeys() now works correctly wrt
- to key_seq. Thanks to Brian Slesinsky.
-
- - No escape processing is done on PreparedStatements anymore
- per JDBC spec.
-
- - Fixed many JDBC-2.0 traversal, positioning bugs, especially
- wrt to empty result sets. Thanks to Ron Smits, Nick Brook,
- Cessar Garcia and Carlos Martinez.
-
- - Fixed some issues with updatability support in ResultSet when
- using multiple primary keys.
-
-02-21-00 - Version 2.0pre5
-
- - Fixed Bad Handshake problem.
-
-01-10-00 - Version 2.0pre4
-
- - Fixes to ResultSet for insertRow() - Thanks to
- Cesar Garcia
-
- - Fix to Driver to recognize JDBC-2.0 by loading a JDBC-2.0
- class, instead of relying on JDK version numbers. Thanks
- to John Baker.
-
- - Fixed ResultSet to return correct row numbers
-
- - Statement.getUpdateCount() now returns rows matched,
- instead of rows actually updated, which is more SQL-92
- like.
-
-10-29-99
-
- - Statement/PreparedStatement.getMoreResults() bug fixed.
- Thanks to Noel J. Bergman.
-
- - Added Short as a type to PreparedStatement.setObject().
- Thanks to Jeff Crowder
-
- - Driver now automagically configures maximum/preferred packet
- sizes by querying server.
-
- - Autoreconnect code uses fast ping command if server supports
- it.
-
- - Fixed various bugs wrt. to packet sizing when reading from
- the server and when alloc'ing to write to the server.
-
-08-17-99 - Version 2.0pre
-
- - Now compiles under JDK-1.2. The driver supports both JDK-1.1
- and JDK-1.2 at the same time through a core set of classes.
- The driver will load the appropriate interface classes at
- runtime by figuring out which JVM version you are using.
-
- - Fixes for result sets with all nulls in the first row.
- (Pointed out by Tim Endres)
-
- - Fixes to column numbers in SQLExceptions in ResultSet
- (Thanks to Blas Rodriguez Somoza)
-
- - The database no longer needs to specified to connect.
- (Thanks to Christian Motschke)
-
-07-04-99 - Version 1.2b
-
- - Better Documentation (in progress), in doc/mm.doc/book1.html
-
- - DBMD now allows null for a column name pattern (not in
- spec), which it changes to '%'.
-
- - DBMD now has correct types/lengths for getXXX().
-
- - ResultSet.getDate(), getTime(), and getTimestamp() fixes.
- (contributed by Alan Wilken)
-
- - EscapeProcessor now handles \{ \} and { or } inside quotes
- correctly. (thanks to Alik for some ideas on how to fix it)
-
- - Fixes to properties handling in Connection.
- (contributed by Juho Tikkala)
-
- - ResultSet.getObject() now returns null for NULL columns
- in the table, rather than bombing out.
- (thanks to Ben Grosman)
-
- - ResultSet.getObject() now returns Strings for types
- from MySQL that it doesn't know about. (Suggested by
- Chris Perdue)
-
- - Removed DataInput/Output streams, not needed, 1/2 number
- of method calls per IO operation.
-
- - Use default character encoding if one is not specified. This
- is a work-around for broken JVMs, because according to spec,
- EVERY JVM must support "ISO8859_1", but they don't.
-
- - Fixed Connection to use the platform character encoding
- instead of "ISO8859_1" if one isn't explicitly set. This
- fixes problems people were having loading the character-
- converter classes that didn't always exist (JVM bug).
- (thanks to Fritz Elfert for pointing out this problem)
-
- - Changed MysqlIO to re-use packets where possible to reduce
- memory usage.
-
- - Fixed escape-processor bugs pertaining to {} inside
- quotes.
-
-04-14-99 - Version 1.2a
-
- - Fixed character-set support for non-Javasoft JVMs
- (thanks to many people for pointing it out)
-
- - Fixed ResultSet.getBoolean() to recognize 'y' & 'n'
- as well as '1' & '0' as boolean flags.
- (thanks to Tim Pizey)
-
- - Fixed ResultSet.getTimestamp() to give better performance.
- (thanks to Richard Swift)
-
- - Fixed getByte() for numeric types.
- (thanks to Ray Bellis)
-
- - Fixed DatabaseMetaData.getTypeInfo() for DATE type.
- (thanks to Paul Johnston)
-
- - Fixed EscapeProcessor for "fn" calls.
- (thanks to Piyush Shah at locomotive.org)
-
- - Fixed EscapeProcessor to not do extraneous work if there
- are no escape codes.
- (thanks to Ryan Gustafson)
-
- - Fixed Driver to parse URLs of the form "jdbc:mysql://host:port"
- (thanks to Richard Lobb)
-
-03-24-99 - Version 1.1i
-
- - Fixed Timestamps for PreparedStatements
-
- - Fixed null pointer exceptions in RSMD and RS
-
- - Re-compiled with jikes for valid class files (thanks ms!)
-
-03-08-99 - Version 1.1h
-
- - Fixed escape processor to deal with un-matched { and }
- (thanks to Craig Coles)
-
- - Fixed escape processor to create more portable (between
- DATETIME and TIMESTAMP types) representations so that
- it will work with BETWEEN clauses.
- (thanks to Craig Longman)
-
- - MysqlIO.quit() now closes the socket connection. Before,
- after many failed connections some OS's would run out
- of file descriptors. (thanks to Michael Brinkman)
-
- - Fixed NullPointerException in Driver.getPropertyInfo.
- (thanks to Dave Potts)
-
- - Fixes to MysqlDefs to allow all *text fields to be
- retrieved as Strings.
- (thanks to Chris at Leverage)
-
- - Fixed setDouble in PreparedStatement for large numbers
- to avoid sending scientific notation to the database.
- (thanks to J.S. Ferguson)
-
- - Fixed getScale() and getPrecision() in RSMD.
- (contrib'd by James Klicman)
-
- - Fixed getObject() when field was DECIMAL or NUMERIC
- (thanks to Bert Hobbs)
-
- - DBMD.getTables() bombed when passed a null table-name
- pattern. Fixed. (thanks to Richard Lobb)
-
- - Added check for "client not authorized" errors during
- connect. (thanks to Hannes Wallnoefer)
-
-02-19-99 - Version 1.1g
-
- - Result set rows are now byte arrays. Blobs and Unicode
- work bidriectonally now. The useUnicode and encoding
- options are implemented now.
-
- - Fixes to PreparedStatement to send binary set by
- setXXXStream to be sent un-touched to the MySQL server.
-
- - Fixes to getDriverPropertyInfo().
-
-12-31-98 - Version 1.1f
-
- - Changed all ResultSet fields to Strings, this should allow
- Unicode to work, but your JVM must be able to convert
- between the character sets. This should also make reading
- data from the server be a bit quicker, because there is now
- no conversion from StringBuffer to String.
-
- - Changed PreparedStatement.streamToString() to be more
- efficient (code from Uwe Schaefer).
-
- - URL parsing is more robust (throws SQL exceptions on errors
- rather than NullPointerExceptions)
-
- - PreparedStatement now can convert Strings to Time/Date values
- via setObject() (code from Robert Currey).
-
- - IO no longer hangs in Buffer.readInt(), that bug was
- introduced in 1.1d when changing to all byte-arrays for
- result sets. (Pointed out by Samo Login)
-
-11-03-98 - Version 1.1b
-
- - Fixes to DatabaseMetaData to allow both IBM VA and J-Builder
- to work. Let me know how it goes. (thanks to Jac Kersing)
-
- - Fix to ResultSet.getBoolean() for NULL strings
- (thanks to Barry Lagerweij)
-
- - Beginning of code cleanup, and formatting. Getting ready
- to branch this off to a parallel JDBC-2.0 source tree.
-
- - Added "final" modifier to critical sections in MysqlIO and
- Buffer to allow compiler to inline methods for speed.
-
-9-29-98
-
- - If object references passed to setXXX() in PreparedStatement are
- null, setNull() is automatically called for you. (Thanks for the
- suggestion goes to Erik Ostrom)
-
- - setObject() in PreparedStatement will now attempt to write a
- serialized representation of the object to the database for
- objects of Types.OTHER and objects of unknown type.
-
- - Util now has a static method readObject() which given a ResultSet
- and a column index will re-instantiate an object serialized in
- the above manner.
-
-9-02-98 - Vesion 1.1
-
- - Got rid of "ugly hack" in MysqlIO.nextRow(). Rather than
- catch an exception, Buffer.isLastDataPacket() was fixed.
-
- - Connection.getCatalog() and Connection.setCatalog()
- should work now.
-
- - Statement.setMaxRows() works, as well as setting
- by property maxRows. Statement.setMaxRows() overrides
- maxRows set via properties or url parameters.
-
- - Automatic re-connection is available. Because it has
- to "ping" the database before each query, it is
- turned off by default. To use it, pass in "autoReconnect=true"
- in the connection URL. You may also change the number of
- reconnect tries, and the initial timeout value via
- "maxReconnects=n" (default 3) and "initialTimeout=n"
- (seconds, default 2) parameters. The timeout is an
- exponential backoff type of timeout, e.g. if you have initial
- timeout of 2 seconds, and maxReconnects of 3, then the driver
- will timeout 2 seconds, 4 seconds, then 16 seconds between each
- re-connection attempt.
-
-8-24-98 - Version 1.0
-
- - Fixed handling of blob data in Buffer.java
-
- - Fixed bug with authentication packet being
- sized too small.
-
- - The JDBC Driver is now under the LPGL
-
-8-14-98 -
-
- - Fixed Buffer.readLenString() to correctly
- read data for BLOBS.
-
- - Fixed PreparedStatement.stringToStream to
- correctly read data for BLOBS.
-
- - Fixed PreparedStatement.setDate() to not
- add a day.
- (above fixes thanks to Vincent Partington)
-
- - Added URL parameter parsing (?user=... and so forth).
-
-
-8-04-98 - Version 0.9d
-
- - Big news! New package name. Tim Endres from ICE
- Engineering is starting a new source tree for
- GNU GPL'd Java software. He's graciously given
- me the org.gjt.mm package directory to use, so now
- the driver is in the org.gjt.mm.mysql package scheme.
- I'm "legal" now. Look for more information on Tim's
- project soon.
-
- - Now using dynamically sized packets to reduce
- memory usage when sending commands to the DB.
-
- - Small fixes to getTypeInfo() for parameters, and so forth.
-
- - DatabaseMetaData is now fully implemented. Let me
- know if these drivers work with the various IDEs
- out there. I've heard that they're working with
- JBuilder right now.
-
- - Added JavaDoc documentation to the package.
-
- - Package now available in .zip or .tar.gz.
-
-7-28-98 - Version 0.9
-
- - Implemented getTypeInfo().
- Connection.rollback() now throws an SQLException
- per the JDBC spec.
-
- - Added PreparedStatement that supports all JDBC API
- methods for PreparedStatement including InputStreams.
- Please check this out and let me know if anything is
- broken.
-
- - Fixed a bug in ResultSet that would break some
- queries that only returned 1 row.
-
- - Fixed bugs in DatabaseMetaData.getTables(),
- DatabaseMetaData.getColumns() and
- DatabaseMetaData.getCatalogs().
-
- - Added functionality to Statement that allows
- executeUpdate() to store values for IDs that are
- automatically generated for AUTO_INCREMENT fields.
- Basically, after an executeUpdate(), look at the
- SQLWarnings for warnings like "LAST_INSERTED_ID =
- 'some number', COMMAND = 'your SQL query'".
-
- If you are using AUTO_INCREMENT fields in your
- tables and are executing a lot of executeUpdate()s
- on one Statement, be sure to clearWarnings() every
- so often to save memory.
-
-7-06-98 - Version 0.8
-
- - Split MysqlIO and Buffer to separate classes. Some
- ClassLoaders gave an IllegalAccess error for some
- fields in those two classes. Now mm.mysql works in
- applets and all classloaders.
-
- Thanks to Joe Ennis <jce@stripped> for pointing
- out the problem and working on a fix with me.
-
-7-01-98 - Version 0.7
-
- - Fixed DatabaseMetadata problems in getColumns() and
- bug in switch statement in the Field constructor.
-
- Thanks to Costin Manolache <costin@stripped> for
- pointing these out.
-
-5-21-98 - Version 0.6
-
- - Incorporated efficiency changes from
- Richard Swift <Richard.Swift@stripped> in
- MysqlIO.java and ResultSet.java
-
- - We're now 15% faster than gwe's driver.
-
- - Started working on DatabaseMetaData.
-
- The following methods are implemented:
- * getTables()
- * getTableTypes()
- * getColumns
- * getCatalogs()
+<programlisting>
+12-22-05 - Version 5.0.0-beta
+
+ - XADataSource implemented (ported from 3.2 branch which won't be
+ released as a product). Use
+ "com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" as your datasource
+ class name in your application server to utilize XA transactions
+ in MySQL-5.0.10 and newer.
+
+ - PreparedStatement.setString() didn't work correctly when
+ sql_mode on server contained NO_BACKSLASH_ESCAPES, and no characters
+ that needed escaping were present in the string.
+
+ - Attempt detection of the MySQL type "BINARY" (it's an alias, so this isn't
+ always reliable), and use the java.sql.Types.BINARY type mapping for it.
+
+ - Moved -bin-g.jar file into separate "debug" subdirectory to avoid confusion.
+
+ - Don't allow .setAutoCommit(true), or .commit() or .rollback() on an XA-managed
+ connection as-per the JDBC specification.
+
+ - If the connection "useTimezone" is set to "true", then also respect timezone
+ conversions in escape-processed string literals (e.g. "{ts ...}" and
+ "{t ...}").
+
+ - Return original column name for RSMD.getColumnName() if the column was aliased,
+ alias name for .getColumnLabel() (if aliased), and original table name
+ for .getTableName(). Note this only works for MySQL-4.1 and newer, as
+ older servers don't make this information available to clients.
+
+ - Setting "useJDBCCompliantTimezoneShift=true" (it's not the default)
+ causes the driver to use GMT for _all_ TIMESTAMP/DATETIME timezones,
+ and the current VM timezone for any other type that refers to timezones.
+ This feature can not be used when "useTimezone=true" to convert between
+ server and client timezones.
+
+ - Add one level of indirection of internal representation of CallableStatement
+ parameter metadata to avoid class not found issues on JDK-1.3 for
+ ParameterMetadata interface (which doesn't exist prior to JDBC-3.0).
+
+ - Added unit tests for XADatasource, as well as friendlier exceptions
+ for XA failures compared to the "stock" XAException (which has no
+ messages).
+
+ - Fixed BUG#14279 - Idle timeouts cause XAConnections to whine about rolling
+ themselves back
+
+ - Added support for Connector/MXJ integration via url subprotocol
+ "jdbc:mysql:mxj://....".
+
+ - Moved all SQLException constructor usage to a factory in SQLError
+ (ground-work for JDBC-4.0 SQLState-based exception classes).
+
+ - Removed Java5-specific calls to BigDecimal constructor (when
+ result set value is '', (int)0 was being used as an argument
+ in-directly via method return value. This signature doesn't exist
+ prior to Java5.)
+
+ - Moved all SQLException creation to a factory method in SQLError,
+ groundwork for JDBC-4.0 SQLState class-based exceptions.
+
+ - Added service-provider entry to META-INF/services/java.sql.Driver
+ for JDBC-4.0 support.
+
+ - Return "[VAR]BINARY" for RSMD.getColumnTypeName() when that is actually
+ the type, and it can be distinguished (MySQL-4.1 and newer).
+
+ - When fix for BUG#14562 was merged from 3.1.12, added functionality
+ for CallableStatement's parameter metadata to return correct
+ information for .getParameterClassName().
+
+ - Fuller synchronization of Connection to avoid deadlocks when
+ using multithreaded frameworks that multithread a single connection
+ (usually not recommended, but the JDBC spec allows it anyways),
+ part of fix to BUG#14972).
+
+ - Implementation of Statement.cancel() and Statement.setQueryTimeout().
+ Both require MySQL-5.0.0 or newer server, require a separate connection
+ to issue the "KILL QUERY" command, and in the case of setQueryTimeout()
+ creates an additional thread to handle the timeout functionality.
+
+ Note: Failures to cancel the statement for setQueryTimeout() may manifest
+ themselves as RuntimeExceptions rather than failing silently, as there
+ is currently no way to unblock the thread that is executing the query being
+ cancelled due to timeout expiration and have it throw the exception
+ instead.
+
+xx-xx-05 - Version 3.1.13
+
+ - Fixed BUG#15464 - INOUT parameter does not store IN value.
+
+ - Fixed BUG#14609 - Exception thrown for new decimal type when
+ using updatable result sets.
+
+ - Fixed BUG#15544, no "dos" character set in MySQL > 4.1.0
+
+ - Fixed BUG#15383 - PreparedStatement.setObject() serializes
+ BigInteger as object, rather than sending as numeric value
+ (and is thus not complementary to .getObject() on an UNSIGNED
+ LONG type).
+
+ - Fixed BUG#11874 - ResultSet.getShort() for UNSIGNED TINYINT
+ returned wrong values.
+
+ - Fixed BUG#15676 - lib-nodist directory missing from
+ package breaks out-of-box build
+
+ - Fixed BUG#15854 - DBMD.getColumns() returns wrong type for BIT.
+
+11-30-05 - Version 3.1.12
+
+ - Fixed client-side prepared statement bug with embedded ? inside
+ quoted identifiers (it was recognized as a placeholder, when it
+ was not).
+
+ - Don't allow executeBatch() for CallableStatements with registered
+ OUT/INOUT parameters (JDBC compliance).
+
+ - Fall back to platform-encoding for URLDecoder.decode() when
+ parsing driver URL properties if the platform doesn't have a
+ two-argument version of this method.
+
+ - Fixed BUG#14562 - Java type conversion may be incorrect for
+ mediumint.
+
+ - Added configuration property "useGmtMillisForDatetimes" which
+ when set to true causes ResultSet.getDate(), .getTimestamp() to
+ return correct millis-since GMT when .getTime() is called on
+ the return value (currently default is "false" for legacy
+ behavior).
+
+ - Fixed DatabaseMetaData.stores*Identifiers():
+
+ * if lower_case_table_names=0 (on server):
+
+ storesLowerCaseIdentifiers() returns false
+ storesLowerCaseQuotedIdentifiers() returns false
+ storesMixedCaseIdentifiers() returns true
+ storesMixedCaseQuotedIdentifiers() returns true
+ storesUpperCaseIdentifiers() returns false
+ storesUpperCaseQuotedIdentifiers() returns true
+
+ * if lower_case_table_names=1 (on server):
+
+ storesLowerCaseIdentifiers() returns true
+ storesLowerCaseQuotedIdentifiers() returns true
+ storesMixedCaseIdentifiers() returns false
+ storesMixedCaseQuotedIdentifiers() returns false
+ storesUpperCaseIdentifiers() returns false
+ storesUpperCaseQuotedIdentifiers() returns true
+
+ - Fixed BUG#14815 - DatabaseMetaData.getColumns() doesn't
+ return TABLE_NAME correctly.
+
+ - Fixed BUG#14909 - escape processor replaces quote character
+ in quoted string with string delimiter.
+
+ - Fixed BUG#12975 - OpenOffice expects
+ DBMD.supportsIntegrityEnhancementFacility() to return "true"
+ if foreign keys are supported by the datasource, even though
+ this method also covers support for check constraints,
+ which MySQL _doesn't_ have. Setting the configuration property
+ "overrideSupportsIntegrityEnhancementFacility" to "true" causes
+ the driver to return "true" for this method.
+
+ - Added "com.mysql.jdbc.testsuite.url.default" system property to
+ set default JDBC url for testsuite (to speed up bug resolution
+ when I'm working in Eclipse).
+
+ - Fixed BUG#14938 - Unable to initialize character set mapping
+ tables (due to J2EE classloader differences).
+
+ - Fixed BUG#14972 - Deadlock while closing server-side prepared
+ statements from multiple threads sharing one connection.
+
+ - Fixed BUG#12230 - logSlowQueries should give better info.
+
+ - Fixed BUG#13775 - Extraneous sleep on autoReconnect.
+
+ - Fixed BUG#15024 - Driver incorrectly closes streams passed as
+ arguments to PreparedStatements. Reverts to legacy behavior by
+ setting the JDBC configuration property "autoClosePStmtStreams"
+ to "true" (also included in the 3-0-Compat configuration "bundle").
+
+ - Fixed BUG#13048 - maxQuerySizeToLog is not respected. Added logging of
+ bound values for execute() phase of server-side prepared statements
+ when profileSQL=true as well.
+
+ - Fixed BUG#15065 - Usage advisor complains about unreferenced
+ columns, even though they've been referenced.
+
+ - Don't increase timeout for failover/reconnect (BUG#6577)
+
+ - Process escape tokens in Connection.prepareStatement(...), fix
+ for BUG#15141. You can disable this behavior by setting
+ the JDBC URL configuration property "processEscapeCodesForPrepStmts"
+ to "false".
+
+ - Fixed BUG#13255 - Reconnect during middle of executeBatch()
+ should not occur if autoReconnect is enabled.
+
+10-07-05 - Version 3.1.11-stable
+
+ - Fixed BUG#11629 - Spurious "!" on console when character
+ encoding is "utf8".
+
+ - Fixed statements generated for testcases missing ";" for
+ "plain" statements.
+
+ - Fixed BUG#11663 - Incorrect generation of testcase scripts
+ for server-side prepared statements.
+
+ - 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.
+
+ - Moved source code to svn repo.
+
+ - Fixed BUG#11797 - Escape tokenizer doesn't respect stacked single quotes
+ for escapes.
+
+ - GEOMETRY type not recognized when using server-side prepared statements.
+
+ - Fixed BUG#11879 -- ReplicationConnection won't switch to slave, throws
+ "Catalog can't be null" exception.
+
+ - Fixed BUG#12218, properties shared between master and slave with
+ replication connection.
+
+ - Fixed BUG#10630, Statement.getWarnings() fails with NPE if statement
+ has been closed.
+
+ - Only get char[] from SQL in PreparedStatement.ParseInfo() when needed.
+
+ - Fixed BUG#12104 - Geometry types not handled with server-side prepared
+ statements.
+
+ - Fixed BUG#11614 - StringUtils.getBytes() doesn't work when using
+ multibyte character encodings and a length in _characters_ is
+ specified.
+
+ - Fixed BUG#11798 - Pstmt.setObject(...., Types.BOOLEAN) throws exception.
+
+ - Fixed BUG#11976 - maxPerformance.properties mis-spells
+ "elideSetAutoCommits".
+
+ - Fixed BUG#11575 -- DBMD.storesLower/Mixed/UpperIdentifiers()
+ reports incorrect values for servers deployed on Windows.
+
+ - Fixed BUG#11190 - ResultSet.moveToCurrentRow() fails to work when
+ preceeded by a call to ResultSet.moveToInsertRow().
+
+ - Fixed BUG#11115, VARBINARY data corrupted when using server-side
+ prepared statements and .setBytes().
+
+ - Fixed BUG#12229 - explainSlowQueries hangs with server-side
+ prepared statements.
+
+ - Fixed BUG#11498 - Escape processor didn't honor strings demarcated
+ with double quotes.
+
+ - 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).
+
+ - Reworked Field class, *Buffer, and MysqlIO to be aware of field
+ lengths > Integer.MAX_VALUE.
+
+ - Updated DBMD.supportsCorrelatedQueries() to return true for versions >
+ 4.1, supportsGroupByUnrelated() to return true and
+ getResultSetHoldability() to return HOLD_CURSORS_OVER_COMMIT.
+
+ - Fixed 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's 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).
+
+ - 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.
+
+ - Fixed BUG#12753 - Tokenizer for "=" in URL properties was causing
+ sessionVariables=.... to be parameterized incorrectly.
+
+ - Fixed BUG#11781, foreign key information that is quoted is
+ parsed incorrectly when DatabaseMetaData methods use that
+ information.
+
+ - 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.
+
+ - CallableStatement.clearParameters() now clears resources associated
+ with INOUT/OUTPUT parameters as well as INPUT parameters.
+
+ - Fixed BUG#12417 - Connection.prepareCall() is database name
+ case-sensitive (on Windows systems).
+
+ - Fixed BUG#12752 - Cp1251 incorrectly mapped to win1251 for
+ servers newer than 4.0.x.
+
+ - Fixed BUG#12970 - java.sql.Types.OTHER returned for
+ BINARY and VARBINARY columns when using
+ DatabaseMetaData.getColumns().
+
+ - ServerPreparedStatement.getBinding() now checks if the statement
+ is closed before attempting to reference the list of parameter
+ bindings, to avoid throwing a NullPointerException.
+
+ - Fixed BUG#13277 - ResultSetMetaData from
+ Statement.getGeneratedKeys() caused NullPointerExceptions to be
+ thrown whenever a method that required a connection reference
+ was called.
+
+ - 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.
+
+ - Fixed NullPointerException when converting "catalog" parameter
+ in many DatabaseMetaDataMethods to byte[]s (for the result set)
+ when the parameter is null. ("null" isn't technically allowed
+ by the JDBC specification, but we've historically allowed it).
+
+ - Backport of VAR[BINARY|CHAR] [BINARY] types detection from
+ 5.0 branch.
+
+ - Read response in MysqlIO.sendFileToServer(), even if the
+ local file can't be opened, otherwise next query issued
+ will fail, because it's reading the response to the empty
+ LOAD DATA INFILE packet sent to the server.
+
+ - 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 via .getStatement() (the default is "false", to
+ be JDBC-compliant and to reduce the chance that code using
+ JDBC leaks Statement instances).
+
+ - Fixed BUG#13453 - URL configuration parameters don't allow
+ '&' 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.
+
+ - The configuration property "sessionVariables" now allows you to
+ specify variables that start with the "@" sign.
+
+ - Fixed BUG#13043 - 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.
+
+06-23-05 - Version 3.1.10-stable
+
+ - Fixed connecting without a database specified raised an exception
+ in MysqlIO.changeDatabaseTo().
+
+ - Initial implemention of ParameterMetadata for
+ PreparedStatement.getParameterMetadata(). Only works fully
+ for CallableStatements, as current server-side prepared statements
+ return every parameter as a VARCHAR type.
+
+06-22-05 - Version 3.1.9-stable
+
+ - 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.
+
+ - Fixed BUG#9064 - com.mysql.jdbc.PreparedStatement.ParseInfo
+ does unnecessary call to toCharArray().
+
+ - Fixed Bug#10144 - Memory leak in ServerPreparedStatement if
+ serverPrepare() fails.
+
+ - 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.
+
+ - Fixed BUG#10156 - 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.
+
+ - Fixed BUG#10155, double quotes not recognized when parsing
+ client-side prepared statements.
+
+ - 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.
+
+ - Fixed BUG#10310 - Driver doesn't support {?=CALL(...)} for calling
+ stored functions. This involved adding support for function retrieval
+ to DatabaseMetaData.getProcedures() and getProcedureColumns() as well.
+
+ - Fixed 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.
+
+ - 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. Irregardless 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".
+
+ - Fixed BUG#10496 - SQLException is thrown when using property
+ "characterSetResults" with cp932 or eucjpms.
+
+ - Reorganized directory layout, sources now 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".
+
+ - Fixed BUG#10850 - 0-length streams not sent to server when
+ using server-side prepared statements.
+
+ - 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.
+
+ - Fixed BUG#11115, Varbinary data corrupted when using server-side
+ prepared statements and ResultSet.getBytes().
+
+ - 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.
+
+ - Fixed BUG#11259, autoReconnect ping causes exception on connection
+ startup.
+
+ - Fixed BUG#11360 Connector/J dumping query into SQLException twice
+
+ - Fixed PreparedStatement.setClob() not accepting null as a parameter.
+
+ - Fixed BUG#11411 - Production package doesn't include JBoss integration
+ classes.
+
+ - Removed nonsensical "costly type conversion" warnings when using
+ usage advisor.
+
+
+04-14-05 - Version 3.1.8-stable
+
+ - Fixed DatabaseMetaData.getTables() returning views when they were
+ not asked for as one of the requested table types.
+
+ - Added support for new precision-math DECIMAL type in MySQL >= 5.0.3.
+
+ - Fixed ResultSet.getTime() on a NULL value for server-side prepared
+ statements throws NPE.
+
+ - Made Connection.ping() a public method.
+
+ - Fixed Bug#8868, DATE_FORMAT() queries returned as BLOBs from getObject().
+
+ - ServerPreparedStatements now correctly 'stream' BLOB/CLOB data to the
+ server. You can configure the threshold chunk size using the
+ JDBC URL property 'blobSendChunkSize' (the default is one megabyte).
+
+ - BlobFromLocator now uses correct identifier quoting when generating
+ prepared statements.
+
+ - Server-side session variables can be preset at connection time by
+ passing them as a comma-delimited list for the connection property
+ 'sessionVariables'.
+
+ - Fixed regression in ping() for users using autoReconnect=true.
+
+ - Fixed BUG#9040 - PreparedStatement.addBatch() doesn't work with server-side
+ prepared statements and streaming BINARY data.
+
+ - Fixed BUG#8800 - DBMD.supportsMixedCase*Identifiers() returns wrong
+ value on servers running on case-sensitive filesystems.
+
+ - Fixed BUG#9206, can not use 'UTF-8' for characterSetResults
+ configuration property.
+
+ - Fixed BUG#9236, a continuation of BUG#8868, where functions used in queries
+ that should return non-string types when resolved by temporary tables suddenly
+ become opaque binary strings (work-around for server limitation). Also fixed
+ fields with type of CHAR(n) CHARACTER SET BINARY to return correct/matching
+ classes for RSMD.getColumnClassName() and ResultSet.getObject().
+
+ - Fixed BUG#8792 - DBMD.supportsResultSetConcurrency() not returning
+ true for forward-only/read-only result sets (we obviously support this).
+
+ - Fixed BUG#8803, 'DATA_TYPE' column from DBMD.getBestRowIdentifier()
+ causes ArrayIndexOutOfBoundsException when accessed (and in fact, didn't
+ return any value).
+
+ - Check for empty strings ('') when converting char/varchar column data to numbers,
+ throw exception if 'emptyStringsConvertToZero' configuration property is set
+ to 'false' (for backward-compatibility with 3.0, it is now set to 'true'
+ by default, but will most likely default to 'false' in 3.2).
+
+ - Fixed BUG#9320 - PreparedStatement.getMetaData() inserts blank row in database
+ under certain conditions when not using server-side prepared statements.
+
+ - Connection.canHandleAsPreparedStatement() now makes 'best effort' to distinguish
+ LIMIT clauses with placeholders in them from ones without in order to have fewer
+ false positives when generating work-arounds for statements the server cannot
+ currently handle as server-side prepared statements.
+
+ - Fixed build.xml to not compile log4j logging if log4j not available.
+
+ - Added support for the c3p0 connection pool's (http://c3p0.sf.net/)
+ validation/connection checker interface which uses the lightweight
+ 'COM_PING' call to the server if available. To use it, configure your
+ c3p0 connection pool's 'connectionTesterClassName' property to use
+ 'com.mysql.jdbc.integration.c3p0.MysqlConnectionTester'.
+
+ - Better detection of LIMIT inside/outside of quoted strings so that
+ the driver can more correctly determine whether a prepared statement
+ can be prepared on the server or not.
+
+ - Fixed BUG#9319 - Stored procedures with same name in
+ different databases confuse the driver when it tries to determine
+ parameter counts/types.
+
+ - Added finalizers to ResultSet and Statement implementations to be JDBC
+ spec-compliant, which requires that if not explicitly closed, these
+ resources should be closed upon garbage collection.
+
+ - Fixed BUG#9682 - Stored procedures with DECIMAL parameters with
+ storage specifications that contained "," in them would fail.
+
+ - PreparedStatement.setObject(int, Object, int type, int scale) now
+ uses scale value for BigDecimal instances.
+
+ - Fixed BUG#9704 - Statement.getMoreResults() could throw NPE when
+ existing result set was .close()d.
+
+ - The performance metrics feature now gathers information about
+ number of tables referenced in a SELECT.
+
+ - The logging system is now automatically configured. If the value has
+ been set by the user, via the URL property "logger" or the system
+ property "com.mysql.jdbc.logger", then use that, otherwise, autodetect
+ it using the following steps:
+
+ Log4j, if it's available,
+ Then JDK1.4 logging,
+ Then fallback to our STDERR logging.
+
+ - Fixed BUG#9778, DBMD.getTables() shouldn't return tables if views
+ are asked for, even if the database version doesn't support views.
+
+ - Fixed driver not returning 'true' for '-1' when ResultSet.getBoolean()
+ was called on result sets returned from server-side prepared statements.
+
+ - Added a Manifest.MF file with implementation information to the .jar
+ file.
+
+ - More tests in Field.isOpaqueBinary() to distinguish opaque binary (i.e.
+ fields with type CHAR(n) and CHARACTER SET BINARY) from output of
+ various scalar and aggregate functions that return strings.
+
+ - Fixed BUG#9917 - Should accept null for catalog (meaning use current)
+ in DBMD methods, even though it's not JDBC-compliant for legacy's sake.
+ Disable by setting connection property "nullCatalogMeansCurrent" to "false"
+ (which will be the default value in C/J 3.2.x).
+
+ - Fixed BUG#9769 - Should accept null for name patterns in DBMD (meaning "%"),
+ even though it isn't JDBC compliant, for legacy's sake. Disable by setting
+ connection property "nullNamePatternMatchesAll" to "false" (which will be
+ the default value in C/J 3.2.x).
+
+02-18-05 - Version 3.1.7-stable
+
+ - Fixed BUG#7686, Timestamp key column data needed "_binary'"
+ stripped for UpdatableResultSet.refreshRow().
+
+ - Fixed BUG#7715 - Timestamps converted incorrectly to strings
+ with Server-side prepared statements and updatable result sets.
+
+ - Detect new sql_mode variable in string form (it used to be
+ integer) and adjust quoting method for strings appropriately.
+
+ - Added 'holdResultsOpenOverStatementClose' property (default is
+ false), that keeps result sets open over statement.close() or new
+ execution on same statement (suggested by Kevin Burton).
+
+ - Fixed BUG#7952 -- Infinite recursion when 'falling back' to master
+ in failover configuration.
+
+ - Disable multi-statements (if enabled) for MySQL-4.1 versions prior
+ to version 4.1.10 if the query cache is enabled, as the server
+ returns wrong results in this configuration.
+
+ - Fixed duplicated code in configureClientCharset() that prevented
+ useOldUTF8Behavior=true from working properly.
+
+ - Removed 'dontUnpackBinaryResults' functionality, the driver now
+ always stores results from server-side prepared statements as-is
+ from the server and unpacks them on demand.
+
+ - Fixed BUG#8096 where emulated locators corrupt binary data
+ when using server-side prepared statements.
+
+ - Fixed synchronization issue with
+ ServerPreparedStatement.serverPrepare() that could cause
+ deadlocks/crashes if connection was shared between threads.
+
+ - By default, the driver now scans SQL you are preparing via all
+ variants of Connection.prepareStatement() to determine if it is a
+ supported type of statement to prepare on the server side, and if
+ it is not supported by the server, it instead prepares it as a
+ client-side emulated prepared statement (BUG#4718). You can
+ disable this by passing 'emulateUnsupportedPstmts=false' in your
+ JDBC URL.
+
+ - Remove _binary introducer from parameters used as in/out
+ parameters in CallableStatement.
+
+ - Always return byte[]s for output parameters registered as *BINARY.
+
+ - Send correct value for 'boolean' "true" to server for
+ PreparedStatement.setObject(n, "true", Types.BIT).
+
+ - Fixed bug with Connection not caching statements from
+ prepareStatement() when the statement wasn't a server-side
+ prepared statement.
+
+ - Choose correct 'direction' to apply time adjustments when both
+ client and server are in GMT timezone when using
+ ResultSet.get(..., cal) and PreparedStatement.set(...., cal).
+
+ - Added 'dontTrackOpenResources' option (default is false, to be
+ JDBC compliant), which helps with memory use for non-well-behaved
+ apps (i.e applications which don't close Statements when they
+ should).
+
+ - Fixed BUG#8428 - ResultSet.getString() doesn't maintain format
+ stored on server, bug fix only enabled when 'noDatetimeStringSync'
+ property is set to 'true' (the default is 'false').
+
+ - Fixed NPE in ResultSet.realClose() when using usage advisor and
+ result set was already closed.
+
+ - Fixed BUG#8487 - PreparedStatements not creating streaming result
+ sets.
+
+ - Don't pass NULL to String.valueOf() in
+ ResultSet.getNativeConvertToString(), as it stringifies it (i.e.
+ returns "null"), which is not correct for the method in question.
+
+ - Fixed BUG#8484 - ResultSet.getBigDecimal() throws exception
+ when rounding would need to occur to set scale. The driver now
+ chooses a rounding mode of 'half up' if non-rounding
+ BigDecimal.setScale() fails.
+
+ - Added 'useLocalSessionState' configuration property, when set to
+ 'true' the JDBC driver trusts that the application is well-behaved
+ and only sets autocommit and transaction isolation levels using
+ the methods provided on java.sql.Connection, and therefore can
+ manipulate these values in many cases without incurring
+ round-trips to the database server.
+
+ - Added enableStreamingResults() to Statement for connection pool
+ implementations that check Statement.setFetchSize() for
+ specification-compliant values. Call Statement.setFetchSize(>=0)
+ to disable the streaming results for that statement.
+
+ - Added support for BIT type in MySQL-5.0.3. The driver will treat
+ BIT(1-8) as the JDBC standard BIT type (which maps to
+ java.lang.Boolean), as the server does not currently send enough
+ information to determine the size of a bitfield when < 9 bits are
+ declared. BIT(>9) will be treated as VARBINARY, and will return
+ byte[] when getObject() is called.
+
+12-23-04 - Version 3.1.6-stable
+
+ - Fixed hang on SocketInputStream.read() with Statement.setMaxRows() and
+ multiple result sets when driver has to truncate result set directly,
+ rather than tacking a 'LIMIT n' on the end of it.
+
+ - Fixed BUG#7026 - DBMD.getProcedures() doesn't respect catalog parameter.
+
+12-02-04 - Version 3.1.5-gamma
+
+ - Fix comparisons made between string constants and dynamic strings that
+ are either toUpperCase()d or toLowerCase()d to use Locale.ENGLISH, as
+ some locales 'override' case rules for English. Also use
+ StringUtils.indexOfIgnoreCase() instead of .toUpperCase().indexOf(),
+ avoids creating a very short-lived transient String instance.
+
+ - Fixed BUG#5235 - Server-side prepared statements did not honor
+ 'zeroDateTimeBehavior' property, and would cause class-cast
+ exceptions when using ResultSet.getObject(), as the all-zero string
+ was always returned.
+
+ - Fixed batched updates with server prepared statements weren't looking if
+ the types had changed for a given batched set of parameters compared
+ to the previous set, causing the server to return the error
+ 'Wrong arguments to mysql_stmt_execute()'.
+
+ - Handle case when string representation of timestamp contains trailing '.'
+ with no numbers following it.
+
+ - Fixed BUG#5706 - Inefficient detection of pre-existing string instances
+ in ResultSet.getNativeString().
+
+ - Don't throw exceptions for Connection.releaseSavepoint().
+
+ - Use a per-session Calendar instance by default when decoding dates
+ from ServerPreparedStatements (set to old, less performant behavior by
+ setting property 'dynamicCalendars=true').
+
+ - Added experimental configuration property 'dontUnpackBinaryResults',
+ which delays unpacking binary result set values until they're asked for,
+ and only creates object instances for non-numerical values (it is set
+ to 'false' by default). For some usecase/jvm combinations, this is
+ friendlier on the garbage collector.
+
+ - Fixed BUG#5729 - UNSIGNED BIGINT unpacked incorrectly from
+ server-side prepared statement result sets.
+
+ - Fixed BUG#6225 - ServerSidePreparedStatement allocating short-lived
+ objects un-necessarily.
+
+ - Removed un-wanted new Throwable() in ResultSet constructor due to bad
+ merge (caused a new object instance that was never used for every result
+ set created) - Found while profiling for BUG#6359.
+
+ - Fixed too-early creation of StringBuffer in EscapeProcessor.escapeSQL(),
+ also return String when escaping not needed (to avoid unnecssary object
+ allocations). Found while profiling for BUG#6359.
+
+ - Use null-safe-equals for key comparisons in updatable result sets.
+
+ - Fixed BUG#6537, SUM() on Decimal with server-side prepared statement ignores
+ scale if zero-padding is needed (this ends up being due to conversion to DOUBLE
+ by server, which when converted to a string to parse into BigDecimal, loses all
+ 'padding' zeros).
+
+ - Use DatabaseMetaData.getIdentifierQuoteString() when building DBMD
+ queries.
+
+ - Use 1MB packet for sending file for LOAD DATA LOCAL INFILE if that
+ is < 'max_allowed_packet' on server.
+
+ - Fixed BUG#6399, ResultSetMetaData.getColumnDisplaySize() returns incorrect
+ values for multi-byte charsets.
+
+ - Make auto-deserialization of java.lang.Objects stored in BLOBs
+ configurable via 'autoDeserialize' property (defaults to 'false').
+
+ - Re-work Field.isOpaqueBinary() to detect 'CHAR(n) CHARACTER SET BINARY'
+ to support fixed-length binary fields for ResultSet.getObject().
+
+ - Use our own implementation of buffered input streams to get around
+ blocking behavior of java.io.BufferedInputStream. Disable this with
+ 'useReadAheadInput=false'.
+
+ - Fixed BUG#6348, failing to connect to the server when one of the
+ addresses for the given host name is IPV6 (which the server does
+ not yet bind on). The driver now loops through _all_ IP addresses
+ for a given host, and stops on the first one that accepts() a
+ socket.connect().
+
+09-04-04 - Version 3.1.4-beta
+
+ - Fixed BUG#4510 - connector/j 3.1.3 beta does not handle integers
+ correctly (caused by changes to support unsigned reads in
+ Buffer.readInt() -> Buffer.readShort()).
+
+ - Added support in DatabaseMetaData.getTables() and getTableTypes()
+ for VIEWs which are now available in MySQL server version 5.0.x.
+
+ - Fixed BUG#4642 -- ServerPreparedStatement.execute*() sometimes
+ threw ArrayIndexOutOfBoundsException when unpacking field metadata.
+
+ - Optimized integer number parsing, enable 'old' slower integer parsing
+ using JDK classes via 'useFastIntParsing=false' property.
+
+ - Added 'useOnlyServerErrorMessages' property, which causes message text
+ in exceptions generated by the server to only contain the text sent by
+ the server (as opposed to the SQLState's 'standard' description, followed
+ by the server's error message). This property is set to 'true' by default.
+
+ - Fixed BUG#4689 - ResultSet.wasNull() does not work for primatives if a
+ previous null was returned.
+
+ - Track packet sequence numbers if enablePacketDebug=true, and throw an
+ exception if packets received out-of-order.
+
+ - Fixed BUG#4482, ResultSet.getObject() returns wrong type for strings
+ when using prepared statements.
+
+ - Calling MysqlPooledConnection.close() twice (even though an application
+ error), caused NPE. Fixed.
+
+ - Fixed BUG#5012 -- ServerPreparedStatements dealing with return of
+ DECIMAL type don't work.
+
+ - Fixed BUG#5032 -- ResultSet.getObject() doesn't return
+ type Boolean for pseudo-bit types from prepared statements on 4.1.x
+ (shortcut for avoiding extra type conversion when using binary-encoded
+ result sets obscurred test in getObject() for 'pseudo' bit type)
+
+ - You can now use URLs in 'LOAD DATA LOCAL INFILE' statements, and the
+ driver will use Java's built-in handlers for retreiving the data and
+ sending it to the server. This feature is not enabled by default,
+ you must set the 'allowUrlInLocalInfile' connection property to 'true'.
+
+ - The driver is more strict about truncation of numerics on
+ ResultSet.get*(), and will throw an SQLException when truncation is
+ detected. You can disable this by setting 'jdbcCompliantTruncation' to
+ false (it is enabled by default, as this functionality is required
+ for JDBC compliance).
+
+ - Added three ways to deal with all-zero datetimes when reading them from
+ a ResultSet, 'exception' (the default), which throws an SQLException
+ with an SQLState of 'S1009', 'convertToNull', which returns NULL instead of
+ the date, and 'round', which rounds the date to the nearest closest value
+ which is '0001-01-01'.
+
+ - Fixed ServerPreparedStatement to read prepared statement metadata off
+ the wire, even though it's currently a placeholder instead of using
+ MysqlIO.clearInputStream() which didn't work at various times because
+ data wasn't available to read from the server yet. This fixes sporadic
+ errors users were having with ServerPreparedStatements throwing
+ ArrayIndexOutOfBoundExceptions.
+
+ - Use com.mysql.jdbc.Message's classloader when loading resource bundle,
+ should fix sporadic issues when the caller's classloader can't locate
+ the resource bundle.
+
+07-07-04 - Version 3.1.3-beta
+
+ - Mangle output parameter names for CallableStatements so they
+ will not clash with user variable names.
+
+ - Added support for INOUT parameters in CallableStatements.
+
+ - Fix for BUG#4119, null bitmask sent for server-side prepared
+ statements was incorrect.
+
+ - Use SQL Standard SQL states by default, unless 'useSqlStateCodes'
+ property is set to 'false'.
+
+ - Added packet debuging code (see the 'enablePacketDebug' property
+ documentation).
+
+ - Added constants for MySQL error numbers (publicly-accessible,
+ see com.mysql.jdbc.MysqlErrorNumbers), and the ability to
+ generate the mappings of vendor error codes to SQLStates
+ that the driver uses (for documentation purposes).
+
+ - Externalized more messages (on-going effort).
+
+ - Fix for BUG#4311 - Error in retrieval of mediumint column with
+ prepared statements and binary protocol.
+
+ - Support new timezone variables in MySQL-4.1.3 when
+ 'useTimezone=true'
+
+ - Support for unsigned numerics as return types from prepared statements.
+ This also causes a change in ResultSet.getObject() for the 'bigint unsigned'
+ type, which used to return BigDecimal instances, it now returns instances
+ of java.lang.BigInteger.
+
+06-09-04 - Version 3.1.2-alpha
+
+ - Fixed stored procedure parameter parsing info when size was
+ specified for a parameter (i.e. char(), varchar()).
+
+ - Enabled callable statement caching via 'cacheCallableStmts'
+ property.
+
+ - Fixed case when no output parameters specified for a
+ stored procedure caused a bogus query to be issued
+ to retrieve out parameters, leading to a syntax error
+ from the server.
+
+ - Fixed case when no parameters could cause a NullPointerException
+ in CallableStatement.setOutputParameters().
+
+ - Removed wrapping of exceptions in MysqlIO.changeUser().
+
+ - Fixed sending of split packets for large queries, enabled nio
+ ability to send large packets as well.
+
+ - Added .toString() functionality to ServerPreparedStatement,
+ which should help if you're trying to debug a query that is
+ a prepared statement (it shows SQL as the server would process).
+
+ - Added 'gatherPerformanceMetrics' property, along with properties
+ to control when/where this info gets logged (see docs for more
+ info).
+
+ - ServerPreparedStatements weren't actually de-allocating
+ server-side resources when .close() was called.
+
+ - Added 'logSlowQueries' property, along with property
+ 'slowQueriesThresholdMillis' to control when a query should
+ be considered 'slow'.
+
+ - Correctly map output parameters to position given in
+ prepareCall() vs. order implied during registerOutParameter() -
+ fixes BUG#3146.
+
+ - Correctly detect initial character set for servers >= 4.1.0
+
+ - Cleaned up detection of server properties.
+
+ - Support placeholder for parameter metadata for server >= 4.1.2
+
+ - Fix for BUG#3539 getProcedures() does not return any procedures in
+ result set
+
+ - Fix for BUG#3540 getProcedureColumns() doesn't work with wildcards
+ for procedure name
+
+ - Fixed BUG#3520 -- DBMD.getSQLStateType() returns incorrect value.
+
+ - Added 'connectionCollation' property to cause driver to issue
+ 'set collation_connection=...' query on connection init if default
+ collation for given charset is not appropriate.
+
+ - Fixed DatabaseMetaData.getProcedures() when run on MySQL-5.0.0 (output of
+ 'show procedure status' changed between 5.0.1 and 5.0.0.
+
+ - Fixed BUG#3804 -- getWarnings() returns SQLWarning instead of DataTruncation
+
+ - Don't enable server-side prepared statements for server version 5.0.0 or 5.0.1,
+ as they aren't compatible with the '4.1.2+' style that the driver uses (the driver
+ expects information to come back that isn't there, so it hangs).
+
+02-14-04 - Version 3.1.1-alpha
+
+ - Fixed bug with UpdatableResultSets not using client-side
+ prepared statements.
+
+ - Fixed character encoding issues when converting bytes to
+ ASCII when MySQL doesn't provide the character set, and
+ the JVM is set to a multi-byte encoding (usually affecting
+ retrieval of numeric values).
+
+ - Unpack 'unknown' data types from server prepared statements
+ as Strings.
+
+ - Implemented long data (Blobs, Clobs, InputStreams, Readers)
+ for server prepared statements.
+
+ - Implemented Statement.getWarnings() for MySQL-4.1 and newer
+ (using 'SHOW WARNINGS').
+
+ - Default result set type changed to TYPE_FORWARD_ONLY
+ (JDBC compliance).
+
+ - Centralized setting of result set type and concurrency.
+
+ - Re-factored how connection properties are set and exposed
+ as DriverPropertyInfo as well as Connection and DataSource
+ properties.
+
+ - Support for NIO. Use 'useNIO=true' on platforms that support
+ NIO.
+
+ - Support for SAVEPOINTs (MySQL >= 4.0.14 or 4.1.1).
+
+ - Support for mysql_change_user()...See the changeUser() method
+ in com.mysql.jdbc.Connection.
+
+ - Reduced number of methods called in average query to be more
+ efficient.
+
+ - Prepared Statements will be re-prepared on auto-reconnect. Any errors
+ encountered are postponed until first attempt to re-execute the
+ re-prepared statement.
+
+ - Ensure that warnings are cleared before executing queries
+ on prepared statements, as-per JDBC spec (now that we support
+ warnings).
+
+ - Support 'old' profileSql capitalization in ConnectionProperties.
+ This property is deprecated, you should use 'profileSQL' if possible.
+
+ - Optimized Buffer.readLenByteArray() to return shared empty byte array
+ when length is 0.
+
+ - Allow contents of PreparedStatement.setBlob() to be retained
+ between calls to .execute*().
+
+ - Deal with 0-length tokens in EscapeProcessor (caused by callable
+ statement escape syntax).
+
+ - Check for closed connection on delete/update/insert row operations in
+ UpdatableResultSet.
+
+ - Fix support for table aliases when checking for all primary keys in
+ UpdatableResultSet.
+
+ - Removed useFastDates connection property.
+
+ - Correctly initialize datasource properties from JNDI Refs, including
+ explicitly specified URLs.
+
+ - DatabaseMetaData now reports supportsStoredProcedures() for
+ MySQL versions >= 5.0.0
+
+ - Fixed stack overflow in Connection.prepareCall() (bad merge).
+
+ - Fixed IllegalAccessError to Calendar.getTimeInMillis() in DateTimeValue
+ (for JDK < 1.4).
+
+ - Fix for BUG#1673, where DatabaseMetaData.getColumns() is not
+ returning correct column ordinal info for non '%' column name patterns.
+
+ - Merged fix of datatype mapping from MySQL type 'FLOAT' to
+ java.sql.Types.REAL from 3.0 branch.
+
+ - Detect collation of column for RSMD.isCaseSensitive().
+
+ - Fixed sending of queries > 16M.
+
+ - Added named and indexed input/output parameter support to CallableStatement.
+ MySQL-5.0.x or newer.
+
+ - Fixed NullPointerException in ServerPreparedStatement.setTimestamp(),
+ as well as year and month descrepencies in
+ ServerPreparedStatement.setTimestamp(), setDate().
+
+ - Added ability to have multiple database/JVM targets for compliance
+ and regression/unit tests in build.xml.
+
+ - Fixed NPE and year/month bad conversions when accessing some
+ datetime functionality in ServerPreparedStatements and their
+ resultant result sets.
+
+ - Display where/why a connection was implicitly closed (to
+ aid debugging).
+
+ - CommunicationsException implemented, that tries to determine
+ why communications was lost with a server, and displays
+ possible reasons when .getMessage() is called.
+
+ - Fixed BUG#2359, NULL values for numeric types in binary
+ encoded result sets causing NullPointerExceptions.
+
+ - Implemented Connection.prepareCall(), and DatabaseMetaData.
+ getProcedures() and getProcedureColumns().
+
+ - Reset 'long binary' parameters in ServerPreparedStatement when
+ clearParameters() is called, by sending COM_RESET_STMT to the
+ server.
+
+ - Merged prepared statement caching, and .getMetaData() support
+ from 3.0 branch.
+
+ - Fixed off-by-1900 error in some cases for
+ years in TimeUtil.fastDate/TimeCreate() when unpacking results
+ from server-side prepared statements.
+
+ - Fixed BUG#2502 -- charset conversion issue in getTables().
+
+ - Implemented multiple result sets returned from a statement
+ or stored procedure.
+
+ - Fixed BUG#2606 -- Server side prepared statements not returning
+ datatype 'YEAR' correctly.
+
+ - Enabled streaming of result sets from server-side prepared
+ statements.
+
+ - Fixed BUG#2623 -- Class-cast exception when using
+ scrolling result sets and server-side prepared statements.
+
+ - Merged unbuffered input code from 3.0.
+
+ - Fixed ConnectionProperties that weren't properly exposed
+ via accessors, cleaned up ConnectionProperties code.
+
+ - Fixed BUG#2671, NULL fields not being encoded correctly in
+ all cases in server side prepared statements.
+
+ - Fixed rare buffer underflow when writing numbers into buffers
+ for sending prepared statement execution requests.
+
+ - Use DocBook version of docs for shipped versions of drivers.
+
+02-18-03 - Version 3.1.0-alpha
+
+ - Added 'requireSSL' property.
+
+ - Added 'useServerPrepStmts' property (default 'false'). The
+ driver will use server-side prepared statements when the
+ server version supports them (4.1 and newer) when this
+ property is set to 'true'. It is currently set to 'false'
+ by default until all bind/fetch functionality has been
+ implemented. Currently only DML prepared statements are
+ implemented for 4.1 server-side prepared statements.
+
+ - Track open Statements, close all when Connection.close()
+ is called (JDBC compliance).
+
+06-23-05 - Version 3.0.17-ga
+
+ - Fixed BUG#5874, Timestamp/Time conversion goes in the wrong 'direction'
+ when useTimeZone='true' and server timezone differs from client timezone.
+
+ - Fixed BUG#7081, DatabaseMetaData.getIndexInfo() ignoring 'unique'
+ parameter.
+
+ - Support new protocol type 'MYSQL_TYPE_VARCHAR'.
+
+ - Added 'useOldUTF8Behavoior' configuration property, which causes
+ JDBC driver to act like it did with MySQL-4.0.x and earlier when
+ the character encoding is 'utf-8' when connected to MySQL-4.1 or
+ newer.
+
+ - Fixed BUG#7316 - Statements created from a pooled connection were
+ returning physical connection instead of logical connection when
+ getConnection() was called.
+
+ - Fixed BUG#7033 - PreparedStatements don't encode Big5 (and other
+ multi-byte) character sets correctly in static SQL strings.
+
+ - Fixed BUG#6966, connections starting up failed-over (due to down master)
+ never retry master.
+
+ - Fixed BUG#7061, PreparedStatement.fixDecimalExponent() adding extra
+ '+', making number unparseable by MySQL server.
+
+ - Fixed BUG#7686, Timestamp key column data needed "_binary'" stripped for
+ UpdatableResultSet.refreshRow().
+
+ - Backported SQLState codes mapping from Connector/J 3.1, enable with
+ 'useSqlStateCodes=true' as a connection property, it defaults to
+ 'false' in this release, so that we don't break legacy applications (it
+ defaults to 'true' starting with Connector/J 3.1).
+
+ - Fixed BUG#7601, PreparedStatement.fixDecimalExponent() adding extra
+ '+', making number unparseable by MySQL server.
+
+ - Escape sequence {fn convert(..., type)} now supports ODBC-style types
+ that are prepended by 'SQL_'.
+
+ - Fixed duplicated code in configureClientCharset() that prevented
+ useOldUTF8Behavior=true from working properly.
+
+ - Handle streaming result sets with > 2 billion rows properly by fixing
+ wraparound of row number counter.
+
+ - Fixed BUG#7607 - MS932, SHIFT_JIS and Windows_31J not recog. as
+ aliases for sjis.
+
+ - Fixed BUG#6549 (while fixing #7607), adding 'CP943' to aliases for
+ sjis.
+
+ - Fixed BUG#8064, which requires hex escaping of binary data when using
+ multi-byte charsets with prepared statements.
+
+ - Fixed BUG#8812, NON_UNIQUE column from DBMD.getIndexInfo() returned
+ inverted value.
+
+ - Workaround for server BUG#9098 - default values of CURRENT_* for
+ DATE/TIME/TIMESTAMP/TIMESTAMP columns can't be distinguished from
+ 'string' values, so UpdatableResultSet.moveToInsertRow() generates
+ bad SQL for inserting default values.
+
+ - Fixed BUG#8629 - 'EUCKR' charset is sent as 'SET NAMES euc_kr' which
+ MySQL-4.1 and newer doesn't understand.
+
+ - DatabaseMetaData.supportsSelectForUpdate() returns correct value based
+ on server version.
+
+ - Use hex escapes for PreparedStatement.setBytes() for double-byte charsets
+ including 'aliases' Windows-31J, CP934, MS932.
+
+ - Added support for the "EUC_JP_Solaris" character encoding, which maps
+ to a MySQL encoding of "eucjpms" (backported from 3.1 branch). This only
+ works on servers that support eucjpms, namely 5.0.3 or later.
+
+11-15-04 - Version 3.0.16-ga
+
+ - Re-issue character set configuration commands when re-using pooled
+ connections and/or Connection.changeUser() when connected to MySQL-4.1
+ or newer.
+
+ - Fixed ResultSetMetaData.isReadOnly() to detect non-writable columns
+ when connected to MySQL-4.1 or newer, based on existence of 'original'
+ table and column names.
+
+ - Fixed BUG#5664, ResultSet.updateByte() when on insert row
+ throws ArrayOutOfBoundsException.
+
+ - Fixed DatabaseMetaData.getTypes() returning incorrect (i.e. non-negative)
+ scale for the 'NUMERIC' type.
+
+ - Fixed BUG#6198, off-by-one bug in Buffer.readString(string).
+
+ - Made TINYINT(1) -> BIT/Boolean conversion configurable via 'tinyInt1isBit'
+ property (default 'true' to be JDBC compliant out of the box).
+
+ - Only set 'character_set_results' during connection establishment if
+ server version >= 4.1.1.
+
+ - Fixed regression where useUnbufferedInput was defaulting to 'false'.
+
+ - Fixed BUG#6231, ResultSet.getTimestamp() on a column with TIME in it
+ fails.
+
+09-04-04 - Version 3.0.15-production
+
+ - Fixed BUG#4010 - StringUtils.escapeEasternUnicodeByteStream is still
+ broken for GBK
+
+ - Fixed BUG#4334 - Failover for autoReconnect not using port #'s for any
+ hosts, and not retrying all hosts. (WARN: This required a change to
+ the SocketFactory connect() method signature, which is now
+
+ public Socket connect(String host, int portNumber, Properties props)
+
+ therefore any third-party socket factories will have to be changed
+ to support this signature.
+
+ - Logical connections created by MysqlConnectionPoolDataSource will
+ now issue a rollback() when they are closed and sent back to the pool.
+ If your application server/connection pool already does this for you, you
+ can set the 'rollbackOnPooledClose' property to false to avoid the
+ overhead of an extra rollback().
+
+ - Removed redundant calls to checkRowPos() in ResultSet.
+
+ - Fixed BUG#4742, 'DOUBLE' mapped twice in DBMD.getTypeInfo().
+
+ - Added FLOSS license exemption.
+
+ - Fixed BUG#4808, calling .close() twice on a PooledConnection causes NPE.
+
+ - Fixed BUG#4138 and BUG#4860, DBMD.getColumns() returns incorrect JDBC
+ type for unsigned columns. This affects type mappings for all numeric
+ types in the RSMD.getColumnType() and RSMD.getColumnTypeNames() methods
+ as well, to ensure that 'like' types from DBMD.getColumns() match up
+ with what RSMD.getColumnType() and getColumnTypeNames() return.
+
+ - 'Production' - 'GA' in naming scheme of distributions.
+
+ - Fix for BUG#4880, RSMD.getPrecision() returning 0 for non-numeric types
+ (should return max length in chars for non-binary types, max length
+ in bytes for binary types). This fix also fixes mapping of
+ RSMD.getColumnType() and RSMD.getColumnTypeName() for the BLOB types based
+ on the length sent from the server (the server doesn't distinguish between
+ TINYBLOB, BLOB, MEDIUMBLOB or LONGBLOB at the network protocol level).
+
+ - Fixed BUG#5022 - ResultSet should release Field[] instance in .close().
+
+ - Fixed BUG#5069 -- ResultSet.getMetaData() should not return
+ incorrectly-initialized metadata if the result set has been closed, but
+ should instead throw an SQLException. Also fixed for getRow() and
+ getWarnings() and traversal methods by calling checkClosed() before
+ operating on instance-level fields that are nullified during .close().
+
+ - Parse new timezone variables from 4.1.x servers.
+
+ - Use _binary introducer for PreparedStatement.setBytes() and
+ set*Stream() when connected to MySQL-4.1.x or newer to avoid
+ misinterpretation during character conversion.
+
+05-28-04 - Version 3.0.14-production
+
+ - Fixed URL parsing error
+
+05-27-04 - Version 3.0.13-production
+
+ - Fixed BUG#3848 - Using a MySQLDatasource without server name fails
+
+ - Fixed BUG#3920 - "No Database Selected" when using
+ MysqlConnectionPoolDataSource.
+
+ - Fixed BUG#3873 - PreparedStatement.getGeneratedKeys() method returns only
+ 1 result for batched insertions
+
+05-18-04 - Version 3.0.12-production
+
+ - Add unsigned attribute to DatabaseMetaData.getColumns() output
+ in the TYPE_NAME column.
+
+ - Added 'failOverReadOnly' property, to allow end-user to configure
+ state of connection (read-only/writable) when failed over.
+
+ - Backported 'change user' and 'reset server state' functionality
+ from 3.1 branch, to allow clients of MysqlConnectionPoolDataSource
+ to reset server state on getConnection() on a pooled connection.
+
+ - Don't escape SJIS/GBK/BIG5 when using MySQL-4.1 or newer.
+
+ - Allow 'url' parameter for MysqlDataSource and MysqlConnectionPool
+ DataSource so that passing of other properties is possible from
+ inside appservers.
+
+ - Map duplicate key and foreign key errors to SQLState of
+ '23000'.
+
+ - Backport documentation tooling from 3.1 branch.
+
+ - Return creating statement for ResultSets created by
+ getGeneratedKeys() (BUG#2957)
+
+ - Allow java.util.Date to be sent in as parameter to
+ PreparedStatement.setObject(), converting it to a Timestamp
+ to maintain full precision (BUG#3103).
+
+ - Don't truncate BLOBs/CLOBs when using setBytes() and/or
+ setBinary/CharacterStream() (BUG#2670).
+
+ - Dynamically configure character set mappings for field-level
+ character sets on MySQL-4.1.0 and newer using 'SHOW COLLATION'
+ when connecting.
+
+ - Map 'binary' character set to 'US-ASCII' to support DATETIME
+ charset recognition for servers >= 4.1.2
+
+ - Use 'SET character_set_results" during initialization to allow any
+ charset to be returned to the driver for result sets.
+
+ - Use charsetnr returned during connect to encode queries before
+ issuing 'SET NAMES' on MySQL >= 4.1.0.
+
+ - Add helper methods to ResultSetMetaData (getColumnCharacterEncoding()
+ and getColumnCharacterSet()) to allow end-users to see what charset
+ the driver thinks it should be using for the column.
+
+ - Only set character_set_results for MySQL >= 4.1.0.
+
+ - Fixed BUG#3511, StringUtils.escapeSJISByteStream() not covering all
+ eastern double-byte charsets correctly.
+
+ - Renamed StringUtils.escapeSJISByteStream() to more appropriate
+ escapeEasternUnicodeByteStream().
+
+ - Fixed BUG#3554 - Not specifying database in URL caused MalformedURL
+ exception.
+
+ - Auto-convert MySQL encoding names to Java encoding names if used
+ for characterEncoding property.
+
+ - Added encoding names that are recognized on some JVMs to fix case
+ where they were reverse-mapped to MySQL encoding names incorrectly.
+
+ - Use junit.textui.TestRunner for all unit tests (to allow them to be
+ run from the command line outside of Ant or Eclipse).
+
+ - Fixed BUG#3557 - UpdatableResultSet not picking up default values
+ for moveToInsertRow().
+
+ - Fixed BUG#3570 - inconsistent reporting of column type. The server
+ still doesn't return all types for *BLOBs *TEXT correctly, so the
+ driver won't return those correctly.
+
+ - Fixed BUG#3520 -- DBMD.getSQLStateType() returns incorrect value.
+
+ - Fixed regression in PreparedStatement.setString() and eastern character
+ encodings.
+
+ - Made StringRegressionTest 4.1-unicode aware.
+
+02-19-04 - Version 3.0.11-stable
+
+ - Trigger a 'SET NAMES utf8' when encoding is forced to 'utf8' _or_
+ 'utf-8' via the 'characterEncoding' property. Previously, only the
+ Java-style encoding name of 'utf-8' would trigger this.
+
+ - AutoReconnect time was growing faster than exponentially (BUG#2447).
+
+ - Fixed failover always going to last host in list (BUG#2578)
+
+ - Added 'useUnbufferedInput' parameter, and now use it by default
+ (due to JVM issue
+ http://developer.java.sun.com/developer/bugParade/bugs/4401235.html)
+
+ - Detect 'on/off' or '1','2','3' form of lower_case_table_names on
+ server.
+
+ - Return 'java.lang.Integer' for TINYINT and SMALLINT types from
+ ResultSetMetaData.getColumnClassName() (fix for BUG#2852).
+
+ - Return 'java.lang.Double' for FLOAT type from ResultSetMetaData.
+ getColumnClassName() (fix for BUG#2855).
+
+ - Return '[B' instead of java.lang.Object for BINARY, VARBINARY and
+ LONGVARBINARY types from ResultSetMetaData.getColumnClassName()
+ (JDBC compliance).
+
+ - Issue connection events on all instances created from a
+ ConnectionPoolDataSource.
+
+01-13-04 - Version 3.0.10-stable
+
+ - Don't count quoted id's when inside a 'string' in PreparedStatement
+ parsing (fix for BUG#1511).
+
+ - 'Friendlier' exception message for PacketTooLargeException
+ (BUG#1534).
+
+ - Backported fix for aliased tables and UpdatableResultSets in
+ checkUpdatability() method from 3.1 branch.
+
+ - Fix for ArrayIndexOutOfBounds exception when using Statement.setMaxRows()
+ (BUG#1695).
+
+ - Fixed BUG#1576, dealing with large blobs and split packets not being
+ read correctly.
+
+ - Fixed regression of Statement.getGeneratedKeys() and REPLACE statements.
+
+ - Fixed BUG#1630, subsequent call to ResultSet.updateFoo() causes NPE if
+ result set is not updatable.
+
+ - Fix for 4.1.1-style auth with no password.
+
+ - Fix for BUG#1731, Foreign Keys column sequence is not consistent in
+ DatabaseMetaData.getImported/Exported/CrossReference().
+
+ - Fix for BUG#1775 - DatabaseMetaData.getSystemFunction() returning
+ bad function 'VResultsSion'.
+
+ - Fix for BUG#1592 -- cross-database updatable result sets
+ are not checked for updatability correctly.
+
+ - DatabaseMetaData.getColumns() should return Types.LONGVARCHAR for
+ MySQL LONGTEXT type.
+
+ - ResultSet.getObject() on TINYINT and SMALLINT columns should return
+ Java type 'Integer' (BUG#1913)
+
+ - Added 'alwaysClearStream' connection property, which causes the driver
+ to always empty any remaining data on the input stream before
+ each query.
+
+ - Added more descriptive error message 'Server Configuration Denies
+ Access to DataSource', as well as retrieval of message from server.
+
+ - Autoreconnect code didn't set catalog upon reconnect if it had been
+ changed.
+
+ - Implement ResultSet.updateClob().
+
+ - ResultSetMetaData.isCaseSensitive() returned wrong value for CHAR/VARCHAR
+ columns.
+
+ - Fix for BUG#1933 -- Connection property "maxRows" not honored.
+
+ - Fix for BUG#1925 -- Statements being created too many times in
+ DBMD.extractForeignKeyFromCreateTable().
+
+ - Fix for BUG#1914 -- Support escape sequence {fn convert ... }
+
+ - Fix for BUG#1958 -- ArrayIndexOutOfBounds when parameter number ==
+ number of parameters + 1.
+
+ - Fix for BUG#2006 -- ResultSet.findColumn() should use first matching
+ column name when there are duplicate column names in SELECT query
+ (JDBC-compliance).
+
+ - Removed static synchronization bottleneck from
+ PreparedStatement.setTimestamp().
+
+ - Removed static synchronization bottleneck from instance factory
+ method of SingleByteCharsetConverter.
+
+ - Enable caching of the parsing stage of prepared statements via
+ the 'cachePrepStmts', 'prepStmtCacheSize' and 'prepStmtCacheSqlLimit'
+ properties (disabled by default).
+
+ - Speed up parsing of PreparedStatements, try to use one-pass whenever
+ possible.
+
+ - Fixed security exception when used in Applets (applets can't
+ read the system property 'file.encoding' which is needed
+ for LOAD DATA LOCAL INFILE).
+
+ - Use constants for SQLStates.
+
+ - Map charset 'ko18_ru' to 'ko18r' when connected to MySQL-4.1.0 or
+ newer.
+
+ - Ensure that Buffer.writeString() saves room for the \0.
+
+ - Fixed exception 'Unknown character set 'danish' on connect w/ JDK-1.4.0
+
+ - Fixed mappings in SQLError to report deadlocks with SQLStates of '41000'.
+
+ - 'maxRows' property would affect internal statements, so check it for all
+ statement creation internal to the driver, and set to 0 when it is not.
+
+10-07-03 - Version 3.0.9-stable
+
+ - Faster date handling code in ResultSet and PreparedStatement (no longer
+ uses Date methods that synchronize on static calendars).
+
+ - Fixed test for end of buffer in Buffer.readString().
+
+ - Fixed ResultSet.previous() behavior to move current
+ position to before result set when on first row
+ of result set (bugs.mysql.com BUG#496)
+
+ - Fixed Statement and PreparedStatement issuing bogus queries
+ when setMaxRows() had been used and a LIMIT clause was present
+ in the query.
+
+ - Fixed BUG#661 - refreshRow didn't work when primary key values
+ contained values that needed to be escaped (they ended up being
+ doubly-escaped).
+
+ - Support InnoDB contraint names when extracting foreign key info
+ in DatabaseMetaData BUG#517 and BUG#664
+ (impl. ideas from Parwinder Sekhon)
+
+ - Backported 4.1 protocol changes from 3.1 branch (server-side SQL
+ states, new field info, larger client capability flags,
+ connect-with-database, and so forth).
+
+ - Fix UpdatableResultSet to return values for getXXX() when on
+ insert row (BUG#675).
+
+ - The insertRow in an UpdatableResultSet is now loaded with
+ the default column values when moveToInsertRow() is called
+ (BUG#688)
+
+ - DatabaseMetaData.getColumns() wasn't returning NULL for
+ default values that are specified as NULL.
+
+ - Change default statement type/concurrency to TYPE_FORWARD_ONLY
+ and CONCUR_READ_ONLY (spec compliance).
+
+ - Don't try and reset isolation level on reconnect if MySQL doesn't
+ support them.
+
+ - Don't wrap SQLExceptions in RowDataDynamic.
+
+ - Don't change timestamp TZ twice if useTimezone==true (BUG#774)
+
+ - Fixed regression in large split-packet handling (BUG#848).
+
+ - Better diagnostic error messages in exceptions for 'streaming'
+ result sets.
+
+ - Issue exception on ResultSet.getXXX() on empty result set (wasn't
+ caught in some cases).
+
+ - Don't hide messages from exceptions thrown in I/O layers.
+
+ - Don't fire connection closed events when closing pooled connections, or
+ on PooledConnection.getConnection() with already open connections (BUG#884).
+
+ - Clip +/- INF (to smallest and largest representative values for the type in
+ MySQL) and NaN (to 0) for setDouble/setFloat(), and issue a warning on the
+ statement when the server does not support +/- INF or NaN.
+
+ - Fix for BUG#879, double-escaping of '\' when charset is SJIS or GBK and '\'
+ appears in non-escaped input.
+
+ - When emptying input stream of unused rows for 'streaming' result sets,
+ have the current thread yield() every 100 rows in order to not monopolize
+ CPU time.
+
+ - Fixed BUG#1099, DatabaseMetaData.getColumns() getting confused about the
+ keyword 'set' in character columns.
+
+ - Fixed deadlock issue with Statement.setMaxRows().
+
+ - Fixed CLOB.truncate(), BUG#1130
+
+ - Optimized CLOB.setChracterStream(), BUG#1131
+
+ - Made databaseName, portNumber and serverName optional parameters
+ for MysqlDataSourceFactory (BUG#1246)
+
+ - Fix for BUG#1247 -- ResultSet.get/setString mashing char 127
+
+ - Backported auth. changes for 4.1.1 and newer from 3.1 branch.
+
+ - Added com.mysql.jdbc.util.BaseBugReport to help creation of testcases
+ for bug reports.
+
+ - Added property to 'clobber' streaming results, by setting the
+ 'clobberStreamingResults' property to 'true' (the default is 'false').
+ This will cause a 'streaming' ResultSet to be automatically
+ closed, and any oustanding data still streaming from the server to
+ be discarded if another query is executed before all the data has been
+ read from the server.
+
+05-23-03 - Version 3.0.8-stable
+
+ - Allow bogus URLs in Driver.getPropertyInfo().
+
+ - Return list of generated keys when using multi-value INSERTS
+ with Statement.getGeneratedKeys().
+
+ - Use JVM charset with filenames and 'LOAD DATA [LOCAL] INFILE'
+
+ - Fix infinite loop with Connection.cleanup().
+
+ - Changed Ant target 'compile-core' to 'compile-driver', and
+ made testsuite compilation a separate target.
+
+ - Fixed result set not getting set for Statement.executeUpdate(),
+ which affected getGeneratedKeys() and getUpdateCount() in
+ some cases.
+
+ - Unicode character 0xFFFF in a string would cause the driver to
+ throw an ArrayOutOfBoundsException (Bug #378)
+
+ - Return correct amount of generated keys when using 'REPLACE'
+ statements.
+
+ - Fix problem detecting server character set in some cases.
+
+ - Fix row data decoding error when using _very_ large packets.
+
+ - Optimized row data decoding.
+
+ - Issue exception when operating on an already-closed
+ prepared statement.
+
+ - Fixed SJIS encoding bug, thanks to Naoto Sato.
+
+ - Optimized usage of EscapeProcessor.
+
+ - Allow multiple calls to Statement.close()
+
+04-08-03 - Version 3.0.7-stable
+
+ - Fixed MysqlPooledConnection.close() calling wrong event type.
+
+ - Fixed StringIndexOutOfBoundsException in PreparedStatement.
+ setClob().
+
+ - 4.1 Column Metadata fixes
+
+ - Remove synchronization from Driver.connect() and
+ Driver.acceptsUrl().
+
+ - IOExceptions during a transaction now cause the Connection to
+ be closed.
+
+ - Fixed missing conversion for 'YEAR' type in ResultSetMetaData.
+ getColumnTypeName().
+
+ - Don't pick up indexes that start with 'pri' as primary keys
+ for DBMD.getPrimaryKeys().
+
+ - Throw SQLExceptions when trying to do operations on a forcefully
+ closed Connection (i.e. when a communication link failure occurs).
+
+ - You can now toggle profiling on/off using
+ Connection.setProfileSql(boolean).
+
+ - Fixed charset issues with database metadata (charset was not
+ getting set correctly).
+
+ - Updatable ResultSets can now be created for aliased tables/columns
+ when connected to MySQL-4.1 or newer.
+
+ - Fixed 'LOAD DATA LOCAL INFILE' bug when file > max_allowed_packet.
+
+ - Fixed escaping of 0x5c ('\') character for GBK and Big5 charsets.
+
+ - Fixed ResultSet.getTimestamp() when underlying field is of type DATE.
+
+ - Ensure that packet size from alignPacketSize() does not
+ exceed MAX_ALLOWED_PACKET (JVM bug)
+
+ - Don't reset Connection.isReadOnly() when autoReconnecting.
+
+02-18-03 - Version 3.0.6-stable
+
+ - Fixed ResultSetMetaData to return "" when catalog not known.
+ Fixes NullPointerExceptions with Sun's CachedRowSet.
+
+ - Fixed DBMD.getTypeInfo() and DBMD.getColumns() returning
+ different value for precision in TEXT/BLOB types.
+
+ - Allow ignoring of warning for 'non transactional tables' during
+ rollback (compliance/usability) by setting 'ignoreNonTxTables'
+ property to 'true'.
+
+ - Fixed SQLExceptions getting swallowed on initial connect.
+
+ - Fixed Statement.setMaxRows() to stop sending 'LIMIT' type queries
+ when not needed (performance)
+
+ - Clean up Statement query/method mismatch tests (i.e. INSERT not
+ allowed with .executeQuery()).
+
+ - More checks added in ResultSet traversal method to catch
+ when in closed state.
+
+ - Fixed ResultSetMetaData.isWritable() to return correct value.
+
+ - Add 'window' of different NULL sorting behavior to
+ DBMD.nullsAreSortedAtStart (4.0.2 to 4.0.10, true, otherwise,
+ no).
+
+ - Implemented Blob.setBytes(). You still need to pass the
+ resultant Blob back into an updatable ResultSet or
+ PreparedStatement to persist the changes, as MySQL does
+ not support 'locators'.
+
+ - Backported 4.1 charset field info changes from Connector/J 3.1
+
+01-22-03 - Version 3.0.5-gamma
+
+ - Fixed Buffer.fastSkipLenString() causing ArrayIndexOutOfBounds
+ exceptions with some queries when unpacking fields.
+
+ - Implemented an empty TypeMap for Connection.getTypeMap() so that
+ some third-party apps work with MySQL (IBM WebSphere 5.0 Connection
+ pool).
+
+ - Added missing LONGTEXT type to DBMD.getColumns().
+
+ - Retrieve TX_ISOLATION from database for
+ Connection.getTransactionIsolation() when the MySQL version
+ supports it, instead of an instance variable.
+
+ - Quote table names in DatabaseMetaData.getColumns(),
+ getPrimaryKeys(), getIndexInfo(), getBestRowIdentifier()
+
+ - Greatly reduce memory required for setBinaryStream() in
+ PreparedStatements.
+
+ - Fixed ResultSet.isBeforeFirst() for empty result sets.
+
+ - Added update options for foreign key metadata.
+
+
+01-06-03 - Version 3.0.4-gamma
+
+ - Added quoted identifiers to database names for
+ Connection.setCatalog.
+
+ - Added support for quoted identifiers in PreparedStatement
+ parser.
+
+ - Streamlined character conversion and byte[] handling in
+ PreparedStatements for setByte().
+
+ - Reduce memory footprint of PreparedStatements by sharing
+ outbound packet with MysqlIO.
+
+ - Added 'strictUpdates' property to allow control of amount
+ of checking for 'correctness' of updatable result sets. Set this
+ to 'false' if you want faster updatable result sets and you know
+ that you create them from SELECTs on tables with primary keys and
+ that you have selected all primary keys in your query.
+
+ - Added support for 4.0.8-style large packets.
+
+ - Fixed PreparedStatement.executeBatch() parameter overwriting.
+
+12-17-02 - Version 3.0.3-dev
+
+ - Changed charsToByte in SingleByteCharConverter to be non-static
+
+ - Changed SingleByteCharConverter to use lazy initialization of each
+ converter.
+
+ - Fixed charset handling in Fields.java
+
+ - Implemented Connection.nativeSQL()
+
+ - More robust escape tokenizer -- recognize '--' comments, and allow
+ nested escape sequences (see testsuite.EscapeProcessingTest)
+
+ - DBMD.getImported/ExportedKeys() now handles multiple foreign keys
+ per table.
+
+ - Fixed ResultSetMetaData.getPrecision() returning incorrect values
+ for some floating point types.
+
+ - Fixed ResultSetMetaData.getColumnTypeName() returning BLOB for
+ TEXT and TEXT for BLOB types.
+
+ - Fixed Buffer.isLastDataPacket() for 4.1 and newer servers.
+
+ - Added CLIENT_LONG_FLAG to be able to get more column flags
+ (isAutoIncrement() being the most important)
+
+ - Because of above, implemented ResultSetMetaData.isAutoIncrement()
+ to use Field.isAutoIncrement().
+
+ - Honor 'lower_case_table_names' when enabled in the server when
+ doing table name comparisons in DatabaseMetaData methods.
+
+ - Some MySQL-4.1 protocol support (extended field info from selects)
+
+ - Use non-aliased table/column names and database names to fullly
+ qualify tables and columns in UpdatableResultSet (requires
+ MySQL-4.1 or newer)
+
+ - Allow user to alter behavior of Statement/
+ PreparedStatement.executeBatch() via 'continueBatchOnError' property
+ (defaults to 'true').
+
+ - Check for connection closed in more Connection methods
+ (createStatement, prepareStatement, setTransactionIsolation,
+ setAutoCommit).
+
+ - More robust implementation of updatable result sets. Checks that
+ _all_ primary keys of the table have been selected.
+
+ - 'LOAD DATA LOCAL INFILE ...' now works, if your server is configured
+ to allow it. Can be turned off with the 'allowLoadLocalInfile'
+ property (see the README).
+
+ - Substitute '?' for unknown character conversions in single-byte
+ character sets instead of '\0'.
+
+ - NamedPipeSocketFactory now works (only intended for Windows), see
+ README for instructions.
+
+11-08-02 - Version 3.0.2-dev
+
+ - Fixed issue with updatable result sets and PreparedStatements not
+ working
+
+ - Fixed ResultSet.setFetchDirection(FETCH_UNKNOWN)
+
+ - Fixed issue when calling Statement.setFetchSize() when using
+ arbitrary values
+
+ - Fixed incorrect conversion in ResultSet.getLong()
+
+ - Implemented ResultSet.updateBlob().
+
+ - Removed duplicate code from UpdatableResultSet (it can be inherited
+ from ResultSet, the extra code for each method to handle updatability
+ I thought might someday be necessary has not been needed).
+
+ - Fixed "UnsupportedEncodingException" thrown when "forcing" a
+ character encoding via properties.
+
+ - Fixed various non-ASCII character encoding issues.
+
+ - Added driver property 'useHostsInPrivileges'. Defaults to true.
+ Affects whether or not '@hostname' will be used in
+ DBMD.getColumn/TablePrivileges.
+
+ - All DBMD result set columns describing schemas now return NULL
+ to be more compliant with the behavior of other JDBC drivers
+ for other database systems (MySQL does not support schemas).
+
+ - Added SSL support. See README for information on how to use it.
+
+ - Properly restore connection properties when autoReconnecting
+ or failing-over, including autoCommit state, and isolation level.
+
+ - Use 'SHOW CREATE TABLE' when possible for determining foreign key
+ information for DatabaseMetaData...also allows cascade options for
+ DELETE information to be returned
+
+ - Escape 0x5c character in strings for the SJIS charset.
+
+ - Fixed start position off-by-1 error in Clob.getSubString()
+
+ - Implemented Clob.truncate()
+
+ - Implemented Clob.setString()
+
+ - Implemented Clob.setAsciiStream()
+
+ - Implemented Clob.setCharacterStream()
+
+ - Added com.mysql.jdbc.MiniAdmin class, which allows you to send
+ 'shutdown' command to MySQL server...Intended to be used when 'embedding'
+ Java and MySQL server together in an end-user application.
+
+ - Added 'connectTimeout' parameter that allows users of JDK-1.4 and newer
+ to specify a maxium time to wait to establish a connection.
+
+ - Failover and autoReconnect only work when the connection is in a
+ autoCommit(false) state, in order to stay transaction safe
+
+ - Added 'queriesBeforeRetryMaster' property that specifies how many
+ queries to issue when failed over before attempting to reconnect
+ to the master (defaults to 50)
+
+ - Fixed DBMD.supportsResultSetConcurrency() so that it returns true
+ for ResultSet.TYPE_SCROLL_INSENSITIVE and ResultSet.CONCUR_READ_ONLY or
+ ResultSet.CONCUR_UPDATABLE
+
+ - Fixed ResultSet.isLast() for empty result sets (should return false).
+
+ - PreparedStatement now honors stream lengths in setBinary/Ascii/Character
+ Stream() unless you set the connection property
+ 'useStreamLengthsInPrepStmts' to 'false'.
+
+ - Removed some not-needed temporary object creation by using Strings
+ smarter in EscapeProcessor, Connection and DatabaseMetaData classes.
+
+09-21-02 - Version 3.0.1-dev
+
+ - Fixed ResultSet.getRow() off-by-one bug.
+
+ - Fixed RowDataStatic.getAt() off-by-one bug.
+
+ - Added limited Clob functionality (ResultSet.getClob(),
+ PreparedStatemtent.setClob(),
+ PreparedStatement.setObject(Clob).
+
+ - Added socketTimeout parameter to URL.
+
+ - Connection.isClosed() no longer "pings" the server.
+
+ - Connection.close() issues rollback() when getAutoCommit() == false
+
+ - Added "paranoid" parameter...sanitizes error messages removing
+ "sensitive" information from them (such as hostnames, ports, or
+ usernames), as well as clearing "sensitive" data structures
+ when possible.
+
+ - Fixed ResultSetMetaData.isSigned() for TINYINT and BIGINT.
+
+ - Charsets now automatically detected. Optimized code for single-byte
+ character set conversion.
+
+ - Implemented ResultSet.getCharacterStream()
+
+ - Added "LOCAL TEMPORARY" to table types in DatabaseMetaData.getTableTypes()
+
+ - Massive code clean-up to follow Java coding conventions (the time had come)
+
+
+07-31-02 - Version 3.0.0-dev
+
+ - !!! LICENSE CHANGE !!! The driver is now GPL. If you need
+ non-GPL licenses, please contact me <mark@stripped>
+
+ - JDBC-3.0 functionality including
+ Statement/PreparedStatement.getGeneratedKeys() and
+ ResultSet.getURL()
+
+ - Performance enchancements - driver is now 50-100% faster
+ in most situations, and creates fewer temporary objects
+
+ - Repackaging...new driver name is "com.mysql.jdbc.Driver",
+ old name still works, though (the driver is now provided
+ by MySQL-AB)
+
+ - Better checking for closed connections in Statement
+ and PreparedStatement.
+
+ - Support for streaming (row-by-row) result sets (see README)
+ Thanks to Doron.
+
+ - Support for large packets (new addition to MySQL-4.0 protocol),
+ see README for more information.
+
+ - JDBC Compliance -- Passes all tests besides stored procedure tests
+
+
+ - Fix and sort primary key names in DBMetaData (SF bugs 582086 and 582086)
+
+ - Float types now reported as java.sql.Types.FLOAT (SF bug 579573)
+
+ - ResultSet.getTimestamp() now works for DATE types (SF bug 559134)
+
+ - ResultSet.getDate/Time/Timestamp now recognizes all forms of invalid
+ values that have been set to all zeroes by MySQL (SF bug 586058)
+
+ - Testsuite now uses Junit (which you can get from www.junit.org)
+
+ - The driver now only works with JDK-1.2 or newer.
+
+ - Added multi-host failover support (see README)
+
+ - General source-code cleanup.
+
+ - Overall speed improvements via controlling transient object
+ creation in MysqlIO class when reading packets
+
+ - Performance improvements in string handling and field
+ metadata creation (lazily instantiated) contributed by
+ Alex Twisleton-Wykeham-Fiennes
+
+
+05-16-02 - Version 2.0.14
+
+ - More code cleanup
+
+ - PreparedStatement now releases resources on .close() (SF bug 553268)
+
+ - Quoted identifiers not used if server version does not support them. Also,
+ if server started with --ansi or --sql-mode=ANSI_QUOTES then '"' will be
+ used as an identifier quote, otherwise '`' will be used.
+
+ - ResultSet.getDouble() now uses code built into JDK to be more precise (but slower)
+
+ - LogicalHandle.isClosed() calls through to physical connection
+
+ - Added SQL profiling (to STDERR). Set "profileSql=true" in your JDBC url.
+ See README for more information.
+
+ - Fixed typo for relaxAutoCommit parameter.
+
+04-24-02 - Version 2.0.13
+
+ - More code cleanup.
+
+ - Fixed unicode chars being read incorrectly (SF bug 541088)
+
+ - Faster blob escaping for PrepStmt
+
+ - Added set/getPortNumber() to DataSource(s) (SF bug 548167)
+
+ - Added setURL() to MySQLXADataSource (SF bug 546019)
+
+ - PreparedStatement.toString() fixed (SF bug 534026)
+
+ - ResultSetMetaData.getColumnClassName() now implemented
+
+ - Rudimentary version of Statement.getGeneratedKeys() from JDBC-3.0
+ now implemented (you need to be using JDK-1.4 for this to work, I
+ believe)
+
+ - DBMetaData.getIndexInfo() - bad PAGES fixed (SF BUG 542201)
+
+04-07-02 - Version 2.0.12
+
+ - General code cleanup.
+
+ - Added getIdleFor() method to Connection and MysqlLogicalHandle.
+
+ - Relaxed synchronization in all classes, should fix 520615 and 520393.
+
+ - Added getTable/ColumnPrivileges() to DBMD (fixes 484502).
+
+ - Added new types to getTypeInfo(), fixed existing types thanks to
+ Al Davis and Kid Kalanon.
+
+ - Added support for BIT types (51870) to PreparedStatement.
+
+ - Fixed getRow() bug (527165) in ResultSet
+
+ - Fixes for ResultSet updatability in PreparedStatement.
+ - Fixed timezone off by 1-hour bug in PreparedStatement (538286, 528785).
+
+ - ResultSet: Fixed updatability (values being set to null
+ if not updated).
+
+ - DataSources - fixed setUrl bug (511614, 525565),
+ wrong datasource class name (532816, 528767)
+
+ - Added identifier quoting to all DatabaseMetaData methods
+ that need them (should fix 518108)
+
+ - Added support for YEAR type (533556)
+
+ - ResultSet.insertRow() should now detect auto_increment fields
+ in most cases and use that value in the new row. This detection
+ will not work in multi-valued keys, however, due to the fact that
+ the MySQL protocol does not return this information.
+
+ - ResultSet.refreshRow() implemented.
+
+ - Fixed testsuite.Traversal afterLast() bug, thanks to Igor Lastric.
+
+01-27-02 - Version 2.0.11
+
+ - Fixed missing DELETE_RULE value in
+ DBMD.getImported/ExportedKeys() and getCrossReference().
+
+ - Full synchronization of Statement.java.
+
+ - More changes to fix "Unexpected end of input stream"
+ errors when reading BLOBs. This should be the last fix.
+
+01-24-02 - Version 2.0.10
+
+ - Fixed spurious "Unexpected end of input stream" errors in
+ MysqlIO (bug 507456).
+
+ - Fixed null-pointer-exceptions when using
+ MysqlConnectionPoolDataSource with Websphere 4 (bug 505839).
+
+01-13-02 - Version 2.0.9
+
+ - Ant build was corrupting included jar files, fixed
+ (bug 487669).
+
+ - Fixed extra memory allocation in MysqlIO.readPacket()
+ (bug 488663).
+
+ - Implementation of DatabaseMetaData.getExported/ImportedKeys() and
+ getCrossReference().
+
+ - Full synchronization on methods modifying instance and class-shared
+ references, driver should be entirely thread-safe now (please
+ let me know if you have problems)
+
+ - DataSource implementations moved to org.gjt.mm.mysql.jdbc2.optional
+ package, and (initial) implementations of PooledConnectionDataSource
+ and XADataSource are in place (thanks to Todd Wolff for the
+ implementation and testing of PooledConnectionDataSource with
+ IBM WebSphere 4).
+
+ - Added detection of network connection being closed when reading packets
+ (thanks to Todd Lizambri).
+
+ - Fixed quoting error with escape processor (bug 486265).
+
+ - Report batch update support through DatabaseMetaData (bug 495101).
+
+ - Fixed off-by-one-hour error in PreparedStatement.setTimestamp()
+ (bug 491577).
+
+ - Removed concatenation support from driver (the '||' operator),
+ as older versions of VisualAge seem to be the only thing that
+ use it, and it conflicts with the logical '||' operator. You will
+ need to start mysqld with the "--ansi" flag to use the '||'
+ operator as concatenation (bug 491680)
+
+ - Fixed casting bug in PreparedStatement (bug 488663).
+
+11-25-01 - Version 2.0.8
+
+ - Batch updates now supported (thanks to some inspiration
+ from Daniel Rall).
+
+ - XADataSource/ConnectionPoolDataSource code (experimental)
+
+ - PreparedStatement.setAnyNumericType() now handles positive
+ exponents correctly (adds "+" so MySQL can understand it).
+
+ - DatabaseMetaData.getPrimaryKeys() and getBestRowIdentifier()
+ are now more robust in identifying primary keys (matches
+ regardless of case or abbreviation/full spelling of Primary Key
+ in Key_type column).
+
+10-24-01 - Version 2.0.7
+
+ - PreparedStatement.setCharacterStream() now implemented
+
+ - Fixed dangling socket problem when in high availability
+ (autoReconnect=true) mode, and finalizer for Connection will
+ close any dangling sockets on GC.
+
+ - Fixed ResultSetMetaData.getPrecision() returning one
+ less than actual on newer versions of MySQL.
+
+ - ResultSet.getBlob() now returns null if column value
+ was null.
+
+ - Character sets read from database if useUnicode=true
+ and characterEncoding is not set. (thanks to
+ Dmitry Vereshchagin)
+
+ - Initial transaction isolation level read from
+ database (if avaialable) (thanks to Dmitry Vereshchagin)
+
+ - Fixed DatabaseMetaData.supportsTransactions(), and
+ supportsTransactionIsolationLevel() and getTypeInfo()
+ SQL_DATETIME_SUB and SQL_DATA_TYPE fields not being
+ readable.
+
+ - Fixed PreparedStatement generating SQL that would end
+ up with syntax errors for some queries.
+
+ - Fixed ResultSet.isAfterLast() always returning false.
+
+ - Fixed timezone issue in PreparedStatement.setTimestamp()
+ (thanks to Erik Olofsson)
+
+ - Captialize type names when "captializeTypeNames=true"
+ is passed in URL or properties (for WebObjects, thanks
+ to Anjo Krank)
+
+ - Updatable result sets now correctly handle NULL
+ values in fields.
+
+ - PreparedStatement.setDouble() now uses full-precision
+ doubles (reverting a fix made earlier to truncate them).
+
+ - PreparedStatement.setBoolean() will use 1/0 for values
+ if your MySQL version is 3.21.23 or higher.
+
+06-16-01 - Version 2.0.6
+
+ - Fixed PreparedStatement parameter checking
+
+ - Fixed case-sensitive column names in ResultSet.java
+
+06-13-01 - Version 2.0.5
+
+ - Fixed ResultSet.getBlob() ArrayIndex out-of-bounds
+
+ - Fixed ResultSetMetaData.getColumnTypeName for TEXT/BLOB
+
+ - Fixed ArrayIndexOutOfBounds when sending large BLOB queries
+ (Max size packet was not being set)
+
+ - Added ISOLATION level support to Connection.setIsolationLevel()
+
+ - Fixed NPE on PreparedStatement.executeUpdate() when all columns
+ have not been set.
+
+ - Fixed data parsing of TIMESTAMPs with 2-digit years
+
+ - Added Byte to PreparedStatement.setObject()
+
+ - ResultSet.getBoolean() now recognizes '-1' as 'true'
+
+ - ResultSet has +/-Inf/inf support
+
+ - ResultSet.insertRow() works now, even if not all columns are
+ set (they will be set to "NULL")
+
+ - DataBaseMetaData.getCrossReference() no longer ArrayIndexOOB
+
+ - getObject() on ResultSet correctly does TINYINT->Byte and
+ SMALLINT->Short
+
+12-03-00 - Version 2.0.3
+
+ - Implemented getBigDecimal() without scale component
+ for JDBC2.
+
+ - Fixed composite key problem with updateable result sets.
+
+ - Added detection of -/+INF for doubles.
+
+ - Faster ASCII string operations.
+
+ - Fixed incorrect detection of MAX_ALLOWED_PACKET, so sending
+ large blobs should work now.
+
+ - Fixed off-by-one error in java.sql.Blob implementation code.
+
+ - Added "ultraDevHack" URL parameter, set to "true" to allow
+ (broken) Macromedia UltraDev to use the driver.
+
+04-06-00 - Version 2.0.1
+
+ - Fixed RSMD.isWritable() returning wrong value.
+ Thanks to Moritz Maass.
+
+ - Cleaned up exception handling when driver connects
+
+ - Columns that are of type TEXT now return as Strings
+ when you use getObject()
+
+ - DatabaseMetaData.getPrimaryKeys() now works correctly wrt
+ to key_seq. Thanks to Brian Slesinsky.
+
+ - No escape processing is done on PreparedStatements anymore
+ per JDBC spec.
+
+ - Fixed many JDBC-2.0 traversal, positioning bugs, especially
+ wrt to empty result sets. Thanks to Ron Smits, Nick Brook,
+ Cessar Garcia and Carlos Martinez.
+
+ - Fixed some issues with updatability support in ResultSet when
+ using multiple primary keys.
+
+02-21-00 - Version 2.0pre5
+
+ - Fixed Bad Handshake problem.
+
+01-10-00 - Version 2.0pre4
+
+ - Fixes to ResultSet for insertRow() - Thanks to
+ Cesar Garcia
+
+ - Fix to Driver to recognize JDBC-2.0 by loading a JDBC-2.0
+ class, instead of relying on JDK version numbers. Thanks
+ to John Baker.
+
+ - Fixed ResultSet to return correct row numbers
+
+ - Statement.getUpdateCount() now returns rows matched,
+ instead of rows actually updated, which is more SQL-92
+ like.
+
+10-29-99
+
+ - Statement/PreparedStatement.getMoreResults() bug fixed.
+ Thanks to Noel J. Bergman.
+
+ - Added Short as a type to PreparedStatement.setObject().
+ Thanks to Jeff Crowder
+
+ - Driver now automagically configures maximum/preferred packet
+ sizes by querying server.
+
+ - Autoreconnect code uses fast ping command if server supports
+ it.
+
+ - Fixed various bugs wrt. to packet sizing when reading from
+ the server and when alloc'ing to write to the server.
+
+08-17-99 - Version 2.0pre
+
+ - Now compiles under JDK-1.2. The driver supports both JDK-1.1
+ and JDK-1.2 at the same time through a core set of classes.
+ The driver will load the appropriate interface classes at
+ runtime by figuring out which JVM version you are using.
+
+ - Fixes for result sets with all nulls in the first row.
+ (Pointed out by Tim Endres)
+
+ - Fixes to column numbers in SQLExceptions in ResultSet
+ (Thanks to Blas Rodriguez Somoza)
+
+ - The database no longer needs to specified to connect.
+ (Thanks to Christian Motschke)
+
+07-04-99 - Version 1.2b
+
+ - Better Documentation (in progress), in doc/mm.doc/book1.html
+
+ - DBMD now allows null for a column name pattern (not in
+ spec), which it changes to '%'.
+
+ - DBMD now has correct types/lengths for getXXX().
+
+ - ResultSet.getDate(), getTime(), and getTimestamp() fixes.
+ (contributed by Alan Wilken)
+
+ - EscapeProcessor now handles \{ \} and { or } inside quotes
+ correctly. (thanks to Alik for some ideas on how to fix it)
+
+ - Fixes to properties handling in Connection.
+ (contributed by Juho Tikkala)
+
+ - ResultSet.getObject() now returns null for NULL columns
+ in the table, rather than bombing out.
+ (thanks to Ben Grosman)
+
+ - ResultSet.getObject() now returns Strings for types
+ from MySQL that it doesn't know about. (Suggested by
+ Chris Perdue)
+
+ - Removed DataInput/Output streams, not needed, 1/2 number
+ of method calls per IO operation.
+
+ - Use default character encoding if one is not specified. This
+ is a work-around for broken JVMs, because according to spec,
+ EVERY JVM must support "ISO8859_1", but they don't.
+
+ - Fixed Connection to use the platform character encoding
+ instead of "ISO8859_1" if one isn't explicitly set. This
+ fixes problems people were having loading the character-
+ converter classes that didn't always exist (JVM bug).
+ (thanks to Fritz Elfert for pointing out this problem)
+
+ - Changed MysqlIO to re-use packets where possible to reduce
+ memory usage.
+
+ - Fixed escape-processor bugs pertaining to {} inside
+ quotes.
+
+04-14-99 - Version 1.2a
+
+ - Fixed character-set support for non-Javasoft JVMs
+ (thanks to many people for pointing it out)
+
+ - Fixed ResultSet.getBoolean() to recognize 'y' & 'n'
+ as well as '1' & '0' as boolean flags.
+ (thanks to Tim Pizey)
+
+ - Fixed ResultSet.getTimestamp() to give better performance.
+ (thanks to Richard Swift)
+
+ - Fixed getByte() for numeric types.
+ (thanks to Ray Bellis)
+
+ - Fixed DatabaseMetaData.getTypeInfo() for DATE type.
+ (thanks to Paul Johnston)
+
+ - Fixed EscapeProcessor for "fn" calls.
+ (thanks to Piyush Shah at locomotive.org)
+
+ - Fixed EscapeProcessor to not do extraneous work if there
+ are no escape codes.
+ (thanks to Ryan Gustafson)
+
+ - Fixed Driver to parse URLs of the form "jdbc:mysql://host:port"
+ (thanks to Richard Lobb)
+
+03-24-99 - Version 1.1i
+
+ - Fixed Timestamps for PreparedStatements
+
+ - Fixed null pointer exceptions in RSMD and RS
+
+ - Re-compiled with jikes for valid class files (thanks ms!)
+
+03-08-99 - Version 1.1h
+
+ - Fixed escape processor to deal with un-matched { and }
+ (thanks to Craig Coles)
+
+ - Fixed escape processor to create more portable (between
+ DATETIME and TIMESTAMP types) representations so that
+ it will work with BETWEEN clauses.
+ (thanks to Craig Longman)
+
+ - MysqlIO.quit() now closes the socket connection. Before,
+ after many failed connections some OS's would run out
+ of file descriptors. (thanks to Michael Brinkman)
+
+ - Fixed NullPointerException in Driver.getPropertyInfo.
+ (thanks to Dave Potts)
+
+ - Fixes to MysqlDefs to allow all *text fields to be
+ retrieved as Strings.
+ (thanks to Chris at Leverage)
+
+ - Fixed setDouble in PreparedStatement for large numbers
+ to avoid sending scientific notation to the database.
+ (thanks to J.S. Ferguson)
+
+ - Fixed getScale() and getPrecision() in RSMD.
+ (contrib'd by James Klicman)
+
+ - Fixed getObject() when field was DECIMAL or NUMERIC
+ (thanks to Bert Hobbs)
+
+ - DBMD.getTables() bombed when passed a null table-name
+ pattern. Fixed. (thanks to Richard Lobb)
+
+ - Added check for "client not authorized" errors during
+ connect. (thanks to Hannes Wallnoefer)
+
+02-19-99 - Version 1.1g
+
+ - Result set rows are now byte arrays. Blobs and Unicode
+ work bidriectonally now. The useUnicode and encoding
+ options are implemented now.
+
+ - Fixes to PreparedStatement to send binary set by
+ setXXXStream to be sent un-touched to the MySQL server.
+
+ - Fixes to getDriverPropertyInfo().
+
+12-31-98 - Version 1.1f
+
+ - Changed all ResultSet fields to Strings, this should allow
+ Unicode to work, but your JVM must be able to convert
+ between the character sets. This should also make reading
+ data from the server be a bit quicker, because there is now
+ no conversion from StringBuffer to String.
+
+ - Changed PreparedStatement.streamToString() to be more
+ efficient (code from Uwe Schaefer).
+
+ - URL parsing is more robust (throws SQL exceptions on errors
+ rather than NullPointerExceptions)
+
+ - PreparedStatement now can convert Strings to Time/Date values
+ via setObject() (code from Robert Currey).
+
+ - IO no longer hangs in Buffer.readInt(), that bug was
+ introduced in 1.1d when changing to all byte-arrays for
+ result sets. (Pointed out by Samo Login)
+
+11-03-98 - Version 1.1b
+
+ - Fixes to DatabaseMetaData to allow both IBM VA and J-Builder
+ to work. Let me know how it goes. (thanks to Jac Kersing)
+
+ - Fix to ResultSet.getBoolean() for NULL strings
+ (thanks to Barry Lagerweij)
+
+ - Beginning of code cleanup, and formatting. Getting ready
+ to branch this off to a parallel JDBC-2.0 source tree.
+
+ - Added "final" modifier to critical sections in MysqlIO and
+ Buffer to allow compiler to inline methods for speed.
+
+9-29-98
+
+ - If object references passed to setXXX() in PreparedStatement are
+ null, setNull() is automatically called for you. (Thanks for the
+ suggestion goes to Erik Ostrom)
+
+ - setObject() in PreparedStatement will now attempt to write a
+ serialized representation of the object to the database for
+ objects of Types.OTHER and objects of unknown type.
+
+ - Util now has a static method readObject() which given a ResultSet
+ and a column index will re-instantiate an object serialized in
+ the above manner.
+
+9-02-98 - Vesion 1.1
+
+ - Got rid of "ugly hack" in MysqlIO.nextRow(). Rather than
+ catch an exception, Buffer.isLastDataPacket() was fixed.
+
+ - Connection.getCatalog() and Connection.setCatalog()
+ should work now.
+
+ - Statement.setMaxRows() works, as well as setting
+ by property maxRows. Statement.setMaxRows() overrides
+ maxRows set via properties or url parameters.
+
+ - Automatic re-connection is available. Because it has
+ to "ping" the database before each query, it is
+ turned off by default. To use it, pass in "autoReconnect=true"
+ in the connection URL. You may also change the number of
+ reconnect tries, and the initial timeout value via
+ "maxReconnects=n" (default 3) and "initialTimeout=n"
+ (seconds, default 2) parameters. The timeout is an
+ exponential backoff type of timeout, e.g. if you have initial
+ timeout of 2 seconds, and maxReconnects of 3, then the driver
+ will timeout 2 seconds, 4 seconds, then 16 seconds between each
+ re-connection attempt.
+
+8-24-98 - Version 1.0
+
+ - Fixed handling of blob data in Buffer.java
+
+ - Fixed bug with authentication packet being
+ sized too small.
+
+ - The JDBC Driver is now under the LPGL
+
+8-14-98 -
+
+ - Fixed Buffer.readLenString() to correctly
+ read data for BLOBS.
+
+ - Fixed PreparedStatement.stringToStream to
+ correctly read data for BLOBS.
+
+ - Fixed PreparedStatement.setDate() to not
+ add a day.
+ (above fixes thanks to Vincent Partington)
+
+ - Added URL parameter parsing (?user=... and so forth).
+
+
+8-04-98 - Version 0.9d
+
+ - Big news! New package name. Tim Endres from ICE
+ Engineering is starting a new source tree for
+ GNU GPL'd Java software. He's graciously given
+ me the org.gjt.mm package directory to use, so now
+ the driver is in the org.gjt.mm.mysql package scheme.
+ I'm "legal" now. Look for more information on Tim's
+ project soon.
+
+ - Now using dynamically sized packets to reduce
+ memory usage when sending commands to the DB.
+
+ - Small fixes to getTypeInfo() for parameters, and so forth.
+
+ - DatabaseMetaData is now fully implemented. Let me
+ know if these drivers work with the various IDEs
+ out there. I've heard that they're working with
+ JBuilder right now.
+
+ - Added JavaDoc documentation to the package.
+
+ - Package now available in .zip or .tar.gz.
+
+7-28-98 - Version 0.9
+
+ - Implemented getTypeInfo().
+ Connection.rollback() now throws an SQLException
+ per the JDBC spec.
+
+ - Added PreparedStatement that supports all JDBC API
+ methods for PreparedStatement including InputStreams.
+ Please check this out and let me know if anything is
+ broken.
+
+ - Fixed a bug in ResultSet that would break some
+ queries that only returned 1 row.
+
+ - Fixed bugs in DatabaseMetaData.getTables(),
+ DatabaseMetaData.getColumns() and
+ DatabaseMetaData.getCatalogs().
+
+ - Added functionality to Statement that allows
+ executeUpdate() to store values for IDs that are
+ automatically generated for AUTO_INCREMENT fields.
+ Basically, after an executeUpdate(), look at the
+ SQLWarnings for warnings like "LAST_INSERTED_ID =
+ 'some number', COMMAND = 'your SQL query'".
+
+ If you are using AUTO_INCREMENT fields in your
+ tables and are executing a lot of executeUpdate()s
+ on one Statement, be sure to clearWarnings() every
+ so often to save memory.
+
+7-06-98 - Version 0.8
+
+ - Split MysqlIO and Buffer to separate classes. Some
+ ClassLoaders gave an IllegalAccess error for some
+ fields in those two classes. Now mm.mysql works in
+ applets and all classloaders.
+
+ Thanks to Joe Ennis <jce@stripped> for pointing
+ out the problem and working on a fix with me.
+
+7-01-98 - Version 0.7
+
+ - Fixed DatabaseMetadata problems in getColumns() and
+ bug in switch statement in the Field constructor.
+
+ Thanks to Costin Manolache <costin@stripped> for
+ pointing these out.
+
+5-21-98 - Version 0.6
+
+ - Incorporated efficiency changes from
+ Richard Swift <Richard.Swift@stripped> in
+ MysqlIO.java and ResultSet.java
+
+ - We're now 15% faster than gwe's driver.
+
+ - Started working on DatabaseMetaData.
+
+ The following methods are implemented:
+ * getTables()
+ * getTableTypes()
+ * getColumns
+ * getCatalogs()
</programlisting>
</section>
| Thread |
|---|
| • svn commit - mysqldoc@docsrva: r664 - in trunk: . refman-common | paul | 4 Jan |