InterSystems Documentation 
Caché and Ensemble Maintenance Kit Release Notes


This document provides a list of the changes between versions 2009.1.2 and 2009.1.3 for Caché and Ensemble.
The release notes are available in the \Docs subdirectory of your installation.

Late-breaking information about this kit can be found in: \relnotes\readme.1st

Topics in this document include:


General Announcements
Upgrading From Prior Released Versions
Customers running on any prior released version of Caché may upgrade to this version of Caché during installation. When upgrading across multiple versions, intermediate upgrade steps may be necessary depending on the inter-release compatibility requirements. The release notes for the intervening releases will contain that information.

After each upgrade step, the following conditions apply:

Upgrading ECP Configurations
The following guidelines apply to the process of upgrading ECP configurations:
If your database or application servers hold local transaction information until the transactions are completed, or if you have questions or concerns about how to upgrade your ECP configuration, please contact InterSystems Worldwide Customer Support.

Restricted Rights Legend
Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013.
InterSystems Corporation
One Memorial Drive
Cambridge, MA 02142
When acquired by the Government, commercial computer software and related documentation bearing this legend are subject to the following:

  1. Title to and ownership of the software and documentation shall remain with the Contractor.
  2. Use of the software and documentation shall be limited to the facility for which it is acquired.
  3. The Government shall not provide or otherwise make available the software or documentation, or any portion thereof, in any form, to any third party without the prior written approval of the Contractor. Third parties do not include prime contractors, subcontractors and agents of the Government who have the Government's permission to use the licensed software and documentation at the facility, and who have agreed to use the licensed software and documentation only in accordance with these restrictions. This provision does not limit the right of the Government to use software, documentation, or information therein, which the Government has or may obtain without restrictions.
  4. The Government shall have the right to use the computer software and documentation with the computer for which it is acquired at any other facility to which that computer may be transferred; to use the computer software and documentation with a backup computer when the primary computer is inoperative; to copy computer programs for safekeeping (archives) or backup purposes; and to modify the software and documentation or combine it with other software. Provided that the unmodified portions shall remain subject to these restrictions.
END OF LEGEND

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 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 product versions at the InterSystems Website. From the home page, choose the Support & Education tab, then choose the Support menu item for the product you are interested in, for example, Caché Support. Links to the available documentation can be found on the support page for each product.

Description of a Change Report
To help you assess the impact of this maintenance kit on your applications, the remaining topics in this document describe each modification in detail.
If you need assistance evaluating the effect on your application(s), system(s), or related plans, please contact the InterSystems Worldwide Support Center:

  • Phone:  +1  617  621-0700
  • Fax:  +1  617  734-9391
  • Email:  support@intersystems.com


Category: Caché Direct
Platforms: All
DevKey: RAW821
Summary: Caché Direct client: recognize user cancel in server dialog, and report properly

Description:

If the user cancels in the server selection dialog, the error code was misreported. This has been fixed.

Category: CSP.Gateway
Platforms: All
DevKey: CMT781
Summary: Improve the protection in, and resilience of, the code responsible for determining the requested file type in the Apache DSO modules

Description:

This change improves the protection in, and resilience of, the code responsible for determining the requested file type in the Apache DSO modules. It enables the CSP module to cleanly reject requests destined to be processed by the WebLogic module (provided the 'CSP On' directive is not specified for the path).

Category: CSP.Gateway
Platforms: All
DevKey: CMT787
Summary: Add protection to prevent the Gateway exceeding the current maximum file size in force for the Event Log file (CSP.log)

Description:

This change adds protection to prevent the Gateway exceeding the current maximum file size in force for the Event Log file (CSP.log). Failure to do this check can result in the CSPnsd process terminating abnormally during normal operation and/or at initialization (since it cannot write the startup entry in the log).

Category: Ensemble
Platforms: All
DevKey: MC1016
Summary: Remove killing of ^ERRORS from Ens.Purge:PurgeAll

Description:

