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.
Changes for Caché 5.0.20
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:
Critical Changes In This Release

 



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

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
JOB ^SYSWATCH
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.
DO ^SYSWATCH
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

 



Changes for Caché 5.0.19
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.


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 clause 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 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

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 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

 



Changes for Caché 5.0.18
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.


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: 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

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.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK425
Summary: Refresh remote class descriptors after ECP failover.

Description:

When a remote class is in use and there is an ECP server failover, sometimes the method invocation fails with an unexpected remote class recompiled error. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK430
Summary: ECP client to exit on shutdown consistently

Description:

Sometimes the ECP client read daemon didn't exit on shutdown. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK433
Summary: NWDS (Net Wide Domain Server) activation to preserve ECP client sessions

Description:

This changes the NWDS master to preserve ECP client configuration after master reactivation. Without this fix any reference to a remote DB via ECP may cause an access violation.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Activate
Platforms: All
DevKey: JN211
Summary: Rework handling of UserDefined Types by Activate

Description:

Activate did not properly discriminate between interface-based and enumerated user-defined types. This led to access violations when attempting to use some ActiveX Objects. The situation has been corrected to treat these types appropriately.
Note: This fix has introduced a backwards incompatibility for *some* ActiveX objects. Use of the generated classes remains the same so it is not necessary for users to update their applications per se, but to ensure continued proper operation, existing users of Activate should re-import their classes using the Activate wizard.
Additionally, to help identify those ActiveX objects which cannot be handled by Activate, the classes %Activate.SafeArray and %Activate.UserDefined (which are subclasses of %Activate.Unsupported) have been introduced. Those ActiveX objects that have method/property parameters or return values of these types are not supported.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1329
Summary: <FRAMESTACK> error in %AddToSaveSet()

Description:

Some classes have recursive references that allow simple structures such as linked lists to be represented. Under some circumstances, a relatively small number of objects that are linked can cause a <FRAMESTACK> error when triggers fire during a save if all objects have been swizzled. A change has been made to %Save() that recognizes simple recursive references and chooses a different mechanism for including each swizzled reference to the save set.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK804
Summary: If an error occurs when importing an XML class definition, keep the old class

Description:

This change, originally introduced in Caché 5.0.17, had issues related to importing OBJ code stored in an XML file. These have been addressed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Library
Platforms: All
DevKey: DLP1346
Summary: Fix infinite loop when a recursive reference cycle is encountered during save

Description:

Some object references result in a circularly linked list. This structure caused an infinite loop. This change detects that situation and prevents the loop.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT708
Summary: Add option to WSDL reader to include parameter for xsi:type attribute

Description:

This change adds an OutputTypeAttribute property to %SOAP.WSDL.Reader class. If OutputTypeAttribute = 1 when the Process method is called, then the OUTPUTTYPEATTRIBUTE will be added to the Web Client which is created.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1339
Summary: Set %msg variable when an invalid ID is generated

Description:

The variable, %msg, is now set to the error text when an ID counter validation check failure occurs. This makes object behavior consistent with SQL error reporting.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1331
Summary: Fix recursive reference calculation

Description:

An error was fixed where an <INVALIDOREF> error is reported when a property that originates in a superclass is subsequently inherited from a different superclass.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1343
Summary: Call index build/purge functions in table routine

Description:

%BuildIndices and %PurgeIndices is now supported for classes using %CacheSQLStorage. Previously these methods were only implemented for classes using %CacheStorage. %CustomStorage does not implement these methods.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1452
Summary: %ExistsId returns incorrect value for SQL storage after rollback

Description:

Caché Objects use transactions during filing. If the user initiates a transaction outside of a call to %Save(), then some in-memory structures might not be updated if the user transaction is subsequently rolled back. There is no mechanism available to rollback the state of the in-memory objects in this situation. The problem is that object persistence might improperly dispatch to an update when the object does not exist in storage. Classes using %CacheStorage do not experience this problem because of an internal existence check that is performed prior to dispatching to insert or update. %CacheSQLStorage does not perform this check so it is possible that an object will be dispatched to update which will subsequently fail with SQLCODE = 100.

%CacheSQLStorage will now check for an update failure with SQLCODE=100. In that case it will attempt to save the object with an insert.

Note: This change does not solve the problem of user-initiated transactions and rollbacks, only update failures due to non-existent objects.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP982
Summary: Don't add parent reference to ROWID if already specified

Description:

If the idkey definition includes the parent reference then, with this change, it will not be automatically added to the idkey by the class compiler.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage
Platforms: All
DevKey: DLP1407
Summary: Address infinite loop in %AddToSaveSet when saving an object containing a reference to a self-referencing object

Description:

Previously, it was possible for an infinite loop to occur when saving an object that contained a reference to a self-referencing object (also known as a reflexive object); this loop occurred in %AddToSaveSet. This has been addressed.
Background:
A recursive class is a class that has a property whose type is that same class. A recursive object is an instance of a recursive class such that one instance of the recursive class has reference to another instance. A self-referencing or reflexive object is a special type of recursive object — one that has a reference to itself.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Stream
Platforms: All
DevKey: MAK1465
Summary: Object instances "loses" stream if save fails

Description:

Prior to this change, if a stream is saved as part of a transaction, and the transaction is rolled back because another object in this transaction failed to save, the stream was not rolling back its internal state and so would lose the stream data. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT705
Summary: Add option to always include xsi:type attribute for elements output for a class

Description:

Some Java tool kits require the xsi:type attribute to be specified for all elements even when the type can be determined from the WSDL document.

This change adds the property OutputTypeAttribute to the %XML.Writer class which forces the xsi:type attribute to be added to elements that are output based on object properties.

It also adds the parameter OUTPUTTYPEATTRIBUTE to SOAP Web service classes that forces the xsi:type to be used for all elements in the response; and the parameter OUTPUTTYPEATTRIBUTE to SOAP Web client classes that forces the xsi:type to be used for all elements in the request.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2121
Summary: Add To_Char and To_Date with Timestamp (and other date formats)

Description:

The SQL Scalar functions TO_DATE and TO_CHAR now accept %TimeStamp values as input. In addition, support for some time-related formats have been added.

For TO_DATE and TO_CHAR, the expression passed to the function may now be a valid %Library.TimeStamp logical value.

For TO_DATE and TO_CHAR, the following format codes have been added for support of TimeStamp values:

   HH     Hour of Day (1-12)
   HH12   Hour of Day (1-12)
   HH24   Hour of Day (0-23)
   MI     Minute (0-59)
   SS     Second (0-59)
   SSSSS  Seconds past midnight (0-86399)
   AM     Meridian indicator
   PM     Meridian indicator

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: SQL
Platforms: All
DevKey: DPV2167
Summary: Allow date format of YYYYMMDD in TO_DATE

Description:

TO_DATE now supports the following two formats: 'YYYYMMDD' and 'DDMMYYYY'

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2416
Summary: Improvements to handling $Piece maps with Overridden DataAccess expressions

Description:

With this change, when an application

it needs to specify a valid Row Reference in your map definition rather than try letting the system generate one for you.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2435
Summary: Fix compilation of read-only table when CompiledTopLevelPieces is ""

Description:

A problem has been fixed where a table that could not generate filing code due to a non-filable %CacheSQLStorage mapping might get a <NULL VALUE> error during the compilation of the table.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.DDL
Platforms: All
DevKey: BJB295
Summary: Make sure Selectivity is not 0 with $justify(19), same as %qarTune

Description:

A correction has been made to the SQL Manager. If TuneTable was invoked from SQL Manager and ended up with a very small Selectivity, first 5 decimal places all 0, the SQL Manager would file the wrong value.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: AND611
Summary: Pay attention to user-supplied parameter type

Description:

A previous change (AND453) made parameter resetting impossible. This caused issues when SQLExecDirect was called. Hence, the behavior has been reversed, so that Caché now pays attention to user-supplied parameter types.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK619
Summary: Parent reference with more than 10 physical parts

Description:

This change corrects a problem that occurs in child table when the parent table rowid has more than 10 physical components, for example, more than 10 generations of parents/grandparents. This problem exists in all versions of the product.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: BJB274
Summary: Add Name Space info to the mtemp0 header, $zu(67,6)

Description:

This is an enhancement to the header info that is stored in ^mtemp0. The change adds Name Space info the header of ^mtemp0. This is used by generated SQL code for sorts during query runs. The info can be used to track down problem queries.

The structure looks like:

^mtemp(8,0)=$H^Job #^UserName^Server Name^Client IP^Routine Name^Name Space
for example:
^mtemp0(8,0)=58953,29117^1984^TestUser^TESTLAB2^127.0.0.1^CacheSql1^User

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2426
Summary: Rollback fail after UPDATE problem

Description:

SQL UPDATE, DELETE, and INSERT...SELECT statements are now atomic in nature; the statement either completes successfully or no rows in the table are modified.

For example, assume you execute an update statement that will update 20 rows in the table. The new value for a field in the 17th row fails validation. Prior to this change, the first 16 rows would have been updated and the statement would return an SQLCODE=-104 error. It was up to the application to catch the error and role back the update of the previous 16 rows (if desired). Now, if any row fails to update, none of the rows in the table will be updated by the statement. The same is true for DELETE and INSERT ... SELECT statements.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2442
Summary: UPDATE problem in transaction

Description:

A bug has been fixed where a statement like:
UPDATE MyTable
   SET MAXID = MAXID + 1
 WHERE MyField = ?
might not update any rows due to concurrency issues if multiple processes where attempting the update at the same time.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK974
Summary: Improvements to source control hooks

Description:

This change, originally introduced in Caché 5.0.17, had issues related to importing OBJ code stored in an XML file. These have been addressed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System
Platforms: All
DevKey: CDS413
Summary: Give <EDITED> when routine changes during debugging

Description:

If a routine being debugged by one process is updated by another process, the system could attempt to use an invalid address to resume execution in the debugger. This gives invalid results or an access violation for the process being debugged. The situation is now corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: GK378
Summary: Changed ECP client connection name

Description:

The ECP client sends its connection name to the server. Currently the name is
<cli sys name - default is host name>.<ECP connection name>
This change alters the order and the separator; the new format is:
<ECP connection name>:<cli sys name - host name>
If the cli sys name is too long it will not prevent ECP from recovery, (The server identifies the connection by the connection name + the client GUID). Also, the server entry in the control panel will have the connection name followed by the host name; it makes the connection name be more useable since most sites are configuring multiple connections to the same server.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: GK382
Summary: ECP client to display the connected host IP.

Description:

This change adds a console log msg with the destination host IP when an ECP client establishes a connection

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: GK399
Summary: TCP read to honor PSW2OLDTCPXY switch.

Description:

This change makes TCP disable x/y calculation when a process's $zu(68,55,1) switch is set.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1943
Summary: Correct reference counting error

Description:

A rare problem which can result in memory exceptions has been resolved. The problem is most likely to be seen in application which reference more than 8 namespaces (often) or rarely when the system reloads the namespace configuration.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: LFT1451
Summary: Fix error using UTF8 in zobjexport

Description:

This fixes a problem on the import side of $zobjexport when using function 13 and UTF8.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.I/O
Platforms: All
DevKey: CDS515
Summary: Allow asynchronous DISCONNECT errors for telnet sessions

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).


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY811
Summary: Fix global reference passed to journal restore filter

