<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<document>
  <properties>
    <title>Changes</title>
    <author email="mpoeschl@marmot.at">Martin Poeschl</author>
    <author email="seade@backstagetech.com.au">Scott Eade</author>
    <author email="dion@multitask.com.au">dIon Gillard</author>
    <author email="monroe@dukece.com">Greg Monroe</author>
    <author email="hps@intermeta.de">Henning P. Schmiedehausen</author>
    <author email="fischer@seitenbau.de">Thomas Fischer</author>
    <author email="tv@apache.org">Thomas Vandahl</author>
  </properties>

  <body>
  <release version="3.4-dev" date="in SVN">
    <action type="update" dev="gmonroe">
      Fixed SummaryHelper class issues caused by DB differences.
      Added a ListOrderMapCI class to utils (case insensitive string keys).
      Refactored the SummaryHelper class to use this.
      Modified the SummaryHelperTest to work with all DB types.
    </action>
    <action type="update" dev="gmonroe">
      Changed the exception type thrown by doSelect calls when
      Criteria.isSingleRecord() true and more than one record is found.
      A TooManyRecordsException (ToqueException subclass) is now returned
      instead of a TorqueException.
    </action>
    <action type="add" dev="gmonroe">
      Added support for DB Adaptor specific SQL functions.
    </action>
    <action type="add" dev="gmonroe">
      Add a SummaryHelper class which supports aggregate queries.  E.g.
      Select Sum(x) from table.
    </action>
  </release>
  <release version="3.3" date="2008-02-29">
  </release>
  <release version="3.3-RC3" date="2008-01-11">
    <action type="remove" dev="tfischer">
      maven2 plugin: removed the property idTableXmlFile from the sql and
      id-table-init-sql goals. The property never was passed by the mojo and
      also does not work correctly in the generator. Use the goal
      id-table-init-sql to create sql for id tables instead.
    </action>
    <action type="update" dev="tfischer">
      maven2 plugin: changed the default value of the property schemaExcludes
      in the sql goal from "id-table-schema.xml" to "". So the default
      property settings also work if the idMethod is idbroker.
    </action>
    <action type="fix" dev="gmonroe" issue="TORQUE-53" >
      Added better handling in Village for BigDecimal values.  Double and
      Float types will be converted using appropriate constructors rather
      than the somewhat buggy BigDecimal(String) constructor.
    </action>
    <action type="add" dev="gmonroe">
      Removed Village meta data check for read only column status.  This is
      not fully supported by a lot of JDBC drivers and causes Torque to
      fail with Derby's JDBC network driver.
    </action>
    <action type="add" dev="tfischer">
      Maven 2 plugin: Added the attribute delimiterType for the sqlExec goal.
    </action>
    <action type="update" dev="tfischer">
      Maven 2 plugin: changed the default value of the parameter
      &quot;suffix&quot; in the id-table-init-sql goal
      to &quot;-idtable-init&quot; (was: &quot;&quot;).
      This allows for automatic execution of the id-table-init-sql files in the
      sqlExec goal with default settings.
    </action>
    <action type="update" dev="tfischer" issue="TORQUE-105" due-to="Sylvain Benoist">
      Sybase: Columns where the attribute &quot;required&quot;
      is not set or set to false are now created explicitly
      with suffix &quot;NULL&quot;.
    </action>
    <action type="update" dev="tfischer">
      Changed Type Mappings for Sybase:
      <ul>
        <li>
          Torque type TIME is now mapped to SQL type TIME
          (was: SQL type TIMESTAMP)
        </li>
        <li>
          Torque type CLOB is now mapped to SQL type TEXT
          (was: SQL type CLOB, which does not exist in Sybase)
        </li>
        <li>
          Torque type BLOB is now mapped to SQL type IMAGE
          (was: SQL type BLOB, which does not exist in Sybase)
        </li>
      </ul>
    </action>
    <action type="update" dev="tfischer">
      Criterions with an integer value will now be set using
      PreparedStatemet#setInt() when doing a PsSelect.
    </action>
    <action type="update" dev="tv">
      Integrated Village into Torque. Thanks to Henning, Jean, Jon and Scott for
      the paperwork.
    </action>
    <action type="update" dev="gmonroe" issue="TORQUE-86" due-to="Will Glass-Husain">
      The SQL statements generated for MS SQL by the torque:datasql target
      will now be wrapped in SET IDENTITY_INSERT...ON /OFF statements if
      the idMethod is native and autogenerate is set on one or more fields.
    </action>
    <action type="update" dev="tfischer" issue="TORQUE-69">
      An exception is now thrown on an attempt to update a modified object
      without a primary key. The previous behaviour was to fail silently.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-103" due-to="Jonathan Purvis">
      Corrected invalid cast in TorqueRuntimeException.splitStackTrace.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-104" due-to="Sylvain Benoist">
      Remove 'COMMENT ON...' output from generated SQL for Sybase
      as these commands do not exist in Sybase's sql.
    </action>
    <action type="update" dev="tfischer" issue="TORQUE-91">
      Deprecated the attribute size in the element index-column in the dtd.
      The attribute is currently not used. It will be removed from the dtd
      in a future version of Torque.
    </action>
    <action type="update" dev="tfischer" issue="TORQUE-71" due-to="Thoralf Rickert">
      Create nicely trimmed output in the generator.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-101" due-to="Marc Kannegiesser">
      Implemented the goal id-broker-init-sql in the Maven2 plugin.
    </action>
    <action type="fix" dev="tfischer" due-to="Marc Kannegiesser">
      The suffix parameter to the Maven2-plugin's sql task now works.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-99" due-to="Tobias Hilka">
      Added copy(..) and add&lt;ForeignKey&gt;(..) methods with a connection
      parameter.
    </action>
    <action type="update" dev="tv">
      Updated JCS dependency to version 1.3 and fixed related deprecation
      issues.
    </action>
    <action type="fix" dev="tv" issue="TORQUE-97" due-to="Markus Müller">
      Avoid to call JDK 1.5 code when creating BigDecimals.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-89" due-to="Stefan Birrer">
      OrderBy now accepts column names without a dot. No additional
      processing is made for these.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-90" due-to="Sean Gilligan">
      Fixed Null Pointer Exceptions in Criteria.equals() and
      Criteria.hashCode() if joins are null.
    </action>
    <action type="fix" dev="tfischer">
      Changed the maven2 plugin's datadump goal to accept only a single schema
      xml. Multiple schema xmls produced illegal output.
    </action>
    <action type="fix" dev="tfischer">
      Fixed the maven2 plugin's datasql goal to do the same as the ant and
      maven1 datasql task.
    </action>
    <action type="add" dev="tfischer">
      Added a datadtd goal to the maven2 plugin.
    </action>
    <action type="update" dev="tfischer">
      changed the artifact id of some maven2 artifacts:
      <ul>
        <li>
          runtime -> torque-runtime
        </li>
        <li>
          generator -> torque-generator
        </li>
        <li>
          templates -> torque-templates
        </li>
      </ul>
      This change only affects maven2 users.
    </action>
    <action type="update" dev="tfischer">
      Changed the group id of the maven2 artifacts from
      org.apache.db.torque to org.apache.torque.
      This change only affects maven2 users.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-93">
      Fixed problem with somePeer.doDelete(Criteria) if criteria contains
      a join.
    </action>
    <action type="add" dev="gmonroe">
      Added torque.beanExtendsClass property that defines a fully qualified
      class name (e.g. org.apache.struts.action.ActionForm) that the base
      bean classes will extend.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-88">
      Fixed handling of the enableJava5Features config parameter in the
      maven 2 plugin.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-87">
      Fixed handling of select statements in mysql and postgresql
      if offset is set but limit is not set in a query.
    </action>
  </release>

  <release version="3.3-RC2" date="2007-02-26">
    <action type="fix" dev="tv" issue="TORQUE-76" due-to="Ronny Völker">
      Fix the handling of interfaces while keeping backward compatibility.
      Add documentation and test cases.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-80" due-to="Brian Telintelo">
      In the JdbcTransformTask of the generator, the attribute
      &quot;default&quot; is only added to the generated schema if its value
      is not empty.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-79">
      Added check whether Torque is initialized in Torque.getConnection().
      If Torque is not initialized, a corresponding TorqueException is thrown;
    </action>
    <action type="add" dev="tfischer">
      The maven 2 plugin generates the non-base classes into a different
      directory than the base classes. This behaviour can also be configured for
      maven 1 and ant by setting the property torque.java.base.dir to another
      directory than torque.java.dir.
    </action>
    <action type="fix" dev="tfischer" due-to="Jeffrey D. Brekke">
      Fixed the lifecycle integration and dependency resolution of the om goal
      in the maven 2 plugin.
    </action>
    <action type="fix" dev="tv" issue="TORQUE-68">
      Allow repeated lookups to the Torque Avalon Component. The component now
      registers the existing MapBuilders with the new instance so that they are
      re-built during initialization. This is considered a temporary hack until
      the static constructors of the generated Peer classes go away.
    </action>
    <action type="update" dev="tv">
      Centralized the handling of MapBuilders in the TorqueInstance class. This
      allows for repeated initialization of different instances of Torque. The
      method BasePeer.getMapBuilder(className) is now deprecated.
    </action>
    <action type="fix" dev="tfischer">
      Set autocommit=true as default for the sqlexec task in the maven 2 plugin.
      Some databases (e.g. postgresql) need this to proceed if a statement
      execution fails.
    </action>
    <action type="fix" dev="tfischer">
      Added the TEXT sql type in postgresql to the list of types
      where size and scale is silently dropped in sql generation.
    </action>
    <action type="fix" dev="tfischer">
      Made the password parameter optional in the sqlexec task in the maven2
      plugin. Empty passwords work for some databases.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-73">
      Added missing log4j jar to generator dependencies.
    </action>
    <action type="fix" dev="gmonroe">
      Improved Derby generator platform implimentation to support correctly
      sized BINARY and VARBINARY using the SizedAsBitDataDomain.  Also fixed
      problems with the BIT and TINYINT mappings.
    </action>
    <action type="add" dev="gmonroe">
      Added a new Generator model Domain subclass called SizedForBitDataDomain
      to support the DB2/Derby CHAR/VARCHAR (size) AS BIT DATA format.
    </action>
    <action type="fix" dev="gmonroe">
      Fixed template package references that caused bad code to be generated
      if non-default packages were used.
    </action>
  </release>
  <release version="3.3-RC1" date="2006-11-23">
    <action type="fix" dev="tfischer">
      Fixed a synchronisation issue in the getDateString() method in
      the database adapter for postgresql.
    </action>
    <action type="fix" dev="tv" issue="TORQUE-63" due-to="Ronny Völker">
      Wrong caching of method calls with more than three arguments in MethodResultCache.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-44" due-to="Greg Monroe">
      The Column names TABLE_NAME and DATABASE_NAME are now legal column names.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-2" due-to="Raphael Pieroni">
      Added a maven 2 plugin.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-57">
      Fixed handling of escaping (by backslashes) for LIKE clauses.
      This included fixing the general handling of backslashes
      for several databases.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-59">
      Booleanchar and Booleanint now work for chained (and'ed, or'ed)
      Criterions.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-27" due-to="Greg Monroe">
      Added support for option tags for most elements in the database.xml
      for usage with custom templates.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-10">
      Limit and Offset work now correctly if applied to joined
      tables which contain the same column name in oracle.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-56" due-to="Gustavo Fernandez">
      The variable CLASS_NAME in the map builders is now filled correctly if
      the build property torque.subpackage.map is set.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-50" due-to="Greg Monroe">
      Added support for customizing generator templates.
    </action>
    <action type="add" dev="tv">
      Add a &quot;serialVersionUID&quot; to the generated classes that
      implement Serializable. The entry is generated if &quot;addTimeStamp&quot;
      is true. This should remove quite a number of warnings when using
      Torque generated classes.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-49">
      Use encoding in the header of schema.xml files instead of default encoding
      to parse the schema.xml files.
    </action>
    <action type="update" dev="tfischer" issue="TORQUE-31" due-to="Thoralf Rickert">
      Provided generic typed wrappers for methods in BasePeer
      when torque.enableJava5Features is set to true.
    </action>
    <action type="update" dev="tfischer" issue="TORQUE-37" due-to="Greg Monroe">
      The default package for generated classes was changed from
      org.apache.torque to torque.generated.
    </action>
    <action type="fix">
      Selects for BOOLEANCHAR and BOOLEANINT now work for aliased tablenames
      and joined tables.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-44" due-to="Thoralf Rickert and Greg Monroe">
      Preserved case when generating the constants for column names
      in the Peers and the database maps. For example, for a table named book
      and a column namend author_id, the constant BaseBookPeer.AUTHOR_ID
      is now set to book.author_id, whereas in former versions, this constant
      would have been set to book.AUTHOR_ID.<br/>
      The old behaviour can be regained by setting the generator property
      torque.deprecated.uppercasePeer to true.
    </action>
    <action type="update" dev="tv">
      Simplified the Torque Avalon component.
    </action>
    <action type="add" dev="tv">
      Provided support for user-loadable DB adapters.
    </action>
    <action type="fix" dev="tv" issue="TORQUE-20" due-to="Greg Monroe">
      Fixed MS-SQL failure in LargeSelect.
    </action>
    <action type="fix" dev="tv" issue="TORQUE-43" due-to="Thoralf Rickert">
      Fixed several methods not using JavaName in Peer.vm. Thanks to
      Thoralf Rickert for the patch.
    </action>
    <action type="fix" dev="tv" issue="TORQUE-42" due-to="Federico Fissore">
      Fixed Criteria.andDate() methods to call getTime() like the addDate
      methods do. Added a test case to check this. Thanks to Federico Fissore
      for the Criteria patch.
    </action>
    <action type="update" dev="tv">
      Made DB an interface and changed all database adapters to extend
      AbstractDBAdapter. Moved generateLimits methods to the adapters and
      deprecated getLimitStyle and associated constants because this
      should be handled transparently for the user.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-41" due-to="Thoralf Rickert">
      Caught SQL exception when foreign keys for a table or view
      cannot be retrieved in the jdbc ant task in the generator.
      Now a warning is printed instead of stopping execution.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-33" due-to="Jacob Champlin">
      Refined guesswork for detecting column names out of functions, clauses
      etc. This is important e.g. for orderBy Statements like
      &quot;order by table.column in (1,2,3)&quot; or
      &quot;order by 100 &lt; table.column&quot;.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-30" due-to="Patrick Carl">
      Added the CASCADE option to drop table statements for HSQLDB.
      This will not work with HSQLDB 1.7. Consult the HSQLDB Howto for
      information about reverting to the old behaviour.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-26" due-to="Greg Monroe">
      Added setByName and setByPosition methods in the generated object classes
      that match the already existing getByName and getByPosition methods.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-28" due-to="Mojmir Hanes">
      Fixed wrong constant CLASS_DEFAULT_NAME in generated peer classes.
      The error occurred only if the option torque.subpackage.object
      was set in the generator properties.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-22" due-to="Greg Monroe">
      A database map can now load all contained tableMaps
      using its method databaseMap.initialize().
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-22" due-to="Greg Monroe">
      The database maps now provide all information from the schema.xml.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-25" due-to="Martin Goulet">
      Improved performance for sybase limit using SET ROWCOUNT.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-23" due-to="Thoralf Rickert">
      Added methods for shallow copies into the generated objects.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-6" due-to="Joerg Friedrich">
      Fixed foreign key constraint generation for Firebird.
    </action>
    <action type="add" dev="tfischer" issue="TORQUE-18" due-to="Greg Monroe">
      Added createdb-template for MS-SQL.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-19" due-to="Greg Monroe">
      Corrected datatype Mapping for MS-SQL:
      <ul>
        <li>
          Torque type BLOB is now mapped to MS-SQL type IMAGE
          (was BLOB in Torque 3.2, not working)
        </li>
        <li>
          Torque type CLOB is now mapped to MS-SQL type TEXT
          (was CLOB in Torque 3.2, not working)
        </li>
      </ul>
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-21" due-to="Nicolas Le Griel">
      Fixed bug in bean generation when a table has several references
      to another table.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-4" due-to="Joerg Friedrich">
      <ul>
        <li>
          Added new firebird database adapter.
        </li>
        <li>
          Date Strings returned by the interbase and firebird adapters
          are now escaped.
        </li>
      </ul>
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-4" due-to="Joerg Friedrich">
      Corrected datatype Mappings for firebird:
      <ul>
        <li>
          Torque type char is now mapped to firebird type char (was varchar)
        </li>
        <li>
          Torque type double is now mapped to firebird type double precision
          (was double)
        </li>
        <li>
          Torque type booleanchar is now mapped to firebird type char(1)
          (was varchar(1))
        </li>
      </ul>
    </action>
    <action type="fix" dev="tfischer" issue="TRQS356">
      Corrected Mapping for Type LONGVARCHAR for Derby.
    </action>
    <action type="fix" dev="tfischer" issue="TRQS362">
      Added dummy template for DB creation for DB2.
    </action>
    <action type="fix" dev="tfischer" issue="TORQUE-5">
      Mapped the Torque type INTEGER to the SQL type INTEGER in Mysql.
      (In Torque 3.2, this was changed unintentionally to MEDIUMINT.
      MEDIUMINT does not cover the full data range of java integers.)
      Thanks to Joerg Friedrich for reporting the error.
    </action>
    <action type="add" dev="tfischer">
      Added a new convenience method, Transaction.begin(),
      which is the same as Transaction.begin(Torque.getDefaultDb()).
    </action>
    <action type="update" dev="tfischer">
      Centralized the information the runtime keeps about underlying
      databases in a singe class called Database. Deprecated the
      decentralized methods to access information about the databases.
    </action>
    <action type="update" dev="tfischer">
      The IdBroker is now only started for a database if the IdMethod
      idBroker is used in that database.
    </action>
    <action type="fix" dev="seade">
      Use BigDecimal(double) constructor so as to help code compiled under
      JDK 1.5 execute correctly under earlier JDKs
      (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=121325">
      Related Eclipse bug</a>).
    </action>
    <action type="update" dev="tv">
      Update to the Avalon components of Torque. The component now understands
      Merlin- and YAAFI-type context entries and provides again all methods from
      TorqueInstance.
    </action>
    <action type="fix" dev="tfischer" issue="TRQS335">
      HSQL's autoincrement columns now start with one instead of zero.
      Thanks to Patrick Carl for an early version of the patch.
    </action>
    <action type="fix" dev="tfischer" issue="TRQS345">
      IgnoreCase in PsSelects now also takes into account
      Criterion's setIgnoreCase().
      Thanks to Robert Dietrick for an early version of the patch.
    </action>
    <action type="update" dev="tfischer">
      If no DTD is given, in the schema.xml, no dtd is used
      to validate the schema.xml. The old behaviour was to use the dtd
      from the generator jar.
    </action>
    <action type="fix" dev="tfischer">
	  Changed behaviour for a limit of zero: (criteria.setLimit(0))
      <ul>
        <li>
          If the db supports native limit,
          a limit of zero returns zero datasets.
        </li>
        <li>
          if the db does not support native limit, a limit of zero
          causes a TorqueException (thanks to village :-()
        </li>
      </ul>
      The former behaviour was: A limit of zero returns all datasets.
    </action>
    <action type="fix" dev="tfischer">
      Fixed case-insensitive order by for hsqldb.
    </action>
    <action type="add" dev="tfischer">
      Added the table descriptions from the schema.xml
      to the comments of the generated classes.
      Thanks to Thoralf Rickert for the patch.
    </action>
    <action type="add" dev="tfischer">
      Added Java5 generics support for the generated classes.
      Thanks to Thoralf Rickert for the patch.
    </action>
    <action type="add" dev="tfischer">
      Formatting of the html documentation generated by the generator
      is now done by css stylesheets.
    </action>
    <action type="add" dev="tfischer" issue="TRQS305">
      Subqueries are now supported.
      This has caused Criterion.appendTo(StringBuffer) to declare throwing
      a Torque Exception.
    </action>
    <action type="fix" dev="tfischer" issue="TRQS133">
      BaseObject.equals() does not return true anymore if the objects
      do not have the same class.
      Thanks to Patrick Carl for the patch.
    </action>
    <action type="add" dev="tfischer">
      Extended support for derby.
      <ul>
        <li>
          IdMethod native is now supported
        </li>
        <li>
          Added mappings for Torque types
          LONGVARCHAR, BINARY and VARBINARY
        </li>
        <li>
          Implemented the methods getMaxColumnNameLength(),
          hasScale() and hasSize() in PlatformDerbyImpl
        </li>
        <li>
          Foreign keys are now declared outside the CREATE TABLE statement,
          allowing to create foreign references independent of the order of
          tables in the schema.xml
        </li>
        <li>
          The SQL for the creation of Indices is now generated correctly
          (a CRLF was missing at the end)
        </li>
      </ul>
      Thanks to Johnny Macchione for the patches.
    </action>
    <action type="fix" dev="tfischer">
      Fixed foreign key support in mysql to allow the referenced table to
      be declared before the referencing table.
      This is done by defining the foreign keys in an extra
      &quot;CREATE TABLE&quot; statement instead of defining them in the
      &quot;CREATE TABLE&quot; statement.
      Note that foreign keys are ignored by mysql except in InnoDB tables.
      <br />
      Thanks to Thoralf Rickert for suggesting the patch.
      Fixes also TRQS278.
    </action>
  </release>

  <release version="3.2-rc3" date="2005-11-13">
    <action type="fix" dev="tfischer">
      Fixed support for limit and offset for Derby in the runtime.
    </action>
    <action type="add" dev="tfischer">
      Added hyperlinks to foreign key in the documentation to point to
      the referenced table.
      Thanks to Hilco Wijbenga for an early version of the patch.
    </action>
    <action type="fix" dev="seade">
      Corrected serialization of Criteria objects.  While there also fixed
      equals() and added hashCode().
      Thanks to Martin Goulet for a very early version of the serialization fix.
    </action>
    <action type="add" dev="tfischer">
      Added scale (i.e number of digits after the decimal point) support
      for the sql data types NUMERIC and DECIMAL in the JDBCTransformTask
      (creating schema.xml from the database). Only scales which are > 0
      are added as an extra attribute to the generated schema.xml.
      Thanks to Hilco Wijbenga for the patch.
    </action>
    <action type="fix" dev="tfischer" issue="TRQS325">
      Fixed importing references for foreign keys if the
      object for the foreign key is in another package.<br />
      Thanks to Robert Dietrick for the patch.
    </action>
    <action type="update" dev="tfischer">
      The default values of the generator options
      torque.subpackage.base.bean,
      torque.subpackage.bean,
      and torque.subpackage.map
      are now defined in the property files plugin.properties (for maven)
      and default.properties (for ant) instead of in the templates
    </action>
    <action type="fix" dev="tfischer" issue="TRQS322">
      The DataSourceFactory with the name "default" is created
      automatically again. This was removed when fixing TRQS308,
      but is required by Turbine.
    </action>
    <action type="add" dev="tfischer" issue="TRQS323">
      The size and scale attributes from the schema.xml are now used
      to fill the fields size and scale in the column objects
      created by the generated map builder objects.
    </action>
  </release>
  <release version="3.2-rc2" date="2005-09-13">
    <action type="fix" dev="tfischer" issue="TRQS318">
      LargeSelect now also works for databases which do not support
      native limit and offset
    </action>
    <action type="fix" dev="tfischer" issue="TRQS320">
      Added necessary addJoin() statenments to the generated Methods
      XXXPeer.doSelectAllExceptYYY().
      Thanks to Thomas Vandahl for the patch.
    </action>
    <action type="add" dev="tfischer">
      <ul>
        <li>
          Added the methods getCachedInstance() and getCachedInstanceImpl()
          to the BaseManager.vm template
        </li>
        <li>
          Added the method getXXX(Connection) for associated objects
          to the ObjectWithManager.vm template
        </li>
      </ul>
      Thanks to Thomas Vandahl for the patch.
    </action>
    <action type="fix" dev="tfischer">
      For HSQLDB, the generator now generates
      NULL/NOT NULL, DEFAULT and IDENTITY declarations
    </action>
    <action type="add" dev="tfischer">
      The generated beans are now serializable.
    </action>
    <action type="add" dev="tfischer">
      Added a method getXXX(connection) to retrieve associated objects
      in the n->1 direction, which uses the provided connection
      if a db hit is necessary
    </action>
    <action type="add" dev="tfischer">
      Added a generator property torque.silentDbFetch, which is true by default.
      If set to false, the getXXX() methods without arguments will not access
      the db silently, but return null if the associated objects has not been
      read yet. Also, the method does not throw a Torque exception any more.
    </action>
    <action type="add" dev="henning">
      Added templates site reference to menus in runtime, generator, maven-plugin.
    </action>
    <action type="add" dev="henning">
      Added Findbugs report to the site.
    </action>
    <action type="add" dev="henning">
      Updated mailing list references to point to mod_mbox.
    </action>
    <action type="add" dev="henning">
      Updated all SCM references to point to Subversion.
    </action>
    <action type="add" dev="tfischer" issue="TRQS306">
      Added the following generator properties to allow detailed control
      where the target classes are generated.
      <ul>
        <li>torque.subpackage.peer</li>
        <li>torque.subpackage.object</li>
        <li>torque.subpackage.map</li>
        <li>torque.subpackage.manager</li>
        <li>torque.subpackage.bean</li>
        <li>torque.subpackage.base</li>
        <li>torque.subpackage.base.bean</li>
      </ul>
      See the reference for the generator properties for more information.
    </action>
  </release>

  <release version="3.2-rc1" date="2005-07-19">
    <action type="add" dev="tfischer">
      Added the build-torque.xml again to the generator release.
      In order to use the same default directory structure
      for maven and ant, the default directory for the schema files
      was changed from ${torque.home}/schema to ${torque.home}/src/schema
    </action>
    <action type="update" dev="tfischer">
      The generator templates are now packed in a separate jar file,
      torque-gen-templates.jar, which is included in the generator
      tar.gz and zip distributions. To build the jar from source,
      change into src/generator/src/templates and run maven jar:install.
    </action>
    <action type="update" dev="tfischer" issue="TRQS308">
      Changed runtime configuration checking. It is now required having set
      the following properties:
      <ul>
        <li>torque.database.default</li>
        <li>torque.database.&lt;defaultDbName&gt;.adapter</li>
        <li>torque.dsfactory.&lt;defaultDbName&gt;.factory</li>
      </ul>
      This was done in order to detect misconfiguration more easily.
    </action>
    <action type="update" dev="tfischer">
      The runtime does not configure the DataSourveFactory with the name "default"
      any more automatically. If you need a DataSourceFactory with that name,
      you have to configure it manually from now on.
    </action>
    <action type="update" dev="tfischer">
      If Torque is not yet initialized, it does now return null as name of the
      default database (not "default" as it was before).
    </action>
    <action type="update" dev="tfischer" issue="TRQS252">
      The asColumns in a Criteria are now added to the SQL select clause
      in the same order as they were added to a Criteria.
      To achieve this, the return type of the method Criteria.getAsColumns()
      had to be changed from Hashtable to Map.
    </action>
    <action type="fix" dev="tfischer" issue="TRQS294">
      Torque.shutdown() now closes the datasourcee initialized by Torque,
      except the Datasource obtained via a JndiDataSourceFactory.
    </action>
    <action type="add" dev="tfischer" issue="TRQS306">
      Added a "protected" attribute to the column. If set to true, the getters
      and setters of a column are protected rather than public.
    </action>
    <action type="fix" dev="tfischer" issue="TRQS304">
      If a Peer class cannot instantiate its Map Builder, a Runtime Exception is now
      thrown (instead of just logging the error).
    </action>
    <action type="add" dev="tfischer">
      The database schema.xml is now validated against the DTD. The generator stops
      and displays an error message if the schema.xml does not satisfy the DTD.
    </action>
    <action type="fix" dev="tfischer" issue="TRQS286">
      The TorqueJDBCTransformTask now creates a name attribute for the database
      element. The attribute value is the name of the database user used to
      connect to the database.
    </action>
    <action type="add" dev="tfischer" issue="TRQS266">
      For db2, msaccess, oracle, postgresql and sybase, the description attributes
      from the schema.xml are inserted as comments into the database.
    </action>
    <action type="fix" dev="tfischer">
      Changed the length of the tablename column from 255 to 250 in the idbroker
      schema for the runtimetest. This is necessary because the firebird database
      cannot create an index on a varchar column which has the length 255.
    </action>
    <action type="fix" dev="tfischer">
      Fixed a few things in the interbase implementation for compliance with Firebird 1.5:
      <ul>
        <li>Tables are dropped before they are created in the create-db task</li>
        <li>The style of comments in the db scripts is changed from /* */ to --</li>
        <li>Column names are no longer put into double quotes by the create-db task</li>
        <li>The template createdb.vm was added to be able to run the create-db task</li>
      </ul>
      Also, a firebird profile was added for the runtimetest, and firebird was added
      to the list of supported databases on the homepage.
    </action>
    <action type="fix" dev="tfischer" issue="TRQS287">
      Changed the name attribute of the database tag from #IMPLIED to #REQUIRED in the dtd.
    </action>
    <action type="add" dev="tfischer" issue="TRQS273">
      Added a database-layout-Howto to the docs.
    </action>
    <action type="fix" dev="tfischer">
      In Torque 3.1.1, BIT columns were treated as Strings with the value 0 and 1.
      This caused problems in various DBs which natively support BOOLEAN columns
      but do not support implicit String conversion.(e.g. HSQLDB).
      Reverted to the old behaviour, i.e. the adapter chooses the query for selects.
      The db driver uses booleans instead of integers for inserts/updates of BIT columns.
      However, this behavior breaks BIT support for Databases which do not have
      a native boolean datatype (like Oracle). For these Databases, use BOOLEANINT
      (or BOOLEANCHAR) column types for Booleans.
    </action>
    <action type="update" dev="tfischer" issue="TRQS221">
      Changed Postgres handling of boolean Values to use FALSE,TRUE instead of '0','1'
      while selecting from columns of Torque type BIT.
    </action>
    <action type="add" dev="tfischer" issue="TRQS251">
      Added support for using SQL functions in "order by".
    </action>
    <action type="update" dev="tfischer">
      Unify the behaviour of primary key columns. Until now,
      primary key columns were not filled automatically for
      idMethod=native and for platforms with
      default idMethod=identity (i.e. all databases exept oracle,
      postgresql and sapdb). Now, the default is that primary key
      columns are always filled automatically by default.
    </action>
    <action type="fix" dev="tfischer">
      Use the cascade option for dropping tables in PostgreSQL.
      This allows to drop tables which have foreign keys.
      Cascade is supported since PostgreSQL 7.3.
    </action>
    <action type="fix" dev="tfischer">
      Added missing templates for msaccess. I did not test it,
      so no idea whether msaccess is actually supported.
    </action>
    <action type="add" dev="tfischer">
      It is now possible to generate simple Beans for Torque data objects.
      Methods are supplied to create Beans from Data object and vice versa.
    </action>
    <action type="add" dev="tfischer" issue="TRQS289">
      Added Thomas Vandahl's Patch to synchronize Object.vm
      with ObjectWithManager.vm.
      This contains the following:
      <ul>
        <li>The interface attribute is now supported for objects without managers</li>
        <li>The correctSetters now also work for objects with managers</li>
        <li>The behavior for objectIsCaching=false for objects with managers
          now matches the behaviour of objects without managers</li>
        <li>tabs and spaces formatting</li>
      </ul>
    </action>
    <action type="add" dev="tfischer" issue="TRQS263">
      Add support for oracle datatype timestamp;
      limit number of digits for saving integers in oracle to 10.
    </action>
    <action type="fix" dev="tfischer" issue="TRQS267">
      Fix escaping of single quotes in datasql task.
    </action>
    <action type="add" dev="tfischer">
      Added support for schema support at generate time.
      See the Schema Support Howto.
    </action>
    <action type="remove" dev="tfischer" issue="TRQS222">
      Removed Oracle Update patch again.
      Creates invalid scripts and causes ant to fail.
      See Scarab for further details.
    </action>
    <action dev="mpoeschl" type="remove">
      Remove support for old properties (properties without 'torque.' prefix)
    </action>
    <action dev="mpoeschl" type="remove">
      Remove support for idMethod=sequence and autoincrement.
    </action>
    <action dev="mpoeschl" type="add" issue="TRQS146">
      Added support for scale.
    </action>
    <action dev="mpoeschl" type="remove">
      Remove support for stratum lifecycle interfaces.
    </action>
    <action dev="mpoeschl" type="add" issue="TRQS163">
      Add domain element to schema.xml. Domains are used to define
      attributes for columns.
    </action>
    <action dev="mpoeschl" type="update">
      Refactored generator model (removed AppData class)
    </action>
    <action dev="mpoeschl" type="fix" issue="TRQS180">
      NumberKey long constructor introduces rounding errors.
    </action>
    <action dev="mpoeschl" type="remove">
      Removed the deprecated connection pool (commons-dbcp is used as
      default since 3.1)
    </action>
    <action dev="mpoeschl" type="add">
      Changed ojb-model task to generate Object + BaseObject (like for the
      torque om).
    </action>
    <action dev="mpoeschl" type="fix">
      Fix package name for TorqueComponent in roleConfiguration.xml
    </action>
    <action type="add" dev="henning">
      Make sure that JNDI datasources are only bound if they are also
      configured. Patch suggested by M. Sean Gilligan and Roger A. Caron.
    </action>
    <action type="add" dev="henning">
      Add rudimentary schema support (see the Schema Support Howto).
    </action>
    <action type="add" dev="henning">
      Add Support for Apache Derby
    </action>
    <action type="add" dev="henning" issue="TRQS255">
      Explicitly set the name of the ID Broker thread.
      Suggested by Martin Goulet.
    </action>
    <action type="add" dev="henning" issue="TRQS254">
      Creates doSelectJoinXYZ methods that take a connection object as parameter in
      the Peer objects. Suggested by Martin Goulet.
    </action>
    <action type="add" dev="henning" issue="TRQS250">
      Patch to allow aliases columns in groupBy clauses. Patch suggested by
      Tarlika Elisabeth Schmitz.
    </action>
    <action type="add" dev="henning" issue="TRQS219">
      Merged Thomas Fischers' patch which supports left joins, right
      joins and explicit inner joins. I communicated with Thomas to make
      sure that his patch goes in ok.
    </action>
    <action type="update" dev="henning">
      Started reworking the BasePeer class, factored out some code into SQLBuilder and VillageUtils.
    </action>
    <action type="add" dev="henning">
      Make the getter names for the table column values configurable. Torque did generate
      non-Bean-Spec compliant getter names for boolean columns (get&lt;xxx&gt; instead of is&lt;xxx&gt;).
      By setting torque.correctGetters to true, this can be changed. This is a
      generator-only change, the resulting peers still run with the 3.1.1 runtime.
    </action>
    <action type="update" dev="henning">
      SQL generation for PostgreSQL now generates ID columns without default values, inserting
      the sequence values through the ID generator. The generated SQL now also contains sequence
      definitions for the tables.
    </action>
  </release>

  <release version="3.1.1" date="2004-10-26">
    <action type="update" dev="henning">
      Change PostgreSQL ID generation to use select nextval
      instead of select currval.
    </action>
    <action type="update" dev="seade" issue="TRQS235">
      Generated code contains Javadoc error "sentence is different...".
    </action>
    <action type="update" dev="seade" issue="TRQS236">
      Generated code contains Javadoc error "@param tags incorrect".
    </action>
    <action type="update" dev="henning" issue="TRQS237">
      Remove a few unused variables from the generated Object templates.
    </action>
    <action type="update" dev="henning" issue="TRQS231">
      Do not output binary column when invoking toString() from the generated objects.
    </action>
    <action type="update" dev="henning" issue="TRQS230">
      When building a criteria to represent an object, skip binary columns. Their content
      will not help much anyway and if you really insist on building an object that differs
      from an existing object only by the contents of a binary column (which implies that
      such a column might be a primary key), then you deserve to suffer. Don't do this.
      For everyone else, this change might actually make doDelete(object) work if your
      object contains a binary column.
    </action>
    <action type="update" dev="henning" issue="TRQS222">
      Add Oracle Update patch from Thierry Lach. I don't use Oracle so
      I rely on Thierry that he knows what he is doing. Ant users:
      please not the changes mentioned in the Oracle Howto.
    </action>
    <action type="update" dev="henning" issue="TRQS215">
      Add Torque Reporting to the Maven plugin. Patch contributed by Thierry Lach.
    </action>
    <action type="update" dev="henning" issue="TRQS207">
      Make org.apache.torque.util.SqlEnum public visible. The C'tor is
      still private, so this should be no problem.
    </action>
    <action type="update" dev="henning" issue="TRQS239">
      Fix a typo in the reworked Limit / Offset Code for Oracle and DB2.
      Confused pre and post.
    </action>
    <action type="update" dev="henning" issue="TRQS240">
      Fix offset and limit swap for DB2 and Oracle.
    </action>
  </release>
  <release version="3.1.1-RC3" date="2004-10-16">
    <action type="update" dev="henning">
      Add maven-generated ant-buildfiles as a courtesy to those that are
      still stuck with ant. No warranty, no support. It works for me, though.
    </action>
    <action dev="henning" type="update">
      cleaned up versioning for maven plugin (sorry for that).
    </action>
    <action type="update" dev="henning" issue="TRQS229">
      Upgrade to commons-configuration-1.0.
      Note that all applications that use Torque 3.1 and want
      to use commons-configuration 1.0 now <b>must</b> also use
      commons-collections 3.x!
    </action>
    <action type="update" dev="henning">
      Update the POMs to reflect the current style of artifact declaration.
    </action>
    <action type="update" dev="henning">
      Changed the release-changes.xml file into a maven compliant changes.xml
      file. Activated the maven-changes-report.
    </action>
    <action type="update">
        Changed the default property value for torque.output.dir
        from maven.build.dest to maven.build.dir.
        This means many of the generated files will now appear in the
        target rather than the target/classes
        directory. The properties reference was updated accordingly (a few
        missing properties were also documented).
    </action>
    <action type="update" dev="henning">
        Add missing method retrieveByPK(native type, Connection)
        method to the generated peer classes
    </action>
    <action type="add" dev="henning">
        Patrick Carl donated an XSL style sheet to convert Torque schema
        files into <a href="http://mogwai.sourceforge.net/erdesigner/erdesigner.html">mogwai ERDesigner</a> files.
    </action>
    <action type="update" dev="seade">
      Restructured maven project files based on HEAD to gain improved control
      over dependencies.
    </action>
    <action type="update" dev="seade">
      Upgrade to commons-pool-1.2 and commons-dbcp-1.2.1.
    </action>

    <action type="fix">
      Restored sql statement logging (DEBUG level) that was lost in RC2.
    </action>
    <action type="fix" issue="TRQS154">
      TIME should be enclosed in single quotes for SQL Loader.
      Thanks to Matt Finn for the patch.
    </action>
    <action type="fix" issue="TRQS226">
      Remove unneeded code in Torque maven plugin.  Thanks to
      Thierry Lach for the patch.
    </action>
    <action type="fix" issue="TRQS220">
      Torque maven plugin om zip goal doesn't work.  Thanks to Dan
      Price for the patch.
    </action>
    <action type="fix">
      Deleting an Object containing a timestamp didn't work with PostgreSQL (the
      adapter was missing the necessary method to convert the timestamp into a value
      that is understood by the databases).
    </action>
  </release>
  <release version="3.1.1-RC2" date="2004-08-27">
    <action type="fix" dev="henning">
      limit and offset handling for all databases
      other than DB2 was broken.  limit and offset
      handling for all databases has been revamped and should now work
      correctly.
    </action>
   </release>
  <release version="3.1.1-RC1" date="2004-08-26">
    <action type="update">
      Addressed a number of issues highlighted by
      <a href="http://findbugs.sourceforge.net/">FindBugs</a> in generated
      source code.
    </action>
    <action type="update">
      Upgrade to stratum-1.0-b5 and xerces-2.4.0.
    </action>
    <action type="update">
      Upgrade to commons-collections-3.0, commons-configuration-1.0-rc1,
      commons-lang-2.0 and commons-logging-1.0.4.
    </action>
    <action type="fix">
      HSQL adapter enhancements/fixes: added support for case-insensitive
      queries, added support for cascading deletes, correction to the generated
      CREATE TABLE DDL when using IDENTITY columns.  Thanks to Patrick Carl for
      the patch.
    </action>
    <action type="update">
      The <code>adapter</code> property is now used in preference to
      <code>driver</code> when building the database map.  This allows Torque
      to work when the driver setting is not what it expects - e.g. if using
      <code>com.mysql</code> driver instead of the
      <code>org.gjt.mm.mysql</code> or when using
      <a http="http://www.p6spy.org/">P6Spy</a> pass through driver for
      performance monitoring.  Thanks to Ben Hogan for the patch.
    </action>
    <action type="add">
      DB2 limit and offset support.  Thanks to Augustin Vidovic for the patch.
    </action>
    <action type="update">
      Upgraded to commons-pool-1.1 and commons-dbcp-1.1
    </action>
    <action type="update">
      Case insensitive LIKE comparisons now use ILIKE for PostgreSQL.
    </action>
    <action type="fix" issue="TRQS185">
      Corrected handling of BIT with PostgreSQL.  Note that the
      solution implemented has been tested under MySLQ and PostgreSQL only.
    </action>
    <action type="fix">
      Multiple unique constraints and indexes on a single table are now
      allocated sequential names (previously duplicate names were being
      allocated).
    </action>
    <action type="fix">
      Backported a few template fixes from Serge Huber that were committed
      to HEAD some time ago.
    </action>
    <action type="fix">
      Generate sequences correctly for PostgreSQL (i.e. leave it to
      PostgreSQL).  Note that schemas produced from the database using
      the <code>torque:jdbc</code> goal are not yet handling sequences
      correctly.
    </action>
    <action type="fix" issue="TRQD26">
      Problems with Torque tutorial.  The Torque tutorial has been
      updated to reflect the separated generator and runtime components and
      to use the Maven plugin.
    </action>
    <action type="fix">
      The generator logging configuration has been changed from DEBUG to INFO
      - this will make the day of all those people that for some reason have
      the torque-gen jar in their classpath at runtime.  <b>Hint: You don't
      need this jar to use the Torque generated object model classes.</b>
    </action>
    <action type="fix">
      The maven-plugin now provides default values for
      <code>torque.initialIDValue</code> and
      <code>torque.initialIDStep</code> so that the id table initialization
      sql is now generated correctly.
    </action>
    <action type="fix" issue="TRQS223">
      The get${pVarName} method in the Object.vm template does not
      return related objects with a negative PK.  Thanks to Nick Curry for
      the patch.
    </action>
    <action type="fix">
      Fix NOT_LIKE with no wildcard bug.
    </action>
    <action type="fix" issue="TRQS97">
      Fix bad syntax in generated model when using primary keys of
      short or byte.
    </action>
    <action type="fix" issue="TRQS149">
      For PostgreSQL the LONGVARCHAR datatype now maps to
      <em>text</em> rather than <em>bytea</em>.
    </action>
    <action type="fix" issue="TRQS190">
      Error on "byte" data type generation rules.
    </action>
    <action type="fix">
      A minor template change has been made to correctly allow
      Base[TableName]Peer.doDelete(criteria, connection) to be overridden in
      [TableName]Peer.
    </action>
    <action dev="dion" type="fix">
      Apply MAVEN-690 to the Maven plugin
    </action>
    <action dev="mpoeschl" type="update">
      updated maven-plugin to torque-3.1
    </action>
    <action dev="evenisse" type="fix">
      Fix prereqs of torque:om-zip goal in the maven plugin.
    </action>
    <action dev="dion" type="update">
      Move to log4j 1.2.8 in the maven-plugin.
    </action>
    <action dev="dion" type="update">
      Move to latest xerces in the maven plugin.
    </action>
  </release>

  <release version="3.1" date="2003-09-01">
    <action type="fix">
      SqlExpression: replace UniqueList with HashSet to improve performace for
      large IN clause.
    </action>
  </release>

  <release version="3.1-RC1" date="2003-08-25">
    <action type="fix">
      JdbcTrasformTask: error fetching foreign keys using an ODBC source.
    </action>
    <action type="fix">
      new version of village.jar fixes BOOLEANCHAR handling.
    </action>
    <action type="fix" issue="TRQ4">
      Transaction mismanagement in IDBroker.
    </action>
  </release>

  <release version="3.1-BETA1" date="2003-08-19">
    <action type="update">
      Introduced the TorqueInstance class to do away with static
      initialization woes and allow multiple instances of Torque per
      ClassLoader.
    </action>
    <action type="update">
      The generated schema-data.dtd has been changed to allow any order of
      table data entries.
    </action>
    <action type="update">
      The old Torque connection pool is deprecated. You should use the
      commons-dbcp pool.
    </action>
    <action type="update">
      Upgraded to latest commons-dbcp snapshot. The new
      SharedPoolDatasourceFactory is now used by default. Don't forget to
      upgrade your property file!
    </action>
    <action type="fix" issue="TRQS51">
      Datadump does not recognize null columns properly
    </action>
    <action type="fix" issue="TRQS85">
      Torque.initialize not reentrant
    </action>
    <action type="fix" issue="TRQS87">
      name conflict in generated java sources when using java reserved
      words (like "class") as column names. <br/>
      <code>Column.UncapitalisedJavaName</code> is now used as member name
      instead of <code>Column.Name.toLowerCase()</code> <br/>
    </action>
    <action type="fix" issue="TRQS136">
      MySQL will not accept a size definition for TEXT and BLOB fields
    </action>
    <action type="fix" issue="TRQS152">
      Oracle DB using Criteria to select by Data doesn't work
    </action>
    <action type="fix" issue="TRQS174">
      Problems on DB2 with BINARY, VARBINARY and INTEGER.
    </action>
    <action type="fix" issue="TRQS178">
      use sql autoincrement only if idMethod native.<br/>
      So you have to set idMethod="native" (table) plus autoincrement="true"
      (column) to generate the autoincrement code in your sql.
    </action>
  </release>

  <release version="3.1-ALPHA2" date="2003-06-28">
    <action type="update" issue="TRQS2">
      use commons-logging. <br/>
      BaseObject.log() and .getLog() now return a Log object.
    </action>
    <action type="update">
      The DTD resolver will now use the database.dtd from the classpath if the
      DTD is http://db.apache.org/torque/dtd/database_3_1.dtd.
    </action>
    <action type="update">
      LargeSelect now implements Serializable, provides better debugging
      information and further methods for maintaining search parameters.
    </action>
    <action type="update">
      LargeSelect is now thread safe when calling invalidateResult
      (thanks to Soteri Panagou &lt;panagos@midetech.com&gt;).
    </action>
    <action type="update">
      Updated ojb tasks to work for OJB 1.0(rc3). The generated modell is very
      simple. Support for advanced features will be added in the future.
    </action>
    <action type="fix" issue="TRQS20">
      mysql: "on delete cascade" not generated
    </action>
    <action type="fix" issue="TRQS101">
      Sql2Xml task should generate a dtd compliant xml
    </action>
    <action type="fix" issue="TRQS121">
      native limit and offset breaks on postgresql 7.3
    </action>
    <action type="fix" issue="TRQS138">
      NullPointer Exception When not setting the DbName explicitly
    </action>
    <action type="fix" issue="TRQS139">
      wrong invocation of populateObject in peer class
    </action>
    <action type="fix" issue="TRQS141">
      Table with no primary key results an empty ADD PRIMARY KEY ()
    </action>
    <action type="fix" issue="TRQS153">
      BasePeer.doSelect(Criteria, Connection) calls executeQuery
      without offset and limit.
    </action>
    <action type="fix" issue="TRQS159">
      Invalid syntaxes for Hypersonic when using indexes.
    </action>
    <action type="fix" issue="TRQS165">
      columns in an external schema caused Manager imports to be
      generated
    </action>
    <action type="fix">
      Corrected deadly multi-CPU thread deadlock problem discovered by
      Ed Korthof &lt;ed@apache.org&gt; and John McNally
      &lt;jmcnally@apache.org&gt;.  The problem was due to emulation
      of synchronization using an int counter (to improve performance
      by avoiding Java "synchronized" keyword).  Post-increment and
      decrement operators compile to three op codes (with Sun's JDK
      1.3.1 for Linux), unsafe on a multi-CPU box.
    </action>
  </release>
  <release version="3.1-ALPHA1" date="2003-04-17">
    <action type="update">
      Removed all deprecated stuff from the java code. Make sure to not get
      any deprecation warnings before you switch to 3.1!
    </action>
    <action type="update">
      The generator was separated.
    </action>
    <action type="update" issue="TRQS145">
      Replace StringStack as it is deprecated. The return type for some
      public methods changed (but as they are only used internally you should
      not need to change anything in your code).
    </action>
    <action type="update" issue="TRQS95">
      Junit tests for sql2xml task (SQLToAppDataTest)
    </action>
    <action type="update">
      Package names for generated java classes are now handled in the model
      (not the templates)
    </action>
    <action type="update">
      The DTD resolver will now use the database.dtd from the classpath if the DTD
      is http://jakarta.apache.org/turbine/dtd/database_3_1.dtd.  This change
      allows XML editor to use the proper version of the DTD.
    </action>
    <action type="fix" issue="TRQ18">
      Criteria.addDate is broken
    </action>
    <action type="fix" issue="TRQ19">
      recursive external schemas fail
    </action>
    <action type="fix" issue="TRQ47">
      limit and offset patch for Oracle
    </action>
    <action type="fix" issue="TRQD21">
      torque schema-reference.html bug: unique-column
    </action>
    <action type="fix" issue="TRQS29">
      fix endless loop in Monitor
    </action>
    <action type="fix" issue="TRQS93">
      fix endless loop in Monitor
    </action>
    <action type="fix" issue="TRQS35">
      id-table-schema.xml has no database name
    </action>
    <action type="fix" issue="TRQS47">
      bug in torque generated copy() method
    </action>
    <action type="fix" issue="TRQS90">
      SQLScanner reports wrong line numbers in Window platforms and
      behaves incorrectly when finding the minus sign
    </action>
    <action type="fix" issue="TRQS98">
      Documentation changes in ForeignKey.java
    </action>
    <action type="fix" issue="TRQS104">
      Use of null Object
    </action>
    <action type="fix" issue="TRQS116">
      Database.java NPEs on bad foreign key
    </action>
    <action type="fix" issue="TRQS118">
      Generated OM doesn't compile when using FLOAT as primary key
    </action>
    <action type="fix" issue="TRQS122">
      Join methods are not generated.
    </action>
    <action type="fix" issue="TRQS132">
      Database.java using null object
    </action>
  </release>

  <release version="3.0" date="2002-12-03">
    <action type="fix" issue="TRQS59">
      torque-jdbc-transform should not show password
    </action>
    <action type="fix" issue="TRQS86">
      uses @DATABASE@ variable for default database adapter instead
      of mysql
    </action>
    <action type="fix" issue="TRQS61">
      more concise name on Criteria.setSingleRecord
    </action>
    <action type="fix" issue="TRQS73">
      Criteria.toString() modifies the Criteria object
    </action>
    <action type="fix" issue="TRQS81">
      getPrimaryKey() throws NullPointerException is pk is Object type
      and null.
    </action>
    <action type="fix" issue="TRQS82">
      Constructor for DateKey and StringKey will throw NullPointer
      exception if passed null value
    </action>
    <action type="fix">
      sql-generation: create foreign keys for hsqldb
    </action>
  </release>

  <release version="3.0-RC2" date="2002-11-20">
    <action type="update" issue="TRQ2">
      the TorqueSQLExec task ignores lines starting with '//', '--' or
      'REM ' (notice the space!!).
    </action>
    <action type="update" issue="TRQ24">
      added doDelete(ObjectKey) methods to the generated Peers.
    </action>
    <action type="update">
      Added a Maven plugin for executing Torque commands and updated the
      Maven Howto to reflect the addition.
    </action>
    <action type="update">
      Added support for MS Access (using the JDBC-ODBC Bridge driver).
    </action>
    <action type="update">
      Upgraded village to 2.0-dev.
    </action>
    <action type="fix" issue="TRQ37">
      Problem retrieving object/row count using Criteria
    </action>
    <action type="fix" issue="TRQD6">
      update README (ant 1.5 is required)
    </action>
    <action type="fix" issue="TRQS68">
      remove invalid pathelement in build-torque.xml
    </action>
    <action type="fix" issue="TRQS75">
      Object.vm generates files which will not compile.
    </action>
    <action type="fix" issue="TRQS77">
      postgres - Incosistent generation errors
    </action>
    <action type="fix">
      When generating an XML schema from a SQL Schema, the output xml
      contains a javaname attribute (notice the lowercase "n" in javaname)
    </action>
    <action type="fix">
      Doc generation (anakia format): escape characters not allowed in XML
    </action>
  </release>

  <release version="3.0-RC1" date="2002-10-26">
    <action type="update" issue="TRQ41">
      make getPrimaryKey return ObjectKey but getPkField return the type
      it is.
    </action>
    <action type="update" issue="TRQS37">
      Torque 3.0 doesn't work with Intake in Turbine 2.x's Retrievable
      interface. Added a property <code>torque.retrievableInterface</code>
      (defaults to the turbine-2 version). <br/>
      Fulcrum users have to set the property to
      <code>org.apache.fulcrum.intake.Retrievable</code>
    </action>
    <action type="update" issue="TRQ45">
      Added static factory methods to create instances of SimpleKey
    </action>
    <action type="update" issue="TRQS7">
      minor corrections for OJB template
    </action>
    <action type="update" issue="TRQS13">
      torque.overloadKeySetters obsoleted
    </action>
    <action type="update">
      added support for the new com.mysql.jdbc.Driver
    </action>
    <action type="update">
      improved JDBC to DB2 mappings.
    </action>
    <action type="update" issue="TRQ35">
      improved JDBC to SAPDB mappings
    </action>
    <action type="update">
      peers: do not create the JoinAll method if any of the foreign keys
      reference external tables.
    </action>
    <action type="update">
      new property 'torque.generateDeprecated' ( = 'true'). <br/>
      if set to 'false' deprecated methods in the om/peer classes are not
      generated
    </action>
    <action type="fix" issue="TRQ44">
      Fix ComboKey.setValue(String) to avoid infinite loop
    </action>
    <action type="fix" issue="TRQ26">
      string to date conversion in MSSQL/Sybase
    </action>
    <action type="fix" issue="TRQ28">
      booleanint/booleanchar fails with javaType="object"
    </action>
    <action type="fix" issue="TRQ31">
      ComboKey(String) ctor out-of-memory error
    </action>
    <action type="fix" issue="TRQ39">
      Data Dump task may generate invalid XML output
    </action>
    <action type="fix" issue="TRQ44">
      add a NumberKey(Number key) constructor and added methods to get
      native datatypes (byte, int, long, float, double)
    </action>
    <action type="fix" issue="TRQ45">
      add static keyFor methods to generate appropriate SimpleKey
      instance
    </action>
    <action type="fix" issue="TRQS1">
      several small patches to correct db2 sql generation
    </action>
    <action type="fix" issue="TRQS15">
      Torque gererated code does not compile
    </action>
    <action type="fix" issue="TRQS33">
      fix foreign key generation statements for db2
    </action>
    <action type="fix" issue="TRQS40">
      id-table-init-sql creates empty .sql file
    </action>
    <action type="fix">
      bugzilla #12626: Peer.vm was missing the DateKey import.
    </action>
    <action type="fix">
      postgres: Unable to identify an operator '=' for types 'smallint' and
      'boolean'
    </action>
    <action type="fix">
      sapdb: generate valid sql for primary keys
    </action>
    <action type="fix">
      objects: avoid npe and set id to null if the object was null
    </action>
    <action type="fix">
      objects: the generation of the BaseClass and the Interface is working even
      if the Interface is empty.
    </action>
  </release>

  <release version="3.0-B4" date="2002-08-22">
    <action type="update">
      jdbc2pool package dissolved (the old Torque pool is back in the torque
      codebase, the new pool is part of commons-dbcp now)
    </action>
    <action type="update">
      torque uses maven-1.0-beta-6 as default build system.
    </action>
    <action type="update">
      renamed all properties (torque prefix added). <br/>
      the old property names still work but they are deprecated and support will
      be removed after the 3.0 release.
    </action>
    <action type="fix">
      aliases not recognized in orderBy column
    </action>
  </release>

  <release version="3.0-B3" date="2002-07-17">
    <action type="update">
       New Package names are now in use.

      <table>
        <tr>
          <th>old name</th>
          <th>new name</th>
        </tr>
        <tr>
          <td>org.apache.turbine.torque.*</td>
          <td>org.apache.torque.*</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.adapter.*</td>
          <td>org.apache.torque.adapter.*</td>
        </tr>
        <tr>
          <td>org.apache.turbine.services.db.TurbineDB</td>
          <td>org.apache.torque.Torque</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.map.IDMethod</td>
          <td>org.apache.torque.adapter.IDMethod</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.map.MapBuilder</td>
          <td>org.apache.torque.map.MapBuilder</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.map.ColumnMap</td>
          <td>org.apache.torque.map.ColumnMap</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.map.DatabaseMap</td>
          <td>org.apache.torque.map.DatabaseMap</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.map.TableMap</td>
          <td>org.apache.torque.map.TableMap</td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.Persistent</td>
          <td>org.apache.torque.om.Persistent</td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.Retrievable</td>
          <td><i>removed</i></td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.Retriever</td>
          <td><i>removed</i></td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.RetrieverFactory</td>
          <td><i>removed</i></td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.BaseObject</td>
          <td>org.apache.torque.om.</td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.ComboKey</td>
          <td>org.apache.torque.om.ComboKey</td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.DateKey</td>
          <td>org.apache.torque.om.DateKey</td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.NumberKey</td>
          <td>org.apache.torque.om.NumberKey</td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.ObjectKey</td>
          <td>org.apache.torque.om.ObjectKey</td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.SimpleKey</td>
          <td>org.apache.torque.om.SimpleKey</td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.StringKey</td>
          <td>org.apache.torque.om.StringKey</td>
        </tr>
        <tr>
          <td>org.apache.turbine.om.peer.BasePeer</td>
          <td>org.apache.torque.util.BasePeer</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.IdGenerator</td>
          <td>org.apache.torque.oid.IdGenerator</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.AutoIncrementIdGenerator</td>
          <td>org.apache.torque.oid.AutoIncrementIdGenerator</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.Criteria</td>
          <td>org.apache.torque.util.Criteria</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.IDBroker</td>
          <td>org.apache.torque.oid.IDBroker</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.IDGeneratorFactory</td>
          <td>org.apache.torque.oid.IDGeneratorFactory</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.LargeSelect</td>
          <td>org.apache.torque.util.LargeSelect</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.Query</td>
          <td>org.apache.torque.util.Query</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.SequenceIdGenerator</td>
          <td>org.apache.torque.oid.SequenceIdGenerator</td>
        </tr>
        <tr>
          <td>org.apache.turbine.util.db.SqlExpression</td>
          <td>org.apache.torque.util.SqlExpression</td>
        </tr>
      </table>
    </action>
    <action type="fix">
      API changed: Torque uses List instead of Vector. <br/>
      e.g. BasePeer.doSelect() returns a List now
    </action>
    <action type="fix">
      the pool packages has been removed <br/>
      commons-jdbc2pool is used instead.
    </action>
    <action type="update">
      new idMethod NATIVE. this replaces SEQUENCE and AUTOINCREMENT
    </action>
    <action type="update">
      support for axion added
    </action>
    <action type="fix">
      fixed logging when category is null.
    </action>
  </release>
  </body>
</document>