This change prevents the removal of errors when ##class(Ens.Purge).PurgeAll() is called.

Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP888
Summary: Fix message browser support for body property queries with . and () in them

Description:

This change quotes the characters ".", "(", and ")" in Message Browser generated queries against message body fields. This allows sub-properties and array elements to be specified without generating invalid SQL field names.

Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP929
Summary: Improve HL7 Parser's handling of corrupt segment data

Description:

This change prevents an infinite loop that would occur if HL7 input was malformed and random data in the message happened to contain the sequences "MSH", "BHS" or "FHS" which the HL7 parser looks for in attempting to recognize HL7 data with unspecified "Flexible" framing.

Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP934
Summary: Fix use of $ZTime in X12 and EDIFACT NewReply... methods

Description:

This change fixes an error that resulted in invalid time codes being constructed for timestamp fields in EDI reply documents. The 4-digit time was always generated as "1708" instead of the actual time.

Category: Ensemble.ManagementPortal
Platforms: All
DevKey: TAP908
Summary: Add support for SQL -> syntax in Message Browser for msg body persistent sub-properties

Description:

This change adds support for SQL -> syntax in the Message Browser when using detailed filter conditions of type Body Property. When the selected message body class has properties whose type is a persistent object class, the Message Browser's Value Selector popup dialog box shows the values of all the nested sub-properties, with a dot ('.') separating them from their respective main parent properties.

Formerly, selecting one of these nested sub-properties would cause invalid SQL to be generated and thus cause a page error upon clicking the Search button.

This change causes the Message Browser to generate SQL arrow ('->')syntax for references to such sub-properties, resulting in SQL that is valid if the sub-property belongs to a persistent class type.

This change also generates a valid SQL 'AS' name for the column displaying the sub-property values. It does this whether the sub-property is named using a dot separator or if it is named using an arrow separator entered by hand.


Category: Installation
Platforms: All
DevKey: ALE1816
Summary: Do not allow to install Caché server on Windows if CPU does not support SSE2 instructions

Description:

Windows installation will now check for SSE2 support in the underlying CPU and will display a warning that only client components will be installed. It will enforce a "client" setup role if the SSE2 instruction set is not available.

Category: Installation.UNIX
Platforms: All
DevKey: TRW714
Summary: Avoid jam deletion of packages in the installer

Description:

Before this change, interrupting an install via Ctrl-C on some Unix platforms could corrupt the install kit if it was on a writeable file system. The interrupt behavior is now correct.

Category: Installation.Windows
Platforms: All
DevKey: ALE1834
Summary: Properly register mscomctl.ocx when any feature using it is installed

Description:

In previous releases, the "InProcServer32" default registry value for all classes exported by mscomctl.ocx was not populated when the "activex" feature was not installed. This isnow fixed and this value is populated whenever the mscomctl.ocx component is installed.

Category: Networking.ECP
Platforms: All
DevKey: GK771
Summary: Recover app-server "Connection in Progress" state

Description:

CP establishes its connection on the first reference to any remote global. While establishing a connection, if the ECP client daemon creation fails, it may leave the connection in "in progress" state.

This change detects the errors associated with this situation and attempts to recover from it. It also attempts to fix itself when daemon creation fails.


Category: Networking.ECP
Platforms: All
DevKey: GK778, GK779
Summary: Fixed a couple of issues with long string set recovery across ECP

Description:

This change fixes a rare condition where a long string could be dropped or lost if the database server was restarted right after the last data transmission, but before the journal became durable.

It also fixes issues with long string SET command recovery across ECP. If the server or connection fails in the middle of a SET involving a long string, the assignment may fail with <NETWORK> error or the SET may be dropped altogether.


Category: Networking.ECP
Platforms: All
DevKey: GK780
Summary: ECP session cleanup to invalidate any Q-ed activity

Description:

In rare cases, when the ECP work daemons cannot keep up with activity, and there are many activities queued, the session that originated the work in the background may go away. It may also reconnect with leftover activity from the previous session. This modification prevents any old or stale work from being processed after a disconnect (and/or reconnect) by removing it from the work queue during session cleanup.