Description:

This change addresses an issue where an invalid (incomplete) global reference name may be passed to the filter (^ZJRNFILT) used in journal restore. This occurred if the character "]" appears in a subscript of the global reference.

The problem was present in all released Caché products.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: RJF027
Summary: Avoid redundant error logging in JRNINFO

Description:

If the source of cluster shadowing has a CACHEJRN.LOG whose last entry for a particular cluster system number is a journal file that doesn't exist, a message like the following message would be logged repeatedly to the cconsole.log:
JRNINFO SERVER ERROR: Information about _$101$DKA200:[JANUS.RJF5.MGR.JOURNAL]200
30917.001 cannot be updated as the file is gone
The most common reason for this situation would be if a former member of a cluster has been removed from the cluster. With this correction, the message will be logged only once.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: RJW1148
Summary: Multi-threaded shadowing using excessive cpu

Description:

Corrects a problem where shadow processes would consume excessive cpu on client systems because of excessive polling. This problem was most evident on AIX.
Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1135
Summary: Addressed a case of accvio in journal utility

Description:

Addressed an issue where running journal utilities (such as JRNDUMP or JRNINFO) might result in an access violation (accvio) or a core dump in some circumstances. It affected mainly clustered Caché systems.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML563
Summary: Fix a potential dead lock when locking parent node on ECP server

Description:

This change avoided a possible dead lock on the ECP client. For example:

If the client job then did the following:

F i=1:1:10000 l +^TEST(1) l -^TEST(1) w !,i
it will eventually hang.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML604
Summary: Handle unlock locks to more than 8 different remote servers.

Description:

When a job owned locks to more than 8 remote server through any network (ECP,DCP,DDP), a non-incremental lock (L ^a) or argumentless lock (L ) command will leave the lock to 9th remote server in 'delock pending' state in lock table. Furthermore, the lock won't be released on the remote server either.

This change corrects that situation.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1110
Summary: Address <ACCVIO> in cluster shadow

Description:

This change addresses a concurrency issue in cluster shadow that could cause an <ACCVIO> error.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1121
Summary: Address a <NOROUTINE> error on shadow

Description:

This change corrects a problem in 5.0.13 and later where, under some rare circumstances, shadow processes might terminate unexpectedly for no obvious reason (i.e., no error message indicating what went wrong).

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: RJW1132
Summary: Shadow getting <DIRECTORY> during namespace reactivation

Description:

A problem that could cause the shadow set/kill process to get a <DIRECTORY> error during namespace reactivation has been corrected. The error had caused shadow dejournaling to stop on the shadow client.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LFT1449
Summary: Fix bug in AllocateBlockInMap

Description:

This fixes a problem using REPAIR to allocate and free blocks in a map. The problem occurs if the database has more than one map and the block number is not in the first map.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: SML599
Summary: Remove extraneous check for some references

Description:

Prior to this change, Caché would try to access $D(^|NS|foo) to validate the input namespace. This caused the system to slow down if the namespace were mapped to remote ECP.

Because the reference won't be cached in the client's buffer, there is an unnecessary round trip network for every use of it. This change removed this unnecessary checking.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: TCS015
Summary: Identify Lock Master for LOCKTAB

Description:

When LOCKTAB is run on a cluster, this change will now add a line to the headed identifying this node as a cluster member, whether or not this node is the lock-master and, if not, the name of the node that is the lock-master. Attempting to free a lock on a cluster that was taken out on a node other than the originating node will display a warning message before allowing the user to proceed.

The change also adds a new, non-interactive utility to provide information about the cluster.

Manually freeing a single lock through LOCKTAB will add a message to the console log.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LRS965
Summary: Fix %FREECNT utility calculations

Description:

An issue was introduced with Caché 5.0.17 where the free space calculations of the %FREECNT utility and the Caché Control Panel's Local Databases display caused all free block values to be displayed as zero. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 


Changes for Caché 5.0.17
This section provides a listing of changes between Caché 5.0.16 and Caché 5.0.17.

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: Misc
Platforms: All
DevKey: RJW970
Summary: Cstat shows a dead process as alive if Windows has reused the process id

Description:

Prior to this change, it was possible for cstat to show a dead process as alive (that is, no "D" indicator in the pid table display) if the process Id had been reused by the operating system for a new process.

Cstat now performs further tests to insure that the process is running cache.exe from the configuration's bin directory before considering it a valid Caché process in the current configuration.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Misc
Platforms: All
DevKey: SAP388
Summary: Correct access violation in mailbox broadcast

Description:

This change corrects a situation where, under certain circumstances, an attempt to send a broadcast message to all mailboxes could result in an access violation error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: DLP1445
Summary: %IsModified and IDKey Integers

Description:

A correction has been made for the situation where an object ID based on a simple integer property might be inappropriately detected as modified when set to itself. For example, 'set obj.Prop=6' would report the object as modified when the original value of obj.Prop had previously been 6.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK804
Summary: If an error occurs when importing an XML class definition, keep the old class

Description:

Prior to this change, if you had a class on your system, and then an attempt to import another version of that class failed, Caché would delete the existing class. Now it correctly leaves the existing class present if there during import.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage
Platforms: All
DevKey: DLP1353
Summary: EXTENTSIZE loading restored

Description:

A prior change discarded the value of the EXTENTSIZE parameter when loading a class from XML or CDL. This change reverses that. If you are replacing an existing class with XML or CDL that does NOT contain EXTENTSIZE the EXTENTSIZE of the replaced class will be retained.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1319
Summary: Optional OID uniqueness checking added

Description:

A new configuration option now makes it possible to validate system-assigned ID values for new instances of objects. The option is activated by
SET ^%SYS("dbms","validate system-assigned id") = 1
Classes using default storage and system-assigned IDs do not normally check for the existence of an object with the newly assigned ID value. That check is, under normal circumstances, not necessary as the global reference used for the system ID counter is updated each time a new object is inserted into the extent. However, in very rare cases, it is possible for this counter to contain an incorrect value. This can happen if the user modifies the value manually; if objects are inserted into the extent without using the object or SQL filer; or system recovery efforts modify this value and are subject to errors.

By setting the configuration option, the class compiler will generate a uniqueness check on insert for the ID value. If at runtime the uniqueness constraint fails, an error, IDKeyCounterNotValid, will be returned to the caller and a message will be written to the console log. Each failure will also cause the ID counter to be incremented so it is possible that the problem will correct itself over time. It is important to review the console log when this error is reported .

In certain deeply nested object models, it is possible that the underlying error message will not be reported. Rather, a cyclical dependency error could be reported from %Save(). This is not the usual case but, when a cyclical dependency error is reported, one possible cause might be the IDKeyCounterNotValid condition.

When an IDKeyCounterNotValid error message is reported it will be necessary to bring the ID counter back into sync with the data. It is the responsibility of the application developer or administrator to determine how the counter became invalid (manually set by a user or by code not using object encapsulation, bad recovery of a journal file, disk failure, etc.). The correction for the error condition depends on how the data and counter were caused to be out of sync.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2289
Summary: For SQL INSERT, Start transaction prior to default value allocations

Description:

During SQL INSERT, if the SQL filer needs to start a transaction, the transaction will now start earlier in the filer than it used to. The transaction will now start before any default values are assigned, including the $Increment(^glo) default value of the RowID field (if applicable). This allows the $Increment of any globals in default values to be recorded in the journal file.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2301
Summary: Conditionally report error if RowID counter is out-of-synch

Description:

This is the SQL counterpart to DLP1319. Please see that item for details.

The condition will be reported as an error code of -119.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2419
Summary: %r and default parameter for device

Description:

The default file parameters when sending the output of %r to a file are now "WNS".

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2422
Summary: Correct duplicate cached query problem

Description:

A problem has been corrected where under certain rare circumstances the same cached query routine could be associated with and invoked by two different SQL statements.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: PVA080
Summary: Join condition following IN type condition on each of its operands produces wrong result

Description:

An error has been fixed where certain queries could return the wrong answer. The type of query affected contains these phrases:

and also the condition, col1 = col2, is true.

The problem may occur whether col1 and col2 come from the same table or different tables. Also, the IN condition could also be "(col1=? or col1=? or ...)" and similarly for col2.

Other conditions can occur before or after these, or in between them. However, if the join condition occurs before at least one of the IN conditions, the problem doesn't happen.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: AGC304
Summary: Studio COS Parser - support $ZLIST and other legacy functions

Description:

The Studio COS parser now colors legacy list functions: $ZLENGTH, $ZLIST, $ZELEMENT, and $ZSUBLIST.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: DVU1044
Summary: New menu item: Add to Source Control

Description:

Added Tools->Source Control->Add to the Source Control menu item which will cause to add the active document to source control.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: JN289
Summary: Support #[]# syntax in CacheHTML

Description:

A previous change introduced support for the new #[]# syntax, which allows ObjectScript commands to be embedded. This adds it to the &html(...) processor.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK1002
Summary: Two periods appear in mac file when load from XML

Description:

In prior versions, importing a routine from Studio was not working correctly because Studio lost the extension type of the item it had imported. The item would be imported correctly but it would not get compiled. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK1082
Summary: Improve error message from Studio GetStatus hook

Description:

When an attempt to lock an item calls the studio hook in the 'GetStatus' method, Caché now uses more information in returning an error code to the caller.

Prior to this, Caché would always report that the item was not checked out of source control. Now it only reports this is if the 'isinsourcecontrol' argument is true; otherwise it just reports that this item is not editable.

Also if a username is returned from the GetStatus call, this is displayed as part of the error text.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK1145
Summary: BAS routines not compiled on load from Studio

Description:

This change fixes a problem importing and compiling a BAS routine. It also improves support for importing large numbers of items into Studio.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK1205
Summary: Allow open dialog to respond faster in namespace with huge numbers of routines

Description:

The Studio Open dialog displays items sorted case insensitively. When a user opens up a namespace with a huge number of routines, Studio must scan the whole list to find the correct order to place these routines in. This can cause delays when there are hundreds of thousands of routines in a namespace. In order to allow these namespaces to be usable you can now set a flag:
Set ^SYS("Studio","CaseInsensitive")=1
This will force Studio in this namespace to work in a case insensitive manner which allows it to list the items as they are found rather than having to sort them all first. The routines are all listed at the root level rather than the standard approach which is the list routines from a class compile along with that class.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK974
Summary: Improvements to source control hooks

Description:

This change modifies the import/export functions so that they will also call the source control hooks when a user imports items. This permits the source control hooks to export them to a source control system.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System
Platforms: All
DevKey: CDS388
Summary: Ignore $HALT for error HALTs

Description:

When a process has set $HALT, it should be effective only for normal process termination. This fix corrects a problem that caused the system to attempt to locate and run the $HALT routine in situations such as RESJOB and system errors when the process should be halted immediately without attempting the $HALT.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS656
Summary: Fix %STACK $ZU(41,n) when routine has changed

Description:

The %STACK debugger utility could display unprintable characters if the routine object code is modified while the routine is being debugged. This is no longer the case.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS659
Summary: Fix bad routine context after $HALT trap

Description:

If a routine sets $HALT to an entry point in a different routine, and the halt trap returns back to the original routine because of a QUIT command or a trapped error, the original routine context is not restored correctly. Prior to this change, this situation could cause invalid execution results or memory access violations.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS665
Summary: Fix error processing crash when routine source unavailable

Description:

A memory access violation could occur during error processing if there was an unexpected additional error while trying to read the routine source. With this fix, the system will continue without providing source information about the original error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1909
Summary: Fix deadly embrace in system function

Description:

This changes corrects a rare problem where Caché may get suspended in a system function while holding database blocks under a lock.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1926
Summary: Eliminate <EDITED> error for changed callers

Description:

A problem which could cause an exception (core file, dump file, etc) where an <EDITED> error should have been generated has been resolved. This involved cases where the program is returning after evaluating the result of an indirection that involved invoking another routine and the routine it is returning to has been recompiled. An example of where this could occur is a reference of the form:
 Set str="name($$ent(123))"
 Set x=@str
where $$ent goes off to another routine which causes the calling routine to be recompiled.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Windows
DevKey: LFT1371
Summary: Handle Windows process table expansion correctly

Description:

This fixes possible access violations during shutdown in situations where the process table has been expanding. This is on Windows only.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: LFT1446
Summary: Fix Unicode problem in $zobjexport

Description:

This correct a problem in $zobjexport with exporting long strings in a Unicode encoding.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: LRS771
Summary: New $System.Device methods

Description:

New $System.Device class methods have been implemented. Descriptions are available in the %SYSTEM package class documentation. In summary:


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: UNIX, Linux
DevKey: LRS947
Summary: Fix startup node name detection on UNIX for DHCP

Description:

A problem with the Caché node name recognition has been fixed. This only affected UNIX/Linux systems which connect to a DHCP name server. After an abnormal system shutdown, Caché startup could believe the instance was still in use by another node.

Correct utilization of the unique node name mechanism requires that the 'ccontrol nodename <name>' command be used to assign a unique name to the local node/machine, and that no instance of Caché should be active when the node name is assigned or modified.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD097
Summary: Allow "0" process count in PATROL

Description:

Allow users to select "0" process count for less overhead in collection.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD101
Summary: Enable system-only MONITOR statistics for ^PATROL

Description:

This change corrects issues with interactions between ^PATROL and ^PERFMON (MONITOR), and also removes unnecessary overhead (STATISTICS resource locking) when running PATROL.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD118
Summary: Add ECP statistics to MONITOR utility

Description:

This change adds ECP operations to the MONITOR (i.e. ^PERFMON and $System.Monitor) network statistics.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System
Platforms: All
DevKey: RFD137
Summary: Fix server name for ECP MONITOR statistics

Description:

This change displays the correct client name for server statistics in MONITOR. ECP shows the name of client, as opposed to the address for DCP statistics.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD138
Summary: Fixes for ECP/DCP MONITOR statistics

Description:

This change corrects network MONITOR statistics, including proper display of ECP and DCP node names.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD140
Summary: Add all metrics for ECP MONITOR statistics

Description:

This change adds all network related counters (total requests, cache hits/misses for client, etc.) to the ECP MONITOR metrics. They now parallel DCP metrics.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Windows
DevKey: SAP247
Summary: Cforce works for any error getting events

Description:

This corrects a situation where, on Windows XP after the Control Process has crashed, the system can not be cleanly halted, even by cforce.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP261
Summary: Fix mailbox send hang when destination process is hung in %HALT

Description:

A process performing %SS or any mailbox send may hang forever if the destination process has gotten in a state where the mailbox lock is permanently held. With this change, the calling process will exit the mailbox code after trying and failing to get the mailbox lock 10 times (total wait of 1 second).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Windows
DevKey: SAP289
Summary: Use correct thread handle for priorities on Windows

Description:

This corrects a situation where, if you change the priority of one process other than the current one, using $SYSTEM.Util.SetPrio(prio, processid), then all process priorities may be changed by the same amount. This will not happen if the current process priority is changed, using ^PRIO or $system.Util.SetPrio(n).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP392
Summary: Correct segmentation fault in the signal handler of $VIEW(-1)

Description:

This corrects a problem where a fault could occur during use of the $VIEW function to view data in the process partition.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SML471
Summary: Add a Clean daemon to take over from Control Daemon clean task

Description:

This change adds a new daemon called the 'Clean Daemon' (CLNDMN). This daemon wakes up every 10 minutes to scan the system pid table to see if any dead jobs are pending. It will reclaim any dead job pid slot it finds. This daemon takes over the duty used to be done by Control Daemon.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System
Platforms: All
DevKey: JLC740
Summary: Support 64-bit dllids in $ZF(-4) and $ZF(-5)

Description:

This change fixes a potential problem on 64-bit platforms where trying to load a user DLL or shared library via $ZF(-4)/$ZF(-5) might result in an error depending on previous memory allocations.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY1038
Summary: Add an option to ignore default journal directories during journal restore

Description:

This change adds an option to remove default directories (for searching for journal files to dejournal) when setting up noncluster journal restore. (The mechanism/interface for locating journal files in cluster journal restore is different.)

Prior to this change, the prompt for specifying journal directories along its help text looked like this:

Files to dejournal will be looked for in:
d:\Cache51\mgr\journal\

Specify other directories to search: <return when done>
There was no way to remove "d:\cache51\mgr\journal\" from the list of directories to search for journal files.

With this change, the prompt looks like this:

Files to dejournal will be looked for in:
     d:\cache51\mgr\journal\
in addition to any directories you are going to specify below, UNLESS
you enter a minus sign ('-' without quotes) at the prompt below,
in which case ONLY directories given subsequently will be searched

Directory to search: <return when done> -
     [Directory search list is emptied]
Directory to search: <return when done> d:\cache51\mgr\journal\
Directory to search: <return when done>
Here is a list of directories in the order they will be searched for files:
     d:\cache51\mgr\journal\
Note that there must be at least one entry on the directory search list or Caché will issue a warning:
** WARNING ** Directory search list must NOT be empty
and the setup will keep prompting.
Directory to search: <return when done>
unless one hits Ctrl-C to abort journal restore.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System.I/O
Platforms: All
DevKey: LRS778
Summary: Implement sequential file sharing/locking option in OPEN

Description:

A new sequential file OPEN option has been added, to provide exclusive write access to a file. This provides a way of blocking simultaneous updates of a given file by various processes. The "L" option may be combined with "R" and "W" options as follows:

Under Caché/Windows, shared access for read and write is the default, so "RL" does not alter the behavior. Exclusive mode interacts with file accesses by non-Caché applications on the system.

Under Caché/UNIX, the share mode mechanism employs file locks, so "RL" is necessary to coordinate with "WL" usages. If the "L" option is not specified on OPEN, file locking neither affects nor is affected by processes that do not employ it.

Under Caché/OpenVMS, files opened for write access use exclusive mode (no sharing), and those opened for read use shared GET mode. This behavior is not affected by the current change, hence the "L" option is not used.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System.I/O
Platforms: All
DevKey: LRS836
Summary: Avoid file deletion if user confuses keyword syntax

Description:

To avoid accidental deletion of a sequential file due to incorrect keyword syntax specification in the OPEN command, this change nows causes a syntax error to be reported if there is a "/" (slash) anywhere in the mode parameter string (the first positional device parameter).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.StartUp
Platforms: All
DevKey: SAP351
Summary: File associations are confused when a multivolume DB fail to mount

Description:

In previous releases, if one of the extensions after the first volume of a multi-volume DB fails to mount during startup, then those extensions that successfully mounted before the failure are not cleared, and are assigned instead to the next DB in the list of databases in the config file.

For example, suppose there are two databases, "Multi" and "Single". Multi has primary and 3 extensions stored in these files:

Further suppose that the cache.ext in c:\v4 is deleted and Caché is started.

In this case, the DB Multi is not mounted because extension v4 fails to mount. But the DB Single will be started as a multi-volume DB, with extensions in


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: RFA019
Summary: In %Buttons, do not delete cstat output file(s) if not appended to the HTML report

Description:

An error was corrected in %Buttons where the cstat output and/or cconsole.log files were being deleted even if they were not copied to the HTML output file.

%Buttons does not include these two files if they are larger than 5MB or if appending either one of them will make the HTML output file larger than 5MB. In this case, a pointer to the original location of the cstat and/or cconsole.log is written to the HTML file.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: SAP123
Summary: %FREECNT performance enhancements

Description:

In calculating free space, this change causes Caché to examine secondary map blocks first to determine which maps are full maps. This avoids the need to read in those blocks for maps that are known to be full.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: Utilities
Platforms: All
DevKey: STC498
Summary: Allow rebuildindex to work with implied namespaces

Description:

This change allows $$RebuildIndex^%R(impliednamespacereference) to work correctly. Prior to this, it would return an error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities.Globals
Platforms: All
DevKey: SAP379
Summary: %FREECNT for 2K Databases fails for large databases

Description:

This changes corrects errors in looking at the bitmaps on big-endian databases.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Weblink
Platforms: All
DevKey: CMT173
Summary: Make WebLink compliant with HTTP v1.1 response headers

Description:

With this change, WebLink is now fully compliant with HTTP v1.1 response headers.

In particular it is possible to take advantage of v1.1 KeepAlive connectivity in WebLink applications. Unlike HTTP v1.0, KeepAlive connectivity is 'on' by default in v1.1. If KeepAlive connectivity is not required the 'Connection: close' header directive must be added. For example:

HTTP/1.1 200 OK
Content-type: text/html
Connection: close
If KeepAlive is used, a 'content length' header field must be supplied. If the response header generated by the application indicates that KeepAlive should be used but does not contain a 'content length', WebLink will automatically buffer the response content, determine its size, and insert the length header before dispatching the whole response to the client.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Weblink
Platforms: All
DevKey: CMT267
Summary: Introduce full support for HTTP 'Keep-Alive' connectivity

Description:

This change allows HTTP 'Keep-Alive' connectivity to be used in WebLink applications, for example,

Minimal HTTP/1.0 response header without keep-alive:

HTTP/1.0 200 OK
Content-Type: text/html
Minimal HTTP/1.0 response header with keep-alive:
HTTP/1.0 200 OK
Content-Type: text/html
Connection: keep-alive
Minimal HTTP/1.1 response header without keep-alive:
HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Minimal HTTP/1.1 response header with keep-alive:
HTTP/1.1 200 OK
Content-Type: text/html
Note that the default behavior is for keep-alive to be 'off' in HTTP v 1.0 but 'on' for HTTP v1.1.

When Keep-Alive connectivity is used it is necessary to include a 'Content-Length' response header. If the application does not include this field in a response for which keep-alive is required (as is the case in the examples above), WebLink will cache the response data to determine its size and add the length field before dispatching the final response headers. However, better performance will be achieved if the application is able to add this field. For example:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 123

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Changes for Caché 5.0.16
This document provides a listing of changes between Caché 5.0.15 and Caché 5.0.16.

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:
Critical Changes In This Release

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT225
Summary: Fix a race condition in the UNIX Apache API modules that resulted in the Gateway configuration not being correctly read and initialized.

Description:

This changes fixes a race condition in the initialization procedures for the UNIX Apache API modules which could result in the Gateway not correctly reading and initializing its configuration.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT239
Summary: Fix a problem that resulted in the PATH_INFO CGI environment variable not being correctly set for Apache-based installations.

