InterSystems Documentation 
Caché and Ensemble Maintenance Kit Release Notes


This document provides a list of the changes between versions 2009.1.1 and 2009.1.2 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: CSP.Gateway
Platforms: Macintosh
DevKey: CMT762, CMT763
Summary: Build universal bundles for the x86-64 Mac OS X platform

Description:

This change modifies the compiler/link settings such that universal bundles will be built for the x86-64 Mac OS X platform. The previous settings prevented the Management Portal from working properly on 64-bit systems.

Category: Ensemble
Platforms: All
DevKey: MC986
Summary: Restore transaction level in user error traps

Description:

This change restores the transaction level in user error traps.

When application code errs with a transaction level > 0, Caché does a TROLLBACK in the error trap. Otherwise, the transaction level will never go down to 0 and this will cause inconsistencies in processing afterwards.

This change added TROLLBACK for the user callback in Business Services, Processes and Operations.


Category: Ensemble
Platforms: All
DevKey: TAP874
Summary: Fix SQL queries used in MessageHeader Purge() when KeepIntegrity = true

Description:

This change fixes the SQL queries used in the Ens.MessageHeader Purge() method when that method is called with the argument KeepIntegrity = 1. Because of a subtle SQL syntax problem the previous form of the query did not correctly identify rows to purge that should be purged.

Category: Ensemble.Adapter
Platforms: All
DevKey: TAP842
Summary: Account for long key subscripts that may contain Unicode in SQL Adapter cache tables

Description:

This change improves the previous truncation algorithm used for turning query strings into cache table keys. It now uses a shorter truncation limit in order to avoid <SUBSCRIPT> errors even when the allowed subscript length is halved due to the text containing Unicode characters.

This change also fixes three other places where similar cache table subscripts are used.


Category: Ensemble.Adapter
Platforms: All
DevKey: TAP882
Summary: Fix SQL adapter Large Object issues

Description:

This change fixes three issues with SQL Large Object support:

  • Large Object detection was not recognizing certain SQL Server types properly.
  • JDBC calls to the removeLOB() cleanup function were missing an argument and therefore failing.
  • The Large Object byte position appendage to the field ID in GetData/GetDataW() was not being tested properly, causing a failure to fetch all field data.

This change also adds Java type definitions to EnsSQLTypes.inc and adds new methods each to EnsLib.SQL.GatewayConnection and EnsLib.SQL.Snapshot:

  • GetColumnSQLType - Returns the SQLtype integer of column 'pColumn' in the result set.
  • GetColumnIsLOB - Returns whether column 'pColumn' is a LOB (Stream) column.
  • GetColumnIsBinary - Returns whether column 'pColumn' contains binary data.

Category: Ensemble.Adapter
Platforms: All
DevKey: TAP892
Summary: Fix SQL Adapter ExecuteProcedure with both OutputParam and Result Snapshot nullifies Snapshot list

Description:

This change fixes a bug that causes the SQL Adapter to eliminate some or all output result snapshots generated from a stored procedure call if the SP also had any scalar output parameters.

Category: Ensemble.DTL
Platforms: All
DevKey: DDP030
Summary: Don't modify %session.AppTimeout for Ensemble SVG in Studio

Description:

This changes forces Ensemble to respect the default CSP application timeout when opening DTL in Studio. Previously, this was overridden to be set to "never", which caused CSP session licenses to be held in perpetuity; only manual intervention or an Ensemble restart would release the licenses.

Category: Installation.Windows
Platforms: All
DevKey: ALE1809
Summary: Correct name for Caché startup shortcut created on non-English systems

Description:

In version 2009.1, a Windows installation on non-English systems would create a Start Menu shortcut in the Startup folder as "Launcher" rather than <INSTANCENAME>. As a result, after a reboot users could have two cubes for the same instance, if it was an upgrade from 2008.2 or below. This change fixes the problem.

Category: Languages
Platforms: x86
DevKey: SJ2588, SJ2589, SJ2590
Summary: Fix a problem in assembly language optimization on Intel x86 platforms with addition

Description:

This change corrects a problem when adding two large numbers. If each number has 19 digits, and each has a single digit after the decimal point, and the sum will not fit in a 64-bit signed number, the application can get a <SYSTEM> or other error when trying to save or use the result.

Category: Networking.ECP
Platforms: All
DevKey: GK713
Summary: Fixed an ECP hang

Description:

This change corrects an issue where, in rare conditions, ECP daemons might be out of sync and search for locally cached blocks. This caused an unexpected delay in responding to various requests.

Category: Object.C++
Platforms: All
DevKey: IYB607
Summary: C++ binding, mark all zobjval client nodes as valid after the zobjval client value gets updated from the server

Description:

Sometimes, when processing a client request, the server did not send cache updates for properties that were modified on the client. Thus resulted in excessive calls to the server instead of getting the value from the cache.

This change forces the client to assume that after a roundtrip to the server the client cache must be valid, even if the server didn't send any updates. As a result, the client should not send extra messages to the server.


Category: Object.DotNet
Platforms: All
DevKey: IYB610, IYB611
Summary: CacheProvider, don't use Shadow in Open() methods of generated VB code

Description:

VisualBasic and C# have slightly different rules regarding how methods are shadowed and/or overloaded. This change adjusts for the differences in the two languages thus removing VisualBasic compiler errors.

Category: Object.DotNet
Platforms: All
DevKey: IYB612
Summary: Dotnet_generator: report compiler errors when generating an assembly

Description:

Prior to this change, the .NET code generator did not report compiler errors when generating an assembly; it always reported a successful completion even when an assembly was not generated. With this change, any errors or warnings that occur are reported back to the user.

Category: Object.Java
Platforms: All
DevKey: MAB836
Summary: Fix deadlock in collections for Full Java Binding

Description:

This change corrects a problem where connection pooling by multiple Java applications accessing the same Caché data could result in a deadlock.

Category: Object.LanguageBindings
Platforms: All
DevKey: DMC688
Summary: ObjectiveCache: More precise conversion of NSDecimalNumber to d_decimal

Description:

This correction resolves an issue where large integer values were not being properly converted from NSNumbers into d_decimal.

Category: Object.Library
Platforms: All
DevKey: MIT927
Summary: Fix normalization code for %currency and %Decimal

Description:

In some cases $DOUBLE values could be stored in these datatypes. With this change, the proper datatype is used.

Category: Object.XML
Platforms: HP-UX
DevKey: JN781
Summary: Correct workaround of Virtual Memory Deallocation on HP Itanium

Description:

On HP-UX Itanium, virtual memory was not being deallocated correctly. This became apparent when using %XML.Adaptor::XmlExportToString(). This change corrects the deallocation issues.

Category: SQL.GateWay
Platforms: All
DevKey: MIT933
Summary: Honor delimited id setting for linked tables in joins

Description:

The bug was fixed that the delimited ids setting was not honored in joins.

Category: SQL.Server
Platforms: All
DevKey: DPV3481
Summary: SQL: Correct problem that did not allow {%row} to resolve properly

Description:

A problem has been corrected where the use of {%row} in %CacheSQLStorage definitions would cause a class compiler failure.

Category: SQL.SQLFiler/TableCompiler
Platforms: All
DevKey: DPV3473
Summary: SQL Filer: Perform immediate unlock of shared lock acquired on foreign key referenced row after this row has been filed

Description:

When inserting or updating a row into a table that has a foreign key, Caché acquires a lock on the referenced row that is released when the transaction ends. This lock is required to check the referential integrity of the foreign key constraint and ensure the row still exists from the time the lock is acquired until the time this row is inserted or updated.

If there are many rows inserted or updated in a single transaction and many foreign keys on the table, this could hold many locks in the lock table.

With this change, Caché will no longer hold the lock for the duration of the transaction, but will release the lock after the row has been inserted or updated. By this time the system has ensured referential integrity and the row in the referenced table cannot be updated or deleted during the course of this transaction because the referential action on the foreign key constraint will prevent the update or delete on the referenced table from occurring.


Category: Studio
Platforms: All
DevKey: ALE1806
Summary: Set blank username/password for Studio server connection in minimal security install

Description:

With this change, Windows installation will set the username and password to blanks when a minimal security setting is used to install a product.

Category: Studio
Platforms: All
DevKey: MC988
Summary: Fix memory leak caused by stringlist.cpp

Description:

This change corrects a memory leak that occurred under certain uses of $LISTBUILD, $LISTGET and $LISTGETNEXT.

Category: System
Platforms: All
DevKey: JLC1321
Summary: Fix hang in terminal read when pasting a UTF-8 string

Description:

This change corrects a problem that could cause a process to hang when trying to read text pasted into the input stream that uses a multi-byte encoding such as UTF-8 or JIS.

Category: System
Platforms: Macintosh
DevKey: JLC1323
Summary: Identify Mac OS X with 64-bit kernel in cplatname

Description:

This change allows Caché to properly recognize when it is running on the MAC OS 10.6 ("Snow Leopard") kernel.

Category: System
Platforms: All
DevKey: JLC1324
Summary: Redirect standard file descriptors to /dev/null in $zf(-2)

Description:

External programs started with $zf(-2,<path>) on Unix platforms now run with the standard file descriptors 0, 1 and 2 redirected to /dev/null. Previously these three descriptors were closed before starting the program.

Category: System
Platforms: All
DevKey: JO2274
Summary: Release retained gbuf in use cmd before we issue any system calls