Category: Networking.ECP
Platforms: All
DevKey: GK788
Summary: Unicode strings are not converted to the ECP client's endian

Description:

Under very rare conditions, if
  • The ECP server is a different endianness than the application server;
  • There is a SET in the process of being propagated to the client;
  • The SET involves a non-compact Unicode string;
  • The block that the SET will modify has arrived at the client;

then the cache may be updated with the wrong endian value.

Category: Object.LanguageBindings
Platforms: All
DevKey: IYB627
Summary: Binding server, increased the buffer size to store variables for output redirection

Description:

This change corrects a situation that caused memory corruption when the binding server was used by Java.

Category: SQL.Query Processing
Platforms: All
DevKey: AK740
Summary: Find correlated fields in noagf/lvtree search

Description:

This change corrects a situtaion where the SQL processor would ignore fields that could be used to optimize the query processing when those fields occurred in subqueries.

Category: SQL.Query Processing
Platforms: All
DevKey: AK759
Summary: Get uncollated field if collated needed

Description:

This change fixes a situation where an <UNDEFINED> error could occur while running a query that involves collection fields or when row-level-security is used.

Category: SQL.Query Processing
Platforms: All
DevKey: BJB426
Summary: Make sure %READERLIST is added to mt and mts array in pre parser

Description:

A problem has been corrected that would cause an <UNDEFINED> error if you did an OUTER JOIN into a table that had Row Level Security

Category: SQL.Query Processing
Platforms: All
DevKey: JLF301
Summary: Test and clear viewSpConds(joinLog) in removeUnnecessaryStreams

Description:

This devlog fixes an error that caused a <SUBSCRIPT> error to be raised at prepare time when DISTINCT was used in combination with an ON clause, as exemplified by this query:
SELECT DISTINCT b.id AS id
FROM sample.person b
LEFT OUTER JOIN sample.employee v ON b.id = v.spouse
LEFT OUTER JOIN sample.employee uv ON v.id = uv.id
AND uv.home_state = 
    (select office_state from sample.employee where v.id=uv.id)

Category: SQL.Query Processing
Platforms: All
DevKey: JLF310
Summary: Reduce max subscript length in buildCanonical to 85 characters

Description:

This change fixes an issue internal to the SQL compiler where a string was stored that exceeded the maximum subscript length on an array.

Category: SQL.Query Processing
Platforms: All
DevKey: JLF323
Summary: Restrict redirectRef to transform only val ("v") type operands

Description:

This change fixes a defect in SQL optimization that, though rare, could potentially occur in any moderately complex query resulting in incorrect results.

Category: SQL.Query Processing
Platforms: All
DevKey: PVA192
Summary: Inhibit 'removal of unnecessary distinct' in cases likely to make performance worse

Description:

Certain quantified or EXISTS subqueries involving aggregation within a FROM clause subquery of the given subquery could have much worse performance in later releases compared to Caché 5.0.4. This rare regression is fixed by this change.

Category: Studio
Platforms: All
DevKey: DVU2565
Summary: Changes to temporary dir name for class cache files

Description:

This correction changes Studio behavior on start up to remove class cache files with different build numbers. These files was caused a problem if two Studios from different builds were run simultaneously in the same instance.

Category: Studio
Platforms: All
DevKey: MAK2750
Summary: CSP templates could run in the wrong namespace on initial page

Description:

Studio passes the namespace the Studio template page should run in as a URL parameter on the initial page. This is then stored in the %session object and used to set the 'RunNamespace'.

However, the code that then switched this page into this namespace was not using the value passed in, but the value from the %session.RunNamespace which was incorrect at this point. This change uses the correct value.

It appears when you have password authentication this is not a problem, but it does effect systems that are using the Unknownuser.


Category: System
Platforms: Windows
DevKey: JLC1336
Summary: Fix unwinding information for narrow() on winx64

Description:

This change fixes a problem in Caché for Windows/x64 Unicode that could cause the process to crash if the user tried to set a global whose name included a wide character. The correct behavior is to get a <WIDE CHAR> error.

