Skip to main content

Caché 5.2

This chapter provides the following information for Caché 5.2:

New and Enhanced Features for Caché 5.2

The following features have been added to Caché for the 5.2 release:


Using our traditional object bindings, each client class has, in addition to its developer-defined properties and methods, a set of Caché supplied methods related to object persistence, e.g. Save() and OpenId(). With Jalapeño this paradigm is changed slightly by separating the persistence behavior into a separate "controller" class that can be used with any Java object.

  • Java Object Schema Import

    As part of Jalapeño, we are adding Java Object Schema Import. Traditionally, our approach to language bindings has been to start with a Caché class definition from which Caché generates one or more "projection" classes. Java object schema import turns this around: it enables Caché class definitions to be created from existing Java class definitions.

  • Database Neutral Deployment

    Jalapeño provides an additional feature: the ability to deploy applications on any database supported via the Caché SQL Gateway. It does this by substituting SQL requests for the object mechanisms normally used to link the Jalapeño client with the database (Caché) server. Of course the performance of this approach will be inferior to that of Caché, but it provides a convenient way to construct a database-independent application without giving up the power and performance of Caché.

Caché Managed Provider for .NET

The Caché Managed Provider for .NET supplies high performance relational and object database capabilities through a single client — something that no one else delivers for .NET. This release also provides a Visual Studio .NET plug-in that automatically generates .NET assemblies from Caché class definitions.

IEEE 8-byte Floating Point Support

Support has been added for IEEE 8-byte floating point (a.k.a. "double") values, making Caché more attractive for calculation-intensive applications.

This enhancement includes:

  • A new internal data type for both scalars and list members

  • A new intrinsic function to cast a value to a double

  • Assembler optimizations to enable Caché to take advantage of processor-specific floating point instructions

  • Object and SQL client enhancements to handle new server data types

Direct FileMan Dictionary Converter

The Direct FileMan Dictionary Converter enables Caché table definitions to be automatically created from FileMan file definitions. (Previously, the conversion was a two-step process, from Fileman to F DBMS and then to Caché.)

A more detailed description is contained in the section on “Converting FileMan Files into Caché Classes” in Caché Specialized System Tools and Utilities .

Code Completion in Studio

Code completion simplifies editing in Studio by enabling developers to pick from a list of context-sensitive choices when entering code. For instance, Studio will assist in specifying a class name when "##CLASS(…)" syntax is used or in specifying a property or method name when the type of a variable is known.

Process-Private Globals

Support has been added for process-private globals. Like local variables, they are accessible only by the process that creates them and are automatically deleted when that process halts. However, like globals they are essentially unlimited in size.

Caché Journal File Encryption

Support has been added for encryption and decryption of Caché journal files.

Version Checking (and Optimistic Concurrency)

At the object level, this feature adds automatic support for version checking. If turned on (via a class parameter) it increments the value of a version number property whenever an object is saved. You can use this set of features to implement optimistic concurrency.

Dynamic Dispatch

Dynamic dispatch enables a Caché class to respond to references to properties and methods that are not part of the class definition at compile time.

Free Text Search

Support has been added for indexing and searching textual data, specifically:

  • A new %Text data type.

  • A new SQL selection operator, %CONTAINS.

  • Language-specific parsers for English, Spanish, French, Italian, German, Japanese, and Portuguese.

  • Support for multi-word ("n-gram") indices. For instance, with an n-gram length of 1, all individual words are indexed. With an n-gram length of 2, all word pairs that occur together are also indexed.

  • Support for "stemming" to map multiple forms of a word (go, goes, going, went, …) to a common root.

  • Noise word filtering, to eliminate common words (a, and, the, …) from an index.

ODBC Multiple Result Sets

Support has been added to Caché ODBC for stored procedures that return multiple result sets.

WMI Support

Support has been added for Windows Management Instrumentation (WMI), the Microsoft implementation of Web-Based Enterprise Management. This enables Caché to be monitored by a variety of Windows management tools, including Microsoft Management Console.

Enhanced Debugging Capabilities

Caché debugging capabilities have been enhanced in a number of areas:

  • Ability to debug macro routines, class definitions, and CSP files

  • New system-level mechanism to make the debugger connection more robust

  • New stack trace mechanism

  • Ability to BREAK into a READ

  • Additional debugging commands / options.

T-SQL Support

