|
|
|
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:
- Likelihood - The probability that a user on the affected
platform will encounter this issue.
- Risks - An assessment of how likely this change is to
introduce additional issues into the application environment.
- Ad Hoc - Whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - Whether this change provides new
features or capabilities.
- CSP
- CSP.Gateway
- CSP.Tags
- Networking.ECP
- Object
- Object.Activate
- Object.LanguageBindings
- Object.Soap
- Object.XML
- SQL
- SQL.JDBC
- SQL.ODBC
- SQL.Query Processing
- Studio
- System
- System.Backup/Restore
- System.Journaling
- System.Lock
- System.StartUp
- System.TCP Devices
- Utilities
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:
- the output is not redirected outside running methods (but this
change doesn't address output redirection in stored procedures)
- output redirection does not preserve the last referenced global
which is important when using naked references
- 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"
- /newcollections and /newcollections=1 turn on new collections
- /newcollections=0 turns off new collections
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:
- ArrayOfDataTypes for array of a datatype
- ArrayOfObjects for array of an object
- ListOfDataTypes for list of a datatype
- ListOfObjects for list of an object
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:
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 |