## Changes

### Release History

Version | Date | Description
--- | --- | ---
3.3 | 2008-02-29 |
3.3-RC2 | 2007-02-26 |
3.3-RC1 | 2006-11-23 |
3.2-rc3 | 2005-11-13 |
3.2-rc2 | 2005-09-13 |
3.2-rc1 | 2005-07-19 |
3.1.1 | 2005-00-26 |
3.1.1-RC3 | 2005-00-16 |
3.1.1-RC2 | 2004-08-27 |
3.1.1-RC1 | 2004-08-26 |
3.1 | 2003-09-01 |
3.1-RC1 | 2003-08-25 |
3.1-BETA1 | 2003-08-19 |
3.1-ALPHA2 | 2003-06-28 |
3.1-ALPHA1 | 2003-05-07 |
3.0 | 2002-12-03 |
3.0-RC2 | 2002-11-20 |
3.0-RC1 | 2002-10-26 |
3.0-B4 | 2002-08-22 |
3.0-B3 | 2002-07-17 |

### Release 3.3 – 2008-02-29

Type | Changes | By
--- | --- | ---
| 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. | 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. | tfischer
| 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. Fixes TORQUE-53. | 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. | gmonroe
| Maven 2 plugin: Added the attribute delimiterType for the sqlExec goal. | tfischer
| Maven 2 plugin: changed the default value of the parameter "suffix" in the id-table-init-sql goal to "-idtable-init" (was: ""). This allows for automatic execution of the id-table-init-sql files in the sqlExec goal with default settings. | tfischer
| Sybase: Columns where the attribute "required" is not set or set to false are now created explicitly with suffix "NULL". Fixes TORQUE-105. Thanks to Sylvain Benoist. | tfischer
| Changed Type Mappings for Sybase: Torque type TIME is now mapped to SQL type TIME (was: SQL type TIMESTAMP) Torque type CLOB is now mapped to SQL type TEXT (was: SQL type CLOB, which does not exist in Sybase) Torque type BLOB is now mapped to SQL type IMAGE (was: SQL type BLOB, which does not exist in Sybase) | tfischer
| Criterions with an integer value will now be set using PreparedStatemet#setInt() when doing a PsSelect. | tfischer
| Integrated Village into Torque. Thanks to Henning, Jean, Jon and Scott for the paperwork. | tv
| 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. Fixes TORQUE-86. Thanks to Will Glass-Husain. | gmonroe
| An exception is now thrown on an attempt to update a modified object without a primary key. The previous behaviour was to fail silently. Fixes TORQUE-69. | tfischer
| Corrected invalid cast in TorqueRuntimeException.splitStackTrace. Fixes TORQUE-103. Thanks to Jonathan Purvis. | tfischer
| Remove 'COMMENT ON...' output from generated SQL for Sybase as these commands do not exist in Sybase's sql. Fixes TORQUE-104. Thanks to Sylvain Benoist. | tfischer
| 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. Fixes TORQUE-91. | tfischer
| Create nicely trimmed output in the generator. Fixes TORQUE-71. Thanks to Thoralf Rickert. | tfischer
| Implemented the goal id-broker-init-sql in the Maven2 plugin. Fixes TORQUE-101. Thanks to Marc Kannegiesser. | tfischer
| The suffix parameter to the Maven2-plugin's sql task now works. Thanks to Marc Kannegiesser. | tfischer
| Added copy(..) and add<ForeignKey>(..) methods with a connection parameter. Fixes TORQUE-99. Thanks to Tobias Hilka. | tfischer
| Updated JCS dependency to version 1.3 and fixed related deprecation issues. | tv
| Avoid to call JDK 1.5 code when creating BigDecimals. Fixes TORQUE-97. Thanks to Markus Müller. | tv
| OrderBy now accepts column names without a dot. No additional processing is made for these. Fixes TORQUE-89. Thanks to Stefan Birrer. | tfischer
| Fixed Null Pointer Exceptions in Criteria.equals() and Criteria.hashCode() if joins are null. Fixes TORQUE-90. Thanks to Sean Gilligan. | tfischer
| Changed the maven2 plugin's datadump goal to accept only a single schema xml. Multiple schema xmls produced illegal output. | tfischer
| Fixed the maven2 plugin's datasql goal to do the same as the ant and maven1 datasql task. | tfischer
| Added a datadtd goal to the maven2 plugin. | tfischer
| changed the artifact id of some maven2 artifacts: runtime -> torque-runtime, generator -> torque-generator, templates -> torque-templates. This change only affects maven2 users. | tfischer
| Changed the group id of the maven2 artifacts from org.apache.db.torque to org.apache.torque. This change only affects maven2 users. | tfischer
| Fixed problem with somePeer.doDelete(Criteria) if criteria contains a join. Fixes TORQUE-93. | tfischer
| 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. | gmonroe
| Fixed handling of the enableJava5Features config parameter in the maven 2 plugin. Fixes TORQUE-88. | tfischer
| Fixed handling of select statements in mysql and postgresql if offset is set but limit is not set in a query. Fixes TORQUE-87. | tfischer

