Caché Documentation 
Caché 5.0.19 Release Notes


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

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, located in the same directory as this file.

This document contains several sections:
InterSystems advises all users to recompile their applications as part of the upgrade process so as to take advantage of all the performance improvements as well as other changes that may affect them in this release.
Known Regressions In Functionality
The following regressions in functionality are known to exist in this release and may adversely affect applications. If you need an immediate correction for any of these defects, please contact the InterSystems Worldwide Response Center.

They will be fixed in a future maintenance release.


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.


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: CHUI
Platforms: All
DevKey: LFT1250
Summary: Speed up routine search in CHUIs

Description:

This change corrects a problem that was slowing down routine searches using the character-oriented utilities.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: DAS801
Summary: Fix CacheBasic Replace() function

Description:

This corrects a problem where Caché Basic did not correctly handle the case where a Replace() function results in a string longer than 32K. Before this, it resulted in a <SYSTEM> error and/or an access violation; now it correctly reports a <MAXSTRING> error.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: JN325
Summary: WorkAround AIX bug in CacheCOM

Description:

CacheCOM keeps a cache of shared library handles which it has loaded. Due to a bug on certain versions of AIX, second and subsequent calls to unload the library may indicate it is not present, even though the library remains loaded.

This change does not attempt to cache these library handles on AIX avoiding a potential infinite loop.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK435
Summary: ECP clusters to handle dismounted cluster databases

Description:

In ECP clusters, when a cluster database is unmounted and then remounted on the cluster master, subsequent $INCREMENTs from the cluster slaves may fail with a <Directory> error. This corrects the problem so the error no longer occurs.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking.ECP
Platforms: All
DevKey: GK438
Summary: Fixed ECP handling of system numbers on 64-bit platforms

Description:

On some 64-bit platforms (i.e. alpha VMS), when the number of ECP connections was greater than 32, ECP did not handle various internal states (i.e. pending transactions, client cache) properly. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK611
Summary: Fix NULL analysis for constants/variables

Description:

This change corrects a compile-time <SUBSCRIPT> error when a WHERE cluase contains any of -


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: PVA063
Summary: Outer join with complex condition on the right operand table may return the wrong answer.

Description:

This corrects a circumstance where OUTER JOIN could produce an incorrect answer. If there is complex condition (for example, an OR condition) on a column of the right table of a LEFT OUTER JOIN, and an index containing this column as a subscript is chosen by the optimizer, then an incorrect result may be delivered.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS674
Summary: Get number of source lines from ^ROUTINE

Description:

Before this change, a ZLOAD command would get the number of source lines from the current object code of the routine. If more lines had been added and saved by Studio without recompiling the routine, those lines would be lost with a subsequent ZLOAD and ZSAVE. If lines had been removed, a subsequent ZSAVE would get a <NOSOURCE> error.

With this change, the ZLOAD will get the number of source lines from the current value in the ^ROUTINE global, thus correctly using the current source.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: 1
DevKey: CDS684
Summary: Fix <ERRTRAP> after <FRAMESTACK>

Description:

A fix introduced in 5.0.16 had an unintended side effect of terminating the process after a <FRAMESTACK> error when it should have gone into a debug prompt. This fix provides correct handling after a <FRAMESTACK> error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: 1
DevKey: JO1787
Summary: Ignore RESJOB requests when running %ROLLBACK unless from shutdown

Description:

A process which is exiting and running %HALT, or any of its subroutines such as %ROLLBACK, will no longer respond to RESJOB. The process issuing the RESJOB will not receive any notification that the target ignored it. Shutting down the system with
ccontrol stop
will terminate these processes as it has in the past.

Additionally, direct calls to $ZUtil(4) will no longer terminate a daemon on Unix or Windows. These will return an error status of 0.

This change also adds a new return code from $ZUTIL(4); a -4 means the target is running %HALT so the RESJOB was ignored.

$ZUTIL(4,<pid>,-65) can be used to force the job to exit anyway although an open transaction will not be rolled back even though the locks which protected it will be released.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: 1
DevKey: JO1948
Summary: Add framestack cleanup to nsswitch() for implied namespaces

Description:

This resolves a rare problem which could result in process dumps in cases where routines switch and one or more of the namespaces involved in the routine call stack is an implied namespace (^^<directory reference>). This is a rare problem because implied namespaces are not generally used in applications. This is more likely to be seen in a development environment.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: 1
DevKey: JO1950
Summary: Fix error handling callers of setpath()/initpath() ($ZU(45), $ZU(46), $ZU(20) and $ZU(39))

