Author: mcbrown
Date: 2007-10-11 15:12:50 +0200 (Thu, 11 Oct 2007)
New Revision: 8052
Log:
Converting the remaining versions of the C/J to the dynamic changelog
Update the DTD structure for versions to allow version type tagging (release, alpha, beta etc)
Modified:
trunk/dynamic-docs/changelog/connector-j-versions.xml
trunk/dynamic-docs/changelog/connector-j.xml
trunk/dynamic-docs/changelog/versionlog.dtd
trunk/refman-common/news-cj-core.xml
Modified: trunk/dynamic-docs/changelog/connector-j-versions.xml
===================================================================
--- trunk/dynamic-docs/changelog/connector-j-versions.xml 2007-10-11 12:29:15 UTC (rev 8051)
+++ trunk/dynamic-docs/changelog/connector-j-versions.xml 2007-10-11 13:12:50 UTC (rev 8052)
Changed blocks: 2, Lines Added: 28, Lines Deleted: 5; 2255 bytes
@@ -24,15 +24,38 @@
<versionentry ver="5.0.4" reldate="20 October 2006"/>
- <versionentry ver="5.0.3" reldate="26 July 2006"/>
+ <versionentry ver="5.0.3" reldate="26 July 2006" rellevel="beta"/>
<versionentry ver="5.0.2" reldate="11 July 2006"/>
- <versionentry ver="5.0.1" reldate="Not Released"/>
+ <versionentry ver="5.0.1" reldate="Not Released"><versionentrypreamble> <para>
+ Not released due to a packaging error
+ </para></versionentrypreamble></versionentry>
<versionentry ver="5.0.0" reldate="22 December 2005"/>
- <versionentry ver="3.1.15" reldate="Not yet released"/>
+ <versionentry ver="3.1.15" reldate="Not yet released">
+ <versionentrypreamble> <para>
+ <emphasis role="bold">Important change:</emphasis> Due to a
+ number of issues with the use of server-side prepared
+ statements, Connector/J 5.0.5 has disabled their use by default.
+ The disabling of server-side prepared statements does not affect
+ the operation of the connector in any way.
+ </para>
+
+ <para>
+ To enable server-side prepared statements you must add the
+ following configuration property to your connector string:
+ </para>
+
+ <programlisting>useServerPrepStmts=true</programlisting>
+
+ <para>
+ The default value of this property is <literal>false</literal>
+ (that is, Connector/J does not use server-side prepared
+ statements).
+ </para>
+ </versionentrypreamble></versionentry>
<versionentry ver="3.1.14" reldate="10-19-2006"/>
@@ -60,9 +83,9 @@
<versionentry ver="3.1.2" reldate="09 June 2004"/>
- <versionentry ver="3.1.1" reldate="14 February 2004"/>
+ <versionentry ver="3.1.1" reldate="14 February 2004" rellevel="alpha"/>
- <versionentry ver="3.1.0" reldate="18 February 2003"/>
+ <versionentry ver="3.1.0" reldate="18 February 2003" rellevel="alpha"/>
<versionentry ver="3.0.17" reldate="23 June 2005"/>
Modified: trunk/dynamic-docs/changelog/connector-j.xml
===================================================================
--- trunk/dynamic-docs/changelog/connector-j.xml 2007-10-11 12:29:15 UTC (rev 8051)
+++ trunk/dynamic-docs/changelog/connector-j.xml 2007-10-11 13:12:50 UTC (rev 8052)
Changed blocks: 8, Lines Added: 11, Lines Deleted: 17; 3397 bytes
@@ -2350,7 +2350,7 @@
<para>
Should accept <literal>null</literal> for name patterns in DBMD
- (meaning ‘<literal>%</literal>’), even though it
+ (meaning <quote><literal>%</literal></quote>), even though it
isn't JDBC compliant, for legacy's sake. Disable by setting
connection property <literal>nullNamePatternMatchesAll</literal>
to <literal>false</literal> (which will be the default value in
@@ -2375,9 +2375,9 @@
Quoted identifiers not used if server version does not support
them. Also, if server started with <option>--ansi</option> or
<option>--sql-mode=ANSI_QUOTES</option>,
- ‘<literal>"</literal>’ will be used as an
+ <quote><literal>"</literal></quote> will be used as an
identifier quote character, otherwise
- ‘<literal>'</literal>’ will be used.
+ <quote><literal>'</literal></quote> will be used.
</para>
</message>
@@ -6343,14 +6343,8 @@
</logentry>
- <logentry entrytype="bug">
+ <logentry entrytype="feature">
- <bugs>
-
- <fixes bugid="20650"/>
-
- </bugs>
-
<versions>
<version ver="5.0.3"/>
@@ -9247,7 +9241,7 @@
<para>
The configuration property <literal>sessionVariables</literal>
now allows you to specify variables that start with the
- ‘<literal>@</literal>’ sign.
+ <quote><literal>@</literal></quote> sign.
</para>
</message>
@@ -12353,8 +12347,8 @@
<para>
URL configuration parameters don't allow
- ‘<literal>&</literal>’ or
- ‘<literal>=</literal>’ in their values. The JDBC
+ <quote><literal>&</literal></quote> or
+ <quote><literal>=</literal></quote> 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 <literal>java.net.URLDecoder</literal>
@@ -12362,10 +12356,10 @@
</para>
<para>
- If the ‘<literal>%</literal>’ character is present
+ If the <quote><literal>%</literal></quote> character is present
in a configuration property, it must now be represented as
<literal>%25</literal>, which is the encoded form of
- ‘<literal>%</literal>’ when using
+ <quote><literal>%</literal></quote> when using
application/x-www-form-urlencoded encoding.
</para>
@@ -15436,7 +15430,7 @@
<para>
Stored procedures with <literal>DECIMAL</literal> parameters
with storage specifications that contained
- ‘<literal>,</literal>’ in them would fail.
+ <quote><literal>,</literal></quote> in them would fail.
</para>
</message>
@@ -17795,7 +17789,7 @@
<para>
Handle case when string representation of timestamp contains
- trailing ‘<literal>.</literal>’ with no numbers
+ trailing <quote><literal>.</literal></quote> with no numbers
following it.
</para>
Modified: trunk/dynamic-docs/changelog/versionlog.dtd
===================================================================
--- trunk/dynamic-docs/changelog/versionlog.dtd 2007-10-11 12:29:15 UTC (rev 8051)
+++ trunk/dynamic-docs/changelog/versionlog.dtd 2007-10-11 13:12:50 UTC (rev 8052)
Changed blocks: 1, Lines Added: 1, Lines Deleted: 0; 514 bytes
@@ -10,3 +10,4 @@
<!ATTLIST versionentry subver CDATA #IMPLIED>
<!ATTLIST versionentry reldate CDATA #IMPLIED>
<!ATTLIST versionentry package (qsp | mru) #IMPLIED>
+<!ATTLIST versionentry rellevel (alpha | beta | release) #IMPLIED>
Modified: trunk/refman-common/news-cj-core.xml
===================================================================
--- trunk/refman-common/news-cj-core.xml 2007-10-11 12:29:15 UTC (rev 8051)
+++ trunk/refman-common/news-cj-core.xml 2007-10-11 13:12:50 UTC (rev 8052)
Changed blocks: 4, Lines Added: 102, Lines Deleted: 6714; 227678 bytes
@@ -147,472 +147,42 @@
<section id="cj-news-5-0-4">
- <title>Changes in MySQL Connector/J 5.0.4 (20 October 2006)</title>
+ <title condition="dynamic:changelog:vertitle" role="5.0.4:connector-j:all"/>
- <para>
- Bugs fixed:
- </para>
+ <para condition="dynamic:changelog:entrylist" role="5.0.4:connector-j:all"/>
- <itemizedlist>
-
- <listitem>
- <para>
- Column names don't match metadata in cases where server
- doesn't return original column names (column functions) thus
- breaking compatibility with applications that expect 1-1
- mappings between findColumn() and rsmd.getColumnName(),
- usually manifests itself as "Can't find column ('')"
- exceptions. (Bug #21379)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When using information_schema for metadata, COLUMN_SIZE for
- getColumns() is not clamped to range of java.lang.Integer as
- is the case when not using information_schema, thus leading
- to a truncation exception that isn't present when not using
- information_schema. (Bug #21544)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Newlines causing whitespace to span confuse procedure parser
- when getting parameter metadata for stored procedures. (Bug
- #22024)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Driver was using milliseconds for
- Statement.setQueryTimeout() when specification says argument
- is to be in seconds. (Bug #22359)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Workaround for server crash when calling stored procedures
- via a server-side prepared statement (driver now detects
- prepare(stored procedure) and substitutes client-side
- prepared statement). (Bug #22297)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added new _ci collations to CharsetMapping - utf8_unicode_ci
- not working. (Bug #22456)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Driver issues truncation on write exception when it
- shouldn't (due to sending big decimal incorrectly to server
- with server-side prepared statement). (Bug #22290)
- </para>
- </listitem>
-
- <listitem>
- <para>
- DBMD.getColumns() does not return expected COLUMN_SIZE for
- the SET type, now returns length of largest possible set
- disregarding whitespace or the "," delimitters to be
- consistent with the ODBC driver. (Bug #22613)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- Other changes:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fixed configuration property
- <literal>jdbcCompliantTruncation</literal> was not being
- used for reads of result set values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Driver now supports <literal>{call sp}</literal> (without
- "()" if procedure has no arguments).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Driver now sends numeric 1 or 0 for client-prepared
- statement <literal>setBoolean()</literal> calls instead of
- '1' or '0'.
- </para>
- </listitem>
-
- <listitem>
- <para>
- DatabaseMetaData correctly reports <literal>true</literal>
- for <literal>supportsCatalog*()</literal> methods.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-5-0-3">
- <title>Changes in MySQL Connector/J 5.0.3 (26 July 2006)</title>
+ <title condition="dynamic:changelog:vertitle" role="5.0.3:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="5.0.3:connector-j:all"/>
- <listitem>
- <para>
- Fixed <literal>Statement.cancel()</literal> causes
- <literal>NullPointerException</literal> if underlying
- connection has been closed due to server failure. (Bug
- #20650)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added configuration option
- <literal>noAccessToProcedureBodies</literal> which will
- cause the driver to create basic parameter metadata for
- <literal>CallableStatements</literal> when the user does not
- have access to procedure bodies via <literal>SHOW CREATE
- PROCEDURE</literal> or selecting from
- <literal>mysql.proc</literal> instead of throwing an
- exception. The default value for this option is
- <literal>false</literal>
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- Bugs fixed:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- If the connection to the server has been closed due to a
- server failure, then the cleanup process will call <literal>
- Statement.cancel()</literal>, triggering a
- <literal>NullPointerException</literal>, even though there
- is no active connection. (Bug #20650)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-5-0-2">
- <title>Changes in MySQL Connector/J 5.0.2-beta (11 July 2006)</title>
+ <title condition="dynamic:changelog:vertitle" role="5.0.2:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="5.0.2:connector-j:all"/>
- <listitem>
- <para>
- Fixed can't use <literal>XAConnection</literal> for local
- transactions when no global transaction is in progress. (Bug
- #17401)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed driver fails on non-ASCII platforms. The driver was
- assuming that the platform character set would be a superset
- of MySQL's <literal>latin1</literal> when doing the
- handshake for authentication, and when reading error
- messages. We now use Cp1252 for all strings sent to the
- server during the handshake phase, and a hard-coded mapping
- of the <literal>language</literal> systtem variable to the
- character set that is used for error messages. (Bug #18086)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ConnectionProperties</literal> (and thus some
- subclasses) are not serializable, even though some J2EE
- containers expect them to be. (Bug #19169)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>MysqlValidConnectionChecker</literal> for
- JBoss doesn't work with
- <literal>MySQLXADataSources</literal>. (Bug #20242)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Better caching of character set converters (per-connection)
- to remove a bottleneck for multibyte character sets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added connection/datasource property
- <literal>pinGlobalTxToPhysicalConnection</literal> (defaults
- to <literal>false</literal>). When set to
- <literal>true</literal>, when using
- <literal>XAConnections</literal>, the driver ensures that
- operations on a given XID are always routed to the same
- physical connection. This allows the
- <literal>XAConnection</literal> to support <literal>XA START
- ... JOIN</literal> after <literal>XA END</literal> has been
- called, and is also a workaround for transaction managers
- that don't maintain thread affinity for a global transaction
- (most either always maintain thread affinity, or have it as
- a configuration option).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>MysqlXaConnection.recover(int flags)</literal> now
- allows combinations of
- <literal>XAResource.TMSTARTRSCAN</literal> and
- <literal>TMENDRSCAN</literal>. To simulate the
- <quote>scanning</quote> nature of the interface, we return
- all prepared XIDs for <literal>TMSTARTRSCAN</literal>, and
- no new XIDs for calls with <literal>TMNOFLAGS</literal>, or
- <literal>TMENDRSCAN</literal> when not in combination with
- <literal>TMSTARTRSCAN</literal>. This change was made for
- API compliance, as well as integration with IBM WebSphere's
- transaction manager.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-5-0-1">
- <title>Changes in MySQL Connector/J 5.0.1-beta (Not Released)</title>
+ <title condition="dynamic:changelog:vertitle" role="5.0.1:connector-j:all"/>
- <para>
- Not released due to a packaging error
- </para>
+ <para condition="dynamic:changelog:entrylist" role="5.0.1:connector-j:all"/>
</section>
<section id="cj-news-5-0-0">
- <title>Changes in MySQL Connector/J 5.0.0-beta (22 December 2005)</title>
+ <title condition="dynamic:changelog:vertitle" role="5.0.0:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="5.0.0:connector-j:all"/>
- <listitem>
- <para>
- <literal>XADataSource</literal> implemented (ported from 3.2
- branch which won't be released as a product). Use
- <literal>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</literal>
- as your datasource class name in your application server to
- utilize XA transactions in MySQL-5.0.10 and newer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement.setString()</literal> didn't work
- correctly when <literal>sql_mode</literal> on server
- contained <literal>NO_BACKSLASH_ESCAPES</literal> and no
- characters that needed escaping were present in the string.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Attempt detection of the MySQL type
- <literal>BINARY</literal> (it's an alias, so this isn't
- always reliable), and use the
- <literal>java.sql.Types.BINARY</literal> type mapping for
- it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Moved <filename>-bin-g.jar</filename> file into separate
- <filename>debug</filename> subdirectory to avoid confusion.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't allow <literal>.setAutoCommit(true)</literal>, or
- <literal>.commit()</literal> or
- <literal>.rollback()</literal> on an XA-managed connection
- as per the JDBC specification.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If the connection <literal>useTimezone</literal> is set to
- <literal>true</literal>, then also respect time zone
- conversions in escape-processed string literals (for
- example, <literal>"{ts ...}"</literal> and <literal>"{t
- ...}"</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return original column name for
- <literal>RSMD.getColumnName()</literal> if the column was
- aliased, alias name for <literal>.getColumnLabel()</literal>
- (if aliased), and original table name for
- <literal>.getTableName()</literal>. Note this only works for
- MySQL-4.1 and newer, as older servers don't make this
- information available to clients.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Setting
- <literal>useJDBCCompliantTimezoneShift=true</literal> (it's
- not the default) causes the driver to use GMT for
- <emphasis>all</emphasis>
- <literal>TIMESTAMP</literal>/<literal>DATETIME</literal>
- time zones, and the current VM time zone for any other type
- that refers to time zones. This feature can not be used when
- <literal>useTimezone=true</literal> to convert between
- server and client time zones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add one level of indirection of internal representation of
- <literal>CallableStatement</literal> parameter metadata to
- avoid class not found issues on JDK-1.3 for
- <literal>ParameterMetadata</literal> interface (which
- doesn't exist prior to JDBC-3.0).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added unit tests for <literal>XADatasource</literal>, as
- well as friendlier exceptions for XA failures compared to
- the "stock" <literal>XAException</literal> (which has no
- messages).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Idle timeouts cause <literal>XAConnections</literal> to
- whine about rolling themselves back. (Bug #14729)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for Connector/MXJ integration via url
- subprotocol <literal>jdbc:mysql:mxj://...</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Moved all <literal>SQLException</literal> constructor usage
- to a factory in <literal>SQLError</literal> (ground-work for
- JDBC-4.0 <literal>SQLState</literal>-based exception
- classes).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed Java5-specific calls to
- <literal>BigDecimal</literal> constructor (when result set
- value is <literal>''</literal>, <literal>(int)0</literal>
- was being used as an argument indirectly via method return
- value. This signature doesn't exist prior to Java5.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added service-provider entry to
- <filename>META-INF/services/java.sql.Driver</filename> for
- JDBC-4.0 support.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return "[VAR]BINARY" for
- <literal>RSMD.getColumnTypeName()</literal> when that is
- actually the type, and it can be distinguished (MySQL-4.1
- and newer).
- </para>
- </listitem>
-
- <listitem>
- <para>
- When fix for Bug #14562 was merged from 3.1.12, added
- functionality for <literal>CallableStatement</literal>'s
- parameter metadata to return correct information for
- <literal>.getParameterClassName()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fuller synchronization of <literal>Connection</literal> 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).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implementation of <literal>Statement.cancel()</literal> and
- <literal>Statement.setQueryTimeout()</literal>. Both require
- MySQL-5.0.0 or newer server, require a separate connection
- to issue the <literal>KILL QUERY</literal> statement, and in
- the case of <literal>setQueryTimeout()</literal> creates an
- additional thread to handle the timeout functionality.
- </para>
-
- <para>
- Note: Failures to cancel the statement for
- <literal>setQueryTimeout()</literal> may manifest themselves
- as <literal>RuntimeExceptions</literal> 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.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
</section>
@@ -623,3289 +193,130 @@
<section id="cj-news-3-1-15">
- <title>Changes in MySQL Connector/J 3.1.15 (Not yet released)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.15:connector-j:all"/>
- <para>
- <emphasis role="bold">Important change:</emphasis> Due to a
- number of issues with the use of server-side prepared
- statements, Connector/J 5.0.5 has disabled their use by default.
- The disabling of server-side prepared statements does not affect
- the operation of the connector in any way.
- </para>
+ <para condition="dynamic:changelog:entrylist" role="3.1.15:connector-j:all"/>
- <para>
- To enable server-side prepared statements you must add the
- following configuration property to your connector string:
- </para>
-
-<programlisting>useServerPrepStmts=true</programlisting>
-
- <para>
- The default value of this property is <literal>false</literal>
- (that is, Connector/J does not use server-side prepared
- statements).
- </para>
-
- <para>
- Bugs fixed:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Specifying <literal>US-ASCII</literal> as the character set
- in a connection to a MySQL 4.1 or newer server does not map
- correctly. (Bug #24840)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-14">
- <title>Changes in MySQL Connector/J 3.1.14 (10-19-2006)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.14:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.14:connector-j:all"/>
- <listitem>
- <para>
- Fixed updatable result set throws ClassCastException when
- there is row data and moveToInsertRow() is called. (Bug
- #20479)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed Updatable result set that contains a BIT column fails
- when server-side prepared statements are used. (Bug #20485)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed memory leak with profileSQL=true. (Bug #16987)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Connection fails to localhost when using timeout and IPv6 is
- configured. (Bug #19726)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed NullPointerException in MysqlDataSourceFactory due to
- Reference containing RefAddrs with null content. (Bug
- #16791)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed ResultSet.getShort() for UNSIGNED TINYINT returns
- incorrect values when using server-side prepared statements.
- (Bug #20306)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed can't pool server-side prepared statements, exception
- raised when re-using them. (Bug #20687)
- </para>
- </listitem>
-
- <listitem>
- <para>
- ResultSet.getSomeInteger() doesn't work for BIT(>1). (Bug
- #21062)
- </para>
- </listitem>
-
- <listitem>
- <para>
- ResultSet.getFloatFromString() can't retrieve values near
- Float.MIN/MAX_VALUE. (Bug #18880)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Escape of quotes in client-side prepared statements parsing
- not respected. Patch covers more than bug report, including
- NO_BACKSLASH_ESCAPES being set, and stacked quote characters
- forms of escaping (that is, '' or ""). (Bug
- #20888)
- </para>
- </listitem>
-
- <listitem>
- <para>
- ReplicationDriver does not always round-robin load balance
- depending on URL used for slaves list. (Bug #19993)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed calling toString() on ResultSetMetaData for
- driver-generated (that is, from DatabaseMetaData method
- calls, or from getGeneratedKeys()) result sets would raise a
- NullPointerException.
- </para>
- </listitem>
-
- <listitem>
- <para>
- DDriver throws NPE when tracing prepared statements that
- have been closed (in asSQL()). (Bug #21207)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed logger autodetection altogether, must now specify
- logger explicitly if you want to use a logger other than one
- that logs to STDERR.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Driver issues truncation on write exception when it
- shouldn't (due to sending big decimal incorrectly to server
- with server-side prepared statement). (Bug #22290)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Driver now sends numeric 1 or 0 for client-prepared
- statement setBoolean() calls instead of '1' or '0'.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed bug where driver would not advance to next host if
- roundRobinLoadBalance=true and the last host in the list is
- down.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed BUG#18258 - DatabaseMetaData.getTables(), columns()
- with bad catalog parameter threw exception rather than
- return empty result set (as required by spec).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check and store value for continueBatchOnError property in
- constructor of Statements, rather than when executing
- batches, so that Connections closed out from underneath
- statements don't cause NullPointerExceptions when it's
- required to check this property.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed bug when calling stored functions, where parameters
- weren't numbered correctly (first parameter is now the
- return value, subsequent parameters if specified start at
- index "2").
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-13">
- <title>Changes in MySQL Connector/J 3.1.13 (26 May 2006)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.13:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.13:connector-j:all"/>
- <listitem>
- <para>
- <literal>INOUT</literal> parameter does not store
- <literal>IN</literal> value. (Bug #15464)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Exception thrown for new decimal type when using updatable
- result sets. (Bug #14609)
- </para>
- </listitem>
-
- <listitem>
- <para>
- No "dos" character set in MySQL > 4.1.0. (Bug #15544)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement.setObject()</literal> serializes
- <literal>BigInteger</literal> as object, rather than sending
- as numeric value (and is thus not complementary to
- <literal>.getObject()</literal> on an <literal>UNSIGNED
- LONG</literal> type). (Bug #15383)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getShort()</literal> for
- <literal>UNSIGNED TINYINT</literal> returned wrong values.
- (Bug #11874)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>lib-nodist</filename> directory missing from
- package breaks out-of-box build. (Bug #15676)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMD.getColumns()</literal> returns wrong type for
- <literal>BIT</literal>. (Bug #15854)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed issue where driver was unable to initialize character
- set mapping tables. Removed reliance on
- <literal>.properties</literal> files to hold this
- information, as it turns out to be too problematic to code
- around class loader hierarchies that change depending on how
- an application is deployed. Moved information back into the
- <literal>CharsetMapping</literal> class. (Bug #14938)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed updatable result set doesn't return
- <literal>AUTO_INCREMENT</literal> values for
- <literal>insertRow()</literal> when multiple column primary
- keys are used. (the driver was checking for the existence of
- single-column primary keys and an autoincrement value > 0
- instead of a straightforward
- <literal>isAutoIncrement()</literal> check). (Bug #16841)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>Statement.getGeneratedKeys()</literal> throws
- <literal>NullPointerException</literal> when no query has
- been processed. (Bug #17099)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed driver trying to call methods that don't exist on
- older and newer versions of Log4j. The fix is not trying to
- auto-detect presence of log4j, too many different
- incompatible versions out there in the wild to do this
- reliably. (Bug #13469)
- </para>
-
- <para>
- If you relied on autodetection before, you will need to add
- "logger=com.mysql.jdbc.log.Log4JLogger" to your JDBC URL to
- enable Log4J usage, or alternatively use the new
- "CommonsLogger" class to take care of this.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for Apache Commons logging, use
- "com.mysql.jdbc.log.CommonsLogger" as the value for the
- "logger" configuration property.
- </para>
- </listitem>
-
- <listitem>
- <para>
- LogFactory now prepends "com.mysql.jdbc.log" to log class
- name if it can't be found as-specified. This allows you to
- use "short names" for the built-in log factories, for
- example "logger=CommonsLogger" instead of
- "logger=com.mysql.jdbc.log.CommonsLogger".
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed issue with <literal>ReplicationConnection</literal>
- incorrectly copying state, doesn't transfer connection
- context correctly when transitioning between the same
- read-only states. (Bug #15570)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed issue where server-side prepared statements don't
- cause truncation exceptions to be thrown when truncation
- happens. (Bug #18041)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added performance feature, re-writing of batched executes
- for <literal>Statement.executeBatch()</literal> (for all DML
- statements) and
- <literal>PreparedStatement.executeBatch()</literal> (for
- INSERTs with VALUE clauses only). Enable by using
- "rewriteBatchedStatements=true" in your JDBC URL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed
- <literal>CallableStatement.registerOutParameter()</literal>
- not working when some parameters pre-populated. Still
- waiting for feedback from JDBC experts group to determine
- what correct parameter count from
- <literal>getMetaData()</literal> should be, however. (Bug
- #17898)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed calling <literal>clearParameters()</literal> on a
- closed prepared statement causes NPE. (Bug #17587)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Map "latin1" on MySQL server to CP1252 for MySQL > 4.1.0.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added additional accessor and mutator methods on
- ConnectionProperties so that DataSource users can use same
- naming as regular URL properties.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed data truncation and <literal>getWarnings()</literal>
- only returns last warning in set. (Bug #18740)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improved performance of retrieving
- <literal>BigDecimal</literal>, <literal>Time</literal>,
- <literal>Timestamp</literal> and <literal>Date</literal>
- values from server-side prepared statements by creating
- fewer short-lived instances of <literal>Strings</literal>
- when the native type is not an exact match for the requested
- type. (Bug #18496)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed aliased column names where length of name > 251 are
- corrupted. (Bug #18554)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSet.wasNull()</literal> not always
- reset correctly for booleans when done via conversion for
- server-side prepared statements. (Bug #17450)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed invalid classname returned for
- <literal>ResultSetMetaData.getColumnClassName()</literal>
- for <literal>BIGINT type</literal>. (Bug #19282)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed case where driver wasn't reading server status
- correctly when fetching server-side prepared statement rows,
- which in some cases could cause warning counts to be off, or
- multiple result sets to not be read off the wire.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Driver now aware of fix for <literal>BIT</literal> type
- metadata that went into MySQL-5.0.21 for server not
- reporting length consistently (Bug #13601).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>Fixed PreparedStatement.setObject(int, Object,
- int)</literal> doesn't respect scale of BigDecimals. (Bug
- #19615)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSet.wasNull()</literal> returns
- incorrect value when extracting native string from
- server-side prepared statement generated result set. (Bug
- #19282)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-12">
- <title>Changes in MySQL Connector/J 3.1.12 (30 November 2005)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.12:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.12:connector-j:all"/>
- <listitem>
- <para>
- Fixed client-side prepared statement bug with embedded
- <literal>?</literal> characters inside quoted identifiers
- (it was recognized as a placeholder, when it was not).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't allow <literal>executeBatch()</literal> for
- <literal>CallableStatements</literal> with registered
- <literal>OUT</literal>/<literal>INOUT</literal> parameters
- (JDBC compliance).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fall back to platform-encoding for
- <literal>URLDecoder.decode()</literal> when parsing driver
- URL properties if the platform doesn't have a two-argument
- version of this method.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Java type conversion may be incorrect for
- <literal>MEDIUMINT</literal>. (Bug #14562)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added configuration property
- <literal>useGmtMillisForDatetimes</literal> which when set
- to <literal>true</literal> causes
- <literal>ResultSet.getDate()</literal>,
- <literal>.getTimestamp()</literal> to return correct
- millis-since GMT when <literal>.getTime()</literal> is
- called on the return value (currently default is
- <literal>false</literal> for legacy behavior).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed
- <literal>DatabaseMetaData.stores*Identifiers()</literal>:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- If <literal>lower_case_table_names=0</literal> (on
- server):
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <literal>storesLowerCaseIdentifiers()</literal>
- returns <literal>false</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>storesLowerCaseQuotedIdentifiers()</literal>
- returns <literal>false</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>storesMixedCaseIdentifiers()</literal>
- returns <literal>true</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>storesMixedCaseQuotedIdentifiers()</literal>
- returns <literal>true</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>storesUpperCaseIdentifiers()</literal>
- returns <literal>false</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>storesUpperCaseQuotedIdentifiers()</literal>
- returns <literal>true</literal>
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- If <literal>lower_case_table_names=1</literal> (on
- server):
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <literal>storesLowerCaseIdentifiers()</literal>
- returns <literal>true</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>storesLowerCaseQuotedIdentifiers()</literal>
- returns <literal>true</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>storesMixedCaseIdentifiers()</literal>
- returns <literal>false</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>storesMixedCaseQuotedIdentifiers()</literal>
- returns <literal>false</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>storesUpperCaseIdentifiers()</literal>
- returns <literal>false</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>storesUpperCaseQuotedIdentifiers()</literal>
- returns <literal>true</literal>
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData.getColumns()</literal> doesn't
- return <literal>TABLE_NAME</literal> correctly. (Bug #14815)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Escape processor replaces quote character in quoted string
- with string delimiter. (Bug #14909)
- </para>
- </listitem>
-
- <listitem>
- <para>
- OpenOffice expects
- <literal>DBMD.supportsIntegrityEnhancementFacility()</literal>
- to return <literal>true</literal> if foreign keys are
- supported by the datasource, even though this method also
- covers support for check constraints, which MySQL
- <emphasis>doesn't</emphasis> have. Setting the configuration
- property
- <literal>overrideSupportsIntegrityEnhancementFacility</literal>
- to <literal>true</literal> causes the driver to return
- <literal>true</literal> for this method. (Bug #12975)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added
- <literal>com.mysql.jdbc.testsuite.url.default</literal>
- system property to set default JDBC url for testsuite (to
- speed up bug resolution when I'm working in Eclipse).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unable to initialize character set mapping tables (due to
- J2EE classloader differences). (Bug #14938)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Deadlock while closing server-side prepared statements from
- multiple threads sharing one connection. (Bug #14972)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>logSlowQueries</literal> should give better info.
- (Bug #12230)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Extraneous sleep on <literal>autoReconnect</literal>. (Bug
- #13775)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Driver incorrectly closes streams passed as arguments to
- <literal>PreparedStatements</literal>. Reverts to legacy
- behavior by setting the JDBC configuration property
- <literal>autoClosePStmtStreams</literal> to
- <literal>true</literal> (also included in the 3-0-Compat
- configuration <quote>bundle</quote>). (Bug #15024)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>maxQuerySizeToLog</literal> is not respected. Added
- logging of bound values for <literal>execute()</literal>
- phase of server-side prepared statements when
- <literal>profileSQL=true</literal> as well. (Bug #13048)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Usage advisor complains about unreferenced columns, even
- though they've been referenced. (Bug #15065)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't increase timeout for failover/reconnect. (Bug #6577)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Process escape tokens in
- <literal>Connection.prepareStatement(...)</literal>. (Bug
- #15141) You can disable this behavior by setting the JDBC
- URL configuration property
- <literal>processEscapeCodesForPrepStmts</literal> to
- <literal>false</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reconnect during middle of <literal>executeBatch()</literal>
- should not occur if <literal>autoReconnect</literal> is
- enabled. (Bug #13255)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-11">
- <title>Changes in MySQL Connector/J 3.1.11-stable (07 October 2005)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.11:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.11:connector-j:all"/>
- <listitem>
- <para>
- Spurious <literal>!</literal> on console when character
- encoding is <literal>utf8</literal>. (Bug #11629)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed statements generated for testcases missing
- <literal>;</literal> for <quote>plain</quote> statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Incorrect generation of testcase scripts for server-side
- prepared statements. (Bug #11663)
- </para>
- </listitem>
-
- <listitem>
- <para>
- 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.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Moved source code to Subversion repository.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Escape tokenizer doesn't respect stacked single quotes for
- escapes. (Bug #11797)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>GEOMETRY</literal> type not recognized when using
- server-side prepared statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ReplicationConnection</literal> won't switch to
- slave, throws <quote>Catalog can't be null</quote>
- exception. (Bug #11879)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properties shared between master and slave with replication
- connection. (Bug #12218)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>Statement.getWarnings()</literal> fails with NPE if
- statement has been closed. (Bug #10630)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Only get <literal>char[]</literal> from SQL in
- <literal>PreparedStatement.ParseInfo()</literal> when
- needed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Geometry types not handled with server-side prepared
- statements. (Bug #12104)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>StringUtils.getBytes()</literal> doesn't work when
- using multi-byte character encodings and a length in
- <emphasis>characters</emphasis> is specified. (Bug #11614)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>Pstmt.setObject(...., Types.BOOLEAN)</literal>
- throws exception. (Bug #11798)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>maxPerformance.properties</literal> mis-spells
- <quote>elideSetAutoCommits</quote>. (Bug #11976)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMD.storesLower/Mixed/UpperIdentifiers()</literal>
- reports incorrect values for servers deployed on Windows.
- (Bug #11575)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.moveToCurrentRow()</literal> fails to
- work when preceded by a call to
- <literal>ResultSet.moveToInsertRow()</literal>. (Bug #11190)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>VARBINARY</literal> data corrupted when using
- server-side prepared statements and
- <literal>.setBytes()</literal>. (Bug #11115)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>explainSlowQueries</literal> hangs with server-side
- prepared statements. (Bug #12229)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Escape processor didn't honor strings demarcated with double
- quotes. (Bug #11498)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Lifted restriction of changing streaming parameters with
- server-side prepared statements. As long as
- <literal>all</literal> streaming parameters were set before
- execution, <literal>.clearParameters()</literal> does not
- have to be called. (due to limitation of client/server
- protocol, prepared statements can not reset
- <emphasis>individual</emphasis> stream data on the server
- side).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reworked <literal>Field</literal> class,
- <literal>*Buffer</literal>, and <literal>MysqlIO</literal>
- to be aware of field lengths >
- <literal>Integer.MAX_VALUE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Updated <literal>DBMD.supportsCorrelatedQueries()</literal>
- to return <literal>true</literal> for versions > 4.1,
- <literal>supportsGroupByUnrelated()</literal> to return
- <literal>true</literal> and
- <literal>getResultSetHoldability()</literal> to return
- <literal>HOLD_CURSORS_OVER_COMMIT</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handling of catalog argument in
- <literal>DatabaseMetaData.getIndexInfo()</literal>, which
- also means changes to the following methods in
- <literal>DatabaseMetaData</literal>: (Bug #12541)
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <literal>getBestRowIdentifier()</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getColumns()</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getCrossReference()</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getExportedKeys()</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getImportedKeys()</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getIndexInfo()</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getPrimaryKeys()</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getProcedures()</literal> (and thus indirectly
- <literal>getProcedureColumns()</literal>)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getTables()</literal>
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The <literal>catalog</literal> argument in all of these
- methods now behaves in the following way:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Specifying <literal>NULL</literal> means that catalog
- will not be used to filter the results (thus all
- databases will be searched), unless you've set
- <literal>nullCatalogMeansCurrent=true</literal> in your
- JDBC URL properties.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Specifying <literal>""</literal> means
- <quote>current</quote> catalog, even though this isn't
- quite JDBC spec compliant, it's there for legacy users.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Specifying a catalog works as stated in the API docs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Made <literal>Connection.clientPrepare()</literal>
- available from <quote>wrapped</quote> connections in the
- <literal>jdbc2.optional</literal> package (connections
- built by <literal>ConnectionPoolDataSource</literal>
- instances).
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>Connection.isMasterConnection()</literal> for
- clients to be able to determine if a multi-host master/slave
- connection is connected to the first host in the list.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tokenizer for <literal>=</literal> in URL properties was
- causing <literal>sessionVariables=....</literal> to be
- parameterized incorrectly. (Bug #12753)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Foreign key information that is quoted is parsed incorrectly
- when <literal>DatabaseMetaData</literal> methods use that
- information. (Bug #11781)
- </para>
- </listitem>
-
- <listitem>
- <para>
- The <literal>sendBlobChunkSize</literal> property is now
- clamped to <literal>max_allowed_packet</literal> with
- consideration of stream buffer size and packet headers to
- avoid <literal>PacketTooBigExceptions</literal> when
- <literal>max_allowed_packet</literal> is similar in size to
- the default <literal>sendBlobChunkSize</literal> which is
- 1M.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>CallableStatement.clearParameters()</literal> now
- clears resources associated with
- <literal>INOUT</literal>/<literal>OUTPUT</literal>
- parameters as well as <literal>INPUT</literal> parameters.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>Connection.prepareCall()</literal> is database name
- case-sensitive (on Windows systems). (Bug #12417)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>cp1251</literal> incorrectly mapped to
- <literal>win1251</literal> for servers newer than 4.0.x.
- (Bug #12752)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>java.sql.Types.OTHER</literal> returned for
- <literal>BINARY</literal> and <literal>VARBINARY</literal>
- columns when using
- <literal>DatabaseMetaData.getColumns()</literal>. (Bug
- #12970)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ServerPreparedStatement.getBinding()</literal> now
- checks if the statement is closed before attempting to
- reference the list of parameter bindings, to avoid throwing
- a <literal>NullPointerException</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSetMetaData</literal> from
- <literal>Statement.getGeneratedKeys()</literal> caused a
- <literal>NullPointerException</literal> to be thrown
- whenever a method that required a connection reference was
- called. (Bug #13277)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Backport of <literal>Field</literal> class,
- <literal>ResultSetMetaData.getColumnClassName()</literal>,
- and <literal>ResultSet.getObject(int)</literal> changes from
- 5.0 branch to fix behavior surrounding <literal>VARCHAR
- BINARY</literal>/<literal>VARBINARY</literal> and related
- types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>NullPointerException</literal> when
- converting <literal>catalog</literal> parameter in many
- <literal>DatabaseMetaDataMethods</literal> to
- <literal>byte[]</literal>s (for the result set) when the
- parameter is <literal>null</literal>.
- (<literal>null</literal> isn't technically allowed by the
- JDBC specification, but we've historically allowed it).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Backport of <literal>VAR[BINARY|CHAR] [BINARY]</literal>
- types detection from 5.0 branch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Read response in
- <literal>MysqlIO.sendFileToServer()</literal>, even if the
- local file can't be opened, otherwise next query issued will
- fail, because it's reading the response to the empty
- <literal>LOAD DATA INFILE</literal> packet sent to the
- server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Workaround for Bug #13374:
- <literal>ResultSet.getStatement()</literal> on closed result
- set returns <literal>NULL</literal> (as per JDBC 4.0 spec,
- but not backward-compatible). Set the connection property
- <literal>retainStatementAfterResultSetClose</literal> to
- <literal>true</literal> to be able to retrieve a
- <literal>ResultSet</literal>'s statement after the
- <literal>ResultSet</literal> has been closed via
- <literal>.getStatement()</literal> (the default is
- <literal>false</literal>, to be JDBC-compliant and to reduce
- the chance that code using JDBC leaks
- <literal>Statement</literal> instances).
- </para>
- </listitem>
-
- <listitem>
- <para>
- URL configuration parameters don't allow
- <quote><literal>&</literal></quote> or
- <quote><literal>=</literal></quote> 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 <literal>java.net.URLDecoder</literal>
- (<ulink url="http://java.sun.com/j2se/1.5.0/docs/api/java/net/URLDecoder.html"/>).
- (Bug #13453)
- </para>
-
- <para>
- If the <quote><literal>%</literal></quote> character is
- present in a configuration property, it must now be
- represented as <literal>%25</literal>, which is the encoded
- form of <quote><literal>%</literal></quote> when using
- application/x-www-form-urlencoded encoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The configuration property
- <literal>sessionVariables</literal> now allows you to
- specify variables that start with the
- <quote><literal>@</literal></quote> sign.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When <literal>gatherPerfMetrics</literal> is enabled for
- servers older than 4.1.0, a
- <literal>NullPointerException</literal> is thrown from the
- constructor of <literal>ResultSet</literal> if the query
- doesn't use any tables. (Bug #13043)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-10">
- <title>Changes in MySQL Connector/J 3.1.10-stable (23 June 2005)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.10:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.10:connector-j:all"/>
- <listitem>
- <para>
- Fixed connecting without a database specified raised an
- exception in <literal>MysqlIO.changeDatabaseTo()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Initial implemention of <literal>ParameterMetadata</literal>
- for
- <literal>PreparedStatement.getParameterMetadata()</literal>.
- Only works fully for <literal>CallableStatements</literal>,
- as current server-side prepared statements return every
- parameter as a <literal>VARCHAR</literal> type.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-9">
- <title>Changes in MySQL Connector/J 3.1.9-stable (22 June 2005)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.9:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.9:connector-j:all"/>
- <listitem>
- <para>
- Overhaul of character set configuration, everything now
- lives in a properties file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- 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.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>com.mysql.jdbc.PreparedStatement.ParseInfo</literal>
- does unnecessary call to <literal>toCharArray()</literal>.
- (Bug #9064)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Memory leak in <literal>ServerPreparedStatement</literal> if
- <literal>serverPrepare()</literal> fails. (Bug #10144)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Actually write manifest file to correct place so it ends up
- in the binary jar file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>createDatabaseIfNotExist</literal> property
- (default is <literal>false</literal>), 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.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unsigned <literal>SMALLINT</literal> treated as signed for
- <literal>ResultSet.getInt()</literal>, fixed all cases for
- <literal>UNSIGNED</literal> integer values and server-side
- prepared statements, as well as
- <literal>ResultSet.getObject()</literal> for
- <literal>UNSIGNED TINYINT</literal>. (Bug #10156)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Double quotes not recognized when parsing client-side
- prepared statements. (Bug #10155)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Made <literal>enableStreamingResults()</literal> visible on
- <literal>com.mysql.jdbc.jdbc2.optional.StatementWrapper</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Made <literal>ServerPreparedStatement.asSql()</literal> work
- correctly so auto-explain functionality would work with
- server-side prepared statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Made JDBC2-compliant wrappers public in order to allow
- access to vendor extensions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cleaned up logging of profiler events, moved code to dump a
- profiler event as a string to
- <literal>com.mysql.jdbc.log.LogUtils</literal> so that third
- parties can use it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData.supportsMultipleOpenResults()</literal>
- now returns <literal>true</literal>. The driver has
- supported this for some time, DBMD just missed that fact.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Driver doesn't support <literal>{?=CALL(...)}</literal> for
- calling stored functions. This involved adding support for
- function retrieval to
- <literal>DatabaseMetaData.getProcedures()</literal> and
- <literal>getProcedureColumns()</literal> as well. (Bug
- #10310)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>SQLException</literal> thrown when retrieving
- <literal>YEAR(2)</literal> with
- <literal>ResultSet.getString()</literal>. The driver will
- now always treat <literal>YEAR</literal> types as
- <literal>java.sql.Dates</literal> and return the correct
- values for <literal>getString()</literal>. Alternatively,
- the <literal>yearIsDateType</literal> connection property
- can be set to <literal>false</literal> and the values will
- be treated as <literal>SHORT</literal>s. (Bug #10485)
- </para>
- </listitem>
-
- <listitem>
- <para>
- The datatype returned for <literal>TINYINT(1)</literal>
- columns when <literal>tinyInt1isBit=true</literal> (the
- default) can be switched between
- <literal>Types.BOOLEAN</literal> and
- <literal>Types.BIT</literal> using the new configuration
- property <literal>transformedBitIsBoolean</literal>, which
- defaults to <literal>false</literal>. If set to
- <literal>false</literal> (the default),
- <literal>DatabaseMetaData.getColumns()</literal> and
- <literal>ResultSetMetaData.getColumnType()</literal> will
- return <literal>Types.BOOLEAN</literal> for
- <literal>TINYINT(1)</literal> columns. If
- <literal>true</literal>, <literal>Types.BOOLEAN</literal>
- will be returned instead. Regardless of this configuration
- property, if <literal>tinyInt1isBit</literal> is enabled,
- columns with the type <literal>TINYINT(1)</literal> will be
- returned as <literal>java.lang.Boolean</literal> instances
- from <literal>ResultSet.getObject(...)</literal>, and
- <literal>ResultSetMetaData.getColumnClassName()</literal>
- will return <literal>java.lang.Boolean</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>SQLException</literal> is thrown when using
- property <literal>characterSetResults</literal> with
- <literal>cp932</literal> or <literal>eucjpms</literal>. (Bug
- #10496)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reorganized directory layout. Sources now are in
- <filename>src</filename> folder. Don't pollute parent
- directory when building, now output goes to
- <filename>./build</filename>, distribution goes to
- <filename>./dist</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support/bug hunting feature that generates
- <filename>.sql</filename> test scripts to
- <literal>STDERR</literal> when
- <literal>autoGenerateTestcaseScript</literal> is set to
- <literal>true</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- 0-length streams not sent to server when using server-side
- prepared statements. (Bug #10850)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Setting <literal>cachePrepStmts=true</literal> now causes
- the <literal>Connection</literal> 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 <literal>prepStmtCacheSize</literal> parameter
- controls the size of these caches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Try to handle <literal>OutOfMemoryErrors</literal> 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 <quote>Connection
- closed</quote> exception that will also list the OOM
- exception as the reason for the implicit connection close
- event.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't send <literal>COM_RESET_STMT</literal> for each
- execution of a server-side prepared statement if it isn't
- required.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Driver detects if you're running MySQL-5.0.7 or later, and
- does not scan for <literal>LIMIT ?[,?]</literal> in
- statements being prepared, as the server supports those
- types of queries now.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>VARBINARY</literal> data corrupted when using
- server-side prepared statements and
- <literal>ResultSet.getBytes()</literal>. (Bug #11115)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>Connection.setCatalog()</literal> is now aware of
- the <literal>useLocalSessionState</literal> configuration
- property, which when set to <literal>true</literal> will
- prevent the driver from sending <literal>USE ...</literal>
- to the server if the requested catalog is the same as the
- current catalog.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added the following configuration bundles, use one or many
- via the <literal>useConfigs</literal> configuration
- property:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <literal>maxPerformance</literal> — maximum
- performance without being reckless
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>solarisMaxPerformance</literal> — maximum
- performance for Solaris, avoids syscalls where it can
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>3-0-Compat</literal> — Compatibility with
- Connector/J 3.0.x functionality
- </para>
- </listitem>
-
- </itemizedlist>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>maintainTimeStats</literal> configuration
- property (defaults to <literal>true</literal>), 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 <literal>false</literal>, removes two
- syscalls per query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>autoReconnect</literal> ping causes exception on
- connection startup. (Bug #11259)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Connector/J dumping query into
- <literal>SQLException</literal> twice. (Bug #11360)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>PreparedStatement.setClob()</literal> not
- accepting <literal>null</literal> as a parameter.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Production package doesn't include JBoss integration
- classes. (Bug #11411)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed nonsensical <quote>costly type conversion</quote>
- warnings when using usage advisor.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-8">
- <title>Changes in MySQL Connector/J 3.1.8-stable (14 April 2005)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.8:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.8:connector-j:all"/>
- <listitem>
- <para>
- Fixed <literal>DatabaseMetaData.getTables()</literal>
- returning views when they were not asked for as one of the
- requested table types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for new precision-math
- <literal>DECIMAL</literal> type in MySQL 5.0.3 and up.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSet.getTime()</literal> on a
- <literal>NULL</literal> value for server-side prepared
- statements throws NPE.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Made <literal>Connection.ping()</literal> a public method.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DATE_FORMAT()</literal> queries returned as
- <literal>BLOB</literal>s from
- <literal>getObject()</literal>. (Bug #8868)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ServerPreparedStatements</literal> now correctly
- <quote>stream</quote>
- <literal>BLOB</literal>/<literal>CLOB</literal> data to the
- server. You can configure the threshold chunk size using the
- JDBC URL property <literal>blobSendChunkSize</literal> (the
- default is 1MB).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>BlobFromLocator</literal> now uses correct
- identifier quoting when generating prepared statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Server-side session variables can be preset at connection
- time by passing them as a comma-delimited list for the
- connection property <literal>sessionVariables</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed regression in <literal>ping()</literal> for users
- using <literal>autoReconnect=true</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement.addBatch()</literal> doesn't work
- with server-side prepared statements and streaming
- <literal>BINARY</literal> data. (Bug #9040)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMD.supportsMixedCase*Identifiers()</literal>
- returns wrong value on servers running on case-sensitive
- filesystems. (Bug #8800)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cannot use <literal>UTF-8</literal> for characterSetResults
- configuration property. (Bug #9206)
- </para>
- </listitem>
-
- <listitem>
- <para>
- 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 <literal>CHAR(n) CHARACTER SET BINARY</literal> to
- return correct/matching classes for
- <literal>RSMD.getColumnClassName()</literal> and
- <literal>ResultSet.getObject()</literal>. (Bug #9236)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMD.supportsResultSetConcurrency()</literal> not
- returning <literal>true</literal> for forward-only/read-only
- result sets (we obviously support this). (Bug #8792)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DATA_TYPE</literal> column from
- <literal>DBMD.getBestRowIdentifier()</literal> causes
- <literal>ArrayIndexOutOfBoundsException</literal> when
- accessed (and in fact, didn't return any value). (Bug #8803)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for empty strings (<literal>''</literal>) when
- converting
- <literal>CHAR</literal>/<literal>VARCHAR</literal> column
- data to numbers, throw exception if
- <literal>emptyStringsConvertToZero</literal> configuration
- property is set to <literal>false</literal> (for
- backward-compatibility with 3.0, it is now set to
- <literal>true</literal> by default, but will most likely
- default to <literal>false</literal> in 3.2).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement.getMetaData()</literal> inserts
- blank row in database under certain conditions when not
- using server-side prepared statements. (Bug #9320)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>Connection.canHandleAsPreparedStatement()</literal>
- now makes <quote>best effort</quote> to distinguish
- <literal>LIMIT</literal> 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.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <filename>build.xml</filename> to not compile
- <literal>log4j</literal> logging if <literal>log4j</literal>
- not available.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for the c3p0 connection pool's
- (<ulink url="http://c3p0.sf.net/"/>) validation/connection
- checker interface which uses the lightweight
- <literal>COM_PING</literal> call to the server if available.
- To use it, configure your c3p0 connection pool's
- <literal>connectionTesterClassName</literal> property to use
- <literal>com.mysql.jdbc.integration.c3p0.MysqlConnectionTester</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Better detection of <literal>LIMIT</literal> 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.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Stored procedures with same name in different databases
- confuse the driver when it tries to determine parameter
- counts/types. (Bug #9319)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added finalizers to <literal>ResultSet</literal> and
- <literal>Statement</literal> implementations to be JDBC
- spec-compliant, which requires that if not explicitly
- closed, these resources should be closed upon garbage
- collection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Stored procedures with <literal>DECIMAL</literal> parameters
- with storage specifications that contained
- <quote><literal>,</literal></quote> in them would fail. (Bug
- #9682)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement.setObject(int, Object, int type,
- int scale)</literal> now uses scale value for
- <literal>BigDecimal</literal> instances.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>Statement.getMoreResults()</literal> could throw
- NPE when existing result set was
- <literal>.close()</literal>d. (Bug #9704)
- </para>
- </listitem>
-
- <listitem>
- <para>
- The performance metrics feature now gathers information
- about number of tables referenced in a SELECT.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The logging system is now automatically configured. If the
- value has been set by the user, via the URL property
- <literal>logger</literal> or the system property
- <literal>com.mysql.jdbc.logger</literal>, then use that,
- otherwise, autodetect it using the following steps:
- </para>
-
- <orderedlist>
-
- <listitem>
- <para>
- Log4j, if it's available,
- </para>
- </listitem>
-
- <listitem>
- <para>
- Then JDK1.4 logging,
- </para>
- </listitem>
-
- <listitem>
- <para>
- Then fallback to our <literal>STDERR</literal> logging.
- </para>
- </listitem>
-
- </orderedlist>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMD.getTables()</literal> shouldn't return tables
- if views are asked for, even if the database version doesn't
- support views. (Bug #9778)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed driver not returning <literal>true</literal> for
- <literal>-1</literal> when
- <literal>ResultSet.getBoolean()</literal> was called on
- result sets returned from server-side prepared statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added a <filename>Manifest.MF</filename> file with
- implementation information to the <filename>.jar</filename>
- file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- More tests in <literal>Field.isOpaqueBinary()</literal> to
- distinguish opaque binary (that is, fields with type
- <literal>CHAR(n)</literal> and <literal>CHARACTER SET
- BINARY</literal>) from output of various scalar and
- aggregate functions that return strings.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Should accept <literal>null</literal> for catalog (meaning
- use current) in DBMD methods, even though it's not
- JDBC-compliant for legacy's sake. Disable by setting
- connection property
- <literal>nullCatalogMeansCurrent</literal> to
- <literal>false</literal> (which will be the default value in
- C/J 3.2.x). (Bug #9917)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Should accept <literal>null</literal> for name patterns in
- DBMD (meaning <quote><literal>%</literal></quote>), even
- though it isn't JDBC compliant, for legacy's sake. Disable
- by setting connection property
- <literal>nullNamePatternMatchesAll</literal> to
- <literal>false</literal> (which will be the default value in
- C/J 3.2.x). (Bug #9769)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-7">
- <title>Changes in MySQL Connector/J 3.1.7-stable (18 February 2005)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.7:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.7:connector-j:all"/>
- <listitem>
- <para>
- Timestamp key column data needed <literal>_binary</literal>
- stripped for
- <literal>UpdatableResultSet.refreshRow()</literal>. (Bug
- #7686)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Timestamps converted incorrectly to strings with server-side
- prepared statements and updatable result sets. (Bug #7715)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Detect new <literal>sql_mode</literal> variable in string
- form (it used to be integer) and adjust quoting method for
- strings appropriately.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>holdResultsOpenOverStatementClose</literal>
- property (default is <literal>false</literal>), that keeps
- result sets open over statement.close() or new execution on
- same statement (suggested by Kevin Burton).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Infinite recursion when <quote>falling back</quote> to
- master in failover configuration. (Bug #7952)
- </para>
- </listitem>
-
- <listitem>
- <para>
- 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.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed duplicated code in
- <literal>configureClientCharset()</literal> that prevented
- <literal>useOldUTF8Behavior=true</literal> from working
- properly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed <literal>dontUnpackBinaryResults</literal>
- functionality, the driver now always stores results from
- server-side prepared statements as is from the server and
- unpacks them on demand.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Emulated locators corrupt binary data when using server-side
- prepared statements. (Bug #8096)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed synchronization issue with
- <literal>ServerPreparedStatement.serverPrepare()</literal>
- that could cause deadlocks/crashes if connection was shared
- between threads.
- </para>
- </listitem>
-
- <listitem>
- <para>
- By default, the driver now scans SQL you are preparing via
- all variants of
- <literal>Connection.prepareStatement()</literal> 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. You can disable this by passing
- <literal>emulateUnsupportedPstmts=false</literal> in your
- JDBC URL. (Bug #4718)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <literal>_binary</literal> introducer from parameters
- used as in/out parameters in
- <literal>CallableStatement</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Always return <literal>byte[]</literal>s for output
- parameters registered as <literal>*BINARY</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Send correct value for <quote>boolean</quote>
- <literal>true</literal> to server for
- <literal>PreparedStatement.setObject(n, "true",
- Types.BIT)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed bug with Connection not caching statements from
- <literal>prepareStatement()</literal> when the statement
- wasn't a server-side prepared statement.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Choose correct <quote>direction</quote> to apply time
- adjustments when both client and server are in GMT time zone
- when using <literal>ResultSet.get(..., cal)</literal> and
- <literal>PreparedStatement.set(...., cal)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>dontTrackOpenResources</literal> option
- (default is <literal>false</literal>, to be JDBC compliant),
- which helps with memory use for non-well-behaved apps (that
- is, applications that don't close
- <literal>Statement</literal> objects when they should).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getString()</literal> doesn't maintain
- format stored on server, bug fix only enabled when
- <literal>noDatetimeStringSync</literal> property is set to
- <literal>true</literal> (the default is
- <literal>false</literal>). (Bug #8428)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed NPE in <literal>ResultSet.realClose()</literal> when
- using usage advisor and result set was already closed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatements</literal> not creating streaming
- result sets. (Bug #8487)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't pass <literal>NULL</literal> to
- <literal>String.valueOf()</literal> in
- <literal>ResultSet.getNativeConvertToString()</literal>, as
- it stringifies it (that is, returns
- <literal>null</literal>), which is not correct for the
- method in question.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getBigDecimal()</literal> throws
- exception when rounding would need to occur to set scale.
- The driver now chooses a rounding mode of <quote>half
- up</quote> if non-rounding
- <literal>BigDecimal.setScale()</literal> fails. (Bug #8424)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>useLocalSessionState</literal> configuration
- property, when set to <literal>true</literal> the JDBC
- driver trusts that the application is well-behaved and only
- sets autocommit and transaction isolation levels using the
- methods provided on <literal>java.sql.Connection</literal>,
- and therefore can manipulate these values in many cases
- without incurring round-trips to the database server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>enableStreamingResults()</literal> to
- <literal>Statement</literal> for connection pool
- implementations that check
- <literal>Statement.setFetchSize()</literal> for
- specification-compliant values. Call
- <literal>Statement.setFetchSize(>=0)</literal> to disable
- the streaming results for that statement.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for <literal>BIT</literal> type in
- MySQL-5.0.3. The driver will treat
- <literal>BIT(1-8)</literal> as the JDBC standard
- <literal>BIT</literal> type (which maps to
- <literal>java.lang.Boolean</literal>), as the server does
- not currently send enough information to determine the size
- of a bitfield when < 9 bits are declared.
- <literal>BIT(>9)</literal> will be treated as
- <literal>VARBINARY</literal>, and will return
- <literal>byte[]</literal> when
- <literal>getObject()</literal> is called.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-6">
- <title>Changes in MySQL Connector/J 3.1.6-stable (23 December 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.6:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.6:connector-j:all"/>
- <listitem>
- <para>
- Fixed hang on <literal>SocketInputStream.read()</literal>
- with <literal>Statement.setMaxRows()</literal> and multiple
- result sets when driver has to truncate result set directly,
- rather than tacking a <literal>LIMIT
- <replaceable>n</replaceable></literal> on the end of it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMD.getProcedures()</literal> doesn't respect
- catalog parameter. (Bug #7026)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-5">
- <title>Changes in MySQL Connector/J 3.1.5-gamma (02 December 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.5:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.5:connector-j:all"/>
- <listitem>
- <para>
- Fix comparisons made between string constants and dynamic
- strings that are converted with either
- <literal>toUpperCase()</literal> or
- <literal>toLowerCase()</literal> to use
- <literal>Locale.ENGLISH</literal>, as some locales
- <quote>override</quote> case rules for English. Also use
- <literal>StringUtils.indexOfIgnoreCase()</literal> instead
- of <literal>.toUpperCase().indexOf()</literal>, avoids
- creating a very short-lived transient
- <literal>String</literal> instance.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Server-side prepared statements did not honor
- <literal>zeroDateTimeBehavior</literal> property, and would
- cause class-cast exceptions when using
- <literal>ResultSet.getObject()</literal>, as the all-zero
- string was always returned. (Bug #5235)
- </para>
- </listitem>
-
- <listitem>
- <para>
- 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 <quote>Wrong arguments to
- mysql_stmt_execute()</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handle case when string representation of timestamp contains
- trailing <quote><literal>.</literal></quote> with no numbers
- following it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Inefficient detection of pre-existing string instances in
- <literal>ResultSet.getNativeString()</literal>. (Bug #5706)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't throw exceptions for
- <literal>Connection.releaseSavepoint()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use a per-session <literal>Calendar</literal> instance by
- default when decoding dates from
- <literal>ServerPreparedStatements</literal> (set to old,
- less performant behavior by setting property
- <literal>dynamicCalendars=true</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added experimental configuration property
- <literal>dontUnpackBinaryResults</literal>, 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 <literal>false</literal> by default). For some
- usecase/jvm combinations, this is friendlier on the garbage
- collector.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>UNSIGNED BIGINT</literal> unpacked incorrectly from
- server-side prepared statement result sets. (Bug #5729)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ServerSidePreparedStatement</literal> allocating
- short-lived objects unnecessarily. (Bug #6225)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed unwanted new <literal>Throwable()</literal> in
- <literal>ResultSet</literal> 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.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed too-early creation of <literal>StringBuffer</literal>
- in <literal>EscapeProcessor.escapeSQL()</literal>, also
- return <literal>String</literal> when escaping not needed
- (to avoid unnecessary object allocations). Found while
- profiling for Bug #6359.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use null-safe-equals for key comparisons in updatable result
- sets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>SUM()</literal> on <literal>DECIMAL</literal> with
- server-side prepared statement ignores scale if zero-padding
- is needed (this ends up being due to conversion to
- <literal>DOUBLE</literal> by server, which when converted to
- a string to parse into <literal>BigDecimal</literal>, loses
- all <quote>padding</quote> zeros). (Bug #6537)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use
- <literal>DatabaseMetaData.getIdentifierQuoteString()</literal>
- when building DBMD queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use 1MB packet for sending file for <literal>LOAD DATA LOCAL
- INFILE</literal> if that is <
- <literal>max_allowed_packet</literal> on server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSetMetaData.getColumnDisplaySize()</literal>
- returns incorrect values for multi-byte charsets. (Bug
- #6399)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make auto-deserialization of
- <literal>java.lang.Objects</literal> stored in
- <literal>BLOB</literal> columns configurable via
- <literal>autoDeserialize</literal> property (defaults to
- <literal>false</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Re-work <literal>Field.isOpaqueBinary()</literal> to detect
- <literal>CHAR(<replaceable>n</replaceable>) CHARACTER SET
- BINARY</literal> to support fixed-length binary fields for
- <literal>ResultSet.getObject()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use our own implementation of buffered input streams to get
- around blocking behavior of
- <literal>java.io.BufferedInputStream</literal>. Disable this
- with <literal>useReadAheadInput=false</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- 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
- <emphasis>all</emphasis> IP addresses for a given host, and
- stops on the first one that <literal>accepts()</literal> a
- <literal>socket.connect()</literal>. (Bug #6348)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-4">
- <title>Changes in MySQL Connector/J 3.1.4-beta (04 September 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.4:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.4:connector-j:all"/>
- <listitem>
- <para>
- Connector/J 3.1.3 beta does not handle integers correctly
- (caused by changes to support unsigned reads in
- <literal>Buffer.readInt()</literal> ->
- <literal>Buffer.readShort()</literal>). (Bug #4510)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support in
- <literal>DatabaseMetaData.getTables()</literal> and
- <literal>getTableTypes()</literal> for views, which are now
- available in MySQL server 5.0.x.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ServerPreparedStatement.execute*()</literal>
- sometimes threw
- <literal>ArrayIndexOutOfBoundsException</literal> when
- unpacking field metadata. (Bug #4642)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Optimized integer number parsing, enable <quote>old</quote>
- slower integer parsing using JDK classes via
- <literal>useFastIntParsing=false</literal> property.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>useOnlyServerErrorMessages</literal>
- 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 <quote>standard</quote>
- description, followed by the server's error message). This
- property is set to <literal>true</literal> by default.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.wasNull()</literal> does not work for
- primatives if a previous <literal>null</literal> was
- returned. (Bug #4689)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track packet sequence numbers if
- <literal>enablePacketDebug=true</literal>, and throw an
- exception if packets received out-of-order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getObject()</literal> returns wrong type
- for strings when using prepared statements. (Bug #4482)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Calling <literal>MysqlPooledConnection.close()</literal>
- twice (even though an application error), caused NPE. Fixed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ServerPreparedStatements</literal> dealing with
- return of <literal>DECIMAL</literal> type don't work. (Bug
- #5012)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getObject()</literal> doesn't return type
- <literal>Boolean</literal> for pseudo-bit types from
- prepared statements on 4.1.x (shortcut for avoiding extra
- type conversion when using binary-encoded result sets
- obscured test in <literal>getObject()</literal> for
- <quote>pseudo</quote> bit type). (Bug #5032)
- </para>
- </listitem>
-
- <listitem>
- <para>
- You can now use URLs in <literal>LOAD DATA LOCAL
- INFILE</literal> 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 <literal>allowUrlInLocalInfile</literal> connection
- property to <literal>true</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The driver is more strict about truncation of numerics on
- <literal>ResultSet.get*()</literal>, and will throw an
- <literal>SQLException</literal> when truncation is detected.
- You can disable this by setting
- <literal>jdbcCompliantTruncation</literal> to
- <literal>false</literal> (it is enabled by default, as this
- functionality is required for JDBC compliance).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added three ways to deal with all-zero datetimes when
- reading them from a <literal>ResultSet</literal>:
- <literal>exception</literal> (the default), which throws an
- <literal>SQLException</literal> with an SQLState of
- <literal>S1009</literal>; <literal>convertToNull</literal>,
- which returns <literal>NULL</literal> instead of the date;
- and <literal>round</literal>, which rounds the date to the
- nearest closest value which is
- <literal>'0001-01-01'</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ServerPreparedStatement</literal> to read
- prepared statement metadata off the wire, even though it's
- currently a placeholder instead of using
- <literal>MysqlIO.clearInputStream()</literal> 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 <literal>ServerPreparedStatements</literal>
- throwing <literal>ArrayIndexOutOfBoundExceptions</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>com.mysql.jdbc.Message</literal>'s classloader
- when loading resource bundle, should fix sporadic issues
- when the caller's classloader can't locate the resource
- bundle.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-3">
- <title>Changes in MySQL Connector/J 3.1.3-beta (07 July 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.3:connector-j:all"/>
- <itemizedlist>
-
- <listitem>
- <para>
- Mangle output parameter names for
- <literal>CallableStatements</literal> so they will not clash
- with user variable names.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for <literal>INOUT</literal> parameters in
- <literal>CallableStatements</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Null bitmask sent for server-side prepared statements was
- incorrect. (Bug #4119)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use SQL Standard SQL states by default, unless
- <literal>useSqlStateCodes</literal> property is set to
- <literal>false</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added packet debuging code (see the
- <literal>enablePacketDebug</literal> property
- documentation).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added constants for MySQL error numbers (publicly
- accessible, see
- <literal>com.mysql.jdbc.MysqlErrorNumbers</literal>), and
- the ability to generate the mappings of vendor error codes
- to SQLStates that the driver uses (for documentation
- purposes).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Externalized more messages (on-going effort).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Error in retrieval of <literal>mediumint</literal> column
- with prepared statements and binary protocol. (Bug #4311)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support new time zone variables in MySQL-4.1.3 when
- <literal>useTimezone=true</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for unsigned numerics as return types from prepared
- statements. This also causes a change in
- <literal>ResultSet.getObject()</literal> for the
- <literal>bigint unsigned</literal> type, which used to
- return <literal>BigDecimal</literal> instances, it now
- returns instances of
- <literal>java.lang.BigInteger</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
+ <para condition="dynamic:changelog:entrylist" role="3.1.3:connector-j:all"/>
</section>
<section id="cj-news-3-1-2">
- <title>Changes in MySQL Connector/J 3.1.2-alpha (09 June 2004)</title>
- <itemizedlist>
+ <title condition="dynamic:changelog:vertitle" role="3.1.2:connector-j:all"/>
- <listitem>
- <para>
- Fixed stored procedure parameter parsing info when size was
- specified for a parameter (for example,
- <literal>char()</literal>, <literal>varchar()</literal>).
- </para>
- </listitem>
+ <para condition="dynamic:changelog:entrylist" role="3.1.2:connector-j:all"/>
- <listitem>
- <para>
- Enabled callable statement caching via
- <literal>cacheCallableStmts</literal> property.
- </para>
- </listitem>
-
- <listitem>
- <para>
- 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.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed case when no parameters could cause a
- <literal>NullPointerException</literal> in
- <literal>CallableStatement.setOutputParameters()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed wrapping of exceptions in
- <literal>MysqlIO.changeUser()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed sending of split packets for large queries, enabled
- nio ability to send large packets as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>.toString()</literal> functionality to
- <literal>ServerPreparedStatement</literal>, which should
- help if you're trying to debug a query that is a prepared
- statement (it shows SQL as the server would process).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>gatherPerformanceMetrics</literal> property,
- along with properties to control when/where this info gets
- logged (see docs for more info).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ServerPreparedStatements</literal> weren't actually
- de-allocating server-side resources when
- <literal>.close()</literal> was called.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>logSlowQueries</literal> property, along with
- <literal>slowQueriesThresholdMillis</literal> property to
- control when a query should be considered
- <quote>slow.</quote>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly map output parameters to position given in
- <literal>prepareCall()</literal> versus. order implied
- during <literal>registerOutParameter()</literal>. (Bug
- #3146)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly detect initial character set for servers >=
- 4.1.0.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cleaned up detection of server properties.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support placeholder for parameter metadata for server >=
- 4.1.2.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getProcedures()</literal> does not return any
- procedures in result set. (Bug #3539)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getProcedureColumns()</literal> doesn't work with
- wildcards for procedure name. (Bug #3540)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMD.getSQLStateType()</literal> returns incorrect
- value. (Bug #3520)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>connectionCollation</literal> property to
- cause driver to issue <literal>set
- collation_connection=...</literal> query on connection init
- if default collation for given charset is not appropriate.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>DatabaseMetaData.getProcedures()</literal>
- when run on MySQL-5.0.0 (output of <literal>SHOW PROCEDURE
- STATUS</literal> changed between 5.0.0 and 5.0.1.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getWarnings()</literal> returns
- <literal>SQLWarning</literal> instead of
- <literal>DataTruncation</literal>. (Bug #3804)
- </para>
- </listitem>
-
- <listitem>
- <para>
- 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).
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-1">
- <title>Changes in MySQL Connector/J 3.1.1-alpha (14 February 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.1:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.1:connector-j:all"/>
- <listitem>
- <para>
- Fixed bug with <literal>UpdatableResultSets</literal> not
- using client-side prepared statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- 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).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unpack <quote>unknown</quote> data types from server
- prepared statements as <literal>Strings</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented long data (Blobs, Clobs, InputStreams, Readers)
- for server prepared statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented <literal>Statement.getWarnings()</literal> for
- MySQL-4.1 and newer (using <literal>SHOW
- WARNINGS</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Default result set type changed to
- <literal>TYPE_FORWARD_ONLY</literal> (JDBC compliance).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Centralized setting of result set type and concurrency.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Refactored how connection properties are set and exposed as
- <literal>DriverPropertyInfo</literal> as well as
- <literal>Connection</literal> and
- <literal>DataSource</literal> properties.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for NIO. Use <literal>useNIO=true</literal> on
- platforms that support NIO.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for transaction savepoints (MySQL >= 4.0.14 or
- 4.1.1).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for <literal>mysql_change_user()</literal>. See the
- <literal>changeUser()</literal> method in
- <literal>com.mysql.jdbc.Connection</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduced number of methods called in average query to be more
- efficient.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prepared <literal>Statements</literal> will be re-prepared
- on auto-reconnect. Any errors encountered are postponed
- until first attempt to re-execute the re-prepared statement.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that warnings are cleared before executing queries on
- prepared statements, as-per JDBC spec (now that we support
- warnings).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <quote>old</quote> <literal>profileSql</literal>
- capitalization in <literal>ConnectionProperties</literal>.
- This property is deprecated, you should use
- <literal>profileSQL</literal> if possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Optimized <literal>Buffer.readLenByteArray()</literal> to
- return shared empty byte array when length is 0.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow contents of
- <literal>PreparedStatement.setBlob()</literal> to be
- retained between calls to <literal>.execute*()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Deal with 0-length tokens in
- <literal>EscapeProcessor</literal> (caused by callable
- statement escape syntax).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for closed connection on delete/update/insert row
- operations in <literal>UpdatableResultSet</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix support for table aliases when checking for all primary
- keys in <literal>UpdatableResultSet</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed <literal>useFastDates</literal> connection property.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly initialize datasource properties from JNDI Refs,
- including explicitly specified URLs.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData</literal> now reports
- <literal>supportsStoredProcedures()</literal> for MySQL
- versions >= 5.0.0
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed stack overflow in
- <literal>Connection.prepareCall()</literal> (bad merge).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>IllegalAccessError</literal> to
- <literal>Calendar.getTimeInMillis()</literal> in
- <literal>DateTimeValue</literal> (for JDK < 1.4).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData.getColumns()</literal> is not
- returning correct column ordinal info for
- non-<literal>'%'</literal> column name patterns. (Bug #1673)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Merged fix of datatype mapping from MySQL type
- <literal>FLOAT</literal> to
- <literal>java.sql.Types.REAL</literal> from 3.0 branch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Detect collation of column for
- <literal>RSMD.isCaseSensitive()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed sending of queries larger than 16M.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added named and indexed input/output parameter support to
- <literal>CallableStatement</literal>. MySQL-5.0.x or newer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>NullPointerException</literal> in
- <literal>ServerPreparedStatement.setTimestamp()</literal>,
- as well as year and month descrepencies in
- <literal>ServerPreparedStatement.setTimestamp()</literal>,
- <literal>setDate()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added ability to have multiple database/JVM targets for
- compliance and regression/unit tests in
- <filename>build.xml</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed NPE and year/month bad conversions when accessing some
- datetime functionality in
- <literal>ServerPreparedStatements</literal> and their
- resultant result sets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Display where/why a connection was implicitly closed (to aid
- debugging).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>CommunicationsException</literal> implemented, that
- tries to determine why communications was lost with a
- server, and displays possible reasons when
- <literal>.getMessage()</literal> is called.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>NULL</literal> values for numeric types in binary
- encoded result sets causing
- <literal>NullPointerExceptions</literal>. (Bug #2359)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented <literal>Connection.prepareCall()</literal>, and
- <literal>DatabaseMetaData</literal>.
- <literal>getProcedures()</literal> and
- <literal>getProcedureColumns()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reset <literal>long binary</literal> parameters in
- <literal>ServerPreparedStatement</literal> when
- <literal>clearParameters()</literal> is called, by sending
- <literal>COM_RESET_STMT</literal> to the server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Merged prepared statement caching, and
- <literal>.getMetaData()</literal> support from 3.0 branch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed off-by-1900 error in some cases for years in
- <literal>TimeUtil.fastDate</literal>/<literal>TimeCreate()</literal>
- when unpacking results from server-side prepared statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed charset conversion issue in
- <literal>getTables()</literal>. (Bug #2502)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented multiple result sets returned from a statement
- or stored procedure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Server-side prepared statements were not returning datatype
- <literal>YEAR</literal> correctly. (Bug #2606)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enabled streaming of result sets from server-side prepared
- statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Class-cast exception when using scrolling result sets and
- server-side prepared statements. (Bug #2623)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Merged unbuffered input code from 3.0.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ConnectionProperties</literal> that weren't
- properly exposed via accessors, cleaned up
- <literal>ConnectionProperties</literal> code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>NULL</literal> fields were not being encoded
- correctly in all cases in server-side prepared statements.
- (Bug #2671)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed rare buffer underflow when writing numbers into
- buffers for sending prepared statement execution requests.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use DocBook version of docs for shipped versions of drivers.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-1-0">
- <title>Changes in MySQL Connector/J 3.1.0-alpha (18 February 2003)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.1.0:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.1.0:connector-j:all"/>
- <listitem>
- <para>
- Added <literal>requireSSL</literal> property.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>useServerPrepStmts</literal> property
- (default <literal>false</literal>). The driver will use
- server-side prepared statements when the server version
- supports them (4.1 and newer) when this property is set to
- <literal>true</literal>. It is currently set to
- <literal>false</literal> by default until all bind/fetch
- functionality has been implemented. Currently only DML
- prepared statements are implemented for 4.1 server-side
- prepared statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Track open <literal>Statements</literal>, close all when
- <literal>Connection.close()</literal> is called (JDBC
- compliance).
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
</section>
@@ -3916,2443 +327,147 @@
<section id="cj-news-3-0-17">
- <title>Changes in MySQL Connector/J 3.0.17-ga (23 June 2005)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.17:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.17:connector-j:all"/>
- <listitem>
- <para>
- <literal>Timestamp</literal>/<literal>Time</literal>
- conversion goes in the wrong <quote>direction</quote> when
- <literal>useTimeZone=true</literal> and server time zone
- differs from client time zone. (Bug #5874)
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>DatabaseMetaData.getIndexInfo()</literal> ignored
- <literal>unique</literal> parameter. (Bug #7081)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support new protocol type
- <literal>MYSQL_TYPE_VARCHAR</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>useOldUTF8Behavior</literal>' configuration
- property, which causes JDBC driver to act like it did with
- MySQL-4.0.x and earlier when the character encoding is
- <literal>utf-8</literal> when connected to MySQL-4.1 or
- newer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Statements created from a pooled connection were returning
- physical connection instead of logical connection when
- <literal>getConnection()</literal> was called. (Bug #7316)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatements</literal> don't encode Big5 (and
- other multi-byte) character sets correctly in static SQL
- strings. (Bug #7033)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Connections starting up failed-over (due to down master)
- never retry master. (Bug #6966)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement.fixDecimalExponent()</literal>
- adding extra <literal>+</literal>, making number unparseable
- by MySQL server. (Bug #7061)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Timestamp key column data needed <literal>_binary</literal>
- stripped for
- <literal>UpdatableResultSet.refreshRow()</literal>. (Bug
- #7686)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Backported SQLState codes mapping from Connector/J 3.1,
- enable with <literal>useSqlStateCodes=true</literal> as a
- connection property, it defaults to <literal>false</literal>
- in this release, so that we don't break legacy applications
- (it defaults to <literal>true</literal> starting with
- Connector/J 3.1).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement.fixDecimalExponent()</literal>
- adding extra <literal>+</literal>, making number unparseable
- by MySQL server. (Bug #7601)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Escape sequence {fn convert(..., type)} now supports
- ODBC-style types that are prepended by
- <literal>SQL_</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed duplicated code in
- <literal>configureClientCharset()</literal> that prevented
- <literal>useOldUTF8Behavior=true</literal> from working
- properly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handle streaming result sets with more than 2 billion rows
- properly by fixing wraparound of row number counter.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>MS932</literal>, <literal>SHIFT_JIS</literal>, and
- <literal>Windows_31J</literal> not recognized as aliases for
- <literal>sjis</literal>. (Bug #7607)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adding <literal>CP943</literal> to aliases for
- <literal>sjis</literal>. (Bug #6549, fixed while fixing Bug
- #7607)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Which requires hex escaping of binary data when using
- multi-byte charsets with prepared statements. (Bug #8064)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>NON_UNIQUE</literal> column from
- <literal>DBMD.getIndexInfo()</literal> returned inverted
- value. (Bug #8812)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Workaround for server Bug #9098: Default values of
- <literal>CURRENT_*</literal> for <literal>DATE</literal>,
- <literal>TIME</literal>, <literal>DATETIME</literal>, and
- <literal>TIMESTAMP</literal> columns can't be distinguished
- from <literal>string</literal> values, so
- <literal>UpdatableResultSet.moveToInsertRow()</literal>
- generates bad SQL for inserting default values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>EUCKR</literal> charset is sent as <literal>SET
- NAMES euc_kr</literal> which MySQL-4.1 and newer doesn't
- understand. (Bug #8629)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData.supportsSelectForUpdate()</literal>
- returns correct value based on server version.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use hex escapes for
- <literal>PreparedStatement.setBytes()</literal> for
- double-byte charsets including <quote>aliases</quote>
- <literal>Windows-31J</literal>, <literal>CP934</literal>,
- <literal>MS932</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for the <literal>EUC_JP_Solaris</literal>
- character encoding, which maps to a MySQL encoding of
- <literal>eucjpms</literal> (backported from 3.1 branch).
- This only works on servers that support
- <literal>eucjpms</literal>, namely 5.0.3 or later.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-16">
- <title>Changes in MySQL Connector/J 3.0.16-ga (15 November 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.16:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.16:connector-j:all"/>
- <listitem>
- <para>
- Re-issue character set configuration commands when re-using
- pooled connections and/or
- <literal>Connection.changeUser()</literal> when connected to
- MySQL-4.1 or newer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSetMetaData.isReadOnly()</literal> to
- detect non-writable columns when connected to MySQL-4.1 or
- newer, based on existence of <quote>original</quote> table
- and column names.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.updateByte()</literal> when on insert row
- throws <literal>ArrayOutOfBoundsException</literal>. (Bug
- #5664)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>DatabaseMetaData.getTypes()</literal>
- returning incorrect (this is, non-negative) scale for the
- <literal>NUMERIC</literal> type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Off-by-one bug in
- <literal>Buffer.readString(<replaceable>string</replaceable>)</literal>.
- (Bug #5664)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Made <literal>TINYINT(1)</literal> ->
- <literal>BIT</literal>/<literal>Boolean</literal> conversion
- configurable via <literal>tinyInt1isBit</literal> property
- (default <literal>true</literal> to be JDBC compliant out of
- the box).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Only set <literal>character_set_results</literal> during
- connection establishment if server version >= 4.1.1.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed regression where <literal>useUnbufferedInput</literal>
- was defaulting to <literal>false</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getTimestamp()</literal> on a column with
- <literal>TIME</literal> in it fails. (Bug #5664)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-15">
- <title>Changes in MySQL Connector/J 3.0.15-production (04 September 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.15:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.15:connector-j:all"/>
- <listitem>
- <para>
- <literal>StringUtils.escapeEasternUnicodeByteStream</literal>
- was still broken for GBK. (Bug #4010)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Failover for <literal>autoReconnect</literal> not using port
- numbers for any hosts, and not retrying all hosts.
- (<emphasis role="bold">Warning</emphasis>: This required a
- change to the <literal>SocketFactory</literal>
- <literal>connect()</literal> method signature, which is now
- <literal>public Socket connect(String host, int portNumber,
- Properties props)</literal>; therefore, any third-party
- socket factories will have to be changed to support this
- signature. (Bug #4334)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Logical connections created by
- <literal>MysqlConnectionPoolDataSource</literal> will now
- issue a <literal>rollback()</literal> 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 <literal>rollbackOnPooledClose</literal> property to
- <literal>false</literal> to avoid the overhead of an extra
- <literal>rollback()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed redundant calls to <literal>checkRowPos()</literal>
- in <literal>ResultSet</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DOUBLE</literal> mapped twice in
- <literal>DBMD.getTypeInfo()</literal>. (Bug #4742)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added FLOSS license exemption.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Calling <literal>.close()</literal> twice on a
- <literal>PooledConnection</literal> causes NPE. (Bug #4808)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMD.getColumns()</literal> returns incorrect JDBC
- type for unsigned columns. This affects type mappings for
- all numeric types in the
- <literal>RSMD.getColumnType()</literal> and
- <literal>RSMD.getColumnTypeNames()</literal> methods as
- well, to ensure that <quote>like</quote> types from
- <literal>DBMD.getColumns()</literal> match up with what
- <literal>RSMD.getColumnType()</literal> and
- <literal>getColumnTypeNames()</literal> return. (Bug #4138,
- Bug #4860)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <quote>Production</quote> is now <quote>GA</quote> (General
- Availability) in naming scheme of distributions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>RSMD.getPrecision()</literal> 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
- <literal>RSMD.getColumnType()</literal> and
- <literal>RSMD.getColumnTypeName()</literal> for the
- <literal>BLOB</literal> types based on the length sent from
- the server (the server doesn't distinguish between
- <literal>TINYBLOB</literal>, <literal>BLOB</literal>,
- <literal>MEDIUMBLOB</literal> or <literal>LONGBLOB</literal>
- at the network protocol level). (Bug #4880)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet</literal> should release
- <literal>Field[]</literal> instance in
- <literal>.close()</literal>. (Bug #5022)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getMetaData()</literal> should not return
- incorrectly initialized metadata if the result set has been
- closed, but should instead throw an
- <literal>SQLException</literal>. Also fixed for
- <literal>getRow()</literal> and
- <literal>getWarnings()</literal> and traversal methods by
- calling <literal>checkClosed()</literal> before operating on
- instance-level fields that are nullified during
- <literal>.close()</literal>. (Bug #5069)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Parse new time zone variables from 4.1.x servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>_binary</literal> introducer for
- <literal>PreparedStatement.setBytes()</literal> and
- <literal>set*Stream()</literal> when connected to
- MySQL-4.1.x or newer to avoid misinterpretation during
- character conversion.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-14">
- <title>Changes in MySQL Connector/J 3.0.14-production (28 May 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.14:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.14:connector-j:all"/>
- <listitem>
- <para>
- Fixed URL parsing error.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-13">
- <title>Changes in MySQL Connector/J 3.0.13-production (27 May 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.13:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.13:connector-j:all"/>
- <listitem>
- <para>
- Using a <literal>MySQLDatasource</literal> without server
- name fails. (Bug #3848)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>No Database Selected</literal> when using
- <literal>MysqlConnectionPoolDataSource</literal>. (Bug
- #3920)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement.getGeneratedKeys()</literal>
- method returns only 1 result for batched insertions. (Bug
- #3873)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-12">
- <title>Changes in MySQL Connector/J 3.0.12-production (18 May 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.12:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.12:connector-j:all"/>
- <listitem>
- <para>
- Add unsigned attribute to
- <literal>DatabaseMetaData.getColumns()</literal> output in
- the <literal>TYPE_NAME</literal> column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>failOverReadOnly</literal> property, to allow
- end-user to configure state of connection
- (read-only/writable) when failed over.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Backported <quote>change user</quote> and <quote>reset
- server state</quote> functionality from 3.1 branch, to allow
- clients of <literal>MysqlConnectionPoolDataSource</literal>
- to reset server state on <literal>getConnection()</literal>
- on a pooled connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't escape SJIS/GBK/BIG5 when using MySQL-4.1 or newer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>url</literal> parameter for
- <literal>MysqlDataSource</literal> and
- <literal>MysqlConnectionPool</literal>
- <literal>DataSource</literal> so that passing of other
- properties is possible from inside appservers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Map duplicate key and foreign key errors to SQLState of
- <literal>23000</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Backport documentation tooling from 3.1 branch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return creating statement for <literal>ResultSets</literal>
- created by <literal>getGeneratedKeys()</literal>. (Bug
- #2957)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <literal>java.util.Date</literal> to be sent in as
- parameter to
- <literal>PreparedStatement.setObject()</literal>, converting
- it to a <literal>Timestamp</literal> to maintain full
- precision. (Bug #103).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't truncate <literal>BLOB</literal> or
- <literal>CLOB</literal> values when using
- <literal>setBytes()</literal> and/or
- <literal>setBinary/CharacterStream()</literal>. (Bug #2670).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Dynamically configure character set mappings for field-level
- character sets on MySQL-4.1.0 and newer using <literal>SHOW
- COLLATION</literal> when connecting.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Map <literal>binary</literal> character set to
- <literal>US-ASCII</literal> to support
- <literal>DATETIME</literal> charset recognition for servers
- >= 4.1.2.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>SET character_set_results</literal> during
- initialization to allow any charset to be returned to the
- driver for result sets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>charsetnr</literal> returned during connect to
- encode queries before issuing <literal>SET NAMES</literal>
- on MySQL >= 4.1.0.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add helper methods to <literal>ResultSetMetaData</literal>
- (<literal>getColumnCharacterEncoding()</literal> and
- <literal>getColumnCharacterSet()</literal>) to allow
- end-users to see what charset the driver thinks it should be
- using for the column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Only set <literal>character_set_results</literal> for MySQL
- >= 4.1.0.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>StringUtils.escapeSJISByteStream()</literal> not
- covering all eastern double-byte charsets correctly. (Bug
- #3511)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Renamed
- <literal>StringUtils.escapeSJISByteStream()</literal> to
- more appropriate
- <literal>escapeEasternUnicodeByteStream()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Not specifying database in URL caused
- <literal>MalformedURL</literal> exception. (Bug #3554)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Auto-convert MySQL encoding names to Java encoding names if
- used for <literal>characterEncoding</literal> property.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added encoding names that are recognized on some JVMs to fix
- case where they were reverse-mapped to MySQL encoding names
- incorrectly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>junit.textui.TestRunner</literal> for all unit
- tests (to allow them to be run from the command line outside
- of Ant or Eclipse).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>UpdatableResultSet</literal> not picking up default
- values for <literal>moveToInsertRow()</literal>. (Bug #3557)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Inconsistent reporting of data type. The server still
- doesn't return all types for *BLOBs *TEXT correctly, so the
- driver won't return those correctly. (Bug #3570)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMD.getSQLStateType()</literal> returns incorrect
- value. (Bug #3520)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed regression in
- <literal>PreparedStatement.setString()</literal> and eastern
- character encodings.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Made <literal>StringRegressionTest</literal> 4.1-unicode
- aware.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-11">
- <title>Changes in MySQL Connector/J 3.0.11-stable (19 February 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.11:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.11:connector-j:all"/>
- <listitem>
- <para>
- Trigger a <literal>SET NAMES utf8</literal> when encoding is
- forced to <literal>utf8</literal> <emphasis>or</emphasis>
- <literal>utf-8</literal> via the
- <literal>characterEncoding</literal> property. Previously,
- only the Java-style encoding name of
- <literal>utf-8</literal> would trigger this.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>AutoReconnect</literal> time was growing faster
- than exponentially. (Bug #2447)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed failover always going to last host in list. (Bug
- #2578)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>useUnbufferedInput</literal> parameter, and
- now use it by default (due to JVM issue
- <ulink url="http://developer.java.sun.com/developer/bugParade/bugs/4401235.html"/>)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Detect <literal>on</literal>/<literal>off</literal> or
- <literal>1</literal>, <literal>2</literal>,
- <literal>3</literal> form of
- <literal>lower_case_table_names</literal> value on server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return <literal>java.lang.Integer</literal> for
- <literal>TINYINT</literal> and <literal>SMALLINT</literal>
- types from
- <literal>ResultSetMetaData.getColumnClassName()</literal>.
- (Bug #2852)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return <literal>java.lang.Double</literal> for
- <literal>FLOAT</literal> type from
- <literal>ResultSetMetaData.getColumnClassName()</literal>.
- (Bug #2855)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return <literal>[B</literal> instead of
- <literal>java.lang.Object</literal> for
- <literal>BINARY</literal>, <literal>VARBINARY</literal> and
- <literal>LONGVARBINARY</literal> types from
- <literal>ResultSetMetaData.getColumnClassName()</literal>
- (JDBC compliance).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Issue connection events on all instances created from a
- <literal>ConnectionPoolDataSource</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-10">
- <title>Changes in MySQL Connector/J 3.0.10-stable (13 January 2004)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.10:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.10:connector-j:all"/>
- <listitem>
- <para>
- Don't count quoted IDs when inside a 'string' in
- <literal>PreparedStatement</literal> parsing. (Bug #1511)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <quote>Friendlier</quote> exception message for
- <literal>PacketTooLargeException</literal>. (Bug #1534)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Backported fix for aliased tables and
- <literal>UpdatableResultSets</literal> in
- <literal>checkUpdatability()</literal> method from 3.1
- branch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix for <literal>ArrayIndexOutOfBounds</literal> exception
- when using <literal>Statement.setMaxRows()</literal>. (Bug
- #1695)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Barge blobs and split packets not being read correctly. (Bug
- #1576)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed regression of
- <literal>Statement.getGeneratedKeys()</literal> and
- <literal>REPLACE</literal> statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Subsequent call to <literal>ResultSet.updateFoo()</literal>
- causes NPE if result set is not updatable. (Bug #1630)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix for 4.1.1-style authentication with no password.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Foreign Keys column sequence is not consistent in
- <literal>DatabaseMetaData.getImported/Exported/CrossReference()</literal>.
- (Bug #1731)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData.getSystemFunction()</literal>
- returning bad function <literal>VResultsSion</literal>. (Bug
- #1775)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cross-database updatable result sets are not checked for
- updatability correctly. (Bug #1592)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData.getColumns()</literal> should
- return <literal>Types.LONGVARCHAR</literal> for MySQL
- <literal>LONGTEXT</literal> type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getObject()</literal> on
- <literal>TINYINT</literal> and <literal>SMALLINT</literal>
- columns should return Java type <literal>Integer</literal>.
- (Bug #1913)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>alwaysClearStream</literal> connection
- property, which causes the driver to always empty any
- remaining data on the input stream before each query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added more descriptive error message <literal>Server
- Configuration Denies Access to DataSource</literal>, as well
- as retrieval of message from server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Autoreconnect code didn't set catalog upon reconnect if it
- had been changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement <literal>ResultSet.updateClob()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSetMetaData.isCaseSensitive()</literal>
- returned wrong value for
- <literal>CHAR</literal>/<literal>VARCHAR</literal> columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Connection property <literal>maxRows</literal> not honored.
- (Bug #1933)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Statements being created too many times in
- <literal>DBMD.extractForeignKeyFromCreateTable()</literal>.
- (Bug #1925)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support escape sequence {fn convert ... }. (Bug #1914)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ArrayIndexOutOfBounds</literal> when parameter
- number == number of parameters + 1. (Bug #1958)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.findColumn()</literal> should use first
- matching column name when there are duplicate column names
- in <literal>SELECT</literal> query (JDBC-compliance). (Bug
- #2006)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed static synchronization bottleneck from
- <literal>PreparedStatement.setTimestamp()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed static synchronization bottleneck from instance
- factory method of
- <literal>SingleByteCharsetConverter</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enable caching of the parsing stage of prepared statements
- via the <literal>cachePrepStmts</literal>,
- <literal>prepStmtCacheSize</literal>, and
- <literal>prepStmtCacheSqlLimit</literal> properties
- (disabled by default).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up parsing of <literal>PreparedStatements</literal>,
- try to use one-pass whenever possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed security exception when used in Applets (applets can't
- read the system property <literal>file.encoding</literal>
- which is needed for <literal>LOAD DATA LOCAL
- INFILE</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use constants for SQLStates.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Map charset <literal>ko18_ru</literal> to
- <literal>ko18r</literal> when connected to MySQL-4.1.0 or
- newer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <literal>Buffer.writeString()</literal> saves
- room for the <literal>\0</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed exception <literal>Unknown character set
- 'danish'</literal> on connect with JDK-1.4.0
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed mappings in SQLError to report deadlocks with
- SQLStates of <literal>41000</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>maxRows</literal> property would affect internal
- statements, so check it for all statement creation internal
- to the driver, and set to 0 when it is not.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-9">
- <title>Changes in MySQL Connector/J 3.0.9-stable (07 October 2003)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.9:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.9:connector-j:all"/>
- <listitem>
- <para>
- Faster date handling code in <literal>ResultSet</literal>
- and <literal>PreparedStatement</literal> (no longer uses
- <literal>Date</literal> methods that synchronize on static
- calendars).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed test for end of buffer in
- <literal>Buffer.readString()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSet.previous()</literal> behavior to
- move current position to before result set when on first row
- of result set. (Bug #496)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>Statement</literal> and
- <literal>PreparedStatement</literal> issuing bogus queries
- when <literal>setMaxRows()</literal> had been used and a
- <literal>LIMIT</literal> clause was present in the query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>refreshRow</literal> didn't work when primary key
- values contained values that needed to be escaped (they
- ended up being doubly escaped). (Bug #661)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <literal>InnoDB</literal> contraint names when
- extracting foreign key information in
- <literal>DatabaseMetaData</literal> (implementing ideas from
- Parwinder Sekhon). (Bug #517, Bug #664)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Backported 4.1 protocol changes from 3.1 branch (server-side
- SQL states, new field information, larger client capability
- flags, connect-with-database, and so forth).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>UpdatableResultSet</literal> to return values
- for <literal>get<replaceable>XXX</replaceable>()</literal>
- when on insert row. (Bug #675)
- </para>
- </listitem>
-
- <listitem>
- <para>
- The <literal>insertRow</literal> in an
- <literal>UpdatableResultSet</literal> is now loaded with the
- default column values when
- <literal>moveToInsertRow()</literal> is called. (Bug #688)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData.getColumns()</literal> wasn't
- returning <literal>NULL</literal> for default values that
- are specified as <literal>NULL</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change default statement type/concurrency to
- <literal>TYPE_FORWARD_ONLY</literal> and
- <literal>CONCUR_READ_ONLY</literal> (spec compliance).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't try and reset isolation level on reconnect if MySQL
- doesn't support them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't wrap <literal>SQLExceptions</literal> in
- <literal>RowDataDynamic</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't change timestamp TZ twice if
- <literal>useTimezone==true</literal>. (Bug #774)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed regression in large split-packet handling. (Bug #848)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Better diagnostic error messages in exceptions for
- <quote>streaming</quote> result sets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Issue exception on
- <literal>ResultSet.get<replaceable>XXX</replaceable>()</literal>
- on empty result set (wasn't caught in some cases).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't hide messages from exceptions thrown in I/O layers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't fire connection closed events when closing pooled
- connections, or on
- <literal>PooledConnection.getConnection()</literal> with
- already open connections. (Bug #884)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clip +/- INF (to smallest and largest representative values
- for the type in MySQL) and NaN (to 0) for
- <literal>setDouble</literal>/<literal>setFloat()</literal>,
- and issue a warning on the statement when the server does
- not support +/- INF or NaN.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Double-escaping of <literal>'\'</literal> when charset is
- SJIS or GBK and <literal>'\'</literal> appears in
- non-escaped input. (Bug #879)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When emptying input stream of unused rows for
- <quote>streaming</quote> result sets, have the current
- thread <literal>yield()</literal> every 100 rows in order to
- not monopolize CPU time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData.getColumns()</literal> getting
- confused about the keyword <quote>set</quote> in character
- columns. (Bug #1099)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed deadlock issue with
- <literal>Statement.setMaxRows()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>CLOB.truncate()</literal>. (Bug #1130)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Optimized <literal>CLOB.setChracterStream()</literal>. (Bug
- #1131)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Made <literal>databaseName</literal>,
- <literal>portNumber</literal>, and
- <literal>serverName</literal> optional parameters for
- <literal>MysqlDataSourceFactory</literal>. (Bug #1246)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.get/setString</literal> mashing char 127.
- (Bug #1247)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Backported authentication changes for 4.1.1 and newer from
- 3.1 branch.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>com.mysql.jdbc.util.BaseBugReport</literal>
- to help creation of testcases for bug reports.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added property to <quote>clobber</quote> streaming results,
- by setting the <literal>clobberStreamingResults</literal>
- property to <literal>true</literal> (the default is
- <literal>false</literal>). This will cause a
- <quote>streaming</quote> <literal>ResultSet</literal> 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.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-8">
- <title>Changes in MySQL Connector/J 3.0.8-stable (23 May 2003)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.8:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.8:connector-j:all"/>
- <listitem>
- <para>
- Allow bogus URLs in
- <literal>Driver.getPropertyInfo()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return list of generated keys when using multi-value
- <literal>INSERTS</literal> with
- <literal>Statement.getGeneratedKeys()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use JVM charset with filenames and <literal>LOAD DATA
- [LOCAL] INFILE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix infinite loop with
- <literal>Connection.cleanup()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Changed Ant target <literal>compile-core</literal> to
- <literal>compile-driver</literal>, and made testsuite
- compilation a separate target.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed result set not getting set for
- <literal>Statement.executeUpdate()</literal>, which affected
- <literal>getGeneratedKeys()</literal> and
- <literal>getUpdateCount()</literal> in some cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unicode character 0xFFFF in a string would cause the driver
- to throw an <literal>ArrayOutOfBoundsException</literal>.
- (Bug #378).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return correct number of generated keys when using
- <literal>REPLACE</literal> statements.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix problem detecting server character set in some cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix row data decoding error when using
- <emphasis>very</emphasis> large packets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Optimized row data decoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Issue exception when operating on an already closed prepared
- statement.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed SJIS encoding bug, thanks to Naoto Sato.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Optimized usage of <literal>EscapeProcessor</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow multiple calls to
- <literal>Statement.close()</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-7">
- <title>Changes in MySQL Connector/J 3.0.7-stable (08 April 2003)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.7:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.7:connector-j:all"/>
- <listitem>
- <para>
- Fixed <literal>MysqlPooledConnection.close()</literal>
- calling wrong event type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>StringIndexOutOfBoundsException</literal> in
- <literal>PreparedStatement.setClob()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- 4.1 Column Metadata fixes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove synchronization from
- <literal>Driver.connect()</literal> and
- <literal>Driver.acceptsUrl()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>IOExceptions</literal> during a transaction now
- cause the <literal>Connection</literal> to be closed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed missing conversion for <literal>YEAR</literal> type in
- <literal>ResultSetMetaData.getColumnTypeName()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't pick up indexes that start with <literal>pri</literal>
- as primary keys for
- <literal>DBMD.getPrimaryKeys()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Throw <literal>SQLExceptions</literal> when trying to do
- operations on a forcefully closed
- <literal>Connection</literal> (that is, when a communication
- link failure occurs).
- </para>
- </listitem>
-
- <listitem>
- <para>
- You can now toggle profiling on/off using
- <literal>Connection.setProfileSql(boolean)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed charset issues with database metadata (charset was not
- getting set correctly).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Updatable <literal>ResultSets</literal> can now be created
- for aliased tables/columns when connected to MySQL-4.1 or
- newer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>LOAD DATA LOCAL INFILE</literal> bug when
- file > <literal>max_allowed_packet</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed escaping of 0x5c (<literal>'\'</literal>) character
- for GBK and Big5 charsets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSet.getTimestamp()</literal> when
- underlying field is of type <literal>DATE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that packet size from
- <literal>alignPacketSize()</literal> does not exceed
- <literal>max_allowed_packet</literal> (JVM bug)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't reset <literal>Connection.isReadOnly()</literal> when
- autoReconnecting.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-6">
- <title>Changes in MySQL Connector/J 3.0.6-stable (18 February 2003)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.6:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.6:connector-j:all"/>
- <listitem>
- <para>
- Fixed <literal>ResultSetMetaData</literal> to return
- <literal>""</literal> when catalog not known. Fixes
- <literal>NullPointerExceptions</literal> with Sun's
- <literal>CachedRowSet</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>DBMD.getTypeInfo()</literal> and
- <literal>DBMD.getColumns()</literal> returning different
- value for precision in <literal>TEXT</literal> and
- <literal>BLOB</literal> types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow ignoring of warning for <quote>non transactional
- tables</quote> during rollback (compliance/usability) by
- setting <literal>ignoreNonTxTables</literal> property to
- <literal>true</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>SQLExceptions</literal> getting swallowed on
- initial connect.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>Statement.setMaxRows()</literal> to stop
- sending <literal>LIMIT</literal> type queries when not
- needed (performance).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up <literal>Statement</literal> query/method mismatch
- tests (that is, <literal>INSERT</literal> not allowed with
- <literal>.executeQuery()</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- More checks added in <literal>ResultSet</literal> traversal
- method to catch when in closed state.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSetMetaData.isWritable()</literal> to
- return correct value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <quote>window</quote> of different
- <literal>NULL</literal> sorting behavior to
- <literal>DBMD.nullsAreSortedAtStart</literal> (4.0.2 to
- 4.0.10, true; otherwise, no).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented <literal>Blob.setBytes()</literal>. You still
- need to pass the resultant <literal>Blob</literal> back into
- an updatable <literal>ResultSet</literal> or
- <literal>PreparedStatement</literal> to persist the changes,
- because MySQL does not support <quote>locators</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Backported 4.1 charset field info changes from Connector/J
- 3.1.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-5">
- <title>Changes in MySQL Connector/J 3.0.5-gamma (22 January 2003)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.5:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.5:connector-j:all"/>
- <listitem>
- <para>
- Fixed <literal>Buffer.fastSkipLenString()</literal> causing
- <literal>ArrayIndexOutOfBounds</literal> exceptions with
- some queries when unpacking fields.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented an empty <literal>TypeMap</literal> for
- <literal>Connection.getTypeMap()</literal> so that some
- third-party apps work with MySQL (IBM WebSphere 5.0
- Connection pool).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added missing <literal>LONGTEXT</literal> type to
- <literal>DBMD.getColumns()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Retrieve <literal>TX_ISOLATION</literal> from database for
- <literal>Connection.getTransactionIsolation()</literal> when
- the MySQL version supports it, instead of an instance
- variable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Quote table names in
- <literal>DatabaseMetaData.getColumns()</literal>,
- <literal>getPrimaryKeys()</literal>,
- <literal>getIndexInfo()</literal>,
- <literal>getBestRowIdentifier()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Greatly reduce memory required for
- <literal>setBinaryStream()</literal> in
- <literal>PreparedStatements</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSet.isBeforeFirst()</literal> for empty
- result sets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added update options for foreign key metadata.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-4">
- <title>Changes in MySQL Connector/J 3.0.4-gamma (06 January 2003)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.4:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.4:connector-j:all"/>
- <listitem>
- <para>
- Added quoted identifiers to database names for
- <literal>Connection.setCatalog</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for quoted identifiers in
- <literal>PreparedStatement</literal> parser.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Streamlined character conversion and
- <literal>byte[]</literal> handling in
- <literal>PreparedStatements</literal> for
- <literal>setByte()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce memory footprint of
- <literal>PreparedStatements</literal> by sharing outbound
- packet with <literal>MysqlIO</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>strictUpdates</literal> property to allow
- control of amount of checking for <quote>correctness</quote>
- of updatable result sets. Set this to
- <literal>false</literal> if you want faster updatable result
- sets and you know that you create them from
- <literal>SELECT</literal> statements on tables with primary
- keys and that you have selected all primary keys in your
- query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for 4.0.8-style large packets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>PreparedStatement.executeBatch()</literal>
- parameter overwriting.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-3">
- <title>Changes in MySQL Connector/J 3.0.3-dev (17 December 2002)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.3:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.3:connector-j:all"/>
- <listitem>
- <para>
- Changed <literal>charsToByte</literal> in
- <literal>SingleByteCharConverter</literal> to be non-static.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Changed <literal>SingleByteCharConverter</literal> to use
- lazy initialization of each converter.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed charset handling in <literal>Fields.java</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented <literal>Connection.nativeSQL()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- More robust escape tokenizer: Recognize
- <literal>--</literal> comments, and allow nested escape
- sequences (see
- <literal>testsuite.EscapeProcessingTest</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMD.getImported/ExportedKeys()</literal> now
- handles multiple foreign keys per table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSetMetaData.getPrecision()</literal>
- returning incorrect values for some floating-point types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed
- <literal>ResultSetMetaData.getColumnTypeName()</literal>
- returning <literal>BLOB</literal> for
- <literal>TEXT</literal> and <literal>TEXT</literal> for
- <literal>BLOB</literal> types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>Buffer.isLastDataPacket()</literal> for 4.1
- and newer servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>CLIENT_LONG_FLAG</literal> to be able to get
- more column flags (<literal>isAutoIncrement()</literal>
- being the most important).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Because of above, implemented
- <literal>ResultSetMetaData.isAutoIncrement()</literal> to
- use <literal>Field.isAutoIncrement()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Honor <literal>lower_case_table_names</literal> when enabled
- in the server when doing table name comparisons in
- <literal>DatabaseMetaData</literal> methods.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Some MySQL-4.1 protocol support (extended field info from
- selects).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use non-aliased table/column names and database names to
- fullly qualify tables and columns in
- <literal>UpdatableResultSet</literal> (requires MySQL-4.1 or
- newer).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow user to alter behavior of
- <literal>Statement</literal>/
- <literal>PreparedStatement.executeBatch()</literal> via
- <literal>continueBatchOnError</literal> property (defaults
- to <literal>true</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for connection closed in more
- <literal>Connection</literal> methods
- (<literal>createStatement</literal>,
- <literal>prepareStatement</literal>,
- <literal>setTransactionIsolation</literal>,
- <literal>setAutoCommit</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- More robust implementation of updatable result sets. Checks
- that <emphasis>all</emphasis> primary keys of the table have
- been selected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>LOAD DATA LOCAL INFILE ...</literal> now works, if
- your server is configured to allow it. Can be turned off
- with the <literal>allowLoadLocalInfile</literal> property
- (see the <filename>README</filename>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Substitute <literal>'?'</literal> for unknown character
- conversions in single-byte character sets instead of
- <literal>'\0'</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>NamedPipeSocketFactory</literal> now works (only
- intended for Windows), see <filename>README</filename> for
- instructions.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-2">
- <title>Changes in MySQL Connector/J 3.0.2-dev (08 November 2002)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.2:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.2:connector-j:all"/>
- <listitem>
- <para>
- Fixed issue with updatable result sets and
- <literal>PreparedStatements</literal> not working.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed
- <literal>ResultSet.setFetchDirection(FETCH_UNKNOWN)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed issue when calling
- <literal>Statement.setFetchSize()</literal> when using
- arbitrary values.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed incorrect conversion in
- <literal>ResultSet.getLong()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented <literal>ResultSet.updateBlob()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed duplicate code from
- <literal>UpdatableResultSet</literal> (it can be inherited
- from <literal>ResultSet</literal>, the extra code for each
- method to handle updatability I thought might someday be
- necessary has not been needed).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>UnsupportedEncodingException</literal> thrown
- when <quote>forcing</quote> a character encoding via
- properties.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed various non-ASCII character encoding issues.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added driver property
- <literal>useHostsInPrivileges</literal>. Defaults to
- <literal>true</literal>. Affects whether or not
- <literal>@hostname</literal> will be used in
- <literal>DBMD.getColumn/TablePrivileges</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- All <literal>DBMD</literal> result set columns describing
- schemas now return <literal>NULL</literal> to be more
- compliant with the behavior of other JDBC drivers for other
- database systems (MySQL does not support schemas).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added SSL support. See <filename>README</filename> for
- information on how to use it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly restore connection properties when autoReconnecting
- or failing-over, including <literal>autoCommit</literal>
- state, and isolation level.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>SHOW CREATE TABLE</literal> when possible for
- determining foreign key information for
- <literal>DatabaseMetaData</literal>. Also allows cascade
- options for <literal>DELETE</literal> information to be
- returned.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Escape <literal>0x5c</literal> character in strings for the
- SJIS charset.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed start position off-by-1 error in
- <literal>Clob.getSubString()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented <literal>Clob.truncate()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented <literal>Clob.setString()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented <literal>Clob.setAsciiStream()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented <literal>Clob.setCharacterStream()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>com.mysql.jdbc.MiniAdmin</literal> class,
- which allows you to send <literal>shutdown</literal> command
- to MySQL server. This is intended to be used when
- <quote>embedding</quote> Java and MySQL server together in
- an end-user application.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>connectTimeout</literal> parameter that
- allows users of JDK-1.4 and newer to specify a maxium time
- to wait to establish a connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Failover and <literal>autoReconnect</literal> work only when
- the connection is in an <literal>autoCommit(false)</literal>
- state, in order to stay transaction-safe.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>queriesBeforeRetryMaster</literal> property
- that specifies how many queries to issue when failed over
- before attempting to reconnect to the master (defaults to
- 50).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>DBMD.supportsResultSetConcurrency()</literal>
- so that it returns <literal>true</literal> for
- <literal>ResultSet.TYPE_SCROLL_INSENSITIVE</literal> and
- <literal>ResultSet.CONCUR_READ_ONLY</literal> or
- <literal>ResultSet.CONCUR_UPDATABLE</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSet.isLast()</literal> for empty result
- sets (should return <literal>false</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement</literal> now honors stream
- lengths in setBinary/Ascii/Character Stream() unless you set
- the connection property
- <literal>useStreamLengthsInPrepStmts</literal> to
- <literal>false</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed some not-needed temporary object creation by smarter
- use of <literal>Strings</literal> in
- <literal>EscapeProcessor</literal>,
- <literal>Connection</literal> and
- <literal>DatabaseMetaData</literal> classes.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-1">
- <title>Changes in MySQL Connector/J 3.0.1-dev (21 September 2002)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.1:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.1:connector-j:all"/>
- <listitem>
- <para>
- Fixed <literal>ResultSet.getRow()</literal> off-by-one bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>RowDataStatic.getAt()</literal> off-by-one
- bug.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added limited <literal>Clob</literal> functionality
- (<literal>ResultSet.getClob()</literal>,
- <literal>PreparedStatemtent.setClob()</literal>,
- <literal>PreparedStatement.setObject(Clob)</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>socketTimeout</literal> parameter to URL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>Connection.isClosed()</literal> no longer
- <quote>pings</quote> the server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>Connection.close()</literal> issues
- <literal>rollback()</literal> when
- <literal>getAutoCommit()</literal> is
- <literal>false</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>paranoid</literal> parameter, which sanitizes
- error messages by removing <quote>sensitive</quote>
- information from them (such as hostnames, ports, or
- usernames), as well as clearing <quote>sensitive</quote>
- data structures when possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSetMetaData.isSigned()</literal> for
- <literal>TINYINT</literal> and <literal>BIGINT</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Charsets now automatically detected. Optimized code for
- single-byte character set conversion.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implemented
- <literal>ResultSet.getCharacterStream()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>LOCAL TEMPORARY</literal> to table types in
- <literal>DatabaseMetaData.getTableTypes()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Massive code clean-up to follow Java coding conventions (the
- time had come).
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-3-0-0">
- <title>Changes in MySQL Connector/J 3.0.0-dev (31 July 2002)</title>
+ <title condition="dynamic:changelog:vertitle" role="3.0.0:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="3.0.0:connector-j:all"/>
- <listitem>
- <para>
- <emphasis role="bold">!!! LICENSE CHANGE !!!</emphasis> The
- driver is now GPL. If you need non-GPL licenses, please
- contact me <literal><mark@stripped></literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- JDBC-3.0 functionality including
- <literal>Statement/PreparedStatement.getGeneratedKeys()</literal>
- and <literal>ResultSet.getURL()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Performance enchancements: Driver is now 50−100%
- faster in most situations, and creates fewer temporary
- objects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repackaging: New driver name is
- <literal>com.mysql.jdbc.Driver</literal>, old name still
- works, though (the driver is now provided by MySQL-AB).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Better checking for closed connections in
- <literal>Statement</literal> and
- <literal>PreparedStatement</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for streaming (row-by-row) result sets (see
- <filename>README</filename>) Thanks to Doron.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support for large packets (new addition to MySQL-4.0
- protocol), see <filename>README</filename> for more
- information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- JDBC Compliance: Passes all tests besides stored procedure
- tests.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix and sort primary key names in
- <literal>DBMetaData</literal> (SF bugs 582086 and 582086).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Float types now reported as
- <literal>java.sql.Types.FLOAT</literal> (SF bug 579573).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getTimestamp()</literal> now works for
- <literal>DATE</literal> types (SF bug 559134).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getDate/Time/Timestamp</literal> now
- recognizes all forms of invalid values that have been set to
- all zeros by MySQL (SF bug 586058).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Testsuite now uses Junit (which you can get from
- <ulink url="http://www.junit.org"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The driver now only works with JDK-1.2 or newer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added multi-host failover support (see
- <filename>README</filename>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- General source-code cleanup.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Overall speed improvements via controlling transient object
- creation in <literal>MysqlIO</literal> class when reading
- packets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Performance improvements in string handling and field
- metadata creation (lazily instantiated) contributed by Alex
- Twisleton-Wykeham-Fiennes.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
</section>
@@ -6363,825 +478,98 @@
<section id="cj-news-2-0-14">
- <title>Changes in MySQL Connector/J 2.0.14 (16 May 2002)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.14:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.14:connector-j:all"/>
- <listitem>
- <para>
- More code cleanup.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement</literal> now releases resources
- on <literal>.close()</literal>. (SF bug 553268)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Quoted identifiers not used if server version does not
- support them. Also, if server started with
- <option>--ansi</option> or
- <option>--sql-mode=ANSI_QUOTES</option>,
- <quote><literal>"</literal></quote> will be used as an
- identifier quote character, otherwise
- <quote><literal>'</literal></quote> will be used.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getDouble()</literal> now uses code built
- into JDK to be more precise (but slower).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>LogicalHandle.isClosed()</literal> calls through to
- physical connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added SQL profiling (to <literal>STDERR</literal>). Set
- <literal>profileSql=true</literal> in your JDBC URL. See
- <filename>README</filename> for more information.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed typo for <literal>relaxAutoCommit</literal> parameter.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-13">
- <title>Changes in MySQL Connector/J 2.0.13 (24 April 2002)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.13:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.13:connector-j:all"/>
- <listitem>
- <para>
- More code cleanup.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed unicode chars being read incorrectly. (SF bug 541088)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Faster blob escaping for <literal>PrepStmt</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added
- <literal>set</literal>/<literal>getPortNumber()</literal> to
- <literal>DataSource(s)</literal>. (SF bug 548167)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>setURL()</literal> to
- <literal>MySQLXADataSource</literal>. (SF bug 546019)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement.toString()</literal> fixed. (SF
- bug 534026)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSetMetaData.getColumnClassName()</literal>
- now implemented.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rudimentary version of
- <literal>Statement.getGeneratedKeys()</literal> from
- JDBC-3.0 now implemented (you need to be using JDK-1.4 for
- this to work, I believe).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DBMetaData.getIndexInfo()</literal> - bad PAGES
- fixed. (SF BUG 542201)
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-12">
- <title>Changes in MySQL Connector/J 2.0.12 (07 April 2002)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.12:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.12:connector-j:all"/>
- <listitem>
- <para>
- General code cleanup.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>getIdleFor()</literal> method to
- <literal>Connection</literal> and
- <literal>MysqlLogicalHandle</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Relaxed synchronization in all classes, should fix 520615
- and 520393.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>getTable/ColumnPrivileges()</literal> to DBMD
- (fixes 484502).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added new types to <literal>getTypeInfo()</literal>, fixed
- existing types thanks to Al Davis and Kid Kalanon.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for <literal>BIT</literal> types (51870) to
- <literal>PreparedStatement</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>getRow()</literal> bug (527165) in
- <literal>ResultSet</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixes for <literal>ResultSet</literal> updatability in
- <literal>PreparedStatement</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed time zone off-by-1-hour bug in
- <literal>PreparedStatement</literal> (538286, 528785).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet</literal>: Fixed updatability (values
- being set to <literal>null</literal> if not updated).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DataSources</literal> - fixed
- <literal>setUrl</literal> bug (511614, 525565), wrong
- datasource class name (532816, 528767).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added identifier quoting to all
- <literal>DatabaseMetaData</literal> methods that need them
- (should fix 518108).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added support for <literal>YEAR</literal> type (533556).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.insertRow()</literal> 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.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.refreshRow()</literal> implemented.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>testsuite.Traversal</literal>
- <literal>afterLast()</literal> bug, thanks to Igor Lastric.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-11">
- <title>Changes in MySQL Connector/J 2.0.11 (27 January 2002)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.11:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.11:connector-j:all"/>
- <listitem>
- <para>
- Fixed missing <literal>DELETE_RULE</literal> value in
- <literal>DBMD.getImported/ExportedKeys()</literal> and
- <literal>getCrossReference()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Full synchronization of <literal>Statement.java</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- More changes to fix <literal>Unexpected end of input
- stream</literal> errors when reading <literal>BLOB</literal>
- values. This should be the last fix.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-10">
- <title>Changes in MySQL Connector/J 2.0.10 (24 January 2002)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.10:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.10:connector-j:all"/>
- <listitem>
- <para>
- Fixed spurious <literal>Unexpected end of input
- stream</literal> errors in <literal>MysqlIO</literal> (bug
- 507456).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed null-pointer-exceptions when using
- <literal>MysqlConnectionPoolDataSource</literal> with
- Websphere 4 (bug 505839).
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-9">
- <title>Changes in MySQL Connector/J 2.0.9 (13 January 2002)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.9:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.9:connector-j:all"/>
- <listitem>
- <para>
- <command>Ant</command> build was corrupting included
- <filename>jar</filename> files, fixed (bug 487669).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed extra memory allocation in
- <literal>MysqlIO.readPacket()</literal> (bug 488663).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implementation of
- <literal>DatabaseMetaData.getExported/ImportedKeys()</literal>
- and <literal>getCrossReference()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- 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).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DataSource</literal> implementations moved to
- <literal>org.gjt.mm.mysql.jdbc2.optional</literal> package,
- and (initial) implementations of
- <literal>PooledConnectionDataSource</literal> and
- <literal>XADataSource</literal> are in place (thanks to Todd
- Wolff for the implementation and testing of
- <literal>PooledConnectionDataSource</literal> with IBM
- WebSphere 4).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added detection of network connection being closed when
- reading packets (thanks to Todd Lizambri).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed quoting error with escape processor (bug 486265).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report batch update support through
- <literal>DatabaseMetaData</literal> (bug 495101).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed off-by-one-hour error in
- <literal>PreparedStatement.setTimestamp()</literal> (bug
- 491577).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Removed concatenation support from driver (the
- <literal>||</literal> operator), as older versions of
- VisualAge seem to be the only thing that use it, and it
- conflicts with the logical <literal>||</literal> operator.
- You will need to start <command>mysqld</command> with the
- <option>--ansi</option> flag to use the
- <literal>||</literal> operator as concatenation (bug
- 491680).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed casting bug in <literal>PreparedStatement</literal>
- (bug 488663).
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-8">
- <title>Changes in MySQL Connector/J 2.0.8 (25 November 2001)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.8:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.8:connector-j:all"/>
- <listitem>
- <para>
- Batch updates now supported (thanks to some inspiration from
- Daniel Rall).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>XADataSource</literal>/<literal>ConnectionPoolDataSource</literal>
- code (experimental)
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>PreparedStatement.setAnyNumericType()</literal> now
- handles positive exponents correctly (adds
- <literal>+</literal> so MySQL can understand it).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData.getPrimaryKeys()</literal> and
- <literal>getBestRowIdentifier()</literal> are now more
- robust in identifying primary keys (matches regardless of
- case or abbreviation/full spelling of <literal>Primary
- Key</literal> in <literal>Key_type</literal> column).
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-7">
- <title>Changes in MySQL Connector/J 2.0.7 (24 October 2001)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.7:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.7:connector-j:all"/>
- <listitem>
- <para>
- <literal>PreparedStatement.setCharacterStream()</literal>
- now implemented
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed dangling socket problem when in high availability
- (<literal>autoReconnect=true</literal>) mode, and finalizer
- for <literal>Connection</literal> will close any dangling
- sockets on GC.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSetMetaData.getPrecision()</literal>
- returning one less than actual on newer versions of MySQL.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getBlob()</literal> now returns
- <literal>null</literal> if column value was
- <literal>null</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Character sets read from database if
- <literal>useUnicode=true</literal> and
- <literal>characterEncoding</literal> is not set. (thanks to
- Dmitry Vereshchagin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Initial transaction isolation level read from database (if
- avaialable). (thanks to Dmitry Vereshchagin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed
- <literal>DatabaseMetaData.supportsTransactions()</literal>,
- and <literal>supportsTransactionIsolationLevel()</literal>
- and <literal>getTypeInfo()</literal>
- <literal>SQL_DATETIME_SUB</literal> and
- <literal>SQL_DATA_TYPE</literal> fields not being readable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>PreparedStatement</literal> generating SQL
- that would end up with syntax errors for some queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSet.isAfterLast()</literal> always
- returning <literal>false</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed time zone issue in
- <literal>PreparedStatement.setTimestamp()</literal>. (thanks
- to Erik Olofsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Captialize type names when
- <literal>captializeTypeNames=true</literal> is passed in URL
- or properties (for WebObjects. (thanks to Anjo Krank)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Updatable result sets now correctly handle
- <literal>NULL</literal> values in fields.
- </para>
- </listitem>
-
- <listitem>
- <para>
- PreparedStatement.setDouble() now uses full-precision
- doubles (reverting a fix made earlier to truncate them).
- </para>
- </listitem>
-
- <listitem>
- <para>
- PreparedStatement.setBoolean() will use 1/0 for values if
- your MySQL version is 3.21.23 or higher.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-6">
- <title>Changes in MySQL Connector/J 2.0.6 (16 June 2001)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.6:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.6:connector-j:all"/>
- <listitem>
- <para>
- Fixed <literal>PreparedStatement</literal> parameter
- checking.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed case-sensitive column names in
- <literal>ResultSet.java</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-5">
- <title>Changes in MySQL Connector/J 2.0.5 (13 June 2001)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.5:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.5:connector-j:all"/>
- <listitem>
- <para>
- Fixed <literal>ResultSet.getBlob()</literal>
- <literal>ArrayIndex</literal> out-of-bounds.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ResultSetMetaData.getColumnTypeName</literal>
- for <literal>TEXT</literal>/<literal>BLOB</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed <literal>ArrayIndexOutOfBounds</literal> when sending
- large <literal>BLOB</literal> queries. (Max size packet was
- not being set)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>ISOLATION</literal> level support to
- <literal>Connection.setIsolationLevel()</literal>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed NPE on
- <literal>PreparedStatement.executeUpdate()</literal> when
- all columns have not been set.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed data parsing of <literal>TIMESTAMP</literal> values
- with 2-digit years.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>Byte</literal> to
- <literal>PreparedStatement.setObject()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.getBoolean()</literal> now recognizes
- <literal>-1</literal> as <literal>true</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet</literal> has +/-Inf/inf support.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>ResultSet.insertRow()</literal> works now, even if
- not all columns are set (they will be set to
- <literal>NULL</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DataBaseMetaData.getCrossReference()</literal> no
- longer <literal>ArrayIndexOOB</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>getObject()</literal> on
- <literal>ResultSet</literal> correctly does
- <literal>TINYINT</literal>-><literal>Byte</literal> and
- <literal>SMALLINT</literal>-><literal>Short</literal>.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-3">
- <title>Changes in MySQL Connector/J 2.0.3 (03 December 2000)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.3:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.3:connector-j:all"/>
- <listitem>
- <para>
- Implemented <literal>getBigDecimal()</literal> without scale
- component for JDBC2.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed composite key problem with updatable result sets.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added detection of -/+INF for doubles.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Faster ASCII string operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed incorrect detection of
- <literal>MAX_ALLOWED_PACKET</literal>, so sending large
- blobs should work now.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed off-by-one error in <literal>java.sql.Blob</literal>
- implementation code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Added <literal>ultraDevHack</literal> URL parameter, set to
- <literal>true</literal> to allow (broken) Macromedia
- UltraDev to use the driver.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0-1">
- <title>Changes in MySQL Connector/J 2.0.1 (06 April 2000)</title>
+ <title condition="dynamic:changelog:vertitle" role="2.0.1:connector-j:all"/>
- <itemizedlist>
+ <para condition="dynamic:changelog:entrylist" role="2.0.1:connector-j:all"/>
- <listitem>
- <para>
- Fixed <literal>RSMD.isWritable()</literal> returning wrong
- value. Thanks to Moritz Maass.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cleaned up exception handling when driver connects.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Columns that are of type <literal>TEXT</literal> now return
- as <literal>Strings</literal> when you use
- <literal>getObject()</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>DatabaseMetaData.getPrimaryKeys()</literal> now
- works correctly with respect to <literal>key_seq</literal>.
- Thanks to Brian Slesinsky.
- </para>
- </listitem>
-
- <listitem>
- <para>
- No escape processing is done on
- <literal>PreparedStatements</literal> anymore per JDBC spec.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed many JDBC-2.0 traversal, positioning bugs, especially
- with respect to empty result sets. Thanks to Ron Smits, Nick
- Brook, Cessar Garcia and Carlos Martinez.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fixed some issues with updatability support in
- <literal>ResultSet</literal> when using multiple primary
- keys.
- </para>
- </listitem>
-
- </itemizedlist>
-
</section>
<section id="cj-news-2-0pre5">
| Thread |
|---|
| • svn commit - mysqldoc@docsrva: r8052 - in trunk: dynamic-docs/changelog refman-common | mcbrown | 11 Oct |