CopyStorm 8.40.2

Release Date: 12-Jan-2018

This is a  minor feature and bug fix release. As always, existing CopyStorm configuration files are backwards compatible.

Patch Levels

12-Jan-2018 Original Release
26-Jan-2018 Fix a problem with Date fields in History tables.

Reduce Reporting of Recoverable Exceptions

The notification subsystem no longer logs most exceptions when CopyStorm is able to recover. Most of these exceptions are related to network timeouts.

Dynamically Adjust LIMITS

CopyStorm has always uplifted LIMIT values on SOQL queries when necessary. Now it will also lower a LIMIT if it is causing a timeout issue.

Add Java 9 Support

Java 9 recognizes and adapts to high DPI displays. This release recognizes Java 9 and sizes CopyStorm appropriately. As a bonus, resizing for earlier versions of Java on high DPI displays avoids small fonts in the GUI.

Support Disablement of Oracle Timestamp Index Rebuild

CopyStorm will automatically rebuild its index on the SystemModStamp column if enough records are inserted in a single session. Historically, the reason is that older Oracles sometimes create unbalanced indexes on a timestamp when timestamps are inserted incrementally. In this release the automatic rebuild of the timestamp index is disabled by default but can be re-enabled with a check box.

Add Support for Email Notification Credentials

The notification subsystem now supports communication with email systems that required user authentication.

Support Overriding the Default Length of All String Formulas

By default, Salesforce declares string formula columns as being so wide that in most databases the field type must be a CLOB.  In practice, few formulas need enough space to required CLOB. This extension support a global (or per table) technique for overriding Salesforce’s default size for string columns.

Backup Additional Metadata Types

Add Translations, StandardValueSet, and StandardValueSetTranslation to the list of meta types backed up. These are some of the more unusual types where the standard listMetadata() API methods does not work as documented or the modified timestamp on records is bogus.

Fix Field History Tracking Problem for Case Sensitive Database

The field history subsystem was assuming a case-insensitive collation and hardcoded “id” rather than “Id”. This was causing the history snapshots of deleted records to fail on databases that are using a case sensitive collation (this is a rare condition).

Fix Field History Tracking Problem for Deleted Records

If a table had a compound field the system would fail to take a complete snapshot of a record when a record was deleted.

Fix a Rare Thread Safety Issue in SOQL Extraction Generation

Though highly improbable, it was possible to generated the date 30-Feb-17 in SOQL generation code because of a thread unsafe use of the Java class SimpleDateFormat.

Recognize the ANSI/SQL Keyword END

Salesforce has used another ANSI/SQL keyword as a column name. CopyStorm recognizes it and replaces it with END2.

Code Around a Salesforce CaseMilestone Formula Column Bug

When a query to CaseMilestone includes the columns TimeSinceTargetInMins or TimeRemainingInMins AND a range on SystemModStamp is included AND the QueryAll option is enabled then all Salesforce APIs will throw an UNEXPECTED_EXCEPTION exception. CopyStorm now excludes these columns by default, via the TableRuleRegistry.xml file and when Salesforce fixes the bug we will re-add them.

Fix Problem Backing Up KnowledgeArticleVersion and _kav tables

KnowledgeArticleVersion has odd query restrictions that CopyStorm was not utilizing properly. To get your CopyStorm backup in sync do this backup one time:

  • Enter KnowledgeArticleVersion,.*_kav as the selected tables.
  • Enter 1/1/2000 as the Modified Since parameter.
  • Run a copy.

Fix an Email Authentication Problem with Office 365

CopyStorm email notifications were not properly authenticating with Office 365 in previous releases.

Modify MySQL to Use Smaller TEXT Types When Possible

Use TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT based on the length of a Salesforce field. Previous versions always used LONGTEXT. This saves a few precious bytes in a row and helps avoid innodb_page_size issues.

Modify MySQL to Use a NON-UTF8 Character Set for Reference Fields

Reference fields only contain single byte ISO-8859 characters and newly created CopyStorm reference fields now use the character set latin2 rather than utf8mb4. This saves space all allows more columns to appear in a MySQL row.

Modify MySQL to Use a NON-UTF8 Character Set for BASE64 Columns

BASE64 fields only contain single byte ISO-8859 characters and newly created CopyStorm BASE64 fields now use the character set latin2 rather than utf8mb4. This saves space all allows more columns to appear in a MySQL row.

Modify MySQL to Use MYISAM In Extremely Problematic Cases

When it is impossible to fit a MySQL table into the page size of an INNODB engine CopyStorm will make an attempt to store the table in the more generous MYISAM engine.

Clean up Rogue Table Timer Threads in the GUI

When in multi-threaded mode some table timers threads were not being stopped after a table was processed. This resulted in a small amount of CPU being used even after a copy was finished (in GUI mode only).

Recognize and Work-around a New MariaDB Keyword

In the context of a CREATE TABLE statement MariaDB 10.2 is deciding that Lead is a keyword (it is not actually a listed keyword; Leading is!). For new MySQL database CopyStorm will now used Lead2 rather than Lead. There is no impact on existing MySQL/MariaDB CopyStorm databases.