Description:

This correction resolves a defect where a process could get blocked in a USE command by the operating system and cause Caché to hang if it had retained ownership of a global buffer.

Category: System
Platforms: All
DevKey: SML1165
Summary: Namespace re-activation protection

Description:

This change fixes a possible <NAMESPACE> or <DIRECTORY> error that could occur while the system is re-activating the namespace table while a namespace is edited.

Category: System
Platforms: All
DevKey: SOH120
Summary: Fix loop bound in LocToUTC, $ZU(193,xxx,1)

Description:

$ZUTIL(193,x,1) converts a date X to UTC. If X represents the first day of the year, where (year mod 4)=1, the result might be incorrect. This bug has been fixed.

Category: System
Platforms: All
DevKey: SJ2577
Summary: Fix core dump with $zu(70,4,"")

Description:

This change fixes a problem where a core dump can occur when running the INTEGRIT utility.

Category: System.Cluster Specific
Platforms: All
DevKey: RJW1738
Summary: Cluster resource, ISCCres2003.dll, not working on 64 bit Windows clusters

Description:

A problem has been corrected that could cause the Caché cluster resource to fail.

The symptom is that the cluster manager would become unresponsive and the Caché cluster resource will not work. This problem has been seen on 64-bit Windows, but may also occur on 32-bit Windows clusters.


Category: System.I/O
Platforms: All
DevKey: HYY1485
Summary: Fix stream READs on a device opened with compression/decompression enabled (/GZIP)

Description:

This correction addresses an issue that could cause READs on a device opened with /GZIP (i.e., with stream compression/decompression enabled) to fail to read data. The problem is most prominent when the READ length is 32767, the default for stream READS without terminators or length specifier.

Category: System.I/O
Platforms: OpenVMS
DevKey: RFD477
Summary: Fix check for OPEN pipe device on OpenVMS

Description:

Trying to OPEN a TCP device with the letter "Q" in the hostname was failing with an <UNIMPLEMENTED> error. This was due to a faulty check for a "pipe" on OpenVMS. It has now been corrected.

Category: System.Monitoring
Platforms: HP-UX
DevKey: RFD471
Summary: Fix Caché Diagnostic Report for HP-UX

Description:

The Caché Diagnostic Report was using an unsupported option for the process list on HP-UX. This has been corrected.

Category: System.Shadowing
Platforms: All
DevKey: HYY1486
Summary: Write shadow copy of journal file in RAW mode on OpenVMS

Description:

This change corrects an issue that could cause a shadow server to produce corrupted copies of source journal files on OpenVMS if process default I/O table is not RAW (for example, the I/O table is EUC in locale 'jpuw').

The problem is believed to be present in all supported Caché releases.


Category: Utilities
Platforms: All
DevKey: STC1668
Summary: Delete mappings when deleting a namespace

Description:

When a namespace is now deleted, all the cached mappings for it are also deleted. Previously, when the same name mapping was re-added, the cached mappings would be applied to the namespace.

Category: Utilities
Platforms: All
DevKey: STC1669
Summary: Fix COMM port handling with new config classes

Description:

With this change, the comm port server process now start and will handle comm port logins. Previously, the comm port server process would not start.

Category: Utilities
Platforms: All
DevKey: STC1670
Summary: Allow IP address to be used as server name

Description:

When upgrading to 2009.1, if an ECP server name was defined to be an IP address of the form n.n.n.n (for example, 127.0.0.1, the loopback address), the installation would fail during the conversion of the CPF file. This has been fixed.

Category: Utilities
Platforms: All
DevKey: STC1672
Summary: Don't fail installation if we can't update the CPF file

Description:

Previously, if there was a problem converting the CPF file during an upgrade, the installation would fail. The only recourse was to correct the CPF file, then re-install.

Now the installation will complete, allowing administrators to fix the CPF file, and restart to be upgraded to the new version.


Category: Utilities
Platforms: All
DevKey: STC1678
Summary: Allow null device name for DDP

Description:

This fixes a problem where the system would not start if it was using DDP, and the DDP device name was left as null (which means use the default device.)

Category: Utilities.Configuration
Platforms: All
DevKey: SML1161
Summary: Fix SLM mapping when user defined mapping override system default mapping

Description:

This change fixes an issue where a user overrode a system default mapping such as %Z* routine resulting in the wrong destination for the %Z* mapping.

Category: Utilities.Configuration
Platforms: All
DevKey: SML1164
Summary: Fix mapping got <UNDEFINED> error when index needs to be re-aligned

Description:

This change fixes a situation where an attempt to activate mappings resulted in an <UNDEFINED> error. This occurred when there were many mapping entries and internally Caché attempted to re-index the mapping array.