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 to find out more!

Below is the list of changes in the new release.

Best regards,
Jonathan Neve
Microtec Communications –
CopyCat / CopyTiger replication engine –

CopyCat v3.04.0 (4th of April 2013)


  • Fixed a bug whereby empty string values were sometimes changed
  • into nulls.

  • FIBPlus connector : improved recovery after connection loss :
    sometimes connection would not resume correctly after network error was
  • 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.

CopyCat V3.03.0 (1st of August 2012)

  • Added support for SQLite / iOS
    • New database adaptor for SQLite
    • XMLRPC server and CopyCat transport server for iOS (written in
      objective-C, compatible with Delphi CopyCat XMLRPC transports.
  • Added support for Delphi / C++ Builder XE3
  • Transport layer
    • 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.
  • TCcReplicator
    • 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.
  • TCcConfig
    • 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.
    Be Sociable, Share!