A number of capabilities have been added to simplify migration from SYBASE or SQL Server to Caché, including support for the T-SQL language in stored procedures. T-SQL is currently supported on 32 bit Windows, 32 bit Linux (RedHat and Suse distributions), 64 bit AIX®, and 64 bit Solaris.

Device Level SSL and TLS support

Device level support has been added for secure sockets layer communication using SSL 2, SSL 3, or TLS.

Enhanced ECP Performance

Improvements have been made to ECP and the ECP/jrnsync mechanism to enhance performance and scalability.

Enhanced Windows Cluster Resource Management

This enhancement enables Caché to be managed more easily in a Windows cluster.

Improved RPM Linux Installation

A new RPM install package has been created for Caché on Linux.

Caché 5.2 Upgrade Checklist


The purpose of this section is to highlight those features of Caché 5.2 that, because of their difference in this version, affect the administration, operation, or development activities of existing 5.1 systems.

Those customers upgrading their applications from releases earlier than 5.1 are strongly urged to read the upgrade checklist for Caché 5.1 first. This document addresses only the differences between 5.1 and 5.2.

Upgrading from Field Test Versions

Customers running on any prior released version of Caché may upgrade to this version of Caché during installation.


InterSystems does not support an upgrade from any of the versions used for field test of this release. This includes any versions of Caché distributed to customers at DevCon or other events.


This section contains information of interest to those who are familiar with administering prior versions of Caché and wish to learn what is new or different in this area for version 5.2. The items listed here are brief descriptions. In most cases, more complete descriptions are available elsewhere in the documentation.

System Management Portal Changes

In Caché 5.2, InterSystems has modified and improved the initial version of the System Management Portal available with Caché 5.1. A summary of the more important changes follows.

Control Of Encryption

The Home, Database Encryption page is now the central location for managing encryption of databases and journal files. If the administrator chooses to encrypt a database, there is an additional prompt asking whether to encrypt the journal files as well.

Encrypted databases may now automatically be mounted at startup provided that access to the keyfile data is available.

Secure Communication Using SSL & TLS

Caché 5.2 allows secure communications using the Secure Sockets Layer (SSL) and Transport-Level Security (TLS). The available configurations for these protocols can be accessed via the SSL./TLS Configurations choice on the Home, Security Management page. Administrators also have the options of creating their own configurations.

Database Directory Management

The Local Databases and Remote Databases choices on Home, Configuration page now allow the administrator to identify the location of a directory containing a Caché database. The database directory is now a link that allows the user to bring up a Directory Browse window to be used in locating the new location.

Once the administrator selects a directory and confirms the choice, The portal will check to see if the new directory actually contains a CACHE.DAT file. If CACHE.DAT does exists, then the database edit page will be refreshed with the new location along with property values loaded from this new directory. Once the administrator hits the Save button, the database information will be saved to the configuration file.

Editing Globals

The Home, Globals, Edit Global Data page now allows the administrator or operator to edit and delete global data values.

Language Project Settings

The Java, C++ and EJB Projection settings in the Home, Configuration, Advanced Settings page have all been removed. Application developers should use Studio to manipulate these settings.

Granting Roles

The Home, Security Management, Roles, Edit Role page now allows roles to be granted to users. It has been extended to allow granting of the current role to other roles, and granting other roles to the current role.

CSP Session Data Moved

The data about the current CSP session, %cspSession, in Caché 5.2 is mapped to CacheTemp. In previous releases, it was mapped to CACHESYS. The new mapping has two main effects:

First, CSP session data is no longer journaled. Depending on system usage, this may bring a noticeable reduction in the size of the journal.

Second, because it is located in CacheTemp, the CSP session data no longer survives a system interruption and the session cannot be resumed after a system restart. It also means that the OnSessionEnd event will not be fired in the event of a system interruption, and therefore temporary data may not be properly disposed after restart.

The previous behavior can be restored by setting the configuration parameter, JournalcspSessions, in Home, Configuration, Advanced Settings to 1.


Any existing %cspSession globals will be removed during an upgrade to Caché 5.2.

Platform-Specific Items

This appendix holds items of interest to users of specific platforms.

Feature: TSQL

Support for TSQL is available only on the following platforms at the time of the release of Caché 5.2:

  • Windows – 32–bit only


    • Red Hat– 32–bit only

    • SUSE – 32–bit only

  • AIX® – 64–bit only

  • Solaris SPARC – 64–bit only

