InterSystems Documentation 
Caché Maintenance Kit Release Notes Archive


Welcome and thank you for using Caché.
The current maintenance kit is Caché 2008.2.2. 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 2008.2 release, but prior to the current maintenance kit. Changes unique to the current maintenance kit are described in relnotes.htm.
Note: 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.
This document includes the following sections:

General Announcements
InterSystems advises all users to recompile their Application classes 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.
Anyone upgrading from a Caché release at or before 5.0 will need a new license key.

InterSystems 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 release announcements.

The most current list can be obtained from the InterSystems Web site.

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 product versions at the InterSystems Web site. From the home page’s Products menu, choose Caché. On the Caché page, choose Product Specifications & Documentation, then Documentation. Then select the specific version and type of documentation you are interested in.

Change Reports for Version 2008.2.1
Version 2008.2.1 of Caché included the following changes:

Category: CSP.Gateway
Platforms: All
DevKey: CMT688
Summary: Fix a problem in the code responsible for replacing 'old with new' session IDs in previously cached pages

Description:

When CSP caches a page returned from Caché it is usually the case that the page is cached with the session ID (either as a CSPSESSIONID cookie or CSPCHD form variable) of the user that first requested the page. On subsequent retrievals of this page from the cache for other users, CSP must replace all instances of the old session ID with the ID of the current user accessing the page.

This change corrects a problem where the replacements were done even in places where they should not be, such as embedded Javascript in the page.


Category: Languages
Platforms: PPC
DevKey: SOH098
Summary: Fix ppc incnum/decnum

Description:

In the 2008.2 releases of Caché, the optimizations for (a+1) and (a-1) do not work on 32-bit Power PC systems when A is an expression of the IEEE double-precision binary floating-point type. The compiler special cases increment-by-1 and decrement-by-1 and evaluates these operations using special routines written in assembly language. The 32-bit Power PC version of these assembly language routines do not properly implement increment/decrement of $DOUBLE values.

Category: Languages.COS
Platforms: All
DevKey: CDS1470
Summary: Fix crash after empty ZLOAD

Description:

An argumentless ZLOAD with an immediate end of file leaves the partition empty. In this situation an access violation could occur on a subsequent DO command. This is now fixed.

Category: Languages.COS
Platforms: All
DevKey: SOH091
Summary: Fix $LISTSAME with string and negative integers

Description:

This change corrects a problem where $LISTSAME could give erroneous results for lists involving strings and negative numbers.

Category: MgtPortal
Platforms: All
DevKey: YSD2066
Summary: MgmtPortal - Task Manager - Add prompts Start Date and End Date for Daily definition

Description:

On the Task Manager wizard, new prompts have been added for Start Date and End Date for Daily definition, similar to that of Monthly and Monthly by Day.

The default for the Start Date is today.


Category: MgtPortal
Platforms: All
DevKey: YSD2082
Summary: MgmtPortal - Task Manager - Add prompts Start Date and End Date for Weekly definition

Description:

On the Task Manager wizard, new prompts have been added for Start Date and End Date for Weekly definition, similar to that of Monthly and Monthly by Day.

The default for the Start Date is today.


Category: Networking.ECP
Platforms: All
DevKey: GK668
Summary: Modified the ECP server session shutdown to cleanup any queued background pre-fetching.

Description:

The ECP server shutdown has been changed to cleanup any queued pending pre-fetch requests.

If not cleared properly, in very, very rare conditions, the ECP server may receive a msg while the same session's write daemon is shutting down, and leave the background pre-fetcher in a confused state.


Category: Networking.ECP
Platforms: All
DevKey: GK669
Summary: Removed the journal file number/count dependency in the ECP server

Description:

To provide its guarantees, the ECP server depends on the durability of its activities. Durability tracking was dependent on the journal file number, which is not updated and tracked in parallel with the journal offset. This change modifies the durability logic not to depend on the journal file number.

