InterSystems Documentation 
Caché Maintenance Kit Release Notes Archive


Welcome and thank you for using Caché.
The current maintenance kit is Caché 5.2.4. This document is only part of the available maintenance kit documentation. The full set of documents is available in the \Docs subdirectory of your Caché installation as follows:

This document is a historical archive of changes in Caché since the original 5.2 release, but prior to the current maintenance kit. As you can see from the above list, changes unique to the current maintenance kit are described in relnotes.htm. This document, prenotes.htm, lists changes between 5.2 release and the last maintenance kit before the current one. It has changes from the 5.2.3 maintenance kit and the 5.2.2 and 5.2.1 maintenance kits.
If you have installed Caché in the course of installing Ensemble, please also see the release notes for the Ensemble installation. These are in the \Docs directory under the subdirectory \relnotes\ensemble.

Description of a Change Report
The remaining topics in this document describe each modification in detail. The format for this description is a Change Report.
Each Change Report provides a table with the following information:


Change Reports for Version 5.2.3

Category: CSP
Platforms: All
DevKey: MAK1819
Summary: %session.Login and license allocation

Description:

The %CSP.Session:Login method in 5.0.x took a username, password and type where the type determined what sort of login to perform.

The use of this type was removed in 5.1 due to the new security model. This has lead to further problems where customer applications wish to trade CSP licenses to user X without having this user 'X' setup in the Caché security database.

To allow these applications to continue to work if you pass 1 as the type parameter to the Login method, CSP will now trade licenses without calling the login code and so restore the behavior to what it was in 5.0.x for this parameter value.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MXT866
Summary: #server overrides variable in XmlHttp implementation

Description:

This change properly declares an internal variable so it no longer erroneously overrides one present in the environment.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Installation.VMS
Platforms: OpenVMS
DevKey: JO2102
Summary: Update cload/cunload scripts for Caché on VMS 8.3

Description:

HP has made some internal changes to the INSTALL program and the version shipped with OpenVMS 8.3 on Itanium (only Itanium, not Alpha) will not work with Caché. A corrected version of this program and instructions on how to install it are available from the ITRC:
as: VMS83I_INSTAL-V0100
at: http://www2.itrc.hp.com/service/patch/mainPage.do
HP predicts that this will be available by 11/7/06.

The /shared=address parameter consumes pages controlled via the IMGREG_PAGES SYSGEN parameter. If you get messages similar to:

%INSTALL-I-NONSHRADR, image installed ignoring '/SHARE=ADDRESS' <filename>
-INSTALL-E-NOSHRADR, insufficient memory for shareable address data.
increase the IMGREG_PAGES parameter via AUTOGEN feedback or by editing MODPARAMS.DAT and running AUTOGEN.

Background:

On OpenVMS, cache.exe is now installed with "/shared=address" rather than simply "/share". This is required starting with OpenVMS 8.3 because cache.exe is both a shareable image to support callin applications. and a "main" program which is executed directly. In this case, "/shared=address" is required to instruct INSTALL to create the global section for the address relocation data.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Misc
Platforms: All
DevKey: SAP624
Summary: Caché says it allocates negative memory

Description:

Caché was reporting the amount of memory allocated as negative on very large memory configurations. The calculation has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Misc
Platforms: OpenVMS
DevKey: SAP625
Summary: Correct auto allocation on OpenVMS

Description:

This change does all buffer element calculations using 'ulong' to prevent overflow when dealing with large memory configurations.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Misc
Platforms: Unix
DevKey: SAP663
Summary: Caché doesn't start with larger buffer pools

Description:

The attempt to allocate large buffer pools on UNIX platforms (~2GB) caused startup to fail due to an internal error in calculating the total number of bytes to allocate for shared memory.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking.ECP
Platforms: All
DevKey: GK514
Summary: ECP server to deliver answer as soon as possible during light load

Description:

As part of 5.2 ECP server optimization, the ECP server was changed so that it might not deliver the answer as soon it completes during light loads. The delay delivery could be as long as one second.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking.ECP
Platforms: All
DevKey: GK522
Summary: Fixed the ECP daemon job types

Description:

The daemon jobs types were not initialized in the proper order. As a result, daemons might hang around on system failure because they were not cleaned up properly. For example, the ECP server reconnection daemon might not go away when the security subsystem disables the ECP service-connections from a host.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking.ECP
Platforms: All
DevKey: TR991
Summary: Improve journal sync wait handling when there is high disk latency

