|
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.
- A problem has existed since Caché 5.0.16 when calling Stored Procedures.
If an application using ODBC or JDBC issues a Close Statement call,
Caché incorrectly removes all server side information about the
statement.
If the application tries to execute the same Stored Procedure a second
time,
Caché will return an <UNDEFINED> error from the server.
There is no workaround for this error.
- A defect has been identified that was introduced in Caché 5.0.11.
If you use the follow SQL syntax
SELECT PatID, Name, SSN
INTO :array()
FROM Sample.Patient
where PatID was defined as the IDKey, the node where the value of
PatID is stored could change.
In releases before 5.0.11, you would have an array that looked like:
array(2)=12345
array(3)="Doe,John"
array(4)="111223333"
while in Caché 5.0.11 and later the array would look like:
array(1)=12345
array(3)="Doe,John"
array(4)="111223333"
The value of PatID had moved from array(2) to array(1).
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:
- Likelihood - The probability that a user on the affected
platform will encounter this issue.
- Risks - An assessment of how likely this change is to
introduce additional issues into the application environment.
- Ad Hoc - Whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - Whether this change provides new
features or capabilities.
- CHUI
- Languages.Cache Basic
- Networking
- Networking.ECP
- SQL.Query Processing
- System
- System.Backup/Restore
- System.Cluster Specific
- System.Journaling
- System.Lock
- System.Shadowing
- Utilities
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 -
- the constants: 'NVL', 'CASE', 'IFNULL', 'ISNULL', 'COALESCE',
'NULLIF', or
'DECODE'
- the host variables :NVL, :CASE, :IFNULL, :ISNULL,
:COALESCE, :NULLIF, or :DECODE.
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
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:
- ZNSPACE command
- $ZUTIL(5)
- $ZUTIL(20)
- $ZUTIL(39)
- $ZUTIL(45)
- $ZUTIL(46)
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
and looking for a list of work
waiting for the ENQDMN. In
the ENQDMN will say idle (job
#6). A
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 |