Please contact the InterSystems Worldwide Response Center (WRC)Opens in a new tab if this is an issue for your site.

Windows Clusters

InterSystems recommendations for setting up Windows cluster configurations have evolved over the past several versions.


The Secure Sockets Layer (SSL) and Transport-Level Security (TLS) features of Caché 5.2 are not available on this version of HPUX.

SUSE Linux

For SSL/TLS support on Itanium, there is a known issue with the openssl-devel package supplied by InterSystems. Users should remove the InterSystems-supplied package and install the version that comes with the operating system instead.


This section contains information of interest to those who have designed, developed and maintained applications running on prior versions of Caché, particularly those that have made the transition to Caché 5.2.

The items listed here are brief descriptions. In most cases, more complete descriptions are available elsewhere in the documentation.

System Management Portal

There have been a number of changes and improvements to the system management portal since 5.1 was released. These are detailed in the administrator section.

IEEE 8-byte Floating Point Support

As noted in the Release Notes, this version of Caché now supports operations on floating-point data in the IEEE-754 format. The Objectscript function that does this conversion is $DOUBLE; the Caché datatype class for it is %Library.DoubleOpens in a new tab.

In addition, the SQL SystemDataType mapping has been changed. In previous releases, the SQL datatypes DOUBLE and DOUBLE PRECISION were mapped to %Library.Float (and implemented as ObjectScript numbers). In this release, they are mapped to %Library.Double (and implemented using the $DOUBLE function).

The major difference between the two representations lies in the achievable numeric precision. Caché represents numbers to 18 decimal digits of precision. IEEE-754 uses a binary mantissa of 53 bits, resulting in a decimal precision of 15 decimal digits (actually about 15.3). There are two effects of this that developers must be aware of:

  • Those applications obtaining floating-point data via an ODBC or JDBC interface will see the exact value of the number that was transmitted in their application. Previously, the conversion to an ObjectScript numeric value may have resulted in a slightly different value being used internally.

  • The conversion of ObjectScript numeric values to IEEE-754 will result in a loss of precision. Whether this materially affects the application depends on the sensitivity of the calculations to this effect.


The range of values allowed for $DOUBLE in Caché 5.2 is:

Maximum: 1.79769e+308

Minimum (normalized): 2.22508e-308

Minimum (denormalized): 4.9e-324

Mixed Usage – $DOUBLE & Caché Decimal

Those who intend to introduce $DOUBLE into existing calculations must be aware that several factors may influence the accuracy of the resulting calculation:

  • Conversion Between Representations

    The maximum value of a Caché decimal number is 9.223372036854775807e145. Conversion from DOUBLE to Caché decimal values will result in errors if the numbers involved are out of the Caché range.

    Conversions from Caché decimal values to DOUBLE values always succeed.

  • Large Numeric Literals

    The ObjectScript parser has been optimized to recognize large numeric literals beyond the range of Caché decimal values only when supplied as the argument to the $DOUBLE function. Thus,

    set x = 1.0e200

    results in a <MAXNUMBER> error while the following statement succeeds:

    set x = $DOUBLE(1.0e200)
  • Testing For Equality

    Since DOUBLE values employs a binary floating-point format, the conversion of a decimal number with a fractional part to DOUBLE may produce an inexact representation of the original number. Therefore, comparisons between two calculated DOUBLE values for equality may not produce the expected result.

    A better approach is to test for the difference of two values being within some tolerance. For example, if A and B are two DOUBLE values, and EPSILON is the tolerance, the test should be written as

    IF ($ZABS(A - B) < EPSILON)

If a Caché version 5.2 server contains tables with columns mapped as DOUBLE, attempts to access those columns by clients running on earlier versions of Caché will fail. Such clients must also be running under Caché 5.2.


Because of improvements to the way OUTER JOINs are handled in this release, two instances of questionable syntax and semantics that previously had been allowed are now reported as errors:

  • The sequence, “=*”, is no longer allowed in ON clauses. In some cases, this had the effect of causing an INNER JOIN to be interpreted as a LEFT JOIN.

  • Arrow syntax (->) is no longer accepted in ON clauses. Although the documentation always indicated that the only acceptable syntax was “field1 = field2”, this was sometimes accepted due to poor error checking during expression validation


System Management Portal

There have been a number of changes and improvements to the system management portal since 5.1 was released. These are detailed in the administrator section.

FeedbackOpens in a new tab