Description:

This change modifies ECP internal algorithms to improve the ECP response time when the journal syncs are very slow. It increases the number of ECP client requests bufs, adds more tracking statistics, and modifies the ECP server journal state notification algorithm to improve notification delivery.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking.ECP
Platforms: All
DevKey: TR992
Summary: Change block allocation for ECP client caches

Description:

ECP caches blocks locally in CACHETEMP. In very rare conditions when the cached items occupy only a single pointer block, the ECP client read daemon may fail with a system error.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Security
Platforms: All
DevKey: CDS878
Summary: Don't allow automatic WRITE access to % routines

Description:

This change corrects a problem where all developers could save percent routines into any database, regardless of whether the user had write access to the database.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Security
Platforms: All
DevKey: HYY1237
Summary: Address a case of <ILLEGAL VALUE> in configuring encryption at startup

Description:

This change addresses an issue in the case where the flag to encrypt journal files has a value other than 0 or 1. Attempting to correct this through ^DATABASE or the Management Portal resulted in the error
<ILLEGAL VALUE>zGetYesNo+4^%Library.Prompt.1
This change corrects the error.
Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Security
Platforms: All
DevKey: STC1005
Summary: Fix Buttons Roles display

Description:

When the Buttons display was run, the ROLES section would not be displayed because of an undefined error.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Security
Platforms: All
DevKey: STC1030
Summary: Don't allow last %All user to be disabled

Description:

Previously, when an account became disabled because the last login exceeded the inactive time, the account would be disabled unequivocally. Now Caché also checks to make sure it is NOT the last user with the %All role, so at least one enabled user retains the %All role.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2710
Summary: Inserts and updates not checking for value for MINLEN constraint

Description:

A problem has been corrected that occurred when
  1. the MINLEN parameter is specified for a property using the %String or %Text datatype,
  2. the MINLEN value is 1, and
  3. the value being validated is the SQL empty string ("").

The length of the empty string is 0, but the value was not rejected as being invalid by the %String and %Text type's validation code.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2732
Summary: Fix generation of default RowID specifications

Description:

A problem has been fixed that caused queries to occasionally produce invalid code when:

The problem first appeared in version 5.2


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.DDL
Platforms: All
DevKey: DPV2721
Summary: ALTER VIEW crashes

Description:

An issue has been fixed where the compilation of an ALTER VIEW statement might fail if the new view query references a view column in another view that is not based on a table column.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN723
Summary: Fix for pulling stream OIDs greater than 127

Description:

After creating a large number of streams (more than 127), the stream OID contained values that were not transmitted correctly. They were translated based on the character set of the client.

This has been fixed.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: JLF090, JFL111
Summary: Make 'x <> ALL (SELECT y ...)' equivalent to 'x NOT IN (SELECT y ...)'

Description:

The following constructs have identical semantics in SQL:
x <> ALL (SELECT y ...) <=> x NOT IN (SELECT y ... WHERE p)
                        <=> NOT (x = ANY (SELECT y ... WHERE p))
prior to this change, however, treatment of NULL was not the same in these two cases. In particular, if x and/or y are nullable and NOTs have been fully optimized, then the equivalent expression in both cases is:
NOT EXISTS (SELECT 1 ... WHERE p AND (x=y OR x IS NULL OR y IS NULL))
If either x or y is not nullable, then the corresponding IS NULL tests will be optimized away; if both x and y are not nullable then this change will have no net effect.

If either x or y is nullable, and some values of x or y in the database are null, then results returned by the query above will now comply with the SQL standard, but could be different than those returned in previous versions of Caché.

If execution of a "NOT IN (SELECT ...)", "NOT EXISTS", or similar query is performing slower after upgrading from a pre-5.2 version to version 5.2 or later, the first thing to try would be to mark the properties corresponding to x and y above as REQUIRED, if this is possible.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: JLF120
Summary: Add empty test to NOTEXISTS= case

Description:

Because of an optimization involving nulls introduced in Caché 5.2, a subquery such as
... x NOT IN (SELECT y ...) ...
might return the wrong result when the "SELECT" returned no rows. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: JLF135
Summary: A JOIN with NOT and CASE returns wrong result

Description:

When the scope of a SQL NOT includes a CASE expression, the CASE returns incorrect values. The negation logic should not be applied to the predicates inside the CASE expression. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS846
Summary: Fix string compare for AMD64 systems

Description:

Comparison of two null strings on AMD64 systems will give an incorrect result in cases where the ObjectScript compiler can tell from the source code that the arguments are strings, and neither argument is the explicit literal null string. For example,
$E(a,b,c)=n
will fail if n="" and the $E result is a null string, but
$E(a,b,c)=""
will give the correct result.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS861
Summary: Fix exception from $VIEW(x,y,0)

Description:

This change fixes a problem that could cause a process running %SS or JOBEXAM to fail with a memory exception.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS899
Summary: $ZOBJEXPORT will tolerate no current device.

Description:

In some rare circumstances, the ODBC server process could get a memory access exception. This has been fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: Windows
DevKey: GK537
Summary: Windows CSTAT to restore the event state after resetting

Description:

On Windows, " CSTAT -q1" checks the semaphore state by checking the event state. Checking resets the state but it did not restore the state back. This may cause CSTAT to intercept a job wakeup intended for another process causing the process to hang.

This change corrects the problem.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JLC875
Summary: Fix reporting of <SUBSCRIPT> errors in multiple SETs

Description:

This change fixes a problem where the reporting of invalid subscripts in multiple SETs involving array nodes could result in an access violation instead of the <SUBSCRIPT> error message.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO2063
Summary: Flush in-memory queue when waiting for write daemon to be idle with switch 13 set

Description:

A problem has been resolved affecting clusters which would sometimes prevent them from queiscing for a backup.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO2080
Summary: Fix buffer leak in process-private global cleanup

Description:

Under some circumstances. failure to allocate a temporary buffer during process-private global deletion could result in global buffers not being deallocated properly.

This has been resolved.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO2086
Summary: Update "clean" shutdown code to leave journal & transaction processing info in WIJ clean

Description:

After a clean system shutdown Caché leaves information in the CACHESYS database which indicates to the system that it went down cleanly and no journal recovery is required at system startup. This is used in cases where the WIJ is missing to indicate that it is ok for the system to start up. The information in the WIJ regarding recovery did not always agree exactly with the information in the CACHESYS database; sometimes the WIJ would indicate that recovery was required when in fact it was not. The recovery indicated by the WIJ was minimal and did not add an appreciable amount of time to system start up but it did lead to confusion in some cases.

This change corrects the system so that a clean system shutdown should leave the WIJ marked that no journal recovery is required and the internal offset for where to start searching for open transactions should be at the end of the journal file. Starting a system when no recovery is required should result in these messages in the console log:

       Performing Journal Recovery
       WIJ indicates no open transactions
During shutdown you will see some new messages:
       Updating Journal File [existing message]
       Journal restore not required at next startup
       Transaction rollback not required at next startup

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP643
Summary: When global buffers 1654MB and higher - NLS fails and hence CSP fails

Description:

Caché shared memory was reorganized in version 5.2, providing for larger buffer pools, and ability to map shared memory to different addresses in different processes. However, the organization placed the gmheap after the shared buffer pools. Because of this, with large buffer pools, offsets in the gmheap sometimes overflowed integer values.

This fix reorganizes shared memory, placing the gmheap before the shared buffers, guaranteeing that offsets into the gmheap will never overflow an integer.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP684
Summary: Consider .ids.lock in start/stop/install scripts

Description:

Startup and install were beginning the second phase of startup before the initial Caché startup process had completed allocating and initializing shared memory. The result was that the second phase of startup was failing, causing start (or install) to fail.

This fix lets cstart and install wait on an indicator that the first phase is complete, before starting phase 2.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SML700
Summary: Display WD suspend information in CSTAT

Description:

This is an enhancement to display wdsuspd, gbackupreq and gbackupsfn in CSTAT along with SWITCH and other system global info.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: System
Platforms: All
DevKey: SML713
Summary: Fix flush() issue on NFS for cvendian

Description:

This change fixed a CVENDIAN failure to convert some blocks due to the map block not being up-to-date during conversion, especially when the database is accessed via an NFS file system.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML716
Summary: Avoid using FlushFileBuffers() to improve performance for Windows platform

Description:

This change eliminates the use of fflush() for file handling. It improves the performance of CVENDIAN in converting the database, for example.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: Unix
DevKey: SML745
Summary: Fix CacheHung.sh script for SUN

