Changes Report

Release History

Version Date Description
1.5.0 2008-12-31 Column level synchronization support, DB2 dialect and synchronize configuration out to nodes
1.4.3 2008-11-24 Patch Release
1.4.2 2008-11-20 Patch Release
1.4.1 2008-10-21 Patch Release
1.4.0 2008-10-08 Lets add some polish
1.3.4 2008-07-31 Patch release
1.3.3 2008-04-22 Patch release
1.3.2 2008-04-01 Patch release
1.3.1 2008-03-29 a brave new frontier, patched
1.3.0 2008-03-12 a brave new frontier
1.2.0 2008-01-23 New dialects and bug fix release


Release 1.5.0 - 2008-12-31

Type Changes By
add Added a DB2 Dialect. Fixes aid=1834030&atid=997727 . erilong
add Column level synchronization to merge rows that do not conflict. Fixes aid=1945266&atid=997727 . erilong
add Send all of SymmetricDS configuration in one batch during registration. Purge configuration tables before inserts so we do not rely on fallback for configuration updates. Also removed the requirement for SymmetricDS configuration table rows in sym_trigger. chenson42
add All SymmetricDS configuration tables (with the exception of node, node_security and node_identity) now have SymmetricDS triggers created for them. A new out-of-the-box filter has been added to the data loader to detect changes to the trigger table. If changes are detected triggers will be synchronized automatically. chenson42
fix Prevent registration before the node itself is registered Fixes aid=2450121&atid=997724 . erilong
add Added a hash of the trigger table row values into the trigger_hist table so if the trigger table values change triggers will be regenerated. chenson42
fix Fix decimal support between two servers with different locales Fixes aid=2162610&atid=997724 . erilong
fix Support reserved column names on MySQL by quoting identifiers with a backtick (`) Fixes aid=2478888&atid=997724 . erilong

Release 1.4.3 - 2008-11-24

Type Changes By
fix "prepare" and "clean up" in the load() method of the IDataLoader as it is transactional. This is in support of fixing MSSQL to not leave a table's identity insert state in the identity insert state of off. chenson42
fix Support ntext binary data type on SQL-Server Fixes aid=2322967&atid=997724 . erilong

Release 1.4.2 - 2008-11-20

Type Changes By
fix cleanupAfterDataLoad() at the batch commit instead of in close() in the CsvLoader. close() is called outside the transaction and could be called on a different connection altogether in the connection pool. chenson42
fix If auto.reload is set to true and the 'client requests' a new registration this means that the client will also be expecting a new reload, even if the client has previously received one. chenson42
fix Only add javax.servlet.Filter classes that implement IExtensionPoint to the list of SymmmetricFilter filters. This should help applications that have their own Spring context that includes Spring managed Filters. chenson42
fix Use JDOM in XmlPublisherFilter to format the XML document. If you are upgrading and are currently doing the escaping characters for XML, you'll probably want to remove that logic. chenson42
fix The SQL-Server dialect was broken for the sync_on_incoming_batch feature. Fixes aid=2216936&atid=997724 . erilong
fix The sample database was missing a trigger that prevented the demo initial load. erilong
fix Quote column names so keyword names can be used Fixes aid=2171726&atid=997724 . erilong
fix Use UTF-8 for transport reader to support Chinese and other charsets Fixes aid=2263359&atid=997724 . erilong

Release 1.4.1 - 2008-10-21

Type Changes By
fix Batches were not being ordered correctly during the extraction when a channel was in error. chenson42
fix Loss of precison with Float type on Oracle Fixes aid=2155736&atid=997724 . erilong
fix Support base64 encoding on PostgreSQL. Fixes aid=2037604&atid=997724 . erilong

Release 1.4.0 - 2008-10-08

Type Changes By
fix Added support for locale specific decimals numbers that use ',' for the decimal points. erilong
fix Support for boolean data type on all platforms (support for tinyint(1) on MySQL) Fixes aid=2001909&atid=997724 . erilong
fix Support binary data in MySQL BLOB columns Fixes aid=2174941&atid=997724 . erilong
fix Fix batch errors hiding actual error on Postgres Fixes aid=2221304&atid=997724 . erilong
fix Enhanced the RSS functionality a bit by adding published date field as the batch creation date, added SQL error information if it exists and the number of times a batch errored out. chenson42
fix Log the SQL error code and message and mark the outgoing batch as in 'ER' if the error happens on the extract side. chenson42
fix Clear out unsent events when an initial load is queue'd up. Fixes aid=1917203&atid=997724 . chenson42
fix Fixed trigger creation issue for tables with no primary keys. Fixes aid=1944227&atid=997724 . chenson42
fix Sorted outgoing batch in code to reduce stress on database. erilong
fix Change index on sym_data_event to (batched, node_id, channel_id), which is how we are accessing the table. erilong
fix Improve performance by doing a multi-row count and update during batching. If the count is greater than the max batch size, then we fall back to the peek ahead result set scrolling. erilong
fix Cache channels query - we run this too much on high activity systems. erilong
fix Went through code to make sure ALL literals in SQL were parameterized (even the ones that are not variable). This makes a big difference on Oracle. erilong
add By default, the DataLoader uses fallback logic. (If an insert violates the primary key, perform an update instead. If an update affects no rows, perform an insert instead.) Addd a runtime property that lets you disable the fallback logic. Fixes aid=1985814&atid=997724 . chenson42
add Support an initial load pushed from client to server. Fixes aid=1956188&atid=997724 . chenson42
fix Inactivating a sym_trigger by setting the inactive_time column to a non-null value was fixed. chenson42
fix Fixed null pointer for blank my.url property. We now default my.url to blank in symmetric-default.properties. chenson42
add Added IP address authorization. dmichels2
add Use MX4J's HTMLAdaptor for the stand-alone SymmetricDS instance so we have a nice JMX console. chenson42
add Added new extension architecture which allows extension points to be register automatically when they are in the classpath and the META-INF/services/symmetric-*-ext.xml Spring file is found. Also added an interface which allows extension points to be targeted for specific node groups. chenson42
add Change the property names to remove the inconsistent symmetric. and symmetric.runtime. prefixes. This change keeps backwards compatibility with the old property names. chenson42
add Add the ability to override the Spring bean name used for an embedded DataSource. This allows users to define their own DataSource. chenson42
add Register from the pull thread if the pull job has been enabled. This will allow an unregistered SymmetricDS client to fully deploy to an application server without being registered. Fixes aid=1964509&atid=997724 . chenson42
fix Drop foreign keys from the SymmetricDS configuration tables. They seem to get in the way for some people. chenson42
fix Make a push a two step process. First use a HEAD to see if the server is available, next do the actual PUT. This solves an issue we have observed where the client PUSHES an entire pay load before the response is sent. This solution relies on HTTP keep-alive. Fixes aid=1979581&atid=997724 . chenson42
add Added a new plug-in point, the IBatchListener. This new interface gives the end user a chance to do something with a group of data rows that are in the same batch. See XmlPublisherFilter for an usage example. chenson42
add Added a new plug-in point, the IExtractorFilter. This new filter can be useful to capture and react to application events (for example a store close.) chenson42
add Pass the IDataLoaderContext into the IColumnFilter interface. Fixes aid=1961240&atid=997727 . chenson42
add Don't include the keys in data loader update statement if they haven't changed. This feature is turned off by default and can be enabled by the new dont.include.keys.in.update.statement parameter. Fixes aid=1955378&atid=997727 . chenson42
add Add a stop() method to the SymmetricEngine API. Fixes aid=1955383&atid=997727 . chenson42
add Supported runtime configuration from the sym_parameters table and the periodic rereading of parameters from the file system (as long as the ParameterService is being used.) Fixes aid=&atid=997727 . chenson42
add When db is unavailable during startup, add retry logic Fixes aid=1954979&atid=997727 . chenson42
add Recorded the timezone in sym_node for reporting purposes Fixes aid=1874255&atid=997727 . chenson42
add Added configuration setting for https's HostnameVerifier Fixes aid=1938886&atid=997727 . chenson42
add Added support for configuring the source table's catalog. Fixes aid=1953442&atid=997727 . chenson42
add Don't specify the schema in triggers if the schema/catalogs are specified in the trigger configuration. Fixes aid=1946085&atid=997727 . chenson42
add Upgrade to Spring Framework 2.5.5. chenson42
add Make changes to the filter and servlet configuration so the web.xml does not contain dynamic configuration information. From this point forward we will provide a standard web.xml and configuration is in the same place as all the other SymmetricDS configuration. knaas
fix Support BLOB syncing on Oracle. Fixes aid=1826895&atid=997724 . chenson42
fix Handle Oracle TIMESTAMP(9) data types. chenson42
fix Fixed a bug with the SQL Server filter that removes identity columns from updates. When syncing from other databases the column case may not match. We need to try to match regardless of case on the columns. chenson42
fix Preserved the original case of table names, table prefix, and foreign keys. Fixes aid=1916017&atid=997724 . chenson42
fix Fixed the update trigger and the initial load for the HSQLDB dialect. Fixes aid=1940365&atid=997724 . chenson42
fix Bug in selectDataIdSql. data_id was not qualified. Fixes aid=1944507&atid=997724 . erilong

Release 1.3.4 - 2008-07-31

Type Changes By
fix Fixed peek ahead logic so that the max batch size limit is respected. Fixes aid=1950045&atid=997724 . chenson42
fix Create function error on MySQL version before 5.019 Fixes aid=2025080&atid=997724 . erilong
fix Use target schema when loading data across schemas Fixes aid=1963349&atid=997724 . erilong

Release 1.3.3 - 2008-04-22

Type Changes By
fix Removed extra comma in mssql.xml trigger text. Fixes aid=1945207&atid=997724 . chenson42
fix Multi-row updates don't work for the Sql Server Dialect. Fixes aid=1948790&atid=997724 . chenson42
fix Time portion of DATE column not syncing. Fixes aid=1948109&atid=997724 . erilong

Release 1.3.2 - 2008-04-01

Type Changes By
fix Make buildOutgoingBatches use only one connection from the connection pool vs the previous two it used. Fixes aid=1930496&atid=997724 . chenson42
fix Don't put all ACKs in the same transaction. Fixes aid=1929400&atid=997724 . chenson42
fix Introduce a compression filter that does not read an entire stream into memory before compressing. Fixes aid=1929395&atid=997724 . chenson42
fix Fixed the isInitialLoadComplete JMX method so it works with the new asynchronous reload. Fixes aid=1918310&atid=997724 . chenson42

Release 1.3.1 - 2008-03-29

Type Changes By
fix Queries need to alias columns on PostgreSQL in case reserved words like "limit" are used as a column name. Fixes synchronization for Adempiere. Fixes aid=1924351&atid=997724 . erilong
fix Fixed the PostgreSQL dialect to query for existence of triggers correctly, which was causing it to try creating them on every startup. Fixes aid=1922524&atid=997724 . erilong
fix Fixed the population of the failed_data_id on sym_outgoing_batch_hist, which was always zero. It should link to the sym_data. Fixes aid=1913260&atid=997724 . erilong
fix The oracle dialect should select from user_objects vs. all_objects to determine if the package variable has been installed. Fixes aid=1914242&atid=997724 . chenson42

Release 1.3.0 - 2008-03-12

Type Changes By
add Changed Version.java to reference the pom.properties version that is packaged in the jar during a Maven build. chenson42
add Only log node concurrency rejects every 10 minutes. chenson42
add Log fallback update/deletes at debug level instead of at the warn level. chenson42
add Don't log socket exceptions and HTTP 503 errors as stack traces, instead log as warnings. chenson42
add Make DataService.reloadNode(node_id) transactional. If it isn't we run the risk of inserting only half of an initial load. chenson42
add Added an additional optional properties file that can put in the classpath to override properties values called symmetric-override.properties. chenson42
add Moved channel_id and transaction_id from the data table to the data_event table. It makes it much more efficient to create batches when data is backed up because you don't need to join between data and data_event. chenson42
add Added the configurable number of times to attempt a 'resend' of the 'status' on a pull. chenson42
add Added the removal of all incoming batch rows when reloading a node. This is to prevent the loss of data should the symmetric.runtime.incoming.batches.skip.duplicates property be set to true. chenson42
add Made the purge of incoming and outgoing batches exclusive. Also made sure if one fails, the other will still be able to run. chenson42
add Make the AbstractJob configurable so that it can reschedule itself. If we do this, then we get natural randomness in the push, pull cycles. kbajaj01
fix Transaction ids can be interleaved by different processes. The batching algorithm needs to take this into account. Also, cap the max number of batches that can be sent per channel in one sweep. chenson42
fix We had a few places where we were not closing Statements and ResultSets. chenson42
fix Fixed integrity violation when updating a primary key with an empty value between database systems that handle char padding differently Fixes aid=1891508&atid=997724 . erilong
fix Fixed SafetySwitch error when parsing large columns Fixes aid=1903641&atid=997724 . erilong
fix Fixed cross schema trigger creation for PostgreSQL Fixes aid=1903635&atid=997724 . erilong
add reloadTable() JMX function to delete and reload a table for a node Fixes aid=1903649&atid=997727 . erilong
add Timings for network, filter, and database on incoming batches. Fixes aid=190874&atid=997727 . erilong
add Addition of optional compression on push. Fixes aid=1861766&atid=997727 . erilong
fix Case sensitive schema and table names on MySQL for Unix Fixes aid=1907627&atid=997724 . erilong
fix Extract can send batches out of order when channel is in error Fixes aid=1907658&atid=997724 . erilong

Release 1.2.0 - 2008-01-23

Type Changes By
add Add support to auto create the tables that are being synced Fixes atid=997727&aid=1825801 . erilong
add Implement the HSQLDB Dialect Fixes atid=997727&aid=1861088 . chenson42
add Implement the Apache Derby Dialect Fixes atid=997727&aid=1825799 . erilong
add Make the concurrent worker count by servlet instead of across all servlets Fixes atid=997727&aid=1877262 . chenson42
add Support the automatic detection of http compression Fixes atid=997727&aid=1861764 . chenson42
add Add support for automatically sending initial load Fixes atid=997727&aid=1852586 . erilong
add Add cluster support by providing a ClusterService Fixes atid=997727&aid=1851161 . chenson42
add Add promiscuous registration mode Fixes atid=997727&aid=1851159 . erilong
add Add curTriggerValue variable for use in sym_trigger definitions Fixes atid=997727&aid=1849379 . chenson42
fix To many data events can be purged in the same transaction Fixes atid=997724&aid=1861090 . chenson42
fix SQL Server Initial Load broke when 'text' fields are used Fixes atid=997724&aid=1858083 . chenson42
fix The JMX showBatch and writeBatchRangeToFile broken in 1.1 Fixes atid=997724&aid=1854418 . erilong
fix Trigger name is too long ... Fixes atid=997724&aid=1851065 . chenson42
fix To many data events can be purged in the same transaction Fixes atid=997724&aid=1861090 . chenson42
fix Don't output a WARN if the sync_url is null Fixes atid=997724&aid=1849767 . chenson42
fix Bug introduced in refactoring of SqlScript Fixes atid=997724&aid=1849763 . chenson42