Category: System
Platforms: OpenVMS
DevKey: JO2298
Summary: Update ld_sys_data() for OpenVMS 8.3 so we correctly handle terminal disconnection events

Description:

Some internal OpenVMS data structures changed between OpenVMS 8.2 and 8.3. This in turn prevented the Caché handler which deals with process termination when a connection is lost (eg. telnet window is closed) from properly dealing with this condition. The result would be a process stuck in Caché in a COM state at priority zero. This change resolves this problem.

Category: System
Platforms: All
DevKey: SAP1197
Summary: If Event.Signal with message fails, the message is not deallocated

Description:

This corrects an issue where signalling a message for an undefined event, or undefined process id will cause the event to be allocated but never used. This could cause a memory leak.

Category: System
Platforms: OpenVMS
DevKey: SML1143
Summary: Work around a OpenVMS compiler optimization bug

Description:

This correction fixes a possible access violation crash during Caché upgrade on OpenVMS alpha platform if an empty 'Z' routine exists in the CACHESYS database.

Category: System
Platforms: All
DevKey: SML1172
Summary: Fix cluster failover error

Description:

This changes correct a situation where a new ECP master could hang while waiting for slave to establish the ECP connection.

Category: System.Callin/Callout
Platforms: All
DevKey: JO2290
Summary: $ZF() for OpenVMS was calling routines with instead of without privs

Description:

This changes corrects a problem where $ZF functions were calling out to external routines at the wrong privilege level.

Category: System.I/O
Platforms: All
DevKey: RFD484
Summary: Fix <ACCVIO> when a process HALTs with an open XDEV device

Description:

This corrects a situation where a process that HALTs could generate an access violation error if there were XDEV devices open at the time the process stopped.

Category: System.Journaling
Platforms: All
DevKey: HYY1491
Summary: Fix journal restore when switch 10 is set

Description:

This submission addresses an issue that caused journal restore to fail if switch 10 is set (e.g., as continuation from database restore where switch 10 is set).

Category: System.Journaling
Platforms: All
DevKey: HYY1498
Summary: Fix journal restore with selected globals on Unicode systems

Description:

This change addresses an issue where journal restore with selected globals on Unicode systems fails to restore the specified globals.

Category: System.Licensing
Platforms: All
DevKey: RJW1752
Summary: Correct error in %SYSTEM.License.LicenseServerKeyList query

Description:

This corrects a situation that could cause the %SYSTEM.License.LicenseServerKeyList() query to fail. The problem was reproducible the first time the query was run following system startup, but could not be reproduced on subsequent invocations.

Category: System.Lock
Platforms: All
DevKey: SML1168
Summary: Fix ECP recovery could send extra lock request on lock_pending lock

Description:

This change corrects an ECP lock inconsistency during ECP recovery when ECP server restarted.

Category: Terminal
Platforms: Windows
DevKey: RJW1770
Summary: Caché Windows LAT daemon does not process config file settings

Description:

The [LAT] section of the config.cpf file is incomplete in Caché versions 2009.1 and 2010.1. The System Management Portal does not configure the advertised services (ServiceName, ServiceDescription, ServiceRating). This change alters the LAT daemon (lat.exe) so it reads its startup parameters from a lat.ini file in the installation directory instead of from the cache.cpf configuration file.

Users can copy the [LAT] section from an existing cache.cpf file into the new lat.ini file or you can enter the information with a text editor.

The LAT service will be deprecated in Caché 2010.2.

Category: Utilities
Platforms: All
DevKey: STC1683
Summary: Handle $$$OSDelegatedAuthenticationFailed error correctly

Description:

When using OS authentication in combination with delegated authentication and Caché Password authentication, if the ZAUTHENTICATE routine returns the error $$$OSDelegatedAuthenticationFailed, the security subsystem is supposed to NOT continue on and prompt for username/pw using Caché Authentication. It is supposed to audit the login failure, and halt. This was not happening, the user was then getting prompted for a username/pw.