Category: Object.C++
Platforms: All
DevKey: IYB553
Summary: Correct conversion error between client and server

Description:

This change corrects an error in exchanging strings between the client and server. When receiving strings from the server, the C++ binding now converts them to Unicode unless the client has the same locale. When sending strings to the server, the binding now converts strings to Unicode and then to the server locale, unless the client and the server have the same locale.
Applications that didn't check the d_string type descriptor (get_type()) may need to check it now in order to interpret the data correctly.

Category: Object.CacheProvider
Platforms: All
DevKey: IYB556
Summary: CacheActiveX, put back string to number conversions when returning data from running a method

Description:

This change converts strings back to numbers when they are returned from methods. Previously, this was not done in all circumstances.

Category: Object.Class Compiler
Platforms: All
DevKey: MAK2415
Summary: Remove class compiler dependency on the collation of '~' symbol

Description:

The class compiler had a dependency on '~' collating in a certain order which was not true on a specific Czech locale. This caused an error like:
ERROR #5355: Method generator dependency unresolved: ,,,,,

ERROR #5030: An error occurred while compiling class User.Test
when compiling a class.

This has been changed so that the code now uses an integer value which will always collate the same way regardless of locale.


Category: Object.Class Compiler
Platforms: All
DevKey: MAK2472
Summary: When normalizing class names in a generator method use the import list from current class and not origin

Description:

When the class compiler processes something like ##class(Name).Method(), it normalizes this classname based on the import list or the origin of this method, that is, the class where this method was defined.

However, generator methods are treated as if they were implemented in each subclass. So this changes the compiler to normalize names in this case relative to the current class rather than the class where this generator was initially defined.


Category: Object.Class Compiler
Platforms: All
DevKey: MAK2496
Summary: Dynamic and SqlRoutinePrefix keywords were no longer used but should still be able to be imported

Description:

The class keywords, Dynamic and SqlRoutinePrefix, are no longer used, but this change still allows them to be imported in XML files.

Category: Object.LanguageBindings
Platforms: All
DevKey: IYB545, IYB548
Summary: %SYS.BINDSRV bug fix in output redirection

Description:

When sending the cached output in a redirection, an error could occur if the redirection was executed in a context that made bindserver variables unavailable. This has been fixed.

Category: Object.Macro Preprocessor
Platforms: All
DevKey: DPV3308
Summary: MPP: Do not pre-expand include files that have #execute in their code

Description:

A problem has been corrected where an include file was stored in a precompiled state but the include code contained a #execute MPP directive that needed to be executed for each routine where the include file was used.

Category: Object.Stream
Platforms: All
DevKey: MAK2485
Summary: <prop>GetObject for new stream classes was not returning the correct OID

Description:

If a class defined a property of type %Stream.GlobalCharacter or %Stream.GlobalBinary and then called the <prop>GetObject method to return the stream OID, the OID was not correctly formed. This caused the delete of a stream to silently fail in those cases where it used the OID from <prop>GetObject to call %Delete on the stream class.

This has been corrected.


Category: Object.XML
Platforms: All
DevKey: MXT1091
Summary: Fix bug: Canonicalize method of %XML.Writer loses definition of multiply-defined prefix

Description:

This change makes sure that the element prefix is always defined and thus fixes an error in the Canonicalize method of %XML.Writer that lost the element prefix when there were multiply-defined prefixes.

Category: Object.XML
Platforms: All
DevKey: MXT1092
Summary: Fix XML Canonicalization bug which causes invalid signing

Description:

This change corrects a signing error with elements that have a prefix different from that of the default namespace defined in that element. The symptom of the error was extra xmlns="..." in child elements.

Category: Security
Platforms: All
DevKey: STC1485
Summary: Fix <SUBSCRIPT> error in Security.Applications.Modify() during install

Description:

This changes fixes a problem with a <SUBSCRIPT> error when calling Security.Applications.Modify(). The error occurred when the list of target roles for the application definitions exceeded 255 characters in length.

