List:Commits« Previous MessageNext Message »
From:mcbrown Date:October 11 2007 3:12pm
Subject:svn commit - mysqldoc@docsrva: r8052 - in trunk: dynamic-docs/changelog refman-common
View as plain text  
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 &lsquo;<literal>%</literal>&rsquo;), 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>,
-        &lsquo;<literal>&quot;</literal>&rsquo; will be used as an
+        <quote><literal>&quot;</literal></quote> will be used as an
         identifier quote character, otherwise
-        &lsquo;<literal>'</literal>&rsquo; 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
-        &lsquo;<literal>@</literal>&rsquo; sign.
+        <quote><literal>@</literal></quote> sign.
       </para>
 
     </message>

@@ -12353,8 +12347,8 @@
 
       <para>
         URL configuration parameters don't allow
-        &lsquo;<literal>&amp;</literal>&rsquo; or
-        &lsquo;<literal>=</literal>&rsquo; in their values. The JDBC
+        <quote><literal>&amp;</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 &lsquo;<literal>%</literal>&rsquo; 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
-        &lsquo;<literal>%</literal>&rsquo; 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
-        &lsquo;<literal>,</literal>&rsquo; 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 &lsquo;<literal>.</literal>&rsquo; 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 &quot;&quot;). (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 &quot;2&quot;).
-          </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 &gt; 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 &gt;
-            <literal>Integer.MAX_VALUE</literal>.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Updated <literal>DBMD.supportsCorrelatedQueries()</literal>
-            to return <literal>true</literal> for versions &gt; 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>&amp;</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> &mdash; maximum
-                performance without being reckless
-              </para>
-            </listitem>
-
-            <listitem>
-              <para>
-                <literal>solarisMaxPerformance</literal> &mdash; maximum
-                performance for Solaris, avoids syscalls where it can
-              </para>
-            </listitem>
-
-            <listitem>
-              <para>
-                <literal>3-0-Compat</literal> &mdash; 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(&gt;=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 &lt; 9 bits are declared.
-            <literal>BIT(&gt;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 &lt;
-            <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> -&gt;
-            <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 &gt;=
-            4.1.0.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Cleaned up detection of server properties.
-          </para>
-        </listitem>
-
-        <listitem>
-          <para>
-            Support placeholder for parameter metadata for server &gt;=
-            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 &gt;= 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 &gt;= 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 &lt; 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> -&gt;
-            <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 &gt;= 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
-            &gt;= 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 &gt;= 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
-            &gt;= 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 &gt; <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>&lt;mark@stripped&gt;</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&minus;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>-&gt;<literal>Byte</literal> and
-            <literal>SMALLINT</literal>-&gt;<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-commonmcbrown11 Oct