### Release 3.3-RC2 – 2007-02-26

Type | Changes | By
--- | --- | ---
| Fix the handling of interfaces while keeping backward compatibility. Add documentation and test cases. Fixes TORQUE-76. Thanks to Ronny Völker. | tv
| In the JdbcTransformTask of the generator, the attribute "default" is only added to the generated schema if its value is not empty. Fixes TORQUE-80. Thanks to Brian Telintelo. | tfischer
| Added check whether Torque is initialized in Torque.getConnection(). If Torque is not initialized, a corresponding TorqueException is thrown;. Fixes TORQUE-79. | 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. | tfischer
| Fixed the lifecycle integration and dependency resolution of the om goal in the maven 2 plugin. Thanks to Jeffrey D. Brekke. | tfischer
| 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. Fixes TORQUE-68. | 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. | tv
| 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. | tfischer
| Added the TEXT sql type in postgresql to the list of types where size and scale is silently dropped in sql generation. | tfischer
| Made the password parameter optional in the sqlexec task in the maven2 plugin. Empty passwords work for some databases. | tfischer
| Added missing log4j jar to generator dependencies. Fixes TORQUE-73. | tfischer
| Improved Derby generator platform implimentation to support correctly sized BINARY and VARBINARY using the SizedAsBitDataDomain. Also fixed problems with the BIT and TINYINT mappings. | gmonroe
| Added a new Generator model Domain subclass called SizedForBitDataDomain to support the DB2/Derby CHAR/VARCHAR (size) AS BIT DATA format. | gmonroe
| Fixed template package references that caused bad code to be generated if non-default packages were used. | gmonroe

### Release 3.3-RC1 – 2006-11-23

