Caché Documentation 
Caché 5.0.13 Release Notes


Welcome and thank you for using Caché, the post-relational database. This document provides a listing of changes between Caché 5.0.12 and Caché 5.0.13.

For detailed information on getting started, see the Caché 5.0 Release Notes (located off the Caché installation directory in the file Docs/GCRN/GCRN.html); for information on previous 5.0 maintenance kits, see the file prenotes.htm.

This document contains several sections:
Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate importance to users of our software. These include alerts, mission critical issues, important updates, fixes, and releases of Caché.

The most current list can be obtained from the InterSystems Website.

Users should check this list periodically to obtain the latest information on issues that may have an effect on the operation of their site.


General Improvements
When appropriate, InterSystems adds general improvements to the features and functions of Caché beyond those required by critical fixes. Such improvements are contained in this version.

Online Documentation
As a convenience to our users, InterSystems provides online access to documentation for recent versions of Caché at the InterSystems Website.

From the home page choose the "Caché" tab, and on the "Downloads" menu, select "Documentation and Help Updates" or follow this link.


Description of a Change Report
To help you assess the impact of these changes on your applications, each change description contains a more detailed explanation of the modification.
All changes include a table giving pertinent information on the issue's likelihood, impact of the change, and whether this has already been used successfully in production by other customers. In order to make the information easy to assimilate visually, the tabular information has been simplified to a keyword or two and a value. The full explanation of the keyword meanings are:
Critical Changes In This Release



Category: Config Mgr
Platforms: All
DevKey: CFL1145
Summary: Fix edition of ECP server

Description:

This change ensures uniqueness in server names and address fields when a new server is added.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Control Panel
Platforms: All
DevKey: CFL1136
Summary: Fix Control Panel holding lock indefinitely

Description:

This change corrects an issue with the Control Panel. Prior to the modification, every time a Local Database was expanded a new entry was added to the lock table. These lock entries were removed only when the Control Panel was closed. With the correction, the lock is released when the expansion is finished.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: CSP
Platforms: All
DevKey: MAK918
Summary: If posting >32k of data in a form to CSP create a stream object to hold information

Description:

If you have a form in a Web page such as:
<form name=form1 method=post action='textarea.csp'>
<textarea name=txt rows=15 cols=100 value="">
</textarea>
<br><input type=submit name="btn" value="Submit">
</form>
And the text area contained more than 32k of data then the CSP server was crashing. Now it creates a stream to hold all the data and when you access %request.Data("txt",1) you will get the stream oref. This means that for any fields that could be larger than 32KB, you should code something like:
Set value=%request.Data("fieldname",1)
If $isobject(value) {
  ; Treat this as a stream
} Else {
  ; Treat this as a regular string
}

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: CSP
Platforms: All
DevKey: MXT561
Summary: Make boolean value passed by #server or #call a proper Caché value

Description:

Before this change, the passing of JavaScript boolean values as #server or #call arguments was inconsistent. A boolean value passed by #call or #server is "true" or "false"; the Java applet based #server in IE passes these values as -1 or 0; and the Java applet based #server in Mozilla passes these values as "true" or "false". No upward compatible solution is consistent, so we are implementing the most Caché like solution of passing true or false as 1 or 0.

The implementation of this change is designed to make it fairly easy for a customer to back out the change if desired. The adjustment of the JavaScript boolean value is done in the JavaScript function cspMakeBoolean in <CacheDirectory>/csp/broker/cspbroker.js. Comments are included in this function explaining how to restore functioning to the previously inconsistent model.

The programmer will need to adjust the application code if passing boolean value arguments by #call or #server. In this case, scan the code for tests for equality to "true", "false" or -1 and change the code to expect 1 or 0 as the Caché value of the boolean.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: CSP.Gateway
Platforms: All
DevKey: CMT211
Summary: Resolve an issue in which the Gateway's Systems Management suite would not operate for cases where the path to the IIS root contained a period.

Description:

This change resolves an issue in which the Gateway's Systems Management suite would not operate for cases where the path to the IIS root contained a period. For example:
C:\Inetpub\www.com\Website
Calls to the systems management suite resulted in an 'Invalid Request' error being returned to the browser because the 'www.com' component that was confusing the Gateway's logic for identifying requests for Systems Management forms.