Description:

This change fixes a CacheHung.sh failure on SUN systems.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML756
Summary: Add CSTAT -W option to free suspended write daemon

Description:

This change added CSTAT -W option to free up a suspended Write Daemon.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML763
Summary: Fix escape sequence processing when $zu(68,22) is 3.

Description:

This change fixed a problem where 'W #' would not clear the screen under some circumstances.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SML779
Summary: Avoid compiler optimization generation of bad code

Description:

The AIX compiler version 6 generated different AL codes from version 5. Its optimization re-arranged code generation that caused lock structure corruption.

This change fixes this.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: STC1042
Summary: Fix $SYSTEM.Security.ChangePassword to respect database credentials

Description:

This change corrects a problem where the password change routine was incorrectly changing the password for a user, ignoring the permission that the caller had to do so.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: SML750
Summary: Turn off GFFORCEFULBK flag for database after the write daemon is freed on Backup

Description:

This change fixes a Caché Backup hang when lots of global blocks are modified during backup.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1230
Summary: Journal restore reports error on missing file

Description:

This change addresses an issue with noncluster journal restore where under certain circumstances journal restore would abort upon a missing journal file (a desirable behavior) without giving an error message (an undesirable behavior). With the change, journal restore generates an error message when it detects some file or files are missing.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1232
Summary: Address an issue of journal switch spinning CPU when the old journal file is inaccessible

Description:

This change corrects an issue where journal switch could hang under the circumstances that

The journal switch hang would eventually lead to system hang.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1235
Summary: Fix setting journal purge parameter at startup

Description:

This change corrects an issue that caused the backup portion of the journal purging parameter (i.e., how many backups should occur before a journal file can be purged) to be cleared at Caché startup. As a result of that, once Caché is restarted, journal files would be purged on the basis of days only (i.e., how many days should go by before a journal file can be purged), until the user specifies the journal purging parameter again.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1270
Summary: Correct journal header display in CSTAT

Description:

A problem has been corrected that caused CSTAT to display journal header information incorrectly in version 5.2 and later.

Likelihood High
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML751
Summary: Fix lock counter out of synch when X and S mode are granted within transaction

Description:

When locking with S and X mode within a transaction, there is a chance that the lock counter in lock table could be out of synch and eventually corrupt the lock memory.

This change corrects that situation.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML767
Summary: Fix system hang on server side when lock table full

Description:

This problem only occurred when the lock table is full, no buffer can be freed, and there is incoming network lock request on a global name lock which is owned by another job.

It has been corrected.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1233
Summary: Shadow parameter to keep files from getting purged immediately

Description:

This change adds a shadow parameter to allow the user to specify how long the shadow copy of a source journal file can be kept before it gets purged. A similar option existed in 5.0.

By default, when the parameter is left unspecified or evaluated to 0, the shadow copy is purged as soon as it is no longer in use. That is, it has been completely dejournaled and contains no part of the existing open transactions on the shadow. This was the the standard, non-configurable behavior in 5.1 and 5.2. A positive value of the parameter is interpreted as the age, in days, that a file must reach in order to qualify for purging, before its in-use status (as described above) is taken into account.

For example, if the parameter has a value of 2, the shadow copy of a source journal file is eligible for purging if the source journal file is at least 2 days old and it is not still being dejournaled or contains part of one or more existing open transactions on the shadow.

Note that it is the age of the source journal file, rather than the shadow copy, that is used to determine the eligibility.

Also, the age of a source journal file is measured from its completion date (or last modified time) rather than its creation date. For example, if a journal file was created on 1/1 but journaling didn't switch from it to a new file until 1/3, the file reached 2 days old on 1/5 (since 1/3, its completion date).


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1236
Summary: Address a race condition that could cause shadow to hang

Description:

This change corrects an issue that could cause a shadow to hang shortly after starting, resuming or retrying (for example, after a network error). As a result, source journal files would fail to get copied to the shadow.

Other symptoms may include <ZREAD> errors at or around line SNDB+5^SHDWSBLK (depending on the Caché version) on the source (that is, database server) side.

The problem is present in version 5.1 and version 5.2.


Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.StartUp
Platforms: OpenVMS
DevKey: JO2043
Summary: Fix Caché OpenVMS to not drop trailing ] from directory name

Description:

