|
|
|
Caché Documentation
|
|
Release Notes for Maintenance Kits Prior to Caché 5.0.21
|
Welcome and thank you for using Caché, the post-relational database.
This document has a section for each 5.0.x maintenance kit:
There is no section for 5.0.6.
This document provides a listing of changes between Caché
5.0.19
and
Caché
5.0.20.
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.
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.
- Languages
- Misc
- Networking
- Networking.DDP
- Networking.ECP
- SQL
- SQL.Query Processing
- System
- System.Cluster Specific
- System.Journaling
- System.StartUp
Category: Languages
Platforms: All
DevKey: CDS421
Summary: Fix four-argument $BITFIND compiler
Description:
If the default direction of 1 was specified on $BITFIND, a <FUNCTION>
error resulted. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Misc
Platforms: All
DevKey: LRS970
Summary: Correct a couple of bugs in CacheHung.Com
Description:
The changes corrects several coding errors in
CacheHung that interfered with the proper checking on MUltiNet.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK279
Summary: Change LHANG to be consistent on all platforms
Description:
An internal function was used to pause for a specified number
of seconds. On OpenVMS, it released retained blocks before
waiting. This change modified it to not release the retained blocks on all
platforms; and release the retained block where necessary.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking.DDP
Platforms: All
DevKey: SML542
Summary: Support two digits ethernet device name for UNIX
Description:
This change supports ethernet device names that have
two trailing digits, so Caché could handle the ethernet cards
in the machine with more than 10 ethernet cards.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking.ECP
Platforms: All
DevKey: GK447
Summary: Fixed ECP recovery of partially processed request buffers
Description:
In prior releases, ECP recovery didn't track partially processed
request buffers accurately, and on server failure it could resend a
process lock request, or not send a synchronous request when it should
have. The side effects are: a lock could hang/loop the
ECP client daemon after recovery; or that some client jobs may hang
forever waiting for answer.
This change corrects that situation
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2506
Summary: TLEVEL not being adjusted properly
Description:
A problem has been fixed where
- multiple SQL insert/update actions occur within a single method or
procedure
- and the method or procedure is enclosed
within a transaction in AUTO_COMMIT mode.
In this situation, the method or procedure
could commit a transaction that
was started by the application code and not the filer.
This caused mismanagement of the transaction level.
It is now fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2502
Summary: Update with implicit join is broken in 5.0.18 - <UNDEFINED> error
Description:
This change corrects an error where an UPDATE
statement with an implicit JOIN in the WHERE clause using arrow syntax
could result in an <UNDEFINED> error running the query, or no
rows being updated when there should have been.
This problem was introduced in version 5.0.18.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS522
Summary: Clean up if callout setup fails
Description:
Under some conditions a QUIT command from the terminal that should clean up
after a <FRAMESTACK> error would instead halt the process. A <STORE> error
could also halt the process.
This change corrects that situation.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS691
Summary: Give <EDITED> instead of access violation if routine changes during $ZF
Description:
If a routine issues a callout ($ZF),
and the called routine in turn issues a callin to another routine that ends
up editing the routine
making the original callout while it is still active,
a memory access violation may occur
when the callout returns to the modified routine.
This fix will detect that condition and throw an
<EDITED> error instead.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK380
Summary: Shutdown to disable journaling while
waiting for the write daemon to catch up
Description:
The write daemon (WD) stores the previous check point journal index in the WIJ header.
Before shutdown signals a clean exit, it checks if the WIJ
header journal
index is the same as the journal index. If they are not, the
shutdown script modifies a dummy global and then forces a write daemon pass,
expecting the write daemon to store the latest journal index in the WIJ
header when it is finished.
If the dummy global is journaled, the modification increments the journal
index, and then the write daemon stores the previous journal index in the
WIJ. This causes the two indices to be out of synch again.
This change modifies shutdown to disable journaling in
current/shutdown process during this activity.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: OpenVMS
DevKey: GK393
Summary: Fixed hostname and IP validation
Description:
On OpenVMS systems, IP validation failed when the IP address had
no associated DNS entry. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK396
Summary: Disable ECP registration by STURECOV
Description:
This changes disables manual ECP session registration to prevent a
circumstance that resulted in the registration being performed twice.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: HYY1139
Summary: Purge the subscript-level cache when purging global vector
Description:
This change addresses an issue where a change to the journal
state of an subscript-level mapped global might not take effect immediately in
existing processes.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: 64-bit Linux
DevKey: JLC757
Summary: Fix membar for Linux/Itanium/AMD64
Description:
This change addresses an issue affecting Linux on
Itanium and AMD64 systems that might cause concurrency problems in
multiprocessor machines.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1834
Summary: SYSWATCH routine to monitor the health of a Caché system from COS
Description:
This change adds a new routine, SYSWATCH, in CACHESYS to monitor the various Caché
daemons and report if one of them terminates. This is not started by
default when the system comes up. To start this add
to
^ZSTU or SYSTEM^%ZSTART. SYSWATCH makes a console log entry if a
daemon terminates. The ^%MONITOR utility can be configured to generate
an email when this occurs.
in a terminal brings up the control menu. This lets you
start/stop the daemon, display any messages it has logged or
reconfigure the interval between cycles. The default interval is 120.
SYSWATCH records a little bit of information in
^SYS("SYSWATCH"). When it starts up, it purges any records which are
more than
30 days old.
Warning: SYSWATCH depends on
a properly functioning control process on Windows and UNix systems.
It will not operate if the control process dies or is hung.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: JO1836
Summary: Require WIJ to exist at Startup if SHUTDOWN didn't signal a clean exit
Description:
During shutdown, Caché will record whether
there are open transactions and whether journal restore is required
during the next startup.
When it next starts up, if Caché
cannot determine the last journal file from the WIJ, or if a required
journal file cannot be opened, and shutdown did not signal that
journal restore/transaction rollback were not required, the system
will not enable logins.
The -B command line flag can be used (with
csession on UNIX/OpenVMS or with ..\bin\cache -s. on Windows) to login to
Caché to resolve the problem. ^STURECOV can be used to retry
certain operations or to force Caché to start up with logins
enabled regardless of any problems which may be present.
Care should
be taken when forcing Caché to start up if journal
restore/transaction rollback cannot be run
because the application data may
be inconsistent in the globals.
In addition to the above, if the transaction rollback process queues
pending ECP transactions for later in the startup process, and if ECP
fails to properly deal with the pending transactions (either roll them
back or re-establish the transaction context), logins will not be
allowed until the problem is resolved.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1933
Summary: Update JRNSTART/JRNSTOP to work with STU code at startup
Description:
Change
JO1836 changed the product so that during startup if Caché does
not find a
WIJ and/or journal file, it will not allow users on the
system. However, in the case of a clean, normal shutdown
this check is overly-cautious and counterproductive.
This change alters ^JRNSTOP so that it leaves behind the same
information
as
^SHUTDOWN to tell ^STU that journal and transaction processing
recovery are not
required at startup.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: LFT1444
Summary: Fix Caché DDP for Cluster DSM use
Description:
This modifies Caché DDP networking for
clusters so only the master will send out advertisements. Getting
advertisements from multiple nodes from the same cluster was confusing
DSM machines.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RFD182
Summary: Fix PATROL on OpenVMS so it re-uses the same file version
Description:
Avoid creating multiple versions of the PATROL.DAT file on OpenVMS.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RFD183
Summary: Fix hang in SHUTDOWN of PERFMON
Description:
This change fixes a possible hang in SHUTDOWN
that can occur while trying to deallocate memory for PERFMON.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP168
Summary: Add severity level to opcom message
Description:
The cconsole log now contains a field denoting the
severity of the message information: 0 means informational, 1 is
warning, 2 is severe, 3 is fatal.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP199
Summary: Fix %Util to use 'quietly' parameter for loglevel, not 'severity'
Description:
Prior to this the severity code was being treated as
loglevel. This change corrects that error and properly displays the
output severity.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP233
Summary: Use OPMSG and provide severity for significant system error logging
Description:
This change supplies a severity code
for significant system
errors. Severity codes range from 0 (informational) to 3 (fatal).
They are logged in cconsole.log as a number following the date/time
and before the message.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP234; SAP235; SAP238; SAP246
Summary: Improvements to Monitor facilityConsole log monitor
Description:
This summarizes several changes and improvements to
the Monitor facility:
- SAP234
- This provides a management console for Monitor. The console
allows the operator to start and stop Monitor, set various parameters,
and define email settings.
- SAP235
- The system Monitor is started at system startup. If
email options are not configured, it enters a wait state until email
options are configured and the monitor is refreshed via the management
console. Otherwise,
it begins its monitoring of the cconsole log immediately.
- SAP238
- Allows the cconsole.log to be deleted while Cache is running.
- SAP246
- Allows the scan interval to be set. Upon setting email options for the first time and
restarting Monitor, it will have a high cpu usage because it has to
scan the entire log.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System
Platforms: 64-bit AIX
DevKey: SAP285
Summary: Support MQ on AIX 64
Description:
This change MQmake creates MQInterface.so for use on AIX 64-bit platforms.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: SAP427
Summary: Correct access violation in isend
Description:
This change corrects a situation that could case an access violation during View operations.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SJ1426
Summary: Allow larger # of active classes, release inactive classes from process table
Description:
This change allows a process to have more
classes active at any one time, and more efficiently deals
with classes that are not in active use by the process.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Cluster Specific
Platforms: All
DevKey: JO1957
Summary: Update cluster startup to read switches 8/10/11/13/14/15/21 from master
Description:
The Caché cluster code has been enhanced so
that a cluster member is no longer allowed to fully join a cluster
while a switch (10/13/14) which disables database access is set cluster-wide.
Previously this was allowed and the new system would
be allowed to cluster mount and read/write from databases. If the
cluster was in the process of performing a backup, this could cause
problems.
Now the new cluster member will detect the switches which have been
set cluster-wide and set those switches locally while it starts
up. This may mean that the Caché startup process will hang if a
switch is set which blocks global access.
A console log message will be generated if this occurs.
This version can interoperate with older versions but the new
functionality will not be present unless the master and the system
joining the cluster have been upgraded to a version with this
correction.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System.Journaling
Platforms: All
DevKey: GK443
Summary: Ignore dead ECP server open transaction jrn index
Description:
With this change, Caché
now remembers the journal index of open transactions.
In prior versions, it was possible for a dead ECP server session
to leave an invalid journal
index.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1025
Summary: Use severity levels in console messages for shadowing
Description:
Console messages for shadowing now come with
severity levels (INFO, WARNING and SEVERE).
Note: errors that are
fatal to shadowing are considered severe to the Caché system
hosting the shadow.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: JO1839
Summary: Monitor journal restore/tp rollback @ startup to generate progress info
Description:
During journal restore at startup a monitor will be
started to record the progress of the journal restore in the console
log. Messages will be generated every 5 minutes so that if the process
takes a substantial amount of time, the system manager can verify that
it is working properly.
The console log messages look like:
10/04-10:12:09:760 (17976) 0 Write daemon started.
10/04-10:12:11:042 (17400) 0 Clean Daemon Started
10/04-10:12:11:192 (13288) 0 Performing Journal Recovery
10/04-10:17:41:366 (18012) 0 Monitoring journal restore process pid 13288
10/04-10:17:41:616 (18012) 0 Journal restore progress.
File: c:\cache42\mgr\journal\20041004.015 Address: 102827040
10/04-10:17:44:881 (13288) 0 Performing Transaction Rollback
10/04-10:17:49:568 (13288) 0 Max Journal Size: 1073741824
10/04-10:17:49:588 (13288) 0 START: c:\cache42\mgr\journal\20041004.016
10/04-10:17:50:038 (13288) 0
Journaling selected globals to c:\tmpcache42\mgr\journal\20041004.016 started.
10/04-10:17:50:068 (13288) 0 Rolling back transactions ...
10/04-10:18:11:629 (18012) 0 Journal restore monitor exiting
(The entry of 17:50:038 has been placed on two separate lines.)
Note: If the journal restore takes less then 5 minutes, no messages
are generated.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System.StartUp
Platforms: Windows
DevKey: SAP118
Summary: NOSTU option for windows startup
Description:
On Caché for Windows, a new option is added
to the css program that allows a user to start only the system daemons
without doing any of the normal recovery steps. This option to the
css program looks like
css startnostu [<config>]
This functionality is required to resolve the occasional customer
crisis. One example of such a case is when journal recovery errors or
hangs the system because of filefull conditions or database errors.
You need to force down, start with NOSTU, enter Caché with the
-B option, fix the problem, and then restart. Starting with the NOSTU
option does not zero any journal recovery pointers in the WIJ. That
way, when you restart normally, you will still do the same recovery
that was pending.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
This section 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 clause 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 quiescent 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 diagnosed 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 databases. 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 |
This section provides a listing of changes between Caché
5.0.17
and
Caché
5.0.18.
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 exists in 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.
- Config Mgr
- CSP
- CSP.Net
- Ensemble
- Languages.COS
- Networking
- Object.Activate
- Object.Class Compiler
- Object.Library
- Object.Soap
- Object.Storage.Default
- Object.Storage.SQL
- Object.Stream
- Object.XML
- SQL
- SQL.DDL
- SQL.ODBC
- SQL.Query Processing
- Studio
- System
- System.I/O
- System.Journaling
- System.Lock
- System.Shadowing
- Utilities
Category: Config Mgr
Platforms: All
DevKey: CFL1014
Summary: Add async disconnect switch to Config Manager
Description:
A new switch has been added which allows processes connected to a Windows
system via telnet to
receive a <DSCON> disconnected error asynchronously at the time the
disconnect occurs. The default behavior is to give the error only on the
next READ command. This switch has no effect unless disconnect errors are
enabled with $ZU(68/69,15,1). The new switch is $ZU(68/69,60,1).
This change adds the parameter, AsyncDisconnectErr, to the Miscellaneous
section of the .cpf file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: CSP
Platforms: All
DevKey: MAK1455
Summary: When ending a CSP session make sure the session global is present
Description:
If a user CSP application
- is using %session.Preserve=1 mode,
- and it issues a 'Lock' command.
- and then releases the lock this process has on the CSP
session,
it was
possible for the CSP daemon to clean up this license just before the
process running this connection exited. In fact, the license and session
information would get cleaned up twice.
With this change, the end session code gets
another lock on the CSP session before doing anything with this in
case the user code released this lock.
If the session global is
empty, then it knows someone else has removed the session so it has
nothing to do. Also the CSP daemon will time the session out
just slightly slower than the process exiting so the actual process
gets to close the session properly first before the daemon tries to
close it.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MXT536
Summary: CRLF in a string breaks #server()#
Description:
This change adds code to handle the case where the
characters $c(13) and $c(10) occur inside the #server directive.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MXT693
Summary: Applet version of #server has some locale inconsistencies
Description:
This change always forces JavaScript conversion of #server arguments
to strings which will always use periods in a decimal number.
Previously, when using the Java applet, #server relied on Java
LiveConnect conversion of a number to a string. Internet Explorer used the current
locale for this conversion (for example, ",", for non-English locales) and Mozilla
used JavaScript conversion (always "."). Now all browsers consistently
use JavaScript conversion.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Net
Platforms: All
DevKey: MXT691
Summary: %Net.SMTP BCC written to mail header
Description:
This changes the default behavior of %Net.SMTP to not write Bcc headers into the email message.
The ShowBcc property has been added to %Net.SMTP which, if set to 1, will keep
the old (incorrect) behavior of sending the Bcc headers.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: Ensemble
Platforms: All
DevKey: MC479
Summary: Fix bug that %File:DriveList query does not return the last item
Description:
In prior versions, the logic in DriveListFetch caused the
last item not to be returned. This is fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Languages.COS
Platforms: All
DevKey: SJ1657
Summary: Fix $BITLOGIC(a|b) problem for certain values
Description:
This fixes a bug that occurred when or'ing two
bitlists, where one was in bit list
format (as opposed to bit map format), and the other one had a shorter
logical length and was all ones and had no body.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: DAS469
Summary: Fix OpenVMS <ACCVIO>
Description:
This change alters the
optimization which determines the optimal number of open files for
network daemons by eliminating it for OpenVMS. The
optimization addressed a performance problem on NT only and
is not an issue on OpenVMS.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK416
Summary: Added protection to prevent buffer overrun when invalid blocks are viewed across ECP
Description:
Applications can only view global directory blocks across ECP, other
blocks may fail or not arrive completely. This change modifies
the view across ECP to protect ECP and application from buffer
overruns.