In general, having periods in file paths (that is, in directory names) to Web resources can cause ambiguities and confusion. This is particularly true for cases where the entities in question are virtual (as is the case with CSP-based resources).


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: CSP.Net
Platforms: All
DevKey: MXT529
Summary: %Net.POP3 should save attachments with improper headers

Description:

If StoreAttachToFile property of %Net.POP3 is true, then attachments are saved to the directory specified in AttachDir. An attachment is indicated by the "Content-Disposition=attachment" header. Previously the file would only be saved if the filename attribute was specified in the content-disposition header.

Now %Net.POP3 will save all attachments, generating the file's name as follows:

  1. If filename specified on Content-Disposition filename attribute, then use that.
  2. If filename specified on Content-Type name attribute, the use that.
  3. Otherwise create a temporary name of the form ATTxxxxxx.dat

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: CSPGUI
Platforms: All
DevKey: YSD878
Summary: SQL Manager Tune Table does not stop if table is empty

Description:

Prior to this change, when you run Tune Table through SQL Manager, if the calculated Extentsize is zero, the selectivity functions will still be called and updated. After this change, if the calculated Extentsize is zero (meaning there is no data), then the selectivity functions will not be called resulting in no changes saved to the table. A message will display:
Table extentsize = 0. No changes will be made.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Explorer
Platforms: All
DevKey: CFL966
Summary: Rebuild ^rINDEX only if needed

Description:

With this change, Caché rebuilds its routine index global only when it is needed. Prior to the modification, the index was often rebuilt unnecessarily which resulted in a performance slowdown.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: Installation
Platforms: All
DevKey: LRS817
Summary: Caché installation node conflict avoidance

Description:

This change avoids installation conflicts with Caché running on a different node. It applies to UNIX and OpenVMS installation procedures.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: Languages
Platforms: All
DevKey: CDS594
Summary: Fix compiler <ACCVIO> with GOTO $CASE()

Description:

When a $CASE function was used as the argument for a GOTO command, there could be an access violation when compiling the routine or an unexpected error when executing it. This change removes that possibility.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Languages
Platforms: All
DevKey: CDS597
Summary: Fix compiler <ACCVIO> with $ZSORT(var,2)

Description:

A Caché process could get an access violation when compiling a $ZSORT() function which had an invalid second parameter. This correction eliminates that situation.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Networking
Platforms: All
DevKey: GK289
Summary: Fixed a typo in ecprecovery.mac

Description:

This corrects a typographic error in a label that could cause ECP recovery to fail.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: Networking
Platforms: All
DevKey: GK346
Summary: Change LAT connect and disconnect logging

Description:

Caché on OpenVMS logged a SYSLOG entry for every LAT session start and stop. This change modifies Caché not to log an entry on session enter and exit.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: Object.CDL.Unix
Platforms: All
DevKey: DLP1113
Summary: Validate ID value in %OnDetermineClass

Description:

If %OpenId is called with an ID value that contains multiple components, and one of those components is null, then an error will be returned indicating that the ID value is invalid.

For example, Class A is persistent and has two properties, P1 and P2. There is an idkey index on P1 and P2. ##class(A).%OpenId("abc||") will not succeed and the error message will indicate that one of the ID component values is null.

Previously, a <SUBSCRIPT> error would have been reported.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1135
Summary: Qualify constraint origin

Description:

Unique constraints that originate in a class are not properly enforced when inherited by a subclass because the origination of the constraint is not projected to SQL.

Caché now qualifies any unqualified class names projected to SQL as constraint origination classes.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1165
Summary: Support references in parent IDKEY

Description:

IDKEYs (aka ROWIDs) are either simple values or multiple values delimited by "||". When a value is a reference to another class and that reference also contains "||" characters (the referenced class has an IDKEY based on multiple properties), then Caché must keep track of the number of "||" characters expected to be in each component value of the IDKEY. It uses that information to extract the individual IDKEY component values using $PIECE.