Type | Changes | By
--- | --- | ---
| Fixed a synchronisation issue in the getDateString() method in the database adapter for postgresql. | tfischer
| Wrong caching of method calls with more than three arguments in MethodResultCache. Fixes TORQUE-63. Thanks to Ronny Völker. | tv
| The Column names TABLE_NAME and DATABASE_NAME are now legal column names. Fixes TORQUE-44. Thanks to Greg Monroe. | tfischer
| Added a maven 2 plugin. Fixes TORQUE-2. Thanks to Raphael Pieroni. | tfischer
| Fixed handling of escaping (by backslashes) for LIKE clauses. This included fixing the general handling of backslashes for several databases. Fixes TORQUE-57. | tfischer
| Booleanchar and Booleanint now work for chained (and'ed, or'ed) Criterions. Fixes TORQUE-59. | tfischer
| Added support for option tags for most elements in the database.xml for usage with custom templates. Fixes TORQUE-27. Thanks to Greg Monroe. | tfischer
| Limit and Offset work now correctly if applied to joined tables which contain the same column name in oracle. Fixes TORQUE-10. | tfischer
| The variable CLASS_NAME in the map builders is now filled correctly if the build property torque.subpackage.map is set. Fixes TORQUE-56. Thanks to Gustavo Fernandez. | tfischer
| Added support for customizing generator templates. Fixes TORQUE-50. Thanks to Greg Monroe. | tfischer
| Add a "serialVersionUID" to the generated classes that implement Serializable. The entry is generated if "addTimeStamp" is true. This should remove quite a number of warnings when using Torque generated classes. | tv
| Use encoding in the header of schema.xml files instead of default encoding to parse the schema.xml files. Fixes TORQUE-49. | tfischer
| Provided generic typed wrappers for methods in BasePeer when torque.enableJava5Features is set to true. Fixes TORQUE-31. Thanks to Thoralf Rickert. | tfischer
| The default package for generated classes was changed from org.apache.torque to torque.generated. Fixes TORQUE-37. Thanks to Greg Monroe. | tfischer
| Selects for BOOLEANCHAR and BOOLEANINT now work for aliased tablenames and joined tables. |
| 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. The old behaviour can be regained by setting the generator property torque.deprecated.uppercasePeer to true. Fixes TORQUE-44. Thanks to Thoralf Rickert and Greg Monroe. | tfischer
| Simplified the Torque Avalon component. | tv
| Provided support for user-loadable DB adapters. | tv
| Fixed MS-SQL failure in LargeSelect. Fixes TORQUE-20. Thanks to Greg Monroe. | tv
| Fixed several methods not using JavaName in Peer.vm. Thanks to Thoralf Rickert for the patch. Fixes TORQUE-43. Thanks to Thoralf Rickert. | tv
| 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. Fixes TORQUE-42. Thanks to Federico Fissore. | 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. | tv
| 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. Fixes TORQUE-41. Thanks to Thoralf Rickert. | tfischer
| Refined guesswork for detecting column names out of functions, clauses etc. This is important e.g. for orderBy Statements like "order by table.column in (1,2,3)" or "order by 100 < table.column". Fixes TORQUE-33. Thanks to Jacob Champlin. | tfischer
| 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. Fixes TORQUE-30. Thanks to Patrick Carl. | tfischer
| Added setByName and setByPosition methods in the generated object classes that match the already existing getByName and getByPosition methods. Fixes TORQUE-26. Thanks to Greg Monroe. | tfischer
| 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. Fixes TORQUE-28. Thanks to Mojmir Hanes. | tfischer
| A database map can now load all contained tableMaps using its method databaseMap.initialize(). Fixes TORQUE-22. Thanks to Greg Monroe. | tfischer
| The database maps now provide all information from the schema.xml. Fixes TORQUE-22. Thanks to Greg Monroe. | tfischer
| Improved performance for sybase limit using SET ROWCOUNT. Fixes TORQUE-25. Thanks to Martin Goulet. | tfischer
| Added methods for shallow copies into the generated objects. Fixes TORQUE-23. Thanks to Thoralf Rickert. | tfischer
| Fixed foreign key constraint generation for Firebird. Fixes TORQUE-6. Thanks to Joerg Friedrich. | tfischer
| Added createdb-template for MS-SQL. Fixes TORQUE-18. Thanks to Greg Monroe. | tfischer
| Corrected datatype Mapping for MS-SQL: Torque type BLOB is now mapped to MS-SQL type IMAGE (was BLOB in Torque 3.2, not working). Torque type CLOB is now mapped to MS-SQL type TEXT (was CLOB in Torque 3.2, not working). Fixes TORQUE-19. Thanks to Greg Monroe. | tfischer
| Fixed bug in bean generation when a table has several references to another table. Fixes TORQUE-21. Thanks to Nicolas Le Griel. | tfischer
| Added new firebird database adapter. Date Strings returned by the interbase and firebird adapters are now escaped. Fixes TORQUE-4. Thanks to Joerg Friedrich. | tfischer
| Corrected datatype Mappings for firebird: Torque type char is now mapped to firebird type char (was varchar). Torque type double is now mapped to firebird type double precision (was double). Torque type booleanchar is now mapped to firebird type char(1) (was varchar(1)). Fixes TORQUE-4. Thanks to Joerg Friedrich. | tfischer
| Corrected Mapping for Type LONGVARCHAR for Derby. Fixes TRQS356. | tfischer
| Added dummy template for DB creation for DB2. Fixes TRQS362. | tfischer
| 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. Fixes TORQUE-5. | tfischer
| Added a new convenience method, Transaction.begin(), which is the same as Transaction.begin(Torque.getDefaultDb()). | 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. | tfischer
| The IdBroker is now only started for a database if the IdMethod idBroker is used in that database. | tfischer
| Use BigDecimal(double) constructor so as to help code compiled under JDK 1.5 execute correctly under earlier JDKs (See https://bugs.eclipse.org/bugs/show_bug.cgi?id=121325 for the related Eclipse bug). | seade
| Update to the Avalon components of Torque. The component now understands Merlin- and YAAFI-type context entries and provides again all methods from TorqueInstance. | tv
| HSQL's autoincrement columns now start with one instead of zero. Thanks to Patrick Carl for an early version of the patch. Fixes TRQS335. | tfischer
| IgnoreCase in PsSelects now also takes into account Criterion's setIgnoreCase(). Thanks to Robert Dietrick for an early version of the patch. Fixes TRQS345. | 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. | tfischer
| Changed behaviour for a limit of zero: (criteria.setLimit(0)): If the db supports native limit, a limit of zero returns zero datasets. if the db does not support native limit, a limit of zero causes a TorqueException (thanks to village :-() The former behaviour was: A limit of zero returns all datasets. | tfischer
| Fixed case-insensitive order by for hsqldb. | tfischer
| Added the table descriptions from the schema.xml to the comments of the generated classes. Thanks to Thoralf Rickert for the patch. | tfischer
| Added Java5 generics support for the generated classes. Thanks to Thoralf Rickert for the patch. | tfischer
| Formatting of the html documentation generated by the generator is now done by css stylesheets. | tfischer
| Subqueries are now supported. This has caused Criterion.appendTo(StringBuffer) to declare throwing a Torque Exception. Fixes TRQS305. | tfischer
| BaseObject.equals() does not return true anymore if the objects do not have the same class. Thanks to Patrick Carl for the patch. Fixes TRQS133. | tfischer
| Extended support for derby: IdMethod native is now supported. Added mappings for Torque types LONGVARCHAR, BINARY and VARBINARY. Implemented the methods getMaxColumnNameLength(), hasScale() and hasSize() in PlatformDerbyImpl. 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. The SQL for the creation of Indices is now generated correctly (a CRLF was missing at the end). Thanks to Johnny Macchione for the patches. | 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 "CREATE TABLE" statement instead of defining them in the "CREATE TABLE" statement. Note that foreign keys are ignored by mysql except in InnoDB tables. Thanks to Thoralf Rickert for suggesting the patch. Fixes also TRQS278. | tfischer

### Release 3.2-rc3 – 2005-11-13

Type | Changes | By
--- | --- | ---
| Fixed support for limit and offset for Derby in the runtime. | 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. | tfischer
| 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. | seade
| 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. | tfischer
| Fixed importing references for foreign keys if the object for the foreign key is in another package. Thanks to Robert Dietrick for the patch. Fixes TRQS325. | 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 | tfischer
| The DataSourceFactory with the name "default" is created automatically again. This was removed when fixing TRQS308, but is required by Turbine. Fixes TRQS322. | tfischer
| 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. Fixes TRQS323. | tfischer

### Release 3.2-rc2 – 2005-09-13

Type | Changes | By
--- | --- | ---
| LargeSelect now also works for databases which do not support native limit and offset. Fixes TRQS318. | tfischer
| Added necessary addJoin() statenments to the generated Methods XXXPeer.doSelectAllExceptYYY(). Thanks to Thomas Vandahl for the patch. Fixes TRQS320. | tfischer
| Added the methods getCachedInstance() and getCachedInstanceImpl() to the BaseManager.vm template. Added the method getXXX(Connection) for associated objects to the ObjectWithManager.vm template. Thanks to Thomas Vandahl for the patch. | tfischer
| For HSQLDB, the generator now generates NULL/NOT NULL, DEFAULT and IDENTITY declarations | tfischer
| The generated beans are now serializable. | 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 | 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. | tfischer
| Added templates site reference to menus in runtime, generator, maven-plugin. | henning
| Added Findbugs report to the site. | henning
| Updated mailing list references to point to mod_mbox. | henning
| Updated all SCM references to point to Subversion. | henning
| Added the following generator properties to allow detailed control where the target classes are generated: torque.subpackage.peer, torque.subpackage.object, torque.subpackage.map, torque.subpackage.manager, torque.subpackage.bean, torque.subpackage.base, torque.subpackage.base.bean. See the reference for the generator properties for more information. Fixes TRQS306. | tfischer

### Release 3.2-rc1 – 2005-07-19

Type | Changes | By
--- | --- | ---
| 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 | 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. | tfischer
| Changed runtime configuration checking. It is now required having set the following properties: torque.database.default, torque.database.<defaultDbName>.adapter, torque.dsfactory.<defaultDbName>.factory. This was done in order to detect misconfiguration more easily. Fixes TRQS308. | 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. | tfischer
| If Torque is not yet initialized, it does now return null as name of the default database (not "default" as it was before). | tfischer
| 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. Fixes TRQS252. | tfischer
| Torque.shutdown() now closes the datasourcee initialized by Torque, except the Datasource obtained via a JndiDataSourceFactory. Fixes TRQS294. | tfischer
| Added a "protected" attribute to the column. If set to true, the getters and setters of a column are protected rather than public. Fixes TRQS306. | tfischer
| If a Peer class cannot instantiate its Map Builder, a Runtime Exception is now thrown (instead of just logging the error). Fixes TRQS304. | 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. | tfischer
| 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. Fixes TRQS286. | tfischer
| For db2, msaccess, oracle, postgresql and sybase, the description attributes from the schema.xml are inserted as comments into the database. Fixes TRQS266. | 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. | tfischer
| Fixed a few things in the interbase implementation for compliance with Firebird 1.5: Tables are dropped before they are created in the create-db task. The style of comments in the db scripts is changed from /* */ to --. Column names are no longer put into double quotes by the create-db task. The template createdb.vm was added to be able to run the create-db task. Also, a firebird profile was added for the runtimetest, and firebird was added to the list of supported databases on the homepage. | tfischer
| Changed the name attribute of the database tag from #IMPLIED to #REQUIRED in the dtd. Fixes TRQS287. | tfischer
| Added a database-layout-Howto to the docs. Fixes TRQS273. | 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. | tfischer
| Changed Postgres handling of boolean Values to use FALSE,TRUE instead of '0','1' while selecting from columns of Torque type BIT. Fixes TRQS221. | tfischer
| Added support for using SQL functions in "order by". Fixes TRQS251. | 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. | 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. | tfischer
| Added missing templates for msaccess. I did not test it, so no idea whether msaccess is actually supported. | 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. | tfischer
| Added Thomas Vandahl's Patch to synchronize Object.vm with ObjectWithManager.vm. This contains the following: The interface attribute is now supported for objects without managers. The correctSetters now also work for objects with managers. The behavior for objectIsCaching=false for objects with managers now matches the behaviour of objects without managers. tabs and spaces formatting. Fixes TRQS289. | tfischer
| Add support for oracle datatype timestamp; limit number of digits for saving integers in oracle to 10. Fixes TRQS263. | tfischer
| Fix escaping of single quotes in datasql task. Fixes TRQS267. | tfischer
| Added support for schema support at generate time. See the Schema Support Howto. | tfischer
| Removed Oracle Update patch again. Creates invalid scripts and causes ant to fail. See Scarab for further details. Fixes TRQS222. | tfischer
| Remove support for old properties (properties without 'torque.' prefix) | mpoeschl
| Remove support for idMethod=sequence and autoincrement. | mpoeschl
| Added support for scale. Fixes TRQS146. | mpoeschl
| Remove support for stratum lifecycle interfaces. | mpoeschl
| Add domain element to schema.xml. Domains are used to define attributes for columns. Fixes TRQS163. | mpoeschl
| Refactored generator model (removed AppData class) | mpoeschl
| NumberKey long constructor introduces rounding errors. Fixes TRQS180. | mpoeschl
| Removed the deprecated connection pool (commons-dbcp is used as default since 3.1) | mpoeschl
| Changed ojb-model task to generate Object + BaseObject (like for the torque om). | mpoeschl
| Fix package name for TorqueComponent in roleConfiguration.xml | mpoeschl
| Make sure that JNDI datasources are only bound if they are also configured. Patch suggested by M. Sean Gilligan and Roger A. Caron. | henning
| Add rudimentary schema support (see the Schema Support Howto). | henning
| Add Support for Apache Derby | henning
| Explicitly set the name of the ID Broker thread. Suggested by Martin Goulet. Fixes TRQS255. | henning
| Creates doSelectJoinXYZ methods that take a connection object as parameter in the Peer objects. Suggested by Martin Goulet. Fixes TRQS254. | henning
| Patch to allow aliases columns in groupBy clauses. Patch suggested by Tarlika Elisabeth Schmitz. Fixes TRQS250. | henning
| 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. Fixes TRQS219. | henning
| Started reworking the BasePeer class, factored out some code into SQLBuilder and VillageUtils. | henning
| Make the getter names for the table column values configurable. Torque did generate non-Bean-Spec compliant getter names for boolean columns (get<xxx> instead of is<xxx>). 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. | 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. | henning

### Release 3.1.1 – 2005-00-26

Type | Changes | By
--- | --- | ---
| Change PostgreSQL ID generation to use select nextval instead of select currval. | henning
| Generated code contains Javadoc error "sentence is different...". Fixes TRQS235. | seade
| Generated code contains Javadoc error "@param tags incorrect". Fixes TRQS236. | seade
| Remove a few unused variables from the generated Object templates. Fixes TRQS237. | henning
| Do not output binary column when invoking toString() from the generated objects. Fixes TRQS231. | henning
| 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. Fixes TRQS230. | henning
| 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. Fixes TRQS222. | henning
| Add Torque Reporting to the Maven plugin. Patch contributed by Thierry Lach. Fixes TRQS215. | henning
| Make org.apache.torque.util.SqlEnum public visible. The C'tor is still private, so this should be no problem. Fixes TRQS207. | henning
| Fix a typo in the reworked Limit / Offset Code for Oracle and DB2. Confused pre and post. Fixes TRQS239. | henning
| Fix offset and limit swap for DB2 and Oracle. Fixes TRQS240. | henning

### Release 3.1.1-RC3 – 2005-00-16

Type | Changes | By
--- | --- | ---
| 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. | henning
| cleaned up versioning for maven plugin (sorry for that). | henning
| Upgrade to commons-configuration-1.0. Note that all applications that use Torque 3.1 and want to use commons-configuration 1.0 now must also use commons-collections 3.x!. Fixes TRQS229. | henning
| Update the POMs to reflect the current style of artifact declaration. | henning
| Changed the release-changes.xml file into a maven compliant changes.xml file. Activated the maven-changes-report. | henning
| 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). |
| Add missing method retrieveByPK(native type, Connection) method to the generated peer classes | henning
| Patrick Carl donated an XSL style sheet to convert Torque schema files into mogwai ERDesigner (http://mogwai.sourceforge.net/erdesigner/erdesigner.html) files. | henning
| Restructured maven project files based on HEAD to gain improved control over dependencies. | seade
| Upgrade to commons-pool-1.2 and commons-dbcp-1.2.1. | seade
| Restored sql statement logging (DEBUG level) that was lost in RC2. |
| TIME should be enclosed in single quotes for SQL Loader. Thanks to Matt Finn for the patch. Fixes TRQS154. |
| Remove unneeded code in Torque maven plugin. Thanks to Thierry Lach for the patch. Fixes TRQS226. |
| Torque maven plugin om zip goal doesn't work. Thanks to Dan Price for the patch. Fixes TRQS220. |
| 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). |

### Release 3.1.1-RC2 – 2004-08-27

Type | Changes | By
--- | --- | ---
| 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. | henning

### Release 3.1.1-RC1 – 2004-08-26

Type | Changes | By
--- | --- | ---
| Addressed a number of issues highlighted by FindBugs in generated source code. |
| Upgrade to stratum-1.0-b5 and xerces-2.4.0. |
| Upgrade to commons-collections-3.0, commons-configuration-1.0-rc1, commons-lang-2.0 and commons-logging-1.0.4. |
| 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. |
| The adapter property is now used in preference to driver when building the database map. This allows Torque to work when the driver setting is not what it expects - e.g. if using com.mysql driver instead of the org.gjt.mm.mysql or when using http://www.p6spy.org/">P6Spy (http://www.p6spy.org/) pass through driver for performance monitoring. Thanks to Ben Hogan for the patch. |
| DB2 limit and offset support. Thanks to Augustin Vidovic for the patch. |
| Upgraded to commons-pool-1.1 and commons-dbcp-1.1 |
| Case insensitive LIKE comparisons now use ILIKE for PostgreSQL. |
| Corrected handling of BIT with PostgreSQL. Note that the solution implemented has been tested under MySLQ and PostgreSQL only. Fixes TRQS185. |
| Multiple unique constraints and indexes on a single table are now allocated sequential names (previously duplicate names were being allocated). |
| Backported a few template fixes from Serge Huber that were committed to HEAD some time ago. |
| Generate sequences correctly for PostgreSQL (i.e. leave it to PostgreSQL). Note that schemas produced from the database using the torque:jdbc goal are not yet handling sequences correctly. |
| Problems with Torque tutorial. The Torque tutorial has been updated to reflect the separated generator and runtime components and to use the Maven plugin. Fixes TRQD26. |
| 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. Hint: You don't need this jar to use the Torque generated object model classes. |
| The maven-plugin now provides default values for torque.initialIDValue and torque.initialIDStep so that the id table initialization sql is now generated correctly. |
| 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. Fixes TRQS223. |
| Fix NOT_LIKE with no wildcard bug. |
| Fix bad syntax in generated model when using primary keys of short or byte. Fixes TRQS97. |
| For PostgreSQL the LONGVARCHAR datatype now maps to text rather than bytea. Fixes TRQS149. |
| Error on "byte" data type generation rules. Fixes TRQS190. |
| A minor template change has been made to correctly allow Base[TableName]Peer.doDelete(criteria, connection) to be overridden in [TableName]Peer. |
| Apply MAVEN-690 to the Maven plugin | dion
| updated maven-plugin to torque-3.1 | mpoeschl
| Fix prereqs of torque:om-zip goal in the maven plugin. | evenisse
| Move to log4j 1.2.8 in the maven-plugin. | dion
| Move to latest xerces in the maven plugin. | dion

### Release 3.1 – 2003-09-01

Type | Changes | By
--- | --- | ---
| SqlExpression: replace UniqueList with HashSet to improve performace for large IN clause. |

### Release 3.1-RC1 – 2003-08-25

Type | Changes | By
--- | --- | ---
| JdbcTrasformTask: error fetching foreign keys using an ODBC source. |
| new version of village.jar fixes BOOLEANCHAR handling. |
| Transaction mismanagement in IDBroker. Fixes TRQ4. |

### Release 3.1-BETA1 – 2003-08-19

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

### Release 3.1-ALPHA2 – 2003-06-28

Type | Changes | By
--- | --- | ---
| use commons-logging. BaseObject.log() and .getLog() now return a Log object. Fixes TRQS2. |
| 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. |
| LargeSelect now implements Serializable, provides better debugging information and further methods for maintaining search parameters. |
| LargeSelect is now thread safe when calling invalidateResult (thanks to Soteri Panagou <panagos@midetech.com>). |
| 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. |
| mysql: "on delete cascade" not generated. Fixes TRQS20. |
| Sql2Xml task should generate a dtd compliant xml. Fixes TRQS101. |
| native limit and offset breaks on postgresql 7.3. Fixes TRQS121. |
| NullPointer Exception When not setting the DbName explicitly. Fixes TRQS138. |
| wrong invocation of populateObject in peer class. Fixes TRQS139. |
| Table with no primary key results an empty ADD PRIMARY KEY (). Fixes TRQS141. |
| BasePeer.doSelect(Criteria, Connection) calls executeQuery without offset and limit. Fixes TRQS153. |
| Invalid syntaxes for Hypersonic when using indexes. Fixes TRQS159. |
| columns in an external schema caused Manager imports to be generated. Fixes TRQS165. |
| Corrected deadly multi-CPU thread deadlock problem discovered by Ed Korthof <ed@apache.org> and John McNally <jmcnally@apache.org>. 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. |

### Release 3.1-ALPHA1 – 2003-05-07

Type | Changes | By
--- | --- | ---
| Removed all deprecated stuff from the java code. Make sure to not get any deprecation warnings before you switch to 3.1! |
| The generator was separated. |
| 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). Fixes TRQS145. |
| Junit tests for sql2xml task (SQLToAppDataTest). Fixes TRQS95. |
| Package names for generated java classes are now handled in the model (not the templates) |
| 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. |
| Criteria.addDate is broken. Fixes TRQ18. |
| recursive external schemas fail. Fixes TRQ19. |
| limit and offset patch for Oracle. Fixes TRQ47. |
| torque schema-reference.html bug: unique-column. Fixes TRQD21. |
| fix endless loop in Monitor. Fixes TRQS29. |
| fix endless loop in Monitor. Fixes TRQS93. |
| id-table-schema.xml has no database name. Fixes TRQS35. |
| bug in torque generated copy() method. Fixes TRQS47. |
| SQLScanner reports wrong line numbers in Window platforms and behaves incorrectly when finding the minus sign. Fixes TRQS90. |
| Documentation changes in ForeignKey.java. Fixes TRQS98. |
| Use of null Object. Fixes TRQS104. |
| Database.java NPEs on bad foreign key. Fixes TRQS116. |
| Generated OM doesn't compile when using FLOAT as primary key. Fixes TRQS118. |
| Join methods are not generated. Fixes TRQS122. |
| Database.java using null object. Fixes TRQS132. |