Description:

This build fixes a problem that resulted in the PATH_INFO CGI environment variable not being correctly set for Apache-based installations.
InterSystems recommends that configurations should not use period characters (.) in the paths.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP.Tags
Platforms: All
DevKey: MXT542
Summary: Insert hidden fields for form just after <FORM> tag

Description:

Originally the hidden fields were inserted just after FORM tag. Then the hidden fields of a form were moved to just before the ending <FORM> tag to make scanning certain pages easier. However, this change introduced problems with uploading large files. Therefore, the hidden fields will be moved back to just after the <FORM> tag.

To control placement of the hidden fields, this change introduces a new CSP:CLASS attribute, FormHiddenFieldsAtEnd. If set to other than "0", the hidden fields will be placed just before the closing <FORM> tag. Default is to have the fields after the opening <FORM> tag.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Tags
Platforms: All
DevKey: MXT616
Summary: Make studio templates HTML 4.0 compliant

Description:

This change makes CSP pages used for studio templates compliant with HTML 4.0.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Languages
Platforms: All
DevKey: CDS626
Summary: Fix $BITLOGIC with more than 17 operands

Description:

This change corrects a circumstance where attempting to invoke the $BITLOGIC() function with more than 16 bitstrings in the argument could result in a memory access violation when the routine is compiled or incorrect results when it is executed. $BITLOGIC() will now correctly handle up to 31 bitstrings as documented.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: DAS596
Summary: Fix CacheBasic EQV, IMP, XOR operators

Description:

This corrects a problem where incorrect code was being generated under certain circumstances for expression involving the EQV, IMP, and XOR operators.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: DAS764
Summary: Fix EQV, IMP operators

Description:

This fixes a bug in the CacheBasic XOR and EQV operators where they were being handled as bitwise and not logical operators.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK412
Summary: Init "Language" section of .cpf before SuperServer startup.

Description:

During startup, before finishing system initialization, ECP connections are accepted to be recovered. If the ECP client connection is accepted before the initialization is complete, the ECP daemons are started with incorrectly enabled NullSubscripts values.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object
Platforms: All
DevKey: MC488
Summary: Clean up temporary stream globals in %Dictionary classes

Description:

This change enables clean up of temporary stream globals in %Dictionary classes; an %OnClose() method calls the Clear() method for each stream property.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Activate
Platforms: All
DevKey: JN248
Summary: Old-style OLE variables not recognized by Activate Wizard

Description:

Early incarnations of OLE objects in Caché defined properties as variables in the type library. This technique is almost obsolete and as such the Activate Wizard (type library reader) did not recognize them. The reader has been updated to recognize these variables as properties.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1426
Summary: Parent->Child->SubClassOfChild compile dependencies not detected

Description:

This change corrects an error where multi-level dependencies among classes where not detected by the class compiler. The compiler now correcting interprets the dependencies and compiles all the affected classes/

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK919
Summary: Add ReturnTypeParams tnodes

Description:

This change adds a new method keyword, ReturnTypeParams. This can contain a comma separated list of parameters for the return type of the method.

Previously, Caché supported parameters on arguments to the method. Now this is extended to the return type as well. A change to the parser in Studio will follow that takes advantage of this new method level keyword to store this information. Here is an example of a method definition that has parameters on the return type:

Method Test() As %String(MAXLEN=100)

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Library
Platforms: All
DevKey: MIT248
Summary: Strip trailing zeroes after the decimal point in %TimeStamp normalization

Description:

This corrects a problem where trailing zeroes after fractional parts of seconds prevented correct comparison for %Timestamp values.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Roselink
Platforms: All
DevKey: MC490
Summary: Continue importing after error on one class

Description:

The specific problem this change resolves is that Rational Rose does not allow a class and a package share the same name, but Caché does. This means, if you select all the classes in Caché, some of them will generate an error on importing into Rational Rose.

The old behavior in RoseLink is that it quits once it encounters an error creating a class or creating the package of the class. This is fixed to allow it to continue so that it can finish the rest of the classes.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT505
Summary: Change Web Service wizard to create instance methods for web method

Description:

With this change, the old form continues to work. A new (instantiable) form now generated by the web service wizard is recommended, and will also work.

Since web services (subclass of %SOAP.WebService) are now a subclass of %RegisteredObject, the web service wizard will now create instance methods for the specified web methods. Class methods will continue to work for web methods.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT506
Summary: Use instantiable web service and web client for SOAP samples

Description:

Change the SOAP web client (SOAP.DemoProxy) and web service (SOAP.Demo) samples in the SAMPLES namespace to be instantiable, i. e. to use Methods instead of ClassMethods.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT507
Summary: Fix bug in returning application SOAP faults from web service.

Description:

This fix corrects an issue where the ReturnFault method of web service was not properly preventing creation of SOAP body after a fault was generated.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT508
Summary: Optionally keep empty classes in xml schema wizard

Description:

This adds a KeepEmptyClasses property to %XML.Utils.SchemaReader.

If KeepEmptyClasses is true (1), then do not remove unused classes with no properties. The default is to remove them.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT512
Summary: URL unescape SOAPACTION header in web service

Description:

This change causes .NET to escape the URL in the SOAPACTION header that is sent to a web service. For example, "%Studio" becomes "%25Studio". We need to URL unescape the SOAPACTION when it is received.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT514
Summary: Support soap:binding being last element in wsdl:binding

Description:

Soap:binding element is specified by WSDL schema to be the first element contained in the wsdl:binding element. However, JAX makes it last. This change adjusts the WSDL reader to handle this difference.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT530
Summary: Fix SOAP web client wizard bugs

Description:

This change has two parts:


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT533
Summary: Fix SOAP web service HTTP test page error handling

Description:

Errors during web method execution were not returned correctly in HTTP test page. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT534
Summary: Add sample web method to SOAP.Demo sample that shows return of list of objects

Description:

This change adds a GetListByName query to SOAP.Demo which returns a query result as a list of objects.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT547
Summary: Fix Bad error message in SOAP web client

Description:

This corrects the message returned to the SOAP web client when the message contains an empty body.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT554
Summary: Allow setting of %Net.HttpRequest properties by SOAP web client

Description:

This change adds properties to %SOAP.WebClient that it in turn will set in the %Net.HttpRequest instance that it uses to make the SOAP request. The %SOAP.WebClient property is the same as the %Net.HttpRequest property with "Http" as a prefix. The following properties are implemented:

In addition, headers may be set in %Net.HttpRequest by calling the

SetHttpHeader(name As %String, value As %String)
method of %SOAP.WebClient.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT559
Summary: Support return type parameters in web methods

Description:

An earlier change added support in web methods for parameters for the method return type.

This upgrades the SOAP Client wizard to create returned lists as %ListOfObjects or %ListOfDatatypes return type with ELEMENTTYPE parameter.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT560
Summary: %SOAP.WebService and %SOAP.WebClient no longer have persistent properties

Description:

Normally web clients (subclasses of %Web.Client) and web services (%SOAP.WebService) should not be made persistent. In the rare case when they are, the properties of the base SOAP classes should be transient. This change implements that position.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT562
Summary: Add SendSOAPBody method to %SOAP.WebClient for body as XML

Description:

The SendSOAPBody method of %SOAP.WebRequest will send an XML document as the body of a SOAP request and return the response body as an XML document.

This method is defined as

Method SendSOAPBody(Action As %String,
                    OneWay As %Boolean,
                    Request As %CharacterStream,
                    ByRef Response As %GlobalCharacterStream)
       As %Status
where:

The Location property of %WebRequest must be set to the endpoint of the web service before SendSOAPBody is called.

%SOAP.WebRequest is a subclass of %SOAP.WebClient and thus properties of %SOAP.WebClient such as HeadersIn, HeadersOut, Timeout, etc. may be used with the SendSOAPBody call.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT566
Summary: Fix schema created for a typed dataset

Description:

%XML.DataSet generated schema must include elementFormDefault="qualified" which it did not previously. Microsoft .NET 1.0 did not catch this problem. .NET 1.1 does catch the problem and no data was loaded for typed datasets. This has been corrected in Caché.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT588
Summary: Support %XML.DataSet as either input argument or return value or web service or client

Description:

This change implements full support for import by %XML.DataSet. Therefore %XML.DataSet can now be an input, output argument or result value of a web service or web client.

Note that when an %XML.DataSet is an input argument to a web method in a web service, Execute for the %XML.DataSet has already been called on entry to the web method. Similarly, when a %XML.DataSet is the result of a web method in a web client, Execute has already been called for the %XML.DataSet when the web method returns.

This change also supports import of typed datasets, i.e. datasets whose column information is known at compile time. A typed dataset is a subclass of %XML.DataSet in which the column information is defined by specifying a query using class parameters CLASSNAME and QUERYNAME.

A new class parameter, DATAONLY, is added for typed %XML.DataSet's. If DATAONLY is set to true (=1), then the schema and diffgram will not be included in dataset XML output.