Category: SQL
Platforms: All
DevKey: DPV3306
Summary: MV/SQL: Correct FOR SOME %ELEMENT with multi-valued fields

Description:

A problem has been corrected where "FOR SOME %ELEMENT" on a MV multivalue field might encounter a <LIST> error at execution time.

Category: SQL
Platforms: All
DevKey: DPV3310
Summary: SQL: Foreign Keys and mapped packages

Description:

This change corrects the behavior of package mapping. For example, assume

If there is a foreign key in N2.FK.Class that references N2.PK.Class, the application must make sure package FK is also mapped to namespace N1. Failure to do so will cause any SQL INSERT/UPDATE/DELETE or Object saves/delete on class table PK.Class in namespace N1 to fail with a <NOROUTINE> error.


Category: SQL
Platforms: All
DevKey: DPV3318
Summary: SQL: Correct literal type reporting when literals in SELECT and FROM clause

Description:

A problem has been corrected where some literal values used in a SELECT query via xDBC may not report the correct datatype value if literal values appear in both the SELECT clause and the FROM clause of the query (such as in a sub-query in the FROM clause of the main query).

Category: SQL.Query Processing
Platforms: All
DevKey: AK710
Summary: Move ANYOF collection element looping inline

Description:

This change optimizes the processing of queries involving arrays of elements. The processing for the elements was moved to be inline rather than processed in routine calls.

Category: SQL.Query Processing
Platforms: All
DevKey: AK711
Summary: Convert some OR to IN after parsing

Description:

This change corrects the handling of a condition of the form:
(F=? OR F=? OR ...)
to avoid causing a <FRAMESTACK> error when it contains hundreds of terms.

Category: SQL.Query Processing
Platforms: All
DevKey: AK718
Summary: Fix IDKEY value order in old OR optimization

Description:

This change corrects an error in the handling of queries in the style generated by MS/Access. Such queries contained conditions in the WHERE clause that occurred in an order different from the field order of the row. Under some circumstances, this caused incorrect code to be generated for the query.

Category: SQL.Query Processing
Platforms: All
DevKey: JLF180
Summary: Check for FROM clause correlations in subquery transformations

Description:

This change corrects an error that can occur with FROM clauses and subqueries. Under some circumstances, queries involving nested IN queries within WHERE clauses in conjunction with HAVING clauses could disable important optimizations.

Category: Studio
Platforms: All
DevKey: DVU2434
Summary: Include MAINTVERSION in calculation version number

Description:

Studio was calculating version based on MAJORVERSION and MINORVERSION. This caused a problem in connecting to 2008.2.1.

The calculation has been corrected so that it now satisfies the requirement that the client should have a version not lower than the server.


Category: Studio
Platforms: All
DevKey: JN708
Summary: Fix wrong byte count in utlAutoBSTR::AsAString(), AsXString()

Description:

This change fixes the methods AsAString() and AsXString() used by Studio to determine the length of a string to be converted. Prior to this, under some circumstances, calculation could result in an access violation.

Category: Studio
Platforms: All
DevKey: RAW771
Summary: Studio editor: printing: extra blank page is printed at end

Description:

Beginning with 2008.1, Studio printing added an extra blank page at the end of a print job.

This is now fixed.


Category: System
Platforms: All
DevKey: GK667
Summary: Re-enabled 2K database float support which was disabled accidentally

Description:

This change re-enables support for float-point that was disabled accidentally for 2K databases. The symptom of the problem was that errors occurred when attempting to KILL a floating-point node in a 2K database.

Category: System
Platforms: All
DevKey: JLC1223
Summary: Add missing table descriptors to NLS files

Description:

This change adds two missing cp1250 table descriptors that prevented 8-bit locales based on this character set (for example, csw8, plw8, huw8) to be installed.

Category: System
Platforms: All
DevKey: JLC1230
Summary: Avoid potential <WIDE CHAR> error during NLS upgrade

Description:

