List:Commits« Previous MessageNext Message »
From:paul Date:January 4 2006 4:14am
Subject:svn commit - mysqldoc@docsrva: r664 - in trunk: . refman-common
View as plain text  
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 &gt; Integer.MAX_VALUE.
-  
-    - Updated DBMD.supportsCorrelatedQueries() to return true for versions &gt; 
-      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
-      '&amp;' 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 &gt;= 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(&gt;=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 &lt; 9 bits are
-      declared. BIT(&gt;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 &lt; '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() -&gt; 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 &gt;= 4.1.0
-
-    - Cleaned up detection of server properties.
-
-    - Support placeholder for parameter metadata for server &gt;= 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 &gt;= 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 &gt;= 5.0.0
-
-    - Fixed stack overflow in Connection.prepareCall() (bad merge).
-
-    - Fixed IllegalAccessError to Calendar.getTimeInMillis() in DateTimeValue
-      (for JDK &lt; 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 &gt; 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 &gt; 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) -&gt; 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt; 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 &lt;mark@stripped&gt;
-
-    - 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-&gt;Byte and
-       SMALLINT-&gt;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' &amp; 'n'
-       as well as '1' &amp; '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 &lt;jce@stripped&gt; 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 &lt;costin@stripped&gt; for
-       pointing these out.
-
-5-21-98 - Version 0.6
-
-     - Incorporated efficiency changes from
-       Richard Swift &lt;Richard.Swift@stripped&gt; 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 &gt; Integer.MAX_VALUE.
+  
+    - Updated DBMD.supportsCorrelatedQueries() to return true for versions &gt; 
+      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
+      '&amp;' 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 &gt;= 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(&gt;=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 &lt; 9 bits are
+      declared. BIT(&gt;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 &lt; '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() -&gt; 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 &gt;= 4.1.0
+
+    - Cleaned up detection of server properties.
+
+    - Support placeholder for parameter metadata for server &gt;= 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 &gt;= 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 &gt;= 5.0.0
+
+    - Fixed stack overflow in Connection.prepareCall() (bad merge).
+
+    - Fixed IllegalAccessError to Calendar.getTimeInMillis() in DateTimeValue
+      (for JDK &lt; 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 &gt; 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 &gt; 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) -&gt; 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt; 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 &lt;mark@stripped&gt;
+
+    - 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-&gt;Byte and
+       SMALLINT-&gt;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' &amp; 'n'
+       as well as '1' &amp; '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 &lt;jce@stripped&gt; 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 &lt;costin@stripped&gt; for
+       pointing these out.
+
+5-21-98 - Version 0.6
+
+     - Incorporated efficiency changes from
+       Richard Swift &lt;Richard.Swift@stripped&gt; 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-commonpaul4 Jan