Support is added for the XMLIGNORENULL class parameter for %XML.DataSet. XMLIGNORENULL will now work just as for any subclass of %XML.Adaptor. When XMLIGNORENULL = 1 or XMLIGNORENULL="runtime" and ignorenull is specified, then both missing tags (NULL) and empty tags (<tag /> are stored in Cache %String property as "" and both $c(0) and "" are exported as empty tag (<tag />).

The SOAP.DemoProxy class now had web methods for the GetByName and GetDataSetByName methods of the SOAP.Demo web service.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT589
Summary: XML and SOAP wizards should not add XMLNAME to datatype class

Description:

The XML Schema Wizard and the SOAP Client Wizard no longer add the XMLNAME parameter to datatype classes. The XMLNAME parameter on the datatype class was being treated as a property parameter and thus incorrectly overriding the property name.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT591
Summary: Error Detection problem with SOAP arrays

Description:

Now a dummy type is created for SOAP encoded array if no arrayType attribute is defined. This changes the name of the dummy type to UndefinedSoapArrayType to make the problem easier to spot.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT592
Summary: New Web Service wizard should not create LOCATION parameter

Description:

This correction removes the LOCATION parameter from a web service created by New Web Service wizard.

The LOCATION parameter defaults correctly to the location of the web server and thus will usually not need to be specified.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT593
Summary: Various extensions and fixups of SOAP Client Wizard.

Description:

This change contains a number of fixes to the SOAP client Wizard and the XML Schema Wizard:

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT597
Summary: Multiple <s:simpleType> occurrences are generated within a WSDL of a service using a custom datatype

Description:

This corrects the repeated definitions of simpleTypes for datatype classes.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT599
Summary: Make web service generator methods not ProcedureBlock to allow splitting

Description:

Large methods generated for %SOAP.WebService are marked as ProcedureBlock by default and thus cannot be split.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT608
Summary: Long clean up after XMLExport.

Description:

Cache now unswizzles each list or array of persistent objects after it is exported via XMLExport with literal format.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT613
Summary: Error message for part not found in WSDL

Description:

This correction causes Caché to return an error message rather than <UNDEFINED> when element reference is not found in WSDL in part of an element in message element.

It also improves the part element not found error message.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT642
Summary: Support elementFormDefault for SOAP web service and web client

Description:

This change adds class parameter, ELEMENTQUALIFIED, to control the format of the SOAP body. ELEMENTQUALIFIED has the value of 1 (true for qualified) or 0 (false for unqualified). The ELEMENTQUALIFIED specification matches the elementFormDefault attribute of the schema element in the WSDL defining the SOAP service.

To maintain compatibility, ELEMENTQUALIFIED will default to 1 for SoapBodyUse="literal" and will default to 0 for SoapBodyUse="encoded". These were the values always previously assumed for the elementFormDefault attribute.

The SOAP client wizard is upgraded to create an ELEMENTQUALIFIED parameter based on the elementFormDefault attribute of the schema element having a non-default value.

When upgrading the SOAP client wizard fix the fact that _ was being lost from XMLITEMNAME when folding array of elements into a wrapped array.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT645
Summary: Support multiple namespaces in an XML document

Description:

This change completes the process of supporting multiple XML namespaces in an XML document, particularly in a SOAP message.

Support is added in XML enabled classes for the XMLELEMENTQUALIFIED class and property parameter. The possible values of XMLELEMENTQUALIFIED are "" (unspecified and the default), 0 (false) and 1 (true). The XMLELEMENTQUALIFIED property parameter indicates whether that property will be qualified (in the sense used by the XML schema) when exported as XML. The default is the value of the XMLELEMENTQUALIFIED class parameter. The XMLELEMENTQUALIFIED in turn defaults to 1 for "literal" format exports and to 0 for "encoded" format exports. These defaults are to maintain backward compatibility.

The XML schema wizard will add the XMLELEMENTQUALIFIED property parameter whenever the form attribute is specified for an element. The XML schema wizard will add the XMLELEMENTQUALIFIED class parameter based on the two new properties: MakeElementQualified and DefaultExportFormat. If MakeElementQualified is true, then XMLELEMENTQUALIFIED will be added based on DefaultExportFormat. If DefaultExportFormat="" or not specified, then XMLELEMENTQUALIFIED will be added to all classes. If DefaultExportFormat="literal" XMLELEMENTQUALIFIED=0 will be added to classes in schema for which elementFormDefault is not specified or is equal "unqualified". If DefaultExportFormat="encoded" XMLELEMENTQUALIFIED=1 will be added to classes in schema for which elementFormDefault is equal "qualified". The SOAP client wizard will always process schemas with MakeElementQualified=1 and DefaultExportFormat=value of BodyUse if it is the same for all methods, else DefaultExortFormat="".

Properties are added to %XML.Writer and arguments to some of its methods to better control ElementQualified at runtime when XMLELEMENTQUALIFIED is not specified.

The ElementQualified property is added to %XML.Element. The local and elementQualified arguments are added to the Element and RootElement methods of %XML.Writer. The default for the local and elementQualified arguments are the properties Local and ElementQualified of %XML.Element if present and if not the properties Local and ElementQualified of %XML.Writer.

The elementQualified argument is added to the Object and RootObject methods of %XML.Writer. The default for the elementQualified argument is the property ElementQualified of %XML.Writer.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT650
Summary: Handle prefix for result tags in SOAP response

Description:

This change makes Caché ignore the result tag prefix/namespace in a SOAP response message because all external web services are not consistent in usage for this tag especially for RPC documents.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT655
Summary: Make SOAP fault available after web method call in web client

Description:

This change makes SOAP faults available after a method call.

After a web method in a web client class is called, the SoapFault property of the web client will contain a returned SOAP fault as an instance of %SOAP.Fault. If the SOAP message returned to the web method did not contain a SOAP fault, then SoapFault will be "".

If the SOAP response is a SOAP fault, then <ZTRAP> is issued and SoapFault will contain the %SOAP.Fault instance. In the case of <ZTRAP>, %objlasterror will continue to contain the SOAP fault as a Caché %Status.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT656
Summary: Allow SOAP web method arguments to be marked as required.

Description:

If a web service has a web method with SoapBindingStyle="document", then this change allows the use of the REQUIRED argument parameter for the input arguments. REQUIRED=1 means that the argument is required and results in minOccurs=1 in the WSDL's schema for that argument.

This change was made because .NET does not add the additional argSpecified boolean argument if the argument is required.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT659
Summary: Fix problems with multiple file WSDL

Description:

This change fixes a number of bugs in handling WSDL which consists of multiple included files:

  1. If elements from multiple schemas are used in a WSDL, use the correct targetNamespace for the elements in each schema. The enclosing WSDL targetNamespace must be saved and changed to the schema's targetNamespace for each schema.

  2. The port type in the binding element was not found if it referenced a different namespace than the WSDL targetNamespace.

  3. Only require a prefix for the SOAP namespace where it will be used. The SOAP namespace need not be mentioned in a file if only portType and message elements appear in that file.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT668
Summary: Make XMLIGNORENULL appear in inherited parameters for SOAP class

Description:

This correction allows XMLIGNORENULL specified in a SOAP class already to influence the SOAP messages used for each web method. See %XML.Adaptor for behavior of XMLIGNORENULL. However, XMLIGNORENULL did not appear in the inherited class parameter list for SOAP classes. It will now appear as an inherited parameter.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT671
Summary: Support schema with no targetNamespace in WSDL

Description:

This change corrects problems in our support of a schema which does not have a targetNamespace attribute that is contained in a WSDL.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT676
Summary: Allow XMLPATTERN property parameter in XML enabled classes

Description:

This change allows XMLPATTERN property parameter for properties within XML enabled classes. XMLPATTERN is generated by the XML Schema Wizard for the pattern facet within XML schemas. The XMLPATTERN parameter just documents the pattern facet and is not implemented in Caché.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT678
Summary: Optionally create persistent classes in SOAP client wizard

Description:

This change adds an option to the SOAP Client Wizard to make the created classes (except for the client itself) registered, persistent or serial. This is implemented by adding a MakeSerial property to %XML.Utils.SchemaReader and %SOAP.WSDL.Reader.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT680
Summary: Handle RPC WSDL with same name used for input and return parameter

Description:

With this addition, the RPC/literal WSDL created by Axis will use the parameter as the input and output of a message. However, the types are different. Caché treats the output parameter as the return value of the web method.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT681
Summary: Fix bug: SOAP client opens stream twice

Description:

The SOAP client was opening the response stream twice. This still worked, but was fixed to get a slight performance improvement.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT688
Summary: Move SOAP logging parameters to local database

Description:

This correction moves parameters that control the logging of input to web services/clients to a local database. These parameters, which were previously in ^%SYS, will be writable for any given user. Set

^ISCSOAP("Log")="i"
to log web service requests and web client responses.

^ISCSOAP("LogFile")
is the full path of the file to contain the logged input.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT692
Summary: Empty dataset throws errors when specified in a different format

Description:

This change allows the input XML dataset format that has only diffgram element with no child elements and interprets this to be a dataset with no rows.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1273
Summary: Fix computation of data address base global reference

Description:

A limitation for %BuildIndices has been removed.

In the past if you change the Storage Property DataLocation so that it contained a subscript, something like ^User.GloTest("data") instead of ^User.GloTestD then Build Indices would fail to populate any indexes. This also works if there are multiple literal subscripts in the global reference.

BuildIndices now takes this into account and correctly builds the Indices.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: MXT511
Summary: Need to clear collections before import

Description:

Before this change, if a collection is passed to a web client as an Output or ByRef argument, the elements returned by the web service were incorrectly just added to the collection.

This modifies the web client to clear all Output or ByRef collection arguments before importing the web service SOAP message so that the collection argument contains just the elements sent by the web service.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1343
Summary: Call index build/purge functions in table routine

Description:

This change adds support for the %BuildIndices and %PurgeIndices methods in classes using %CacheSQLStorage. Previously these methods were only implemented for classes using %CacheStorage. %CustomStorage does not implement these methods.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: JN247
Summary: Correct Handling of Unicode in %XML.SAX.Utils.Sequencer

Description:

While the SAX parser makes sure that callbacks to content handler methods do not contain character strings longer than 32k, the %XML.SAX.Utils.Sequencer was attempting to put 32k of Unicode characters into a $List. $List only supports 16k of Unicode characters so <MAXSTRING> could be encountered. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT510
Summary: Make internal representation of XML document smaller

Description:

%XML.Reader imports the XML document into a global. Previously each element node stored its namespace as a string in the node. Better storage usage is now obtained by storing a small integer index into a namespace table in each node.

This change improves performance with no external changes.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT516
Summary: Fix XML schema wizard not to reduce a collection that references a collection

Description:

XML schema wizard was incorrectly combining a class that contained only a collection with a referencing collection property. This reduction is no longer done.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT518
Summary: Fix enumeration problems in XMLSchema

Description:

This correction fixes XMLSchema for enumerations created for VALUELIST property parameter:


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT520
Summary: Improve error message for unexpected xsi:type in XML document

Description:

If an element has an unexpected (invalid in this context) type specified using xsi:type, then give a clear, unique error message.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT522
Summary: Fix bug: ExportToString crashes MAXSTRING

Description:

This change causes Caché to return an error %Status if result of ExportToString will be > 32K.

Also it adds a ByRef %Status return argument to GetXMLString method of %XML.Writer. The method signature is

Method GetXMLString(ByRef status As %Status) As %String
It returns an error %Status if the result string > 32K.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT532
Summary: %XML.DataSet has INVALID OREF error when executing %Resultset functionality

Description:

The method, Execute, for an %XML.DataSet is not defined. The XML must be produced using XMLExport or returning the %XML.DataSet via SOAP. If the data in the query is desired, then %ResultSet should be used instead.

This change gives a good error return instead of <INVALID OREF>. Note the application code still needs to be changed to pick up embedded error status.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT537
Summary: OpenURL method in %XML.Reader

Description:

This change adds the OpenURL(url,...) method to %XML.Reader class. The input XML document is specified by a URL.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT539
Summary: Fix bug: XML Schema wizard does not display non-ascii characters correctly when displaying schema source

Description:

This change modifies the XML Schema wizard and SOAP Client Wizard to handle XML document that is encoded in other than utf-8.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT545
Summary: Fix XML compile order problems

Description:

Before this change, some classes needed to be compiled twice to correctly get the list of subclasses allowed for a class reference. This problem is addressed by the following changes:

In addition the XML Schema Reader is changed to add

      Parameter XMLINCLUDEINGROUP = 0;
to classes created for inline elements so that they are not used as subclasses for choice list or types. This parameter does not need to be generated for direct subclasses of %XML.Adaptor, %RegisteredObject, %SerialObject or %Persistent.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT555
Summary: XML Schema wizard support for currently unsupported built-in types

Description:

With this change, the complete set of built-in schema types is now supported, since a few missing ones have been added. These additional types all map to %String.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT569
Summary: ERROR #5490 reported while running generator for method 'XMLImport'

Description:

The change fixes a compile error in XML enabled classes when XMLCHOICELIST property parameter is used with one of the classes in the list being a subclass of another class in the list.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT570
Summary: Add ability to force SOAP encoded XML to be exported inline

Description:

By default, SOAP encoded XMLExport of a class uses idref's for class instances referenced by a class that is being exported. This is indicated by the XMLExport format parameter of "encoded". This change allows the referenced class instances to be XMLExported inline as for "literal" format. This is indicated by the XML format parameter of "encoded,inline".

%XML.Writer is also extended to allow inline writing of encoded objects. The ReferencesInline property will control inline export. Default is true (1).


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT578
Summary: Extend %XML.Writer capabilities to include most XML node types

Description:

Methods are added to %XML.Writer to control document start and end:
Method StartDocument() As %Status
Method EndDocument() As %Status
The StartDocument and EndDocument methods are added to explicitly mark the beginning and end of the XML document being written. If StartDocument is not called, the XML document begins implicitly with the first output and ends when EndRootObject or EndRootElement is called. Therefore, StartDocument may not be called after any output has been written. Also, EndDocument may not be called unless StartDocument has been previously called. The purpose of allowing explicit calls to StartDocument is to allow content such as comments and processing instructions to be written after the end of the root element.

Methods are added to %XML.Writer to support additional XML node types:

Method WriteAttribute(Name As %String,
                      Value As %String,
                      Namespace As %String,
                      ValueNamespace As %String)
       As %Status
This method writes an attribute for the last element started. This method may only be called immediately after StartElement or Element. Arguments:

Method Write(Text As %String|%CharacterStream)
This writes arbitrary text in the XML document without any escaping being done. This method can be used in any part of the XML document where Text is the character data to output and is of type of %String or %CharacterStream.
Method WriteBase64(Binary As %Binary|%BinaryStream)
This encodes the specified binary bytes as base64 and writes out the resulting text.
Method WriteBinHex(Binary As %Binary|%BinaryStream)
This method encodes the specified binary bytes as binhex and writes out the resulting text.
Method WriteChars(Text As %String|%CharacterStream)
This method writes the XML element text performing any required escaping.
Method WriteCData(Text As %String|%CharacterStream)
This methods writes the XML element text in a CData section.
Method Comment(Text As %String|%CharacterStream)
This method writes out its argument as a comment <!--...--> containing the specified text.
Method WriteDocType(Name As %String,
                    PublicId As %String,
                    SystemId As %String,
                    Subset As %String)
          As %Status
This methods Writes the DOCTYPE declaration with the specified name and optional attributes.
Method WriteProcessingInstruction(Name As %String,
                                  Text As %String)
       As %Status
This method writes out a processing instruction with a space between the name and text as follows: <?name text?>.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT579
Summary: Improve error checking in XML schema wizard

Description:

This change add an error check for the case of an incomplete form loaded on namespaces page. This fixes an issue that has only appeared for the OpenVMS web server.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT584
Summary: Require explicit Execute call for %XML.DataSet

Description:

This changes the API for %XML.DataSet to require a call to Execute before the dataset is returned by a WebMethod. The use of the SetArgs method along with implicit Execute is deprecated.

The form of a WebMethod that returns a dataset becomes:

Method GetByName(name As %String) As %XML.DataSet [ WebMethod ]
{
   Set result=##class(%XML.DataSet).%New()
   Set status=result.Prepare(
      "SELECT Name, SSN FROM Sample.Person WHERE Name %STARTSWITH ?")
   If $$$ISOK(status) Set status=Do result.Execute(name)
   If $$$ISOK(status) Quit result
   /* Create fault and return */
   set fault=##class(%SOAP.Fault).%New()
   set fault.faultcode="GetByName"
   do $system.Status.DecomposeStatus(status,.err)
   set fault.detail=err(1)
   set fault.faultstring="application error"
   do ..ReturnFault(fault)
}

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT586
Summary: Enhance %XML.Writer use of prefixes

Description:

This change adds two enhancements:

In the case where default namespace is set for a tag by using xmlns=..., do not create a prefix for the same namespace unless required for this class.

And, optionally suppress the use of xmlns= to set default XML namespace for literal XML documents. Control use of default XML namespace by %XML.Writer property, SuppressXmlns (declared as %Boolean) with default = 0 (false). If SuppressXmlns is true then a prefix is used for each tag rather than default namespace with xmlns=.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT598
Summary: Improve XML schema wizard support for maxOccurs="unbounded"

Description:

In XML Schema wizard and SOAP client wizard, this change improves support for maxOccurs="unbounded" in sequence or choice element. The maxOccurs="unbounded" will be pushed onto any contained element tags and will override the maxOccurs specification for the contained element. This extended support is correct for sequence or choice that contains exactly one element -- a fairly common case.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT600
Summary: Unnecessary swizzle of object in XMLExport of ID or OID

Description:

When XMLExport is outputting an array of objects or list of objects property as an ID or OID (XMLREFERNCE="ID" OR "OID"), the generated code uses GetNext to loop over the objects which causes unnecessary swizzling. This change uses GetObjectNext for the loop.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT601
Summary: CONTAINSID should not imply unique constraint in %XML.DataSet

Description:

With this change, %XML.DataSet will include a unique constraint in the schema it writes only if CONTAINSID is specified and all columns are from the same table.

Also, this change removes the ROWSPEC from the query in Sample.Person, since ROWSPEC is no longer needed and having ROWSPEC doesn't allow ID to be considered in the table.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT602
Summary: In XML schema and SOAP client wizard, cleanup unused classes created for %XML.String properties

Description:

In XML schema and SOAP client wizard, unused and unnecessary classes with no properties were being created when processing complex Type with mixed="true". These unused classes are no longer created.

The specific case handled here is a complex type like:

<xs:complexType name="myType">
   <xs:sequence>
      <xs:element name="mix">
         <xs:complexType mixed="true">
             <xs:sequence>
                <xs:element name="e" type="xs:string"/>
             </xs:sequence>
         </xs:complexType>
      </xs:element>
   </xs:sequence>
</xs:complexType>
The class created for myType has a property
Property mix As %XML.String;
Previously an unused class named "mix" was also being created for the complexType in the mix property. This class is totally unnecessary and is no longer created.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT603
Summary: XML Schema and SOAP Client Wizards handle .Net format datasets

Description:

The Soap Client Wizard and the XML Schema Wizard will now recognize the proprietary Microsoft .NET dataset representation in XML schemas. These will be mapped to %XML.DataSet for untyped datasets or a subclass of %XML.DataSet for typed datasets.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT606
Summary: Can't generate class with element name start with underscore and number in XML Schema Wizard

Description:

If property name or class name begins with a digit after removing leading _, then this changes appends "X" to the name. For example, XML name _-1a becomes Caché name X1a.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT607
Summary: Do not call IsValid method for importing by %XML.DataSet

Description:

When importing XML data in %XML.DataSet, IsValid does not need to be called to check the logical value since only datatype classes in which the XSDToLogical method generates a valid logical value are used. This change removes the call.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT614
Summary: Change %XML.Writer default to not add XML declaration for strings and character streams

Description:

After this change, if the NoXMLDeclaration property of %XML.Writer is 1 (true), then the XML declaration will not be written. The default is to write the XML declaration unless the Charset property is not specified and the output is directed to a string or character stream in which case no XML declaration is written.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT627
Summary: XML Schema Wizard ignores maxOccurs="unbounded" in schema

Description:

This corrects an error where maxOccurs was being ignored for sequence or choice schema element that was the immediate child of a complexType schema element.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT628
Summary: Generate correct class for mixed complex type that contains an attribute

Description:

If an element definition has an inline complexType with mixed="true" that contains an attribute, Caché now generates the correct class for the complex type.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT641
Summary: Relative Fonts in XML Schema Wizard

Description:

This change causes Caché to use relative font-size values for XML Schema Wizard, SOAP Client Wizard and New Web Service Wizard.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT644
Summary: Fix XML Schema Wizard for HL7 schemas

Description:

This makes several corrections in the XML schemas wizard for HL7 schemas:


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT646
Summary: XML Schema Wizard mishandles long Relationship names

Description:

This change corrects an error that occurs When property names in a relationship are reduced to 31 characters. It also reduces the Inverse attribute of the relationship property.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT651
Summary: Make import of SOAP encoded arrays more forgiving of format

Description:

On XML import, Caché now allows either SOAP encoding format for arrays (includes arrayType attribute) or literal format. This change also effects input of SOAP requests by a web service or input of a SOAP response by a web client.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT657
Summary: XML Dataset needs to allXMLExport of imported dataset

Description:

This change fixes the XMLExport and XMLImport methods of %XML.DataSet (and it's subclasses) so that export of an imported dataset works properly. This problem arises in SOAP web service that is attempting to return an %XML.DataSet that was retrieved using a web client.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT658
Summary: Add new SchemaReader/Result feature - SqlColumnNumber=SequenceNumber

Description:

This change adds a SQL feature (..Features("SQL")="") to %XML.Utils.SchemaReader to have columns displayed in the same order as properties in Studio. The same feature is also added to the Schema wizard.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT660
Summary: %XML.Reader reads a %Float value 1e-128 as 0

Description:

This change corrects problems in validation and conversion from XML for %Float, %xsd.float and %xsd.double to handle values close to 0.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT661
Summary: Fix bug: <ILLEGAL VALUE> when %XML.Writer.Charset="Windows-1251" on 8-bit Caché

Description:

This change eliminates an <ILLEGAL VALUE> error when the Charset property of %XML.Writer is set to a charset that does not have the corresponding translate table loaded. %XML.Writer will now return a %Status error from the first output to the document.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT667
Summary: Fix XML Schema Wizard to handle additional cases for HL7 CDA schema

Description:

If XML element names differ only in case, this results in two properties in a class that differ only in case which is not valid. This correction changes the XML schema wizard to disambiguate these property names by adding a number to the end of one of the second property name.

If class XMLNAME is different from class short name, then Caché needs to create XMLTYPE class parameter to specify the type to be projected to XML.

This change also handles multiple levels of ref's. For example, group ref=g1 and within group g1 element ref=e1. Previously this was not picking up types for inner elements.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT670
Summary: Typed .NET format datasets come up as %XML.String when schema is imported via Schema Wizard

Description:

This change fixes the XML Schema Wizard to use the underlying support for creating typed datasets as subclass of %XML.DataSet.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT677
Summary: Project Calculated properties as CONTENT without error

Description:

This change allows the support XMLExport of calculated properties with XMLPROJECTION="content".

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT682
Summary: Error check writes to stream

Description:

This change installs improved error return checking from the Write method of stream, since this can fail because of file permission issues.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT683
Summary: Allow href attribute for literal format XML import or export

Description:

Use of the href attribute has special meaning for SOAP encoded format XML document. Fix literal format XML support to allow href attribute to correctly map to
Property href As ...  (XMLPROJECTION="attribute");

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT684
Summary: Add new "No Sequence Check" feature to XML Schema Wizard

Description:

This change adds a new "No Sequence Check" feature to the XML Schema Wizard which forces XMLSEQUENCE parameter in generated classes to always have value of 0. The purpose of this feature is to deal with some situations in which the customer's XML file does not have elements in the same order as the XML schema.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT686
Summary: %Status needs to be base64 encoded when exported as XML

Description:

This change exports %Status type properties using base64 encoding, since value is binary and can thus include octets that are not valid characters in XML.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Special Projects
Platforms: All
DevKey: MXT563
Summary: Fix bug: file streams not cleaned up for XML enabled registered objects

Description:

If a subclass of %RegisteredObject has file streams that are created by %XML.Reader on XML import, then these streams were not being deleted when the object is deleted. This change corrects that issue and the streams are deleted.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: BJB300
Summary: Gunlock2 syntax error with No Subscript class.

Description:

If you have a class that has CacheSQLStorage and no subscripts, Caché would generate an incorrect line of code in the gunlock2 procedure of the Table routine. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2326
Summary: Implement Build and Purge Indices for %CacheSQLStorage

Description:

Caché now supports %BuildIndices and %PurgeIndices for %CacheSQLStorage.

When %BuildIndices is called for a table using %CacheSQLStorage, the method traverses every row of the master/data map and selects the field values needed for all the indices being built and sets the index value(s). When %CacheSQLStorage is used, the index IS NOT deleted or purged first. The reason is there might be data in the index global which belongs to another table or index. Also, $SortBegin and $SortEnd are not used when building indices that use %CacheSQLStorage for the same reason.

When %PurgeIndices is called for a table using %CacheSQLStorage, the method traverses every row of the master/data map and selects the field values needed for all the indices being purged and deletes the index value(s).

At this time %BuildIndices and %PurgeIndices do NOT perform the index sets/kills within a transaction, nor do they perform any locking of the table.

Users are cautioned to build/purge indices only when no one else is performing inserts, updates, or deletes, on the table.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement Yes

 



Category: SQL
Platforms: All
DevKey: DPV2348
Summary: Report SQLStatistics for master map with single field PKey/IDKey

Description:

A problem has been fixed where a class with a single field IDKEY/PRINARY KEY index like:
Index APPIdkeyIndex On APP [ IdKey, PrimaryKey, Unique ];
was not projected to ODBC/JDBC as a unique index when using the SQLStatistics catalog query.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2355
Summary: Undefined in Trigger Code trying to read a {Name} variable not used in dynamic query

Description:

A problem has been fixed where a {Field} referenced in an INSERT trigger, but not in an UPDATE or DELETE trigger resulted in an <UNDEFINED> error upon insert, if a value was not specified for the field.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2400
Summary: Correct update (to NULL) of serial sub-field in SQL filer

Description:

A problem has been fixed where the SQL UPDATE of a serial sub-field value from a non-NULL to a NULL value might not file properly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2417
Summary: Don't generate setting of default value in SQL filer for virtual computed fields

Description:

With this addition, fields that are SQLComputed and Transient (virtual computed fields) will no longer set the default value of the field in the SQL filer if there was an initial expression defined for the field's property. This will allow the referencing of ..Property in the initialexpression of a transient property without affecting the SQL table.

References to ..property are NOT allowed in the initialexpression of persistent fields because there is no object context inside of the SQL filer.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: SQL.DDL
Platforms: All
DevKey: BJB295
Summary: Make sure Selectivity is not 0 with $justify(19), same as %qarTune

Description:

A correction has been made to the SQL Manager. If you ran TuneTable from SQL Manager and ended up with a vary small Selectivity, first 5 decimal places all 0, the SQL Manager would file the wrong value.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.JDBC
Platforms: All
DevKey: JMM028
Summary: JDBC preparser: allow extrinsic functions

Description:

This change corrects a regression in functionality that prevented the JDBC parser from recognizing intrinsic functions. It now allows the first character of an identifier to be '$', and accepts '$' and '^' as possible values for subsequent characters.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB316
Summary: Correct handling of Japanese full-width space character in JDBC preparser

Description:

Japanese full-width space character "\u3000"($c(12288)) was not recognized by JDBC preparser. This is now fixed and it is treated as any other whitespace.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT287
Summary: Fix a case of an id field with an aliased external table

Description:

This change fixes a problem where a query with an id field was referenced in the case of an aliased external table.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT392
Summary: SQLGateway and Functions

Description:

Support for CAST and TODATE was added for external tables with this change.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN532
Summary: Add CodePages for decoding 8 bit Cache

Description:

This change adds several additional Code Pages to decode new Cache locales on 8-bit Cache:

Users must use the Unicode ODBC APIs to properly see the data, or their regional settings Code Page must match Cache's NLS default. In general it is safest to use Unicode Cache and Unicode ODBC API's to avoid conversion confusion.

The full list of supported Code Pages is:

ODBC does not use these tables when communicating with the Unicode version of Cache, only 8-bit.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN537
Summary: Fix ODBC Stream Problem

Description:

Binding a Character Stream to a parameter and inserting it into Caché would fail on Streams >32K. We do handle large character streams if they are inserted using SQLPutData, which sends them in smaller chunks. This now works in both cases.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN539
Summary: Fix for SQLGetData with 0 buffer size, to return length of data to convert

Description:

VBScript used in an HTML document would make two calls to SQLGetData on the same column. The first call had a buffer length of zero, with the intent of getting back from SQLGetData the length of the buffer needed after converting the data. This is important for Character conversion and possibly retrieving binary data types.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK609
Summary: Fix ORDER BY ID DESC when BSL used

Description:

This change fixed a problem where a query specifying DESC sort on the ID would sometimes return the results in ASCending order when a multi-index access path is used.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK618
Summary: Ignore NULLable keys for DISTINCT

Description:

When using UNIQUE keys to determine whether a field is functionally determined by a set of fields for DISTINCT purposes, Caché now ignores UNIQUE keys that have NULLable (not required) fields, since in the DISTINCT semantics all NULLs are one NULL, while for UNIQUE semantics each NULL is different (so DISTINCT requires a stronger dependency).

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK620
Summary: Fix DESC for "set" traversal

Description:

This change fixed a problem with a %ID or IDKEY field that has an IN condition and an ORDER BY DESC .

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MXT531
Summary: XML Schema Wizard Back button does not go to previous screen

Description:

This changes fixes the Back button to return to previous screen in XML Schema wizard.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MXT674
Summary: Service method name at Web Service Wizard

Description:

This change causes Caché to ignore empty lines and check method names in method name text area of Web Service Wizard

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MXT701
Summary: Schema Wizard cannot read xsd file from directory which contains non-ascii character

Description:

This change fixes the XML Schema wizard and SOAP Client Wizard to correctly display files with paths that have Unicode characters that are not in the ISO-8859-1 charset.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS390
Summary: Implicit clear $ETRAP when $ZTRAP is set

Description:

When $ZTRAP is set to a non-empty value, it will now take precedence over any existing $ETRAP error handler. Caché will implicitly perform a NEW $ETRAP command and will set $ETRAP="".

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS635
Summary: Fix frame stack problem in stackinfo()

Description:

This fixes a problem that could lead to a process crash if a second error was encountered while the system was collecting stack information about the first error. The most vulnerable type of error would be problems accessing routine source. The problem could also occur if there was an error while executing a $STACK() function call.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS652
Summary: Fix <ACCVIO> with op=1 after <EDITED>

Description:

This fixes a memory access violation that could occur during a debugging session. After an <EDITED> error is received, a QUIT command removes some, but not all, of the levels on the execution stack causing a GOTO command to resume execution at an invalid location instead of issuing another <EDITED> error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: GK381
Summary: Speed up ECP client connection.

Description:

This change improves the time required to make a connection to the ECP client. The server no longer does a DNS lookup for the client name; it uses the specified hostname or IP address. Furthermore, it registers itself with the superserver much earlier in the connection sequence.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: HYY947
Summary: Address issue of routine referencing purged namespace cache that caused <ERTRAP>

Description:

This change addressed an issue where Caché startup with a small routine buffer pool may get <ERTRAP>.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JLC659
Summary: Fix bug in $Normalize

Description:

This change fixes an error in $NORMALIZE where 0 (zero) would be incorrectly returned for certain input values.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Windows
DevKey: JO1904
Summary: Disable piece of JO1849 on OSWNT which use file id to match files

Description:

This fixes a problem introduced in 5.0.15 which could prevent access to databases hosted on NAS (network attached storage) on Windows systems.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: LFT1383
Summary: $zu(178) should check global name

Description:

$ZUTIL(178) for creating globals was not checking the global name for validity. This could corrupt the global directory. It has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: LRS782
Summary: Enable error trap recovery after namespace switch

Description:

Error trap processing has been improved to dispatch to the defined trap handler even though a subsequent namespace switch has been performed. As with QUIT processing in these same circumstances, control will pass to the appropriate routine but it is up to that routine to restore the original namespace if desired.

Prior to this change, an <ERRTRAP> exit could occur during error trap processing after a namespace switch.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD104
Summary: Fix display of large counts for line-by-line monitor

Description:

Counts in ^%MONLBL were being displayed as signed integers, which caused larger numbers to appear as negative numbers. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP332
Summary: Change max size of view buffer to prevent mailbox queue overwrite

Description:

A long view string could overwrite the mailbox queue, causing possible access violation. It has been fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1433
Summary: Fix errors in JOB server

Description:

This change corrects a circumstance which could hang Caché job servers. The problem would show up after a number of JOB commands had been executed by a given jobserver process when the routines being run uses more than 64KB of local symbol table space.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1456
Summary: Fix errors in generation of Caché Basic XOR, EQV, and IMPLIES logical operators

Description:

This change corrects instances where the Caché Basic compiler may generate incorrect code for the logical operators mentioned above. The code generator for these operators now is the same as for $ZBOOLEAN.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Cluster Specific
Platforms: 1
DevKey: JO1898
Summary: Acquire exclusive rather than shared ownership of clustered blocks with a NL lock

Description:

A problem has been corrected where a cluster member acting as an ECP server for non-cluster members could "freeze" Caché.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.I/O
Platforms: AIX
DevKey: JO1891
Summary: Enable USE_EFFICIENT_TTINPUT for AIX

Description:

Terminal input on AIX has been made more efficient to bring it in line with the implementation on other UNIX platforms.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.I/O
Platforms: OpenVMS
DevKey: LRS795
Summary: Close RMS file if can't obtain I/O buffer

Description:

An error in Caché for OpenVMS has been fixed that could keep an RMS file open even after a <NOTOPEN> error caused by insufficient partition memory space to allocate an I/O buffer.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1026
Summary: Disable sorting in journal recovery at startup

Description:

With this change, sorting is disabled in journal recovery at startup so database updates are applied in the order they were created.

Sorting is still enabled in regular journal restore that is initiated by the user.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1034
Summary: Address a problem with $zu(78,18,0) on current journal

Description:

This change addressed a problem with cluster shadowing that caused an error such as <VALUE OUT OF RANGE>updseqinfo+7^JRNINFO to be generated on the source side. The error itself is recoverable and may or may not affect the database integrity on the shadow.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1073
Summary: Fix cluster shadow inconsistency caused by copier setting "jrnend" value back

Description:

This change addresses a problem that can cause inconsistency between a source and a cluster shadow in version 5.0.14 and upward. Non-cluster shadowing situations are not affected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY987
Summary: Set wdstop when journal daemon gets <ACCVIO>

Description:

This change prohibits global updates once a journal daemon dies with <ACCVIO>.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: 1
DevKey: SML521
Summary: Improve lock management when the number of locks for a specific job is over 32 KB

Description:

When a job owned many locks (when the locks could not fit in a 32 KB chunk of memory), a JOBEXAM to that job may cause job been examined to hang because a needed resource is not released by the JOBEXAM codes. This change corrects that situation.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1007
Summary: Clear $ZE in error trap

Description:

This change addresses an issue on cluster shadow where a shadow logged a <NOTOPEN> error on exit. The error was actually generated (and trapped) during shadow dejournaling.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1037
Summary: Fix an <UNDEFINED> error in cluster shadowing

Description:

This change corrects a situation where possible intermittent <UNDEFINED> errors (on line openjrnf+3^SHDWX) on cluster shadow may occur.

The problem was believed to be present in 5.0.13 and up.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1045
Summary: Fix collation handling in shadowing

Description:

This change corrects a <SUBSCRIPT> error during shadowing (5.0.13 and forward) in the scenario where the collation of the global from the journal doesn't match that of the shadow database.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY978
Summary: Start cluster shadowing at the location specified by the user (not earlier than that)

Description:

This change addresses a problem with cluster shadowing where shadow dejournaling may start at an earlier location than specified by the user if the specified location contains a nonzero sequence.

For example, if user specifies "20040811 14:11:12,22531", shadow dejournaling would start at 20040811 14:11:12,22403, or 128 items earlier in terms of sequence #. Usually this is not a problem (other than being a little inefficient), unless the user intends to exclude the records prior to the specified location from being dejournaled on the shadow.

There is no problem if the user specifies the location using cluster start time only (e.g., "20040811 14:11:12").

The problem is present in 5.0.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: CDS454
Summary: Handle <STORE> errors in %ETN

Description:

With this change, when a <STORE> error is handled by the %ETN error trap routine, it will save some minimum information to identify where the error happened in a %ERN error log entry. It will then try to acquire more memory from the system and create a normal %ERN log entry.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: JLC685
Summary: Fix UnicodeLittle/Big in old custom locales

Description:

This change adds code to the Caché upgrade procedure to convert eventual custom UnicodeBig and UnicodeLittle locale tables to the new format used by current and future Caché releases. Additionally, importing a locale with the old format will automatically convert it to the new one.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LFT1321
Summary: Fix error trapping in 5.0 process class

Description:

This fixes a problem using the $SYSTEM.Process:ALLFIELDS query. In prior releases, if there is a hung process somewhere when this query is run, the query will hang.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: RJF015
Summary: %FREECNT minor fix to free data block calculation

Description:

This corrects a problem where %FREECNT / GetFreeCount^%DM would report several more free data blocks than were really available.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: 1
DevKey: RJF029
Summary: Fix calculation used for ^REPAIR block allocation

Description:

This corrects a problem where using the Map Edit functionality of REPAIR to allocate a block in a new-format database could occasionally result in an inconsistency in the internal structure of the map block. This inconsistency could later result in a <DATABASE> error when new data is inserted into that database.

This change also corrects a problem where ^REPAIR would not allocate or deallocate the last block in the range of blocks referenced by a map block. This latter problem affects both old and new format databases. When attempting to allocate or deallocate the last block in a map, ^REPAIR would incorrectly state that "Block X is not the correct map block for Y".


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: SML540
Summary: Disable dead job cleanup by default

Description:

This change will disable Dead Job Cleanup as the default setting when Caché is started.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Changes for Caché 5.0.15

This section provides a listing of changes between Caché 5.0.14 and Caché 5.0.15.

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:
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: Config Mgr
Platforms: All
DevKey: CFL542
Summary: Hide the Config Manager main form when Database Wizard called from Control Panel

Description:

Under certain conditions, when the Control Panel launched the Database Wizard, a portion of the Config Manager window remained visible in the screen. This change corrects that problem.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Control Panel
Platforms: All
DevKey: CFL1148
Summary: Kill ^%utility($J) upon exiting from Control Panel

UNRESOLVED
Description:

A bug has been fixed where ^%utility($J) was not killed by the return code from the Control Panel. The left-over nodes in this global can lead to undesirable database expansion.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK1213
Summary: Avoid closing the session if the CSP method is not an allowed type

Description:

If an application issues an HTTP request on Caché 5.0 for a method other than GET/POST/HEAD, Caché would report this as an error. However the error handler for this was getting a further error which caused the session to be closed. Now we report this error correctly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK1242
Summary: Prevent a hyperevent for a session that is closed from taking a new license out

Description:

If an application runs a hyperevent for a session that has expired, Caché warns that the session is timed out and the hyperevent can not be processed. However, notifying the application takes out a license in order to report this error. This changes corrects the problem; a hyperevent that cannot be run will not use another license to report the error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK977
Summary: End of file $zeof reset at the end of every CSP page, so it does not reflect system default

Description:

At the end of every CSP request, the CSP server cleans up the session for the next request. This resets the end of file/$zeof setting so that it always generated an <ENDOFFILE> error when the end of a file was reached, even when the system default was set to $zeof. Now it respects the system default correctly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT216
Summary: Ensure that a session token received as a cookie (CSPSESSIONID) will always take precedence over a token received as a form variable (CSPCHD) for cases where both are present in the request

Description:

This change ensures that a session token received as a cookie (CSPSESSIONID) will always take precedence over a token received as a form variable (CSPCHD) for cases where both are present in the request. This is for security reasons: a cookie is much more likely to uniquely identify a particular user and is harder to spoof (either deliberately or by accident).

A typical situation where users can end up accidentally sharing the same session token is in the case of search engines which have recorded CSP URLs containing a session token in the query string.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: AIX, All
DevKey: CMT222
Summary: Add extra processing to protect against the effect of SIGHUP (hang-up) signals in the AIX environment

Description:

This change introduces extra processing to protect against the negative effects of SIGHUP (hang-up) signals in the AIX environment. These signals, if not processed correctly, can cause the NSD process to close down unexpectedly.

Typically, the following error condition will be recorded in the Event Log if the installation is affected by this problem:

>>> Time: Sat Dec 27 11:25:24 2003; RT Build: 662.741; Log-Level: 0;
>>> Thread-Id: 258
    Operating System Event
    Signal Received: 1
A SIGHUP signal essentially means 'hangup' and is typically generated when a terminal disconnects from a service.

This is a strange and unexpected signal to receive in a daemon process, at least in the context of a controlling terminal disconnecting. The usual precautions for dealing with this UNIX signal were already implemented in the NSD daemon. In addition to this processing, an extra layer of processing has been added to specifically deal with this signal under AIX.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: SML498
Summary: Reset argument stack after ECP server daemon processed one request

Description:

This change fixes an issue where the ECP server daemon may get an access violation after processing many (about 135168) 'JOB' requests from the ECP client.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object
Platforms: All
DevKey: DMC079
Summary: Mac OS: Fix Caché SAX problem loading XML files with relative paths

Description:

This corrects an issue where attempting to load an XML file with a relative pathname on Mac OS X would result in an error although absolute pathnames worked properly. With this change, they both work.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.ActiveX
Platforms: Windows
DevKey: DVU1003
Summary: Wrong internal conversion for large integers

Description:

This corrects a problem where large integers in $LISTs would be incorrectly converted for COM output.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU1116
Summary: Retain trailing zeroes in large numeric/integer/float-point values

Description:

This corrects a problem where trailing zeroes were incorrectly dropped when converting large numeric values to display format.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU1273
Summary: Numeric values are passed to methods with wrong precision

Description:

This change suppresses adding a decimal point when converting integer values for display.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU1287
Summary: Numeric values are passed to methods with wrong precision

Description:

This change corrects a problem where numeric values used as string arguments had trailing $c(0) appended to them.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU962
Summary: Problem with %Float and %Currency data types on non US locales

Description:

This corrects problems in the use of the %Float and %Currency data types when the locale is not the United States. The thousands separator for numbers was not honored properly.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU972
Summary: Use a 15-digit mantissa for double conversions

Description:

This corrects problems resulting in loss of precision when converting numbers to %Library.Float.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Library
Platforms: All
DevKey: MIT407
Summary: Fix Unicode setting during initial connection in %SQLGatewayConnection

Description:

The problem with an incorrect environment setting on UNIX in the case of Unicode Caché was corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2312
Summary: ISNULL returns incorrect values

Description:

The following problems have been fixed:


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT368
Summary: Enable DataDirect driver connections in the Connect method of %SQLGatewayConnection

Description:

DataDirect drivers require setting a special option and supplying a password in order to be functional. This change modifies our connection code to detect that we are using DataDirect drivers and to set the necessary options

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN526
Summary: Cannot see view list in some ODBC client tools

Description:

Some applications include the null termination character in the length of the string. This is wrong.

Caché now walks the Unicode string to terminate the read at the specified length or at the first encountered null-terminated string, whichever comes first. This ensures the null termination character is not sent to Caché over the wire.

The outward symptom is that some ODBC client tools cannot list views in Caché.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN532
Summary: Add CodePages for decoding 8 bit Caché

Description:

This change adds several additional Code Pages to decode new Caché locales on 8-bit installations: CP1250, CP1256, CP874, CP1253, CP1255, CP866, LatinA, LatinT, and Latin7

Users must use the Unicode ODBC APIs to properly see the data, or their regional settings Code Page must match the Caché NLS default. In general, it is safest to use Unicode Caché and Unicode ODBC APIs to avoid conversion confusion.

ODBC does not use these tables when communicating with the Unicode version of Caché, only with 8-bit databases.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN534
Summary: Use CharToUnicode for converting from 8-bit Caché

Description:

Conversions from an 8-bit Caché required a specific Unicode conversion call when the client locale does not match Caché. This change adds the necessary call.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS576
Summary: Prevent access violation in $LIST()

Description:

The $LIST() function could cause an access violation if the input list happens to be exactly at the end of a memory page and the following page has never been allocated. This is now corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS611
Summary: Fix crash vulnerability in stackinfo()

Description:

In some rare situations, during error processing involving routines that are automatically recompiled because of old object code, the process could crash with a memory access violation. This vulnerability has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS619
Summary: Correct $ZTRAP/ZQUIT issue

Description:

Applications using a ZQUIT 1 command to pop execution levels could encounter <FRAMESTACK> errors after upgrading to 5.0.12. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: GK386
Summary: Clean up routine buffer reference when routine is not available

Description:

When a routine is modified on the server, and a job in the application server has a reference to the invalidated routine buffer, the error handler may corrupt the routine buffer list if errors occur while returning from a call to the routine. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: GK387
Summary: Fixed remote auto recompile routines

Description:

If auto-recompiled network routines are shared by more than one job on the client, then on routine completion they may corrupt or lock the routine queue. This has been fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: Linux
DevKey: JLC545
Summary: Improve detection of HyperThreading on Linux

Description:

This change correctly detects the number of physical CPUs on SuSE 8.2 and Red Hat 7.3 for licensing purposes when HyperThreading is enabled. Previous versions of Caché worked only on Red Hat 8.x and later.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JLC702
Summary: Fix bug in $Normalize on 32-bit platforms

Description:

An error was fixed in $NORMALIZE that could cause incorrect results for some combinations of input number and scale. Only 32-bit platforms were affected by this change, 64-bit platforms did not have the problem.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1796
Summary: Remove restriction on changing the default collation in a database

Description:

^MSU now allows the default collation for new globals to be changed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: OpenVMS
DevKey: JO1802
Summary: Prevent hang during open if LAT device returns DEVOFFLINE

Description:

A rare problem on OpenVMS systems which could result in a Caché process entering an infinite loop while opening an application mode LAT device has been resolved.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1821
Summary: Change dkmount/dkvolinfo so they don't hold seize during an open() call