When a class is a child, and the IDKEY of the parent is based on multiple properties, and one or more of those properties is a reference to another persistent class whose IDKEY is also based on multiple properties, then the storage compiler would generate incorrect code to save the data. This is because it was making an assumption that all parent properties (identity properties) did not contain component values.

This has been fixed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL
Platforms: All
DevKey: DLP1130
Summary: Uniqueness check not enforced by SQL if subclass

Description:

SQL was not properly enforcing an inherited uniqueness constraint. For example, suppose Class A is a persistent class with a property, P1, with an index, I1, on P1 which is defined to be unique.

Then, further assume Class B extends Class A.

Prior to this change inserting a row into Class A will fail if the value provided for P1 already exists in the extent of Class A. However, an SQL insert into Class B will incorrectly succeed if the value of P1 exists for a row in Class A.

This has been fixed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL
Platforms: All
DevKey: DPV2105
Summary: Uniqueness check not enforced by SQL if subclass

Description:

An error has been fixed where a unique constraint was inherited by a subclass and an INSERT was allowed into the subclass's table such that the unique constraint as defined in the base class was violated.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL
Platforms: All
DevKey: DPV2177
Summary: <SUBSCRIPT> errors occur when compiling tables

Description:

A problem has been corrected in the SQL table compiler where an index map might not produce the correct filing code if an overriden full row reference was used for the map.

Also, a problem has been corrected in the SQL table compiler where code to determine if a value exists for a field in any row of the table might not produce the correct code if an index was defined with a structure like:

^[$Piece(LVar({F1}),",")]Glo("a",{F1},{ID})
Both of these problems resulted in incorrect syntax generated for the table filing routines.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: SQL
Platforms: All
DevKey: DPV2244
Summary: Fix INSERT/SELECT when table has stream fields but none inserted

Description:

An error has been fixed where an INSERT/SELECT statement would crash with an <INVALID OREF> error if the table being inserted into had a stream field that was not specified in the insert column list.

Likelihood Medium
Risk Low
Ad Hoc No
Enhancement No



Category: SQL
Platforms: All
DevKey: DPV2251
Summary: DDL Import which gets <ROUTINE TOO BIG TO SAVE> gets Caché Internal Error

Description:

A problem has been corrected in the Caché Macro Preprocessor where a <UNDEFINED> error might occur in the preprocessor's error trapping, masking the real error it was attempting to report.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: SQL
Platforms: All
DevKey: DPV2300
Summary: Syntax error creating a view

Description:

A error was corrected where a view with a sub-query in the view query's WHERE clause was incorrectly treated as a potentially updateable view causing an <UNDEFINED> error during compilation. This change makes Caché SQL views with any subqueries in the view's query not updateable.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL
Platforms: All
DevKey: DPV2308
Summary: Correct issue with Parent table ID/RowID field in MapData

Description:

Prior to this change, a table might fail to properly compile code responsible for filing the data if %CacheSQLStorage was used, and a field in the map data was the IDKEY field of a parent/grandparent table, and the IDKEY of that table was based on the single field.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL.ODBC
Platforms: All
DevKey: JCN473
Summary: Fix ConfigDSN code for Unicode builds

Description:

This change fixes the problem with DSNConfig, and updates the parameters to take the following keywords for Caché 5.0:
  1. User or UserName or UID
  2. PWD or Password
  3. Host or Server
  4. Port
  5. Description
  6. Namespace or Database
  7. Unicode SQLTypes
  8. Static Cursors
  9. Query Timeout

These keywords are case insensitive.

If a keyword is not defined, appropriate values are assigned with the exception of UID and PWD.

To pass this into the ConfigDSN API, you must format a string with "\0" separators between each keyword=value pair. The entire entry must be followed by a double "\0". For more details on the use of ConfigDSN, see the Microsoft online documentation.

The following is an example of such a string. It has been broken up on multiple lines for readability.

DSN=Testing\0
    Namespace=User\0
    Host=myhost\0
    Port=1976\0
    Description=My own private server\0
    UID=someone;Pwd=passwd\0\0

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: SQL.Query Processing
Platforms: All
DevKey: AK600
Summary: Fixes to loop suppression code generation

Description:

