ctTransferFile() provides API functions to transfer files - We have added a convenient API for moving these files to/from a client and server.
GETFIL() now has modes to retrieve first and last active partition members - When working with partitioned files, it is useful to quickly locate the first (the “oldest” when partitioning by date) and last (“newest”) partition members for administrative purposes. Two modes have been added to the GetCtFileInfo() function to support this ability.
ctGetOpenFiles(), ctGetFileUsers(), and ctGetFileLocks() now also list files that are open pending delete - We noticed that ctadmn’s option to list all open files did not list transaction-dependent files that had been deleted but whose delete was not yet committed. These files are open but they are marked with a state of 'd', and the function that returns the list of open files only lists the files having a state of 'y' or 'v'. We modified the functions that return a list of open files to also include the files with a state of 'd'.
ctLOKDYN(tranPersist) ignores persistent tran lock state - We now ignore the persistent tran lock state when an unlock request is made outside a transaction. We modified the function that unlocks a data record so that it now rejects an unlock request for a record in a transaction-controlled file when the persistent transaction lock state is enabled only if a transaction is active at the time the unlock request is made. This means that an unlock request that is made outside a transaction will ignore the persistent transaction lock state.
ctSETCFG(setcfgDIAGNOSTICS, "LOWL_FILE_IO") supports turning on/off DIAGNOSTICS LOWL_FILE_IO for c-treeACE Server at runtime - c-treeACE Server now supports turning on or off the DIAGNOSTICS LOWL_FILE_IO configuration option at runtime. This can be done by a call to ctSETCFG() or using the ctadmn utility.
ESTKEY() offers increased precision for large files - SQL index selection relies heavily on the precision of ESTKEY (used by ESTRNG) to pick the best index. Prior to this revision, ESTKEY returned the estimate to within 1/10 percent. For a file with 100K records, this means that the ESTKEY estimate was +/- 100. For a file with 100M records, ESTKEY was +/- 100K records. This revision increases the ESTKEY precision with the number of keys in the file to attempt to maintain a precision of about 100 records.
CTUSER() returns correct data length of custom output data - An output data length set by the CTUSER() function did not limit the amount of data returned to the client. Recently applied CTUSER() changes resulted in the output length set by CTUSER() to have no effect on the amount of data returned to the client. This is because the communication buffer was set to NULL before calling CTUSER(). To resolve this, the internal name of the CTUSER() function was changed in ctsctu_a.c to iCTUSER() and a parameter was added that is a pointer to the output length. iCTUSER() returns the output length in this parameter and logic was added to return a proper length of data.