March 31, 2010
c-treeACE V9 Features and Compatibility Changes
Note: c-treeACE became FairCom DB in October 2020.
c-treeACE introduced many new features and changes to enhance ease of use. While FairCom always tries to maintain as much backward compatibility as possible, with any major upgrade, there are areas that inevitably result in changes that affect particular applications. Here is a quick review of the most frequently encountered changes in V9 that our support team captures.
c‑treeACE Extended Header Support
c‑treeACE V9 now includes extended headers on all newly created files. You might find that files created under V9 could return errors in older existing applications. Specifically, for example, a FVER_ERR (43) could be returned under some circumstances.
Commit Read Locks
c‑treeACE has become a popular choice for high volume OLTP applications. In these high performance environments it is possible to have a partially updated record buffer returned without explicit read or write locks. c‑treeACE V9 enables commit read locks by default now which can change the behavior of some existing applications.
Conditional Index Parser
The conditional index parser in c‑treeACE V9 was updated to provide consistency in the c‑tree ISAM API and c‑treeDB APIs. While this change was intended to be neutral with no compatibility changes, some developers with conditional index expressions have reported minor changes in behavior. For example, the following expression:
(unsigned) CT_INT_fld <= (unsigned)0xffffffff
now compares as -1, as unsigned types are not yet handled.
V9 Also checks if a field is NULL and treats a NULL value as distinct from a value of 0. So a comparison such as the following may not return what might previously be expected:
MyField >= 0 or MyField is null
If you are using conditional index expressions and will be migrating to V9, you are encouraged to thoroughly test your existing expressions. Should you find changed behavior, please contact your nearest FairCom support team and let us know.
c‑treeACE SQL HUGE Files
Today’s massive storage needs require HUGE files. Up to 16 exabytes (that’s 16 million terabytes!) with c‑treeACE. c‑treeACE SQL now creates all files as HUGE by default so you are always prepared.
c‑treeDB.NET V9 Updates
c‑treeDB.NET is a high level .NET interface that rests upon the c‑treeDB relational model. c‑treeDB.NET allows for rapid application development with the ease and productivity of C# or VB.NET. c‑tree Plus V8.14 introduced the first version of the .NET ISAM access layer and V9 greatly expanded upon that. Several changes in V9 were intended to provide additional flexibility and ease for developers, however, the changes could catch one off guard when moving from a V8 application to V9.
One set of changes in particular has been noted in support calls. The CTRecord class now provides a single overloaded method to get or set a field value.
CTRecord.SetFieldValue( FieldNumber, value )
CTRecord.SetFieldValue( FieldName, value )
CTRecord.GetFieldValue( FieldNumber, value )
CTRecord.GetFieldValue( FieldName, value )
These functions allow for a more flexible coding design and reduce the number of specific methods required. When compiling your original application against a V9 c‑treeDB assembly, the original CTRecord.SetFieldAs() methods will now be noticed marked obsolete.
Note: Alternative SetFieldAs() methods may be unavailable if #define ctNoOldGetSet is included in the makefile when compiling.
Java JDK 1.5
c‑treeACE SQL V9 is now compiled against Java JDK 1.5. As a result, current JDBC, Stored Procedures, Triggers and User Defined Functions are now recommended to update to the latest Java versions. In addition. 64-bit versions of c‑treeACE SQL now require a 64-bit edition of the JVM to implement stored procedures.
FAIRCOM.FCS Internal Structure
The internal FC_USER structure in the FAIRCOM.FCS user and group information file has been enhanced. As a result, a compatibility check has been added to ensure matching client server behavior.
If a client prior to these changes tries to open the file FAIRCOM.FCS!USER.dat using a server that has these changes, the open will fail with error UVRC_ERR (859, the client’s structure definition for the fileFAIRCOM.FCS!USER.dat is out of date. Update your client library.).
If a client with these changes tries to open the file FAIRCOM.FCS!USER.dat using a server without these changes, the open will fail with error UVRS_ERR (860, the server’s structure definition for the file FAIRCOM.FCS!USER.dat is out of date. Update your server.).