This change implements the correct behavior.


Category: Utilities
Platforms: All
DevKey: STC1684
Summary: Update CPF Validator to allow for a "." in a routine mapping range

Description:

This change allows a valid routine name range mapping to end in a ".". For example,
Map %zabc:. to DB1
When converting to 2009.1.x, it could cause an installation to fail as mappings could be generated in the CPF file to remove overlapped mapping ranges.

Category: Utilities
Platforms: OpenVMS
DevKey: STC1694
Summary: Fix &SQL(SELECT * FROM %SYS.ProcessQuery) on OpenVMS

Description:

This change fixes a problem with using embedded SQL on OpenVMS only when using it with the %SYS.ProcessQuery class. For example, the embedded SQL command
&SQL(SELECT * FROM %SYS.ProcessQuery)
would fail on an OpenVMS system, but would work fine on Windows and Unix.

Category: Utilities
Platforms: All
DevKey: STC1696
Summary: Fix com port login and mnemonic namespaces

Description:

This fixes a problem when logging in on a com port, that the W /mnemonics commands would not work, and would cause a <MNEMONICSPACE> error to occur.

Category: Utilities
Platforms: All
DevKey: STC1703
Summary: Fix CPF conversion problem with routine mappings

Description:

This fixes a bug in the CPF conversion routine where if there is an overlapping routine mapping as follows:
%ZDTOOL==>DB1
%Z*==>DB2
The mapping is not converted to
%Z:%ZDTOOL==>DB2
%ZDTOOL==>DB1
%ZDTOOL.:%a==>DB2

Category: Utilities
Platforms: All
DevKey: STC1704
Summary: Hang maximum of 20 seconds on login failure

Description:

When Caché is configured with an invalid login limit set to something other than 0, if a user account hits this login failure limit, Caché would cause the process to HANG for invalidloginattempts-loginfailurelimit seconds.

Thus for every failed login attempt, Caché would hang 1 second longer, until a valid login attempt would occur. On an account that could generate hundreds of invalid login attempts, the hang could last a long time. The code has been updated to hang for a maximum of 20 seconds.


Category: Utilities
Platforms: All
DevKey: STC1705
Summary: Handle end of % range mappings better

Description:

This updates the routine mapping conversion at the end of the "%" range so that if you have a routine mapping such as:
%zquiet* -> DB1
%z* -> DB2
It will convert this to
%zquiet* ->DB1
%z:%zquiet ->DB2
%zquietu:&->DB2
rather than
%zquiet* ->DB1
%z:%zquiet ->DB2
%zquietu:.->DB2
When the last mapping was loaded it would be ignored by the system, and the mappings would go to the CACHESYS database rather than DB2.

Category: Utilities
Platforms: All
DevKey: STC1706
Summary: Process config file setting for Caché Windows LAT daemon

Description:

When converting to 2009.1, the configuration settings for the Windows LAT daemon are now stored in the lat.ini file rather than in the CPF file. Users who wish to customize their LAT setting should now edit this file.

Category: Utilities
Platforms: All
DevKey: STC1708
Summary: Shell access no longer blocked by auditing

Description:

When auditing is turned on, and direct mode commands are being audited, if the user entered a "!" at the command prompt, they would be blocked from entering the Unix or OpenVMS shell. This problem has been fixed.

Category: Utilities
Platforms: All
DevKey: STC1716
Summary: Activate all namespaces when Config.CPF.Activate() called

Description:

This change fixes a problem where, when calling the API method Config.CPF.Activate(), not all the namespaces would get activated, only the one last modified.

Category: Utilities.Configuration
Platforms: All
DevKey: SML1173
Summary: Fix remapping %* routine could get wrong DB location

Description:

This change fixes a situation where %-routine re-mapping could result in the wrong destination database.

Category: Zen.ZenReports
Platforms: All
DevKey: JSL2880
Summary: Allow truly big Report Displays

Description:

This change corrects a situation where a report display that compiled in 2008.2 failed to compile in 2009.1.