This change eliminates a defect present in Caché 5.1. The defect resulted in a failure to recreate a missing CACHETEMP database during startup on OpenVMS.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.StartUp
Platforms: Unix
DevKey: SAP545
Summary: On Unix the control process gets an error updating cache.ids file when expanding the process table

Description:

In 5.2, the cache.ids file is created with only read permissions. However, sometimes it must be rewritten. The result is that the following message may occasionally appear in the cconsole.log, or during upgrade.
02/22-06:40:56:454 (745560) 0 Warning: Error writing cache.ids
The fix makes the permissions on the cache.ids file:
rw-rw----

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.StartUp
Platforms: OpenVMS
DevKey: SAP686
Summary: ACCVIO at startup if more thah 3.9GB of globals selected

Description:

This change corrects an issue where attempting to allocate memory for a large number of globals (more than 4GB worth) caused an ACCVIO failure.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.StartUp
Platforms: OpenVMS
DevKey: SAP696
Summary: Startup with buffers reduced can fail with <SYSTEM> error

Description:

On OpenVMS, if the initial allocation for a large number of buffers fails, and the buffers are reduced, then startup may sometimes fail with another error. The symptoms are the following displayed in the log:
11/02-09:32:25:165 (2241236e) Control process exited due to a Cache error: <SYSTEM>
11/02-09:32:25:185 (2241236e) 3 Freezing system due to daemon abnormal exit
11/02-09:32:25:289 (2241236f) 0 Write daemon started.
This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: MAK1881
Summary: SYSTEM.OBJ.Load( csp.xml) output to wrong device

Description:

When importing a CSP file from an XML file the device that the output was written to was reset to the principal device due to the CopyFile method of the %CSP.Routine class. This is now corrected not to change the current device.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: SML741
Summary: Invalid ids are now ignored in SYS.Lock and %SYS.LockQuery classes

Description:

Previously, when SYS.Lock.DeleteAllLocks() was passed a non-numeric process ID, the system would remove all the locks in the system instead of just the locks owned by the process. This change fixes this problem.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities.Routines
Platforms: Unix
DevKey: SAP601
Summary: Implement NFS safe cache.ids locking during startup

Description:

This change implements a guaranteed locking mechanism in all UNIX environments and file systems and thereby excludes concurrent startup issues.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Change Reports for Versions 5.2.2 and 5.2.1

Category: CSP
Platforms: All
DevKey: MAK1734
Summary: Upload via CSP filenames garbled when containing German umlauts

Description:

Previously, when you uploaded a file with CSP, and the filename contains non-ASCII characters, these were not being converted into the correct charset, unlike the other request parameters. This problem has been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK1812
Summary: Problem loading CSP directories recursively on VMS

Description:

If you tried to load CSP files on VMS with:

s tSC = $$LoadPageDir^%apiCSP("/csp/user","c+d")

Then it would not recurse through any subdirectories as it should. Also it would not report any errors even though it generated an 'invalid directory' error. Now the error reporting is fixed, and the code to recurse subdirectories is also fixed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MXT867
Summary: Increase timeout for SOAP Client Wizard

Description:

Increase timeout to one hour for the SOAP Client Wizard page that generates and compiles the classes.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: MgtPortal
Platforms: All
DevKey: YSD1532
Summary: No classes found in Mgmt Portal

Description:

Fixed a bug where if query's ROWSPEC column name contains a caption, then a table may not be shown or an error may occur.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking.ECP
Platforms: 1
DevKey: GK514
Summary: ECP server to deliver answer asap during light load

Description:

As part of 5.2 ECP server optimization, the ECP server may not deliver the answer as soon it completes during light loads. The ECP server rarely may delay delivery of the answer for up to one second.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking.ECP
Platforms: 1
DevKey: GK522
Summary: Fixed the ECP dmn job types

Description:

The daemon jobs types were not set in the proper order; daemons may hang around on failure (incorrect type may prevent proper cleanup due to incorrect job type). I.e. The ECP server reconnection daemon may not go away when the security subsystem disables the ECP service-connections from a host.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking.ECP
Platforms: 1
DevKey: GK523
Summary: ECP client to detect and terminate the ECP connection ASAP.

Description:

In rare conditions, the ECP client may not detect the connection is dead and it may not drop the connection and reconnect to the ECP server.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: MAK1779
Summary: Enforce read only collections

