Caché Documentation 
Caché 5.0.21 Release Notes


Welcome and thank you for using Caché, the post-relational database. This document provides a listing of changes between Caché 5.0.20 and Caché 5.0.21.

For detailed information on getting started, see the Caché 5.0 Release Notes (located off the Caché installation directory in the file Docs/GCRN/GCRN.html); for information on previous 5.0 maintenance kits, see the file prenotes.htm.

This document contains several sections:
InterSystems advises all users to recompile their applications 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.
Important Caché 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 releases of Caché.

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 versions of Caché at the InterSystems Website.

From the home page choose the "Caché" tab, and on the "Downloads" menu, select "Documentation and Help Updates" or follow this link.


Description of a Change Report
To help you assess the impact of these changes on your applications, each change description contains a more detailed explanation of the modification.
All changes include a table giving pertinent information on the issue's likelihood, impact of the change, and whether this has already been used successfully in production by other customers. In order to make the information easy to assimilate visually, the tabular information has been simplified to a keyword or two and a value. The full explanation of the keyword meanings are:
Critical Changes In This Release



Category: CSP
Platforms: All
DevKey: MAK1501
Summary: %response.Timeout not working

Description:

When you set '%response.Timeout' in the OnPreHTTP method, the server was not flushing the buffer. Thus, this timeout value did not get to the CSP gateway until the whole page was flushed. At that point, it was too late.

The change flushes the buffer when Timeout is set.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: CSP
Platforms: All
DevKey: MAK1504
Summary: Add checking for CSP licenses

Description:

This change provides a way to reclaim a lost CSP license. This happens rarely with Preserve=1 CSP session where the session was being unlocked. However, in case of any future occurrence Caché now has a way to count CSP licenses and CSP sessions and reclaim any lost licenses.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: CSP.Gateway
Platforms: All
DevKey: CMT270
Summary: Ensure that extended URL syntax (with PATH_INFO) is properly supported

Description:

This change ensures that extended URL syntax (with PATH_INFO) is fully supported. For example:
http://<ip address>/csp/samples/page.csp/testdir
In this example the PATH_INFO environment variable will be set to 'testdir'.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: CSP.Gateway
Platforms: All
DevKey: CMT317
Summary: Fix a timing problem that could occur in the garbage collection of timed-out CSP request

Description:

This change corrects a timing problem that could occur in the garbage collection of timed-out CSP requests.

When a CSP request to Caché times-out (in accordance with the value of 'Server Response Timeout'), the corresponding connection to Caché is closed and its associated memory and other resources are released.

In prior versions, there was a problem in which a connection handle (i.e. number) could be reused by the Gateway before the resources associated with the previously timed-out request were fully released. Under these circumstances a memory violation could occur resulting in the CSP request using the new connection failing and a message being recorded in the Event Log.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: CSP.Tags
Platforms: All
DevKey: MXT750
Summary: OnPreHyperEvent is not called when the hyperevent is initiated by form_save

Description:

This change generates the code needed to call OnPreHyperEvent within <formname>_save and <formname>_new JavaScript methods that are generated by CSPBIND.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Networking.ECP
Platforms: All
DevKey: GK451
Summary: ECP server to ignore requests for undefined databases

Description:

In very rare situations, the ECP client may send a request for an invalid (dismounted) DB. With this change, the request is checked for validity and rejected if it does not pass.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object
Platforms: All
DevKey: DLP1511
Summary: Cloned object should not inherit lock state

Description:

When closing a persistent object, an error would be encountered if the object has not been assigned an ID, and the concurrency setting indicates that retained locks should be used. This change corrects that error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object
Platforms: All
DevKey: MAK1533
Summary: Class export with numbered UDLText tags breaks merge

Description:

When exporting a class to XML format, Caché now skips writing the UDLText 'name' attribute; these were automatically generated and have no significance themselves. Caché will still import XML files with UDLText names in them, but this attribute is now optional in the schema.

The reason for this change is because the names of these UDLText were generated automatically they would often get renumbered and this would cause problems using source control as it would show conflicts on these names when there really was not difference between these items.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.Activate
Platforms: All
DevKey: JN340
Summary: Provide alternative means of accessing binary streams