This change avoids a potential <WIDE CHAR> error during the NLS phase of Caché upgrades running on 8-bit locales that use non-Latin1 character sets such as CP1251-based Russian (ruw8).

Category: System
Platforms: All
DevKey: JLC1231
Summary: Allow digits in custom locale names

Description:

This change allows digits in the middle characters of locale names (for instance, "yt8w"). These were prohibited by ^NLS, but could be produced by cnls.exe in older versions and therefore are valid.

Category: System
Platforms: All
DevKey: JO2250
Summary: Correct internal stack violation when loading routines > 65311 bytes

Description:

This change corrects an internal stack management problem when loading a routine larger than 65311 bytes. Before the change this situation could lead to the stack overwriting other memory structures which could, in turn, lead to memory exceptions and process dumps.

This issue occurs on any system where a process loads a routine larger than 65311 bytes more than 255 times.


Category: System
Platforms: OpenVMS
DevKey: RFD412
Summary: Fix terminal margin handling for VMS Itanium

Description:

The 'margin' parameter of the terminal USE command (e.g. USE 0:(270) ) was handling values >255 differently on OpenVMS Alpha and Itanium. The documentation says "Values from 1 to 255 set the right margin for output; any other value disables the right margin".

However, on OpenVMS Alpha, Caché handled values up to 511. On OpenVMS Itanium, Caché internally truncated the value to one byte, essentially acting as a #256 on values between 255 and 512. This change makes OpenVMS Itanium act like OpenVMS Alpha.


Category: System
Platforms: All
DevKey: SAP1112
Summary: Correct startup test lock

Description:

A callin program that tries to start an instance before the instance is fully initialized locks the instance and prevents startup while the callin program exists.

This change corrects that situation.


Category: System
Platforms: All
DevKey: SML1090
Summary: Fix missing database protect checking in reverse order

Description:

This change fixed a database security hole that allowed a user who did not have access to a global to successfully execute a $ORDER on such a global.

Category: System.Lock
Platforms: All
DevKey: SML1086
Summary: Fix ECP lock recovery might casue inconsistent lock tables between client and server.

Description:

This change fixes a possible lock table inconsistency between client and server when an ECP server shuts down and is restarted. In this situation, some "cancelled" locks might stay in the client's lock table even though they did not exist in the ECP server.

This problem exists on big endian platforms.


Category: Utilities
Platforms: All
DevKey: STC1467
Summary: Fix index corruption when using %R to compile

Description:

This change corrects a problem where a missing "^" before a reference to rINDEX caused Caché to rebuild the routine index incorrectly with a bad length.

Category: Utilities
Platforms: All
DevKey: STC1491
Summary: Fix %ER deleting errors when default of "NO" is taken

Description:

This change corrects a situation where the default answer of "NO" might be interpreted as "YES" in %ER.

Category: Utilities
Platforms: OpenVMS
DevKey: STC1501
Summary: Let Backup.General.ExternalThaw in if switch 13 is set

Description:

This change allows Backup.General.ExternalThaw() to complete in an OpenVMS cluster environment. Prior to this, it would hang.

Category: Zen
Platforms: All
DevKey: JMD487
Summary: Extra columns displayed within tablePane

Description:

This change corrects an error where extra columns may be displayed in Zen table panes under certain circumstances. This can happen when (1) dataSource is set to "columns", (2) there are more columns in the source data than there are columns defined by the tablePane, and (3) table uses "snapshot" mode.

Category: Zen
Platforms: All
DevKey: JMD488
Summary: Correct an issue where the Zen calendar component may show the wrong date

Description:

If the current day is the 31st of the month, and you select a date in a month with less than 30 days, then the calendar will display the wrong month.

This is now corrected.


Category: Zen
Platforms: All
DevKey: JMD489
Summary: Correct an issue where the Zen calendar has trouble with daylight savings time

Description:

This corrects an error where client is using daylight savings time, close to the end of the day the date used by calendar may be off by one day.