# Version 2.2.5

## Bug

- [SYMMETRICDS-438] - SQL 2008r2 Geometry casting problem
- [SYMMETRICDS-444] - OK status in outgoing batch can get overwritten by statuses of SE and LD

## Improvement

- [SYMMETRICDS-434] - Put tables in quotes in triggers for the SQL Server dialect
- [SYMMETRICDS-436] - Allow SQL Server collation to be set via a property for use in triggers
- [SYMMETRICDS-437] - Deploy symmetric to the root of the standalone web server so that other servlets can be added to web.xml and not have to go through the SymmetricServlet
- [SYMMETRICDS-441] - Add a property to set the maximum number of unprocessed outgoing batch rows to read into memory for a node

## New Feature

- [SYMMETRICDS-439] - Provide a way to override the keystore password on the command line.
- [SYMMETRICDS-440] - Provide a way to specify the keystore type when using SSL

# Version 2.2.4

## Bug

- [SYMMETRICDS-427] - SymmetricDS has problems when using a case sensitive Collation with SqlServer such as SQL_Latin1_General_CP437_BIN

## Improvement

- [SYMMETRICDS-429] - Allow NHibernate to work with SymmetricDS
- [SYMMETRICDS-431] - Fix the reloadTable() JMX method to insert all reload events for a single table (instead of only the first reload it comes across)

# Version 2.2.3

## Bug

- [SYMMETRICDS-419] - Sql Server blob sync across catalogs does not work because the base 64 encoding function is not fully qualified.
- [SYMMETRICDS-420] - Sql Server sync of tables with identity columns doesn't work when syncing across catalogs. Table name isn't fully qualified.
- [SYMMETRICDS-421] - The logic for determining support for Postgres transaction identifiers is flawed
- [SYMMETRICDS-422] - Line feed characters (\r and \n) can get corrupted during transfer depending on the character and the os

## Improvement

- [SYMMETRICDS-417] - Allow for token substitution in target table names, schema names and catalog names
- [SYMMETRICDS-424] - Keep http connection alive during long file extracts
- [SYMMETRICDS-425] - default the java.io.tmpdir to ../tmp for the standalone install

## Task

- [SYMMETRICDS-385] - Better document SYM_OUTGOING_BATCH and error recovery in Users Guide
- [SYMMETRICDS-418] - Document trigger.update.capture.changed.data.only.enabled

# Version 2.2.2

## Bug

- [SYMMETRICDS-413] - Ddlutils blows up on table in DB2
- [SYMMETRICDS-415] - Wrong version of the ddlutils platform is being returned for a specific DB2 version
- [SYMMETRICDS-416] - DB2 dialect is resetting auto-increments on sym_trigger_hist, _outgoing_batch, and _data every startup

## Improvement

- [SYMMETRICDS-414] - Change the mis-named property: routing.max.data.to.process.per.channel to routing.largest.gap.size

## Task

- [SYMMETRICDS-217] - Add build date/time to the User Guide.
- [SYMMETRICDS-381] - Create better documentation for initial_load_select
- [SYMMETRICDS-390] - Document the new PING_BACK_ENABLED flag on SYM_TRIGGER_ROUTER
- [SYMMETRICDS-391] - Explain gap detection in the users guide
- [SYMMETRICDS-392] - Document the initialization procedure if an initial load is not needed

# Version 2.2.1

## Bug

- [SYMMETRICDS-409] - ojdbc6.jar doesn't work with SymmetricDS
- [SYMMETRICDS-410] - The service wrapper didn't get updated for 2.2
- [SYMMETRICDS-411] - Allow ddlutils to handle functional indexes by removing the logic to verify that a column exists
- [SYMMETRICDS-412] - Standalone startup issue with 2.2.0

# Version 2.2.0

## Bug

- [SYMMETRICDS-352] - Trigger Hist row is inserted, even if the trigger generation failed.
- [SYMMETRICDS-362] - Documentation isn't being packaged during a release
- [SYMMETRICDS-367] - Nodes actually pull their configuration data 2 times during registration. It should only happen once.
- [SYMMETRICDS-368] - Possible to extract the wrong target schema when two tables of the same name are syncing
- [SYMMETRICDS-369] - SymmetricDS doesn't start up because of xml column in postgres
- [SYMMETRICDS-378] - Segmentation fault in sym_hex UDF for Firebird
- [SYMMETRICDS-382] - Oracle timestamp columns should synchronize milliseconds
- [SYMMETRICDS-384] - Authentification failed when using custom INodePasswordFilter
- [SYMMETRICDS-389] - Fix IOfflineClientListener. Add a few more possible exceptions that might cause offline.
- [SYMMETRICDS-394] - During the extract process, if there is an error, then the extract file does not get deleted.
- [SYMMETRICDS-397] - When initial.load.delete.first is set to true and a table that is being synchronized is missing, the initial load fails
- [SYMMETRICDS-399] - 22 million row initial load blew up at the very end because the stats in sym_incoming_batch became too big for the column
- [SYMMETRICDS-402] - If there is an ER on the reload channel, then other channels have to be sent to correct the error
- [SYMMETRICDS-403] - symmetric-ddl conflicts with apache ddlutils
- [SYMMETRICDS-404] - Should always check for duplicate trigger names, not just when the trigger name is > max length

## Improvement

- [SYMMETRICDS-212] - Add option on sym_trigger to not record data in sym_data if none of the columns have changed
- [SYMMETRICDS-346] - Build a stripped down client only distribution of SymmetricDS
- [SYMMETRICDS-365] - Refactor JobManager so that a list of jobs can be retrieved and reported on
- [SYMMETRICDS-373] - XmlPublisherDataRouter should only publish one message, not a message per node.
- [SYMMETRICDS-374] - Only use 1 database connection while loading data.
- [SYMMETRICDS-388] - Improve the push and pull api to return a status code instead of a boolean.
- [SYMMETRICDS-400] - Log the fact that a table is not found by the data loader.
- [SYMMETRICDS-405] - Break the purge job out into 3 different jobs to match how the job is locked.

## New Feature

- [SYMMETRICDS-268] - Support array data types on Postgres
- [SYMMETRICDS-342] - Add statistics at node level and at the job level. This is follow up to the new statistics in 2.1
- [SYMMETRICDS-366] - Add a sym_registration_request table that captures when a node both attempts and successfully registers
- [SYMMETRICDS-380] - Add batchid element to XML published by the XML data loader and the XML data router.
- [SYMMETRICDS-395] - Use dbms_lob.substr during an initial load on oracle if contains_big_lob column of sym_channel is set to false

## Task

- [SYMMETRICDS-383] - Turn on routing.data.reader.type=gap