Previous speed improvements for queries with GROUP BY or DISTINCT have been extended to apply in more cases, and also to work correctly in a few cases in which problems occured, such as where an indexed property containing NULL values had caused a <SUBSCRIPT> error or an infinite loop when running certain queries.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No



Category: SQL.Query Processing
Platforms: All
DevKey: AK603
Summary: For TOP 1 uses faster no-temp-file solution

Description:

When TOP and ORDER BY are specified, this change promotes the choice of access paths that do not build temp-files. This produces the first few rows faster (for example, by using an index that matches the ORDER BY), rather than choosing the access path that is judged to be the fastest in returning ALL the rows that satisfy the query.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement No



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2204
Summary: "set option lock_timeout = xx" cause error at Prepare()

Description:

A problem has been corrected where a statement like:
SELECT OPTION LOCK_TIMEOUT = 30
would not Prepare when using a Dynamic Query.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2257
Summary: "insert into...select" fails when table has blobs

Description:

A condition has been fixed where:
INSERT INTO MyTable1,... (MyStreamField1)
    SELECT MyStreamField2,... FROM MyTable2
would crash with an SQLCODE=-400 error for cases like:
INSERT INTO MyTable1,... (MyStreamField1)
    SELECT 'some literal',... FROM MyTable2
or
INSERT INTO MyTable1,... (MyStreamField1)
    SELECT NULL,... FROM MyTable2

Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement No



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2258
Summary: Fix <UNDEFINED> in %qaccpq2 with objcode(1)

Description:

A problem has been corrected in the table compiler when compiling large tables where an <UNDEFINED> error would occur in some cases when splitting the generated table filing code into multiple routines.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2275
Summary: SQL update causes invalid result

Description:

An error has been fixed where an SQL UPDATE statement might not save the data correctly if the class used %CacheStorage, and had about 185 fields in the table, when all were stored on the same node in the data (master) map.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: SQLManager
Platforms: All
DevKey: YSD824
Summary: SQL Manager Show Plan using up License

Description:

This changes SQL Manager's QueryPlan to use "/csp/docbook/" instead of "/apps/documatic/" in the URL. The former will not consume an extra license and will clean up CSP session correctly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQLManager
Platforms: All
DevKey: YSD834
Summary: Display problem with SELECTIVTY

Description:

This change corrects a problem with SELECTIVITY where a property may be indicated incorrectly when you switch tables under certain conditions. Now, after the table fields are loaded, the selectivity box and label will be set to null. These two fields will be filled when you click on any row.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: CDS589
Summary: Do not return bad object code after <ROUTINE TOO BIG TO SAVE>

Description:

This fixes a possible access violation when attempting to run a routine that received a <ROUTINE TOO BIG TO SAVE> error.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System
Platforms: OpenVMS
DevKey: HYY973
Summary: Pass proper OS directory to jobbed job on OpenVMS

Description:

This change addresses an issue on Caché for OpenVMS systems configured with the option SwitchOSdir=1 set, where the OS directory of a user login process didn't get passed on to a jobbed job.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System
Platforms: All
DevKey: HYY974
Summary: Pass proper OS directory to jobbed job

Description:

Addressed an issue on Caché systems configured with the option SwitchOSdir=1 set, where the OS directory of a user login process didn't get passed on to a jobbed job.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System
Platforms: All
DevKey: JLC666
Summary: Fix UnicodeBig/Little translations in 8-bit locales

Description:

In some character sets used by 8-bit locales, some characters are left undefined (such as 0x98 in CP1251). In the corresponding UnicodeLittle and UnicodeBig translations, these undefined characters used to map to '?'. This feature made it impossible to perform round-trip binary translations, such as CP1251->UnicodeLittle->CP1251, without losing data.

Since UnicodeLittle is used for communication between clients and servers in several situations (such as shadowing), in which binary data may be involved, the UnicodeLittle and UnicodeBig translations have been changed so that undefined characters now map to themselves in both directions. This has no effect on text data and allows binary data to do round trips without any loss.

The affected character sets are: CP874, CP1250, CP1251, CP1252, CP1253, CP1255, LatinG, LatinH.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: JO1828
Summary: Gcompact() now checks switches between bottom pointer blocks