Description:

If you specify that a collection property of a class is read-only, Caché now enforces this in the collection object so any attempt to update this collection will return a %Status code saying the collection is read-only.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: MAK1781
Summary: Support computed collection properties

Description:

This change allows list or array collections to be sql computed. The SQL compute code for list collections must return the data in this form:

$listbuild(item1,item2,item3,...)

For array collections the SQL compute code must return the data in this form:

$listbuild($listbuild(key1,item1),$listbuild(key2,items2),...)

For example:

Class Test.Pointer Extends %Persistent
{

Property Data As %Integer;

Property B As list Of %String [ SqlComputeCode = { s {B}=$lb({Data}) }, SqlComputed, SqlComputeOnChange = Data ];

}

This defines a computed property 'B' which has a single element in it of value equal to the property 'Data'. Note that you cannot define a calculated collection because the collection would have no in-memory storage.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: MAK1807
Summary: Upgrade class dictionary version to modify return type of IsValidDT methods if they were returning a %Integer

Description:

Caché 5.1 corrected the return type of the IsValidDT method to return a %Boolean rather than a %Integer which was its return type in previous releases. To promote compatibility with this older change, Caché 5.2.2 updates all user IsValidDT methods to a return type of %Boolean if they were %Integer or %Library.Integer. This change avoids errors reported when compiling these classes because the superclass IsValidDT return type does not match the subclass's IsValidDT.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: MAK1822
Summary: Set the modified bit for collection 'oref' slot when clearing a collection

Description:

When you call ..Collection.Clear() it now resets the modified bit on the collection 'oref' slot as well as the 'oid' slot. This is required by the bindings so they can detect the oref has changed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: MAK1827
Summary: Projects containing user-defined document types exported incorrectly

Description:

If you insert a user-defined document type into a project and then export the entire project then the user-defined document will not be exported because if it was called 'test.abc' then the export code was trying to export 'test.abc.abc' rather than 'test.abc'.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: MAK1832
Summary: When Clear() on a collection is called remove all the data, but keep the oref

Description:

When Clear() is called on a collection previously it would remove all the data and the oref and oid. Now it keeps the oref to avoid having to create a new oref if it is referenced again and incur the cost of the object creation. This also means that if you have a reference to this oref it is still valid.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: MAK1842
Summary: When calling $system.OBJ.Load with the 'compile' flag user-defined document types were not compiled

Description:

When calling $system.OBJ.Load with the 'c' flag to compile the items imported any user-defined document types were not compiled even though they were loaded correctly. This problem has been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: MXT886
Summary: CopyFrom method of %Stream.GlobalCharacter needs to copy LineTerminator

Description:

This change modifies the CopyFrom method of %Stream.GlobalCharacter and %Stream.TmpCharacter to work like %GlobalCharacterStream and copy the LineTerminator property.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK1805
Summary: Unresolved dependency not detected

Description:

Previously, if you have a parent/child relationship and then some 'dependson' dependencies, the compiler was not making sure that both the parent and the child class were compiled together. This meant it would fully compile the parent class and only then start compiling the child class which is not possible and so led to another compiler error. Now Caché ensures that the parent and child are compiled together, and if this can not be done it reports a class compiler dependency error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Jalapeno
Platforms: All
DevKey: JSL1976
Summary: POJO: non-functional buttons in wizard should be disabled

Description:

With this change, buttons are now enabled only when something is selected that they can operate on. The exception is "Add" for zipping or jar, since you can always add a new zip or jar regardless of mode.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Jalapeno
Platforms: All
DevKey: JSL1978
Summary: POJO: tab key disrupts user input

Description:

A problem with cursor movement via the TAB key has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Jalapeno
Platforms: All
DevKey: JSL1979
Summary: POJO: Schema Wizard crashes

Description:

Previously, the key 'd' gave a state dump when typed in the Console. Caché no longer allows this. It does allow the key 'c' to clear the console.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Jalapeno
Platforms: All
DevKey: JSL1980
Summary: Don't save properties file on next from login Panel (POJO, SchemaBuilderWizard)

Description:

Previously, Caché saved the properties file upon a "Next" event from the login panel. It no longer does this.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Jalapeno
Platforms: All
DevKey: JSL1983
Summary: Show null pointer exception in SchemaBuilderWizard

Description:

When connection fails due to a null pointer