# Version 2.4.4

## Bug

- [SYMMETRICDS-525] - Pass old data to transformations when a DELETE event comes through
- [SYMMETRICDS-527] - Postgres doesn't accept null characters (0x00) in textfields while other databases do. Strip them out during synchronization.
- [SYMMETRICDS-529] - Support reading in TIMESTAMP WITH TIME ZONE data types in Oracle

# Version 2.4.3

## Bug

- [SYMMETRICDS-524] - Client DataLoad nullpointers when registering if server fails to send down a values for sym_node

# Version 2.4.2

## Bug

- [SYMMETRICDS-514] - If gap detection is interrupt you could end up with overlapping gaps which in turn could cause integrity violations.
- [SYMMETRICDS-515] - Issue with use_stream_lobs
- [SYMMETRICDS-518] - Fix NullPointerException in transform dataloader's fallback logging
- [SYMMETRICDS-519] - When a transformed row is being loaded (from the dataloader) and it encounters a conflict it should re-transform the original data
- [SYMMETRICDS-520] - PostgreSQL - Quotes around tables in trigger creation.
- [SYMMETRICDS-522] - When multiple transformations with different columns sets and the same target table are defined the metadata that gets written out during extract can be wrong

# Version 2.4.1

## Bug

- [SYMMETRICDS-505] - Support NCLOB column on oracle
- [SYMMETRICDS-506] - Support DDL create of NChar/NVarchar/Nclob
- [SYMMETRICDS-508] - SqlScript does not execute a result set if a select is passed to the script.
- [SYMMETRICDS-509] - Schema upgrade fails on Firebird/Interbase
- [SYMMETRICDS-512] - ojdbc6.jar and ojdbc5.jar from Oracle 11g distribution causes some SymmetricDS tables to be dropped and recreated.
- [SYMMETRICDS-513] - Cached table metadata could get out of sync when in cluster (sync triggers might run on only one node)

## Improvement

- [SYMMETRICDS-507] - Get rid of the columns out of order detection in ddlutils. It just causes tables to be rebuilt during upgrades when they really don't need to be.
- [SYMMETRICDS-510] - Document how to re-send data by creating reload events
- [SYMMETRICDS-511] - Add new service url that returns information about a node in the properties format: http://hostname/sync/info

# Version 2.4.0

## Bug

- [SYMMETRICDS-428] - Update trigger getting ORA-01489 error
- [SYMMETRICDS-446] - sym_largeobject function in Postgresql returns only a part of the binary object
- [SYMMETRICDS-447] - Tinyint loses sign
- [SYMMETRICDS-454] - PostgreSQL BLOB handling fails.
- [SYMMETRICDS-455] - Derby CLOB fails if string contains quotes.
- [SYMMETRICDS-458] - Table prefix not being replaced for initial load sql for a postgres blob column
- [SYMMETRICDS-459] - Primary key index being created with unexpected name causes error
- [SYMMETRICDS-460] - Initial load gets arithmetic exception, numeric overflow, or string truncation
- [SYMMETRICDS-466] - Tomcat shutdown hangs when SymmetricDS is deployed as a war
- [SYMMETRICDS-467] - "Skipped" is spelled wrong in the IncomingBatch.Status enumeration
- [SYMMETRICDS-468] - Allow table names with mixed and upper case
- [SYMMETRICDS-469] - Data can be skipped when the beginning or end of a batch is filled in.
- [SYMMETRICDS-471] - Sync of null BLOB causes null pointer exception
- [SYMMETRICDS-472] - Case sensitive table names
- [SYMMETRICDS-474] - Table metadata written out during an initial load that does not respect sym_router.target_table_name
- [SYMMETRICDS-478] - Initial load data should be filterable via the IExtractFilter
- [SYMMETRICDS-486] - Multiple triggers get created on sym_ tables after an upgrade
- [SYMMETRICDS-490] - Exception throws on update clob field
- [SYMMETRICDS-492] - Query that retrieves data to route can slow down on big joins between sym_data and sym_data_gap
- [SYMMETRICDS-496] - Outgoing batch can be marked as OK if Incoming batch fails to update to OK
- [SYMMETRICDS-498] - Outgoing batch stats can be overwritten if an error occurs after the stats have been reset for an extract retry
- [SYMMETRICDS-499] - Only the last temporary file in a sync is being kept around for reuse in case of a network error
- [SYMMETRICDS-501] - Prefix SymmetricDS indexes so SymmetricDS tables can coexist in the same database
- [SYMMETRICDS-504] - Datetime value of '0000-00-00 00:00:00' does not sync properly on MySQL

## Improvement

- [SYMMETRICDS-372] - Don't allow synchronization and log message in the push and pull servlets if the node is sync_enabled=0
- [SYMMETRICDS-433] - Document the external_select feature better
- [SYMMETRICDS-453] - Allow JDBC connection properties to be set via a symmetric property
- [SYMMETRICDS-456] - Move SpringWireableSymmetricEngine to symmetric-core
- [SYMMETRICDS-470] - Support interval data type
- [SYMMETRICDS-475] - Upgrade packaged HSQLDB to 2.2.4
- [SYMMETRICDS-476] - Improve explanation of keystore and cert generation
- [SYMMETRICDS-477] - Upgrade the packaged MySQL JDBC Driver to the latest version (5.1.17)
- [SYMMETRICDS-480] - Improve configuration troubleshooting by not allowing triggers to exist with a channel_id that does not exist.
- [SYMMETRICDS-482] - Update the column match router to accept router_expressions that are concatenated by OR instead of a new line
- [SYMMETRICDS-484] - Document use of OLD_ in column match expressions
- [SYMMETRICDS-487] - User's Guide - Router section - missing summary bullets and uses two terms
- [SYMMETRICDS-488] - User's Guide - verify that the initial load select somewhere identifies the alias of the table being loaded
- [SYMMETRICDS-495] - Do not extract the same batch for the same node at the same time if a network error occurs
- [SYMMETRICDS-497] - Default dataloader.max.rows.before.commit to 10000 so tables with millions of rows don't try to commit the entire table all at once
- [SYMMETRICDS-500] - Set max_batch_to_send to 1 as the default setting for the reload channel.
- [SYMMETRICDS-503] - Print out query string and remote host and ip address of requests that are not mapped to an existing server

## New Feature

- [SYMMETRICDS-4] - Stream LOB (large object), BLOB, and CLOB columns
- [SYMMETRICDS-448] - Allow table names using keywords

## Task

- [SYMMETRICDS-387] - Discuss sym_channel settings and how they effect synchronization in the users guide