The following tables list the breaking changes and non-breaking compatibility notes for upgrading from Edge v5.0.3 onwards. If you are upgrading from a version prior to Edge v5.0.3, please contact our support team or view the corresponding update guides.
Breaking changes (apply to all products)
| Edge Version | Description | Recommendations |
|---|---|---|
| 27.00 |
UNICODE type conversions (such as calling ctdbGetFieldAsUTF16() on string fields) had previously assumed that the string was UTF-8.
These conversions now use field encoding or working charset information to determine the encoding type and will fail with error CTDBRET_INVCHARSET if this information is not present. |
String field encodings can be set using ctdbSetFieldStringEncoding, and retrieved using ctdbGetFieldStringEncoding.
For more details, see the compatibility and migration guidelines in Internationalization Support. |
| 27.00 |
ctdbSetFieldStringEncoding now enforces use of known charsets. |
Use IANA character set names. |
| 27.00 |
ctdbGetFieldDefaultValue now has a return type of const TEXT *. As a result, previously existing calls to this function may get compile time errors. |
Adjust previously existing calls so that they match the declaration syntax shown here. |
| 5.1.0 |
By default, when JSON DB creates tables, it now uses a padding character of 32 and a field delimiter of 32. It also returns CHAR fields as fixed-length, space-padded strings. These changes were made to promote compatibility with SQL. Previously, JSON DB did not define how fixed-length strings were padded, and defaulted to using NULL (0x00) characters for padding and field delimiters. |
If this is not your desired behavior, you can change it using the “padValue” and "fieldDelimiterValue" properties upon table creation, and the "fixedLengthCharFormat" property when querying data from a table. |
| 5.1.0 | Prior versions of the server configuration file, ctsrvr.set, are not compatible with this release. | Regenerate ctsrvr.set using the ctcfgset utility. |
| 5.1.0 |
In JSON DB, each index created now has its own file. Previously, multiple created indexes would typically share the same index file.
SQL is not impacted; it still creates one file on disk for each index, like before. |
No action is required, except to be aware of the changed behavior. |
| 5.1.0 | 5.1 adds support for passwords longer than 64 bytes. If your Faircom client supports and uses passwords longer than 64 bytes, but your FairCom server does not (or vice versa), then LDAP authentication will break. | If you use LDAP authentication, update both clients and servers together, not just one or the other. Customers who have compiled older versions of the client library into their applications must upgrade to the new client libraries or ensure their applications use passwords that are 64 bytes or less. |
| 5.1.0 | By default, JSON DB is now required to honor the NULL constraints on non-nullable fields. This prevents users from setting a null value in a non-nullable column. | You can toggle this behavior using the new CTDB_BEHAVE_CHECK_NULL_CONSTRAINT item in ctdbsetbehavior. |
| 5.1.0 |
FairCom clients and servers now support configurable password hash algorithms (such as PBKDF2) and scalable password hash difficulty. This strengthens the hashing algorithm we use to store passwords in the database, making password-based authentication more secure against offline brute force attacks. This change affects all Edge and SQL clients.
To support this change, we now automatically upgrade older versions of FAIRCOM.FCS at startup. Thus, FAIRCOM.FCS cannot be downgraded for use with prior server versions. |
If you do not wish to use scalable difficulty hash algorithms, leave PASSWORD_HASH set to its default value of ORIGINAL.
The change to FAIRCOM.FCS will not cause problems as long as you back it up before upgrading, as should be standard practice. |
| 5.0.3 |
ctChecklock is now enabled on all files by default, so we do not allow a connection to update a record if it has not been locked (the attempt will fail with error 57). This safeguards against potential crashes/hangs when freeing unclaimed locks. |
If you wish to restore the old behavior of allowing updates on records that are not locked, set AUTO_CHECKLOCK to NO. |
| 5.0.3 |
Previously, when using ctdbSetBatchFilter to add a record filter to a batch, the filter could be applied to other record handles you used while the batch was active. Now, the filter will apply only to the record that the batch refers to. |
If you relied on the old behavior, please contact FairCom Support. |
Non-breaking compatibility notes (apply to all products)
Edge Version |
Description |
Recommendations |
2027.00 |
By default, when importing indices, ctsqlimp now skips case-sensitive indices that use the Key Segment Mode UREGSEG to convert lowercase characters to uppercase.
Previously, ctsqlimp would import case-sensitive indices regardless of whether UREGSEG was used, which could result in incorrect SQL query results. |
If you don't want the default behavior, you can customize it with the following features:
If calling the ctSQLImportTable() function call, Ssetting the CTSQLIMPOPTS option ignore_index_case to YES causes the case-sensitivity of indices to be ignored, allowing you to import indices that would otherwise be skipped.
The ctsqlimp utility option --ignore_index_case allows you to ignore case in segment modes when linking an index.
The DB SQL statement SET INDEX CHECK can be set to ON to trigger an error message whenever a SQL query uses an incompatible index. |
2027.00 |
Setting CTSTATUS_SIZE to 0 now sets the log size to unlimited, allowing the file to expand as much as the operating system and storage availability allow.
Previously, a value of 0 would set the log size to 1024 bytes. |
N/A |
5.1 |
The FairCom DB server now defaults to requiring a minimum password length of 15 characters for all new passwords. It also defaults to requiring that new usernames be limited to alphanumeric characters, hyphens, underscores, and periods. Hyphens cannot be the first character in a name. |
You can edit password requirements using the MINIMUM_LENGTH configuration keyword in your FairCom DB server configuration file (ctsrvr.cfg) within the SUBSYSTEM SECURITY PASSWORD section. |
Compatibility notes specific to Edge
| Edge Version | Description | Recommendations |
|---|---|---|
| 5.1 | Upgraded all transforms to version 2. | All transforms are now created and managed by the integration table actions by using the "transformSteps" property. |
| 5.1 | Replaced data type "double" with "float". |
See the updated documentation for processes involving this data type: |
| 5.1 | Implemented variable format fields. | See variantFormat for information on managing these fields. |