Description:

The error handling cases of functions which manipulate namespaces has been improved to avoid possible access violations. The affected command and functions are:

Previously if one of these failed, certain internal structures would be left in a not quite coherent state which could lead to subsequent memory exceptions.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1952
Summary: Fix database expansion error

Description:

This change corrects a rare circumstance resulting in database degradation could occur during the addition of a secondary database volume. The error occurs if the current size of the database ends on a map block and the addition of the new volume requires setting incremental backup bitmap bits. If this occurs, the write daemon will encounter a serious disk write error because it tries to write the new bitmap blocks past the end of the prior volume set member.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP402
Summary: Sending broadcast to CONTROL daemon causes it to exit

Description:

This change corrects that situation where sending a broadcast to the CONTROL process with
$zu(94,<pid of CONTROL>,"test",2) 
causes the CONTROL process to core dump.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SML440
Summary: Prevent quiencent failure on back up operation when job stuck in ttwrite()

Description:

This fixes an error where terminal output stopped by Control-S or XOFF while the job is inside lock module could result in backup failing.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: SML610
Summary: Fix a backup quiesce problem on cluster.

Description:

This change fixed an online backup quiesce problem on cluster platforms with ECP channel. When there are jobs in slave systems waiting for an answer from the master, the online backup will fail on quiescing the cluster systems.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1956
Summary: Fix clearing of queue ENQDMN to avoid missed wakeups

Description:

A very rare condition which can result in a hung Caché cluster on VMS has been resolved. The symptom is that the ENQDMN misses a wakeup call and is hibernating while it has work queued up. When this happens, the entire cluster will hang.

The hang can be diagnosted by examining the output from

cstat -"E"4
and looking for a list of work waiting for the ENQDMN. In
cstat -p2
the ENQDMN will say idle (job #6). A
cstat -"P"6 
will send a wakeup to the ENQDMN and should resolve the hang.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: ALl
DevKey: HYY1041
Summary: Set %UI to "CHUI" in journal restore to prevent jobbed jobs from hanging

Description:

This change addresses a problem with multi-job journal restore on Windows where JOBbed restore jobs may hang in ^%Wprim or ^%CDCalBk (as shown in ^JOBEXAM). It affected only Windows platforms due to the way a JOBbed job is determined whether to be in GUI mode when %UI is not set. While it mainly arises from the multi-job restore feature introduced in 5.0.5, the problem may affect any user-implemented, jobbed off journal restore if local variable %UI is not explicitly set.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1125
Summary: Fix sorting in journal restore

Description:

This change corrects an issue in journal restore where too many concurrent global sorts could exhaust the page file quota of the process on OpenVMS, resulting in a <STORE> error.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML614
Summary: Clear premjobid when a request is done
Description:

This fixed an error in identifying the lock owner in an ECP server for locks owned by remote ECP client. If the locks were granted inside a transaction of the ECP client job, the server showed the wrong lock owner.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1086
Summary: Disable journaling in shadow database updaters if requested

Description:

This corrects a problem introduced in 5.0.13 where SETs and KILLs applied to shadow databases were journaled despite that the "journal applied transaction" property was not enabled.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: CFL1345
Summary: Add GetRoutineDest and GetGlobalDest methods to %SYS.Namespace class

Description:

Two new class methods have been added to %SYS.Namespace: GetGlobalDest and GetRoutineDest.

GetGlobalDest
Returns the system^directory where ^[Namespace]Global(Subscript) is mapped to. If Subscript is missing, it returns the location for ^[Namespace]Global. If Global is missing, it returns the default global location for Namespace.

GetRoutineDest
Returns the system^directory where Routine is mapped to in this Namespace. If Routine is missing, it returns the default routine location for Namespace.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LFT1187
Summary: Fix NEXT^%R for BAS extension

Description:

This fixes an error in searching for Basic routines using the CHUI utilities. Only routine names with dots in them are affected by this bug, and even in that case, only names where the second piece after the dot begins with something that collates before "BAS". Prior to the change, Basic routines named x.ABC or x.999 or x.1.y were not being found.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LRS972
Summary: Correct FREECNT report on larger databases

Description:

The free space calculations of the %FREECNT utility were incorrect for larger database. As a result, %FREECNT could report more than 100% of the space as free.

This has been corrected.


Likelihood High
Risk Low
Ad Hoc No
Enhancement No