Description:

The %Activate.GenericObject methods that return streams have now been supplemented with methods to return BinaryStreams.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.LanguageBindings
Platforms: All
DevKey: IYB241
Summary: Ported output redirection fixes to 5.0

Description:

This change fixes the following problems in output redirection inside language bindings:
  1. the output is not redirected outside running methods (but this change doesn't address output redirection in stored procedures)

  2. output redirection does not preserve the last referenced global which is important when using naked references

  3. if the server code does an explicit new before output redirection, the context becomes lost, and the output is not redirected correctly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1231
Summary: Newcollections flag to turn on/off use of new collections in Java binding

Description:

The routines $system.OBJ.ExportJava and ##class(%Compiler.LG).ExportJava now take a final flag in which one can specify the use of new collections.

Also there is a projection parameter, NEWCOLLECTIONS. The flag is "/newcollections"

Here is an example of calling ExportJava with the newcollections flag:

zn "USER"
s Status=$system.OBJ.ExportJava("ISC.TestCollections",
                                "c:\perforce\users\levinson\TestCollections",
                                "/newcollections")

i 'Status d DecomposeStatus^%apiOBJ(Status,.Err) w !,Err(Err) ;'
w !,"Status="_Status
When "newcollections" is set, a property with collection type list has a return type java.util.List, and a property with collection type array has return type java.util.Map. Each of these may be overridden by specifying a return type viaJAVATYPE.

When NEWCOLLECTIONS is set collection properties project as java.util.Map (for arrays) and Java.util.List (for lists). When NEWCOLLECTIONS is zero (the default), collection properties project as follows:

There are different coding paradigms for utilizing these from the Java code.

Here is an example of accessing a list of strings with NEWCOLLECTIONS set to 1.

/* Iterate over the FavoriteColors collection */
colors = person.getFavoriteColors();
for (r = 0; r < colors.size(); r++) {
   System.out.println("   Element #" + r + " -> " + colors.get(r));
}

System.out.println( "Modifying 'FavoriteColors' ..." );

/* Remove the first element */
if (colors.size() > 0)
    colors.remove(0);

/* Insert a new element */
colors.add("Red");

/* Show the changes to the collection */
colors = person.getFavoriteColors();
for (r = 0; r < colors.size(); r++) {
    System.out.println("   Element #" + r + " -> " + colors.get(r));
}

System.out.println("Dumping favorite colors should be red");
i = person.getFavoriteColors().iterator();
while (i.hasNext()) {
    System.out.println(i.next());
}
In 5.0.X, the default behavior of the projection is old collections.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.Soap
Platforms: All
DevKey: MXT719
Summary: Fix %XML.DataSet to handle whitespace only fields

Description:

%XML.DataSet had a bug that caused it to report an all whitespace string field as an error. It now correctly returns the all whitespace value.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.XML
Platforms: All
DevKey: JN246
Summary: New flag for %XML.TextReader to allow retention of whitespace

Description:

Customers have expressed the desire to control the retention of whitespace for element content. Currently the TextReader removes leading and trailing whitespace by default. A parameter (KeepWhiteSpace) has been added to the ParseXXX method of %XML.TextReader which allows the user to specify a boolean 1 to keep whitespace. The default is 0, meaning strip whitespace so that backwards compatibility is maintained

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes



Category: Object.XML
Platforms: All
DevKey: JN252
Summary: %XML.TextReader.Rewind() doesn't clear Path property

Description:

%TextReader provides a means to parse XML source and navigate through a list of Nodes much like a cursor is used in SQL. There is a property on the reader object called Path which contains a string representing the hierarchical nesting of the current node. For example, in this XML:
<a>
   <b>
       <c/>
   </b>
</a>
When the cursor is at the <c/> node, the path would be the string "/a/b/c".

The Rewind() method returns the cursor to the first node in the list. The error was that the Path property was not cleared upon Rewind so on the second navigation to the <c/> node the Path would look like this /a/b/c/a/b/c. The fix clears the Path property to "" when Rewind is done.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.XML
Platforms: All
DevKey: MAK1529
Summary: Importing binary file from XML may produce incorrect result with large files

Description:

When importing a XML file that contains a large (>32k) binary file, the base64 decode logic could fail resulting in an invalid file being created. The import of these files is now correctly handled.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.XML
Platforms: All
DevKey: MAK1565
Summary: Unable to export null characters in global export to XML format

Description:

An error prevented XML export of a global that contained a $c(0) character. With this change if Caché encounters this character it will base64 encode the data.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.XML
Platforms: All
DevKey: MXT723
Summary: Handle wsdl:service name or wsdl:port name containing periods (.)

Description:

The SOAP Client Wizard combines the name attributes of the wsdl:service element and the wsdl:port element to form the name of the web client class. This changes makes that combination a class name valid in cases where it would not otherwise be valid such as when a part of the name bracketed by periods (.) is numeric.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.XML
Platforms: All
DevKey: MXT724
Summary: VALUELIST schema export does not support quoted chars

Description:

This change causes Caché to escape enumeration value attributes that correspond to %String VALUELIST when writing out a schema for element of type xs:string.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.XML
Platforms: All
DevKey: MXT725
Summary: Rewind %XML.DataSet afterXMLExport()

Description:

This correction allows the application to rewind to the beginning of an %XML.DataSet if the %XML.DataSet was created by importing XML or is input to a SOAP web service. A new method of %XML.DataSet can be called to do the rewind, ResetXML.

If the %XML.DataSet was populated by a query, no rewind is possible since we cannot return to the beginning of result set created from a query.

Have XMLExport method (also when it is called internally by %XML.Writer) call ResetXML after export is complete.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Object.XML
Platforms: All
DevKey: MXT738
Summary: XML support does not handle inheritance across multiple namespaces

Description:

The namespace associated with an element will always be as specified by the NAMESPACE parameter of the class in which the element is defined. The element keeps the same XML namespace even when it is projected by a class that inherits the property and has a different NAMESPACE parameter.

If the superclass has no NAMESPACE parameter defined and a subclass does, then the properties in the subclass that were inherited from the super class are deemed to have the NAMESPACE specified by the subclass. This is a sort of reverse inheritance just for the property's XML namespace.

Inheritance of the NAMESPACE parameter follows normal inheritance rules, so that a subclass without a NAMESPACE parameter is deemed to be defined with the inherited XML namespace.

The above rules for the NAMESPACE parameter also apply to the ELEMENTQUALIFIED parameter.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL
Platforms: All
DevKey: BJB300
Summary: Gunlock2 syntax error with No Subscript class.

Description:

If you have a class that has CacheSQLStorage and no subscripts, Caché would generate an incorrect line of code in the gunlock2 procedure of the Table routine. This has been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL
Platforms: All
DevKey: DPV2299
Summary: Milliseconds in DATEADD/DATEDIFF preprocessor error

Description:

A bug has been fixed where the following query would erroneously get an SQLCODE=8 error during compilation:
SET x=$ZTIMESTAMP
&sql(SELECT DISTINCT DATEADD('ms',10,:x)
     INTO :a
     FROM Sample.Person)
WRITE a

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL
Platforms: All
DevKey: DPV2463
Summary: Subquery returning wrong datatype

Description:

A problem has been corrected where a sub-query in a SELECT clause returned a value that should have LogicalToOdbc or LogicalToDisplay applied. Instead, the Logical value was output.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL
Platforms: All
DevKey: DPV2482
Summary: Computed Fields and Selectivity

Description:

There is a new Property Parameter called CALCSELECTIVITY. The default value for this parameter is 1 (TRUE).

When a table is tuned via TuneTable, the selectivity for a field will only be calculated if the corresponding property parameter value for CALCSELECTIVITY is 1.

If you do not want TuneTable to calculate the SELECTIVITY for a property/field, set the property parameter CALCSELECTIVITY to 0.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes



Category: SQL
Platforms: All
DevKey: DPV2498
Summary: Disable Journaling when defining cached queries

Description:

A change has been made to Caché so that modifications to cached queries are not journaled. This prevents some changes to cached queries that happen during a transaction to not appear in the journal; shadowing will not apply cached query changes across systems.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL
Platforms: All
DevKey: DPV2511
Summary: Error using Foreign Key

Description:

A problem has been corrected where the INSERT or UPDATE of a row in a table with a self-referencing Foreign Key would fail with an error if the row referenced the same row being inserted or updated, and the foreign key field was required.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL.JDBC
Platforms: All
DevKey: JMM043
Summary: Fix JDBC preparser to allow parenthesized subexprs in function arguments

Description:

This change corrects a problem where queries such as the following:
String sSQL3 = "SELECT {fn CONVERT (i1 + (i2 * 10), SQL_INTEGER)}
    AS myval
    FROM test1
    WHERE (i1 IN (?, (30)+1, ?))";
got preparser errors, because the production rule for a numeric operation appearing within an "option list" did not allow the numeric operation expression to contain parenthesized subexpressions. This occurred where numeric operations appeared as function arguments, or within an "IN(...)" predicate.

The parser production rule for a numeric operand has been changed to allow a parenthesized expression.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL.JDBC
Platforms: All
DevKey: MAB425
Summary: JDBC Preparser handle aggregates as FN arguments

Description:

JDBC Preparser now handles aggregates as FN arguments like
{fn CONVERT(AVG(fINT2) ,SQL_INTEGER)}.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL.ODBC
Platforms: All
DevKey: AND706
Summary: ODBC: Clear cached query on disconnect

Description:

Caché incorrectly preserved cached queries associated with a connection after that connection had been disconnected. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: SQL.JDBC
Platforms: All
DevKey: MAB428
Summary: JDBC Preparser failure with nested parentheses

Description:

Nested parenthesis caused an exception when used in the IN construct during JDBC preparsing. This change corrects that error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL.ODBC
Platforms: All
DevKey: JCN579
Summary: Fix buffer calculation for UnicodeToUTF8String

Description:

This change correctly calculates the buffer length needed for sending Unicode Streams > 32K in length.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL.ODBC
Platforms: All
DevKey: JCN581
Summary: Allow Null values in SQL Statement

Description:

This change corrects an error present when using S-JIS text with several third party tools. The symptom was the inability to insert binary data via an SQL statement. This fix is an alternate way to prevent the problem seen with S-JIS that will also allow inserting null values without prematurely terminating the SQL Statement.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL.ODBC
Platforms: All
DevKey: JCN592
Summary: SQLGetData: Exception raised!

Description:

When using SQLGetData to fetch data, the CacheODBC driver automatically will fetch more data from the server when needed. When this happens, several columns of data are in the original message, and the remainder of the row are in the newly fetched message. The mechanism works correctly as long as the application does not call SQLGetData to fetch a column of data that is earlier than the last call to SQLGetData. DOing so would cause a processing exception.

This change fixes this condition.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL.Query Processing
Platforms: All
DevKey: AK572
Summary: Check that UNION subqueries have same width

Description:

This change causes a UNION between 2 subqueries with different SELECT-list lengths to report
SQL error #9:  Incompatible SELECT lists used in UNION

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: SQL.Query Processing
Platforms: All
DevKey: PVA081
Summary: SQL Error #94: erroneously reported

Description:

A bug has been fixed where error 94 (unsupported use of outer join) was erroneously returned when using ODBC, JDBC, or dynamic SQL. The query would work using embedded SQL. The circumstances are:
<view or FROM clause subquery> L
LEFT JOIN <something> R
ON L.y = R.a
LEFT JOIN <something else> S
ON L.x = S.b
when L.x referred to a view or subquery column that was an expression or aggregate. Note, the view or subquery must have aggregates, GROUP BY, or DISTINCT.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Studio
Platforms: All
DevKey: MAK1252
Summary: In order to compile a routine you should be able to lock it

Description:

If there was a routine, test.MAC, open for editing in Studio, it was possible for a second person to open test.MAC. As long as they did not attempt to change the routine, they could compile it.

However because another user is actively working on this routine (as they hold the lock on it), this is wrong and Caché now prevents the second person from compiling this routine by attempting to obtain a lock on this before compiling it.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Studio
Platforms: All
DevKey: MAK1451
Summary: Undo checkout on a class did not mark the Studio document as read only again

Description:

When a user undoes a checkout on a class from Studio, it did not mark the document as read only. Thus the user could continue to make edits to the class even though it was not checked out. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Studio
Platforms: All
DevKey: MAK1496
Summary: XML import did not clear temporary global structure

Description:

XML import could import a class but then fail to lock the class if, for example, it was already instantiated in another process. In this circumstance, XML was not removing the temporary global structure it had created. This meant that the next global import merged its data into this existing global thus creating a class that was a combination of methods/properties of both classes.

This is now fixed.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: Studio
Platforms: All
DevKey: MAK997
Summary: Studio Fails to Lock Mapped Routines

Description:

When a user subscript maps a global in Caché and then locks one of the subscript mapped nodes, the lock does not follow the same mapping as the global data.

In the case of a routine mapped from another namespace, Studio was locking this routine in the namespace where it was accessed. Thus, it was possible to get a lock on the same routine from more than one namespace.

Now Studio determines where the data lives for this subscript node before taking out the lock, so if a routine is mapped from USER to SAMPLES, then the lock will be taken out in USER no matter which namespace Studio was running in.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: CDS692
Summary: Eliminate memory violation in symbol table code

Description:

During symbol table operations, the system would sometimes read an extra byte beyond the end of the table. If that next byte happened to be in a block of memory that had never been allocated, a memory access violation would result. This fix corrects the system so it does not read the extra byte.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: OpenVMS
DevKey: JLC752
Summary: Workaround C optimization problem in AlphaVMS

Description:

This change addresses a problem introduced by the optimization phase of the C compiler on Alpha OpenVMS systems that might, under certain circumstances, result in an access violation when trying to JOB a new process.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: USPARC
DevKey: JLC789
Summary: Correct write daemon hang on USPARC

Description:

This change addresses an issue in Caché for UltraSPARC 64-bit that might cause the Write Daemon to hang in certain circumstances.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: JO1895
Summary: Fix $System.ExternalFreeze/ExternalThaw to work with JO1798 (switch 21)

Description:

$SYSTEM.Backup.ExternalFreeze() and $SYSTEM.Backup.ExternalThaw() have been enhanced to correctly manage suspending/enabling lock timeouts in a clustered environment.

In a cluster while the cluster is suspended to perform a backup, timeouts on the lock command are suspended. When the cluster is resumed, the timeouts start counting down again.

Previously there was a problem where timeouts would be suspended by $SYSTEM.Backup.ExternalFreeze() but not re-enabled by $SYSTEM.Backup.ExternalThaw()


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: LRS707
Summary: Fix sporadic process hangs on Windows during HALT

Description:

A problem that on rare occasions could cause Caché process hangs during HALT on Windows systems, has been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: LRS978
Summary: Correct message broadcasts and missed signals under UNIX

Description:

Sporadic hangs or failures with sending a broadcast message to another process have been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: SJ1426
Summary: Allow larger # of different active classes, release inactive classes from process table

Description:

This change allows for a process to have more different classes active at any one time, and more efficiently deals with classes that are not in active use by the process.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System
Platforms: All
DevKey: SML547
Summary: Use correct size for pmmax[] in Caché dump

Description:

With this change, the cache.dmp on older version could not be analyzed by the cstat of the 5.1 version. And the cstat of older version of Caché could not analyze the dump from Caché 5.1. This changes makes the analysis possible for both systems.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System.Backup/Restore
Platforms: All
DevKey: JO1815
Summary: Add $SYSTEM.Backup.ExternalFreeze and $SYSTEM.Backup.ExternalThaw methods

Description:

A new set of methods have been added for suspending the system in order to perform a backup external to Caché. These are designed to be used with a technique such as splitting a disk mirror or creating a snapshot which allows the system to back up an open file as of a specific point of time.

The methods are $SYSTEM.Backup.ExternalFreeze() and $SYSTEM.Backup.ExternalThaw() and replace the existing technique of calling ENQ13^DBACK and DEQ13^DBACK.

These methods must be used on a cluster as they generate the journal information required to restore the journal in conjunction with restoring one of these external backup. For non-clustered systems these are preferable to using the entry points in ^DBACK as they do not suspend the system using switch 13. Rather they use a new technique which stops the write daemon from writing to disk. User jobs continue to run as long as there are enough free global buffers for them to complete their work.

The Caché Class Reference documentation contains details on the arguments to these methods.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System.Backup/Restore
Platforms: All
DevKey: JO1881
Summary: Backup restore: Don't prompt for same file twice. Don't restore 2 fulls.

Description:

Caché backup restore will no longer allow a full backup to be restored other than as the first backup to be restored. Previously multiple full backups could be restored in a single DBREST session. This caused problems during the subsequent journal restore.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System.Backup/Restore
Platforms: OpenVMS
DevKey: LRS752
Summary: Allow sharing of backup archive for simultaneous restore

Description:

The Caché BACKUP/RESTORE mechanism has been enhanced to permit simultaneous restore of the same backup archive file by multiple configurations under OpenVMS.
Note: all such configurations must have this change to permit sharing of the archive file.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System.Backup/Restore
Platforms: All
DevKey: RJF038
Summary: Backup warns when an invalid directory is specified in the backup list

Description:

The ^BACKUP utility now warns if the user adds an invalid directory to the backup list.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System.Journaling
Platforms: All
DevKey: HYY1140
Summary: Fix accvio from $zu(78,22,file) when file path is too long

Description:

This change Addresses an issue where an access violation (or coredump) might result from the user's specifying a journal file path longer than the Caché limit (64 characters).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System.Journaling
Platforms: 1
DevKey: HYY1173
Summary: Address an issue of out-of-order cluster journal sequence

Description:

This change addresses an issue that could cause the cluster sequence of journal records on a slave node to become out of order (i.e., an earlier record has a higher sequence than a later record does).

The problem can occur where a slave issues a $increment() on a global in a cluster-mounted database and the $increment() is not journaled on the master for some reason. One example is when the network type of the cluster is ECP and journaling is turned off in the process issuing the $increment() on the slave. As a consequence of the problem, the affected journal files may not get dejournaled properly in cluster journal restore or shadowing.

With this change, $INCRs involving cluster-mounted databases (redirected from slaves or initiated on the master) always result in bumping the master copy of cluster journal sequence, whether they are journaled on the master or not. Previously, the master copy of cluster journal sequence was NOT bumped unless $INCRs were journaled on the master.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System.Lock
Platforms: OpenVMS
DevKey: SML634
Summary: Fix lock memory corruption

Description:

This change fixes a possible lock memory corruption on OpenVMS.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System.Lock
Platforms: OpenVMS
DevKey: SML635
Summary: Lock over ECP with timeout could stall

Description:

This change corrects a situation where an ECP client on OpenVMS could stall waiting for a lock timeout to occur.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No



Category: System.StartUp
Platforms: All
DevKey: SAP112
Summary: Starting Caché with -cd (single user, read only) overwrites startup.last

Description:

Caché started in single user, read-only mode (cache -cd) will now not overwrite startup.last.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: System.TCP Devices
Platforms: All
DevKey: SML617
Summary: Fix CPU loop when two TCP devices use different translation tables.

Description:

A job could be hang in tight CPU loop if it uses TCP device with different translation table than the other side. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Utilities
Platforms: All
DevKey: LFT1155
Summary: Silent^Integrity stuck if output file can not be opened

Description:

Silent^Integrity doesn't handle the case where the log file cannot be accessed. This has been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Utilities
Platforms: All
DevKey: LFT1317
Summary: Integrity check error handling doesn't close file

Description:

This fixes a case where Silent^Integrity could leave a file open if an error occurs.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No



Category: Utilities
Platforms: All
DevKey: LFT1387
Summary: Integrity check for bitmap consistency

Description:

This enhances ^Integrity to check for inconsistencies in the map block that will cause database errors. This does not apply to legacy databases.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No