Description:

GCOMPACT did not check to see whether switch 10 or 13 was set except between globals. The result is that if GCOMPACT is running, a BACKUP or other activity which has a timed wait for the system to quiesce could fail.

GCOMPACT has been updated to check for switches while it is processing a global so that it will pause more quickly when a switch is set.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: JO1831
Summary: Test return status from fsync and take action if it fails

Description:

Internal retry loops were added to fsync() calls for UNIX platforms to wait for a succesful completion if there is an error. fsync() is used on UNIX during database expansion, writing the journal file and when writing database blocks to the WIJ and cache.dat files to flush the UNIX buffer pool out to disk so the writes are known to be persistent.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: JO1832
Summary: Add fsync() calls to writeemptyblks()

Description:

Operating system calls to sync data to disk during file expansion for 8-KB databases on UNIX systems have been enhanced to avoid possible problems on certain types of devices. Prior to this channge, problems in this area would show up as a serious disk write error occurring in the write daemon following an expansion which appeared to succeed even though there really wasn't enough disk space available for the newly allocated blocks.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: LFT1286
Summary: Prevent changing the new pointer block to 0

Description:

This prevents accidentally setting the New Global Pointer Block to 0.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: LRS812
Summary: Caché startup node conflict avoidance

Description:

The ability to prevent simultaneous startups of Caché configurations on different network nodes has been added to Caché. This feature applies to configurations that share the same physical directory, but have been installed on different machines, such as members of a cluster.

The current change blocks starting or stopping Caché if the directory is already in use on a different node instead of the local node. It does not provide protection against mounting a database or accessing a file that is in use on a filesystem shared among machines. That is the responsibility of the user/application.

The ccontrol "list" and "all" commands have been modified to identify configurations in use by a different network node.

This startup conflict avoidance mechanism involves recording the system (or node) name in the cache.ids file during startup. Thus, all machines which can share the physical file system containing the Caché configuration should have unique names. Under UNIX, this is the node name shown by the uname -n command, not the Internet name from the hostname command, which might be somewhat different.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System
Platforms: Windows
DevKey: LRS821
Summary: Fix Windows version of Caché to handle COM ports with job servers

Description:

This change corrects an error in COM port handling that caused memory leaks with JOB servers as well as an previous problem with JOB servers.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System
Platforms: Windows, 32-bit UNIX, 32-bit Linux
DevKey: RJF028
Summary: Use auint2 instead of auint1 for incblksfn array

Description:

Prior to this correction, running Caché backup on an instance of Caché with more than 256 databases mounted could cause the label block and incremental bitmap blocks of one database to overwrite blocks of another database. This problem affects Caché 5.0 on all platforms except for OpenVMS and Tru64 UNIX.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System
Platforms: All
DevKey: RJW944
Summary: Remove confusing error messages on Windows startup if %ZSTART needs a long time

Description:

A confusing and spurious error message that was reported to the Windows event log if Caché required a long time (>10 minutes) to start (due to a long running ^ZSTU routine) has been removed. The message read:
Cache service process creation failed, child did not return;
Cache configuration CACHE error: 997.
Cache Control Service Startup failed; Cache configuration CACHE: .
The message is spurious because Caché did indeed start.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System
Platforms: All
DevKey: SAP231
Summary: Cforce completes no matter what processes are running

Description:

This fixes a situation where a control process crash prevented cforce from completing on Windows systems due to events not being available to Caché processes. Now cforce halts processes even if all events are not available.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: SAP232
Summary: Use proper access rights when terminating jobs

Description:

This corrects a problem where cforce fails to terminate by force jobs that cannot be terminated cleanly during shutdown, possibly leaving jobs behind after cstop or cforce.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: SAP238
Summary: Set ECP daemon priority to standard user priority

Description:

ECP daemons were running at low priority (5 on Windows and 2 on UNIX). This change now has the daemon run at normal user priority (7 on Windows, 0 on UNIX).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: SJ1430
Summary: Fix DCP lock uploading problem when DCP server shutdown and restarted.

Description:

This corrects an error where the wrong result was be returned by $DATA(^global,variable). It occurred when a global was stored in a new format (that is, 8-KB block) database and the two-argument form of $DATA was being used on a top-level global node which was undefined but which had descendants.

It now returns the proper vaue, 10. Previously, it had returned 0.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: SML477
Summary: Fix DCP lock uploading problem when DCP server shutdown and restarted.

Description:

When the DCP server has some locks from DCP clients, and is shut down and restarted, the locks on DCP clients may get into 'Lost' state because the upload of lock information from client to server may fail.

This has been fixed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: SML486
Summary: Fix a lock memory corruption on ECP lock.

Description:

This change fixes a lock memory corruption problem when an ECP client locks the server node and the ECP server node has SWITCH 10 or 13 turned on (such as on Caché backup). Previously, it only failed when a child node already been locked and it tried to lock the parent node.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System.Backup/Restore
Platforms: All
DevKey: LRS770
Summary: Fix <UNDEFINED> error when $$EXTSELCT^DBREST skips files

Description:

This change corrects a problem with the non-interactive API for restoring backups, $$EXTSELCT^DBREST. Under some circumstances, an <UNDEFINED> error would be reported when attempting to skip over a database entry not flagged for restore in the directory list (that is, excluded from restore in a multiple database backup archive).

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System.Shadowing
Platforms: All
DevKey: HYY1011
Summary: Fix <UNDEFINED> error when shadow is configured to start at startup

Description:

This change addresses an issue where a shadow configured to start at startup could cause <UNDEFINED> error when it began.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Utilities
Platforms: All
DevKey: LFT1297
Summary: .obj only routines overwritten by %RI

Description:

This fixes a problem using %RI. Priot to the change, it would allow you to unintentionally overwrite object-code-only routines. This change refuses to load a routine if you say YES to Compile? and NO to Replace? and the object code version of the routine still exists.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: Utilities
Platforms: All
DevKey: LFT1313
Summary: Prevent accidental duplicate ^mtemp nodes

Description:

This fixes a problem where a wrong routine list may be produced by routine utilities because the ^mtemp indices become inconsistent.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Weblink
Platforms: All
DevKey: CMT212
Summary: Improve the exception handling and automatic recovery mechanisms in the core Event Broker service.

Description:

This change improves and extends the exception handling and automatic recovery mechanisms in the core Event Broker (EB) service. The core Event Broker service is the dedicated TCP service that usually listens on port 7001 and is used in the non-HTTP modes of EB operation (for example, mode 0).

This correction was motovated by a problem in which the EB service closed down unexpectedly in a production system.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



General Areas of Improvement
In addition to critical fixes, this version of Caché contains improvements to specific areas of the product. They area summarized by area as follows:
Locales
This version of Caché adds support for the following locales: Thai, Arabic.
SQL & Object Connectivity
Numerous changes and enhancements have been made to Caché SQL and Objects. Among them are:

Support for Macintosh
This version of Caché nows installs and executes natively on Macintosh OS X 10.3. The installation kit is a standard ".dmg" distribution produced by PackageMaker.
Improved Handling of Database File-Full Condition
Many changes have been installed in this version of Caché to better handle the condition where the database, or the disk volume containing the database, becomes full. Among the more important of these are:

Improvements to Journal Restore
Journal restore has been made more robust in this version. Among the more noteworthy channges are these:

Performance Enhancements for Shadowing
This version of Caché includes a number of improvements in shadowing performance:

Note: To take full advantage of the improvements to shadowing, the Generic Memory Heap size in a Cache configuration should be increased by 2MB per CPU on systems where a shadow is expected to run. Increases larger than 2MB per CPU may improve performance eve further, but this is dependent on the nature of the shadowing demands.
Support for BigInt
Support has been added to Caché for the BigInt datatype, that is, integers in the range -9223372036854775808 to 9223372036854775807 inclusive. This support includes:



Documentation Updates
The content of the Caché documentation evolves from release to release in response to editorial improvements, updates to existing material, and addition of new information. The following is a summary of the most noteworthy changes to the Caché documentation since the previous release:

These are in addition to minor enhancements in examples, as well as corrections and improvements to grammar and spelling.