### Release 3.0 – 2002-12-03

Type | Changes | By
--- | --- | ---
| torque-jdbc-transform should not show password. Fixes TRQS59. |
| uses @DATABASE@ variable for default database adapter instead of mysql. Fixes TRQS86. |
| more concise name on Criteria.setSingleRecord. Fixes TRQS61. |
| Criteria.toString() modifies the Criteria object. Fixes TRQS73. |
| getPrimaryKey() throws NullPointerException is pk is Object type and null. Fixes TRQS81. |
| Constructor for DateKey and StringKey will throw NullPointer exception if passed null value. Fixes TRQS82. |
| sql-generation: create foreign keys for hsqldb |

### Release 3.0-RC2 – 2002-11-20

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

### Release 3.0-RC1 – 2002-10-26

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

### Release 3.0-B4 – 2002-08-22

Type | Changes | By
--- | --- | ---
| jdbc2pool package dissolved (the old Torque pool is back in the torque codebase, the new pool is part of commons-dbcp now) |
| torque uses maven-1.0-beta-6 as default build system. |
| renamed all properties (torque prefix added). the old property names still work but they are deprecated and support will be removed after the 3.0 release. |
| aliases not recognized in orderBy column |

### Release 3.0-B3 – 2002-07-17

Type | Changes | By
--- | --- | ---
| New Package names are now in use. |