CopyCat replication engine v. 3.04.0
Ladies and Gentlemen!
Microtec Communications is pleased to announce a new release of CopyCat,
version 3.04.0! You will find the full list of changes at the end of
this email. This release also includes the changes from version 3.03.0,
which had not been made publicly available till now.
CopyCat is a Delphi / C++Builder component set encapsulating a database
replication engine for Interbase, Firebird, MS SQL Server, MySQL and
SQLite. Using CopyCat, you can replicate heterogenously between all the
above database types, over various transport systems (direct DB
connection, XMLRPC, or RTC), on various platforms : Delphi/MS Windows
for the client side, server side implemented in Delphi, in Java, in PHP
(only for MySQL) and in Objective-C on iOS (only for SQLite).
CopyCat is a robust replication engine that has been in production use
since 2004. Go to our site at http://www.copycat.fr to find out more!
Below is the list of changes in the new release.
Best regards,
Jonathan Neve
Microtec Communications – http://www.microtec.fr
CopyCat / CopyTiger replication engine – http://www.copycat.fr
CopyCat v3.04.0 (4th of April 2013)
TCcReplicator
- Fixed a bug whereby empty string values were sometimes changed
- FIBPlus connector : improved recovery after connection loss :
sometimes connection would not resume correctly after network error was
fixed. - CopyCat now checks the number of rows affected by either the
update or insert into the destination database and raises an error if
ever neither the update nor the insert was successful.
into nulls.
CopyCat V3.03.0 (1st of August 2012)
- New database adaptor for SQLite
- XMLRPC server and CopyCat transport server for iOS (written in
objective-C, compatible with Delphi CopyCat XMLRPC transports.
- Added AutoCommit property on client transport. Setting
autocommit optimizes communication by not explicitly starting nor ending
transactions. This implies that the server side must automatically
commit after executying every query. - Added property EncodeStringsAsBase64 to TCcRtcClientTransport
and TCcRtcServerTransport.
- Added parameters TableName and Fields to OnRowReplicated
event, allowing to access the table name of the row just replicated, as
well as the values of the fields transfered. - Added parameters ReplicateRow and AbortAndTryLater to the
OnRowReplicating event. If ReplicateRow is set to false, the row is not
replicated and the row is discarded from RPL$LOG. If AbortAndTryLater is
set to true, replication of the row is aborted, and will be tried again
next replication cycle (ie, the row is left in RPL$LOG). - Renamed OnAbort event OnReplicationAborted. It it called only
when replication is explicitly aborted via the AbortReplication method
or by setting CanContinue to false in the OnReplicationError event. - Added property TrimCharFields. If set to True, TCcReplicator
will trim all char, varchar or memo fields that are read from the source
database before replicating them to the destination database.
- Added multi-configuration abilities. This means that multiple
replication configurations can be created for the same database,
allowing separate lists of tables, replication conditions, and
replication nodes to be configured independantly from each other. - You can now define replication configuration at design time,
using the new Tables property. Double-clicking on this property allows
you to define the list of tables to replicate for the current
configuration (defined by the ConfigName property), along with the
conditions for each, as well as the list of nodes to replicate towards
(corresponding to the RPL$USERS table). You can then roll out this
configuration at run time by calling the GenerateConfig property. This
will create triggers for all the tables defined in your configuration,
or recreate them if any of the configuration options has changed. If you
want to define several replication configurations, then you need one
TCcConfig instance for each configuration. - New IncludedFields property in the Tables list allows you to
specify the list of fields to include in the replication triggers. This
means that the change will only be logged for replication (in RPL$LOG)
if at least one of the included fields has changed. Thus empty updates
or updates of fields that are of no interest to the replication config
can be excluded, thereby lightening the replication load. If no
IncludedFields are set, the default is to include all fields, as before. - New IncludedFields property in the Tables list allows you to
set a list of fields to exclude from the replication triggers. This is
just a shortcut for adding all but the fields specified to the
IncludedFields list. - New procedure RPL$FORCE_REPL allows to force replication of a
certain set of rows, within the context of a certain config. This can be
useful when the IncludedFields property is used. - Added multiple data types in order to handle all the new
TDataType values. This fixes a bug that occured with some Firebird
dialect 3 datatypes, when replicating over XMLRPC or RTC transports.