Caché Documentation  
Release Notes for Maintenance Kits Prior to Caché 5.0.12


Welcome and thank you for using Caché, the post-relational database. This document has a section for each 5.0.x maintenance kit:
There is no section for 5.0.6.
Changes for Caché 5.0.11

This section provides a listing of changes between Caché 5.0.10 and Caché 5.0.11.
This document contains several sections:
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: Config Mgr
Platforms: All
DevKey: CFL993
Summary: Add Hyperevent Implementation to Config Manager

Description:

A new CSP parameter, Hyperevent Implementation, has been added.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Config Mgr
Platforms: All
DevKey: CFL999
Summary: Convert Hyperevent parameter from old CSP apps on upgrade

Description:

New CSP Applications will be created with the Hyperevent Implementation parameter equal to "Select on server". On upgrade, existing CSP Applications whose Hyperevent Implementation parameter is missing will have it created with the value "Use Java applet".

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MXT525
Summary: Use XMLHttpRequest browser object instead of Java for hyperevents

Description:

This change introduces the optional use of the XMLHttpRequest Javascript object to implement #server. The actual method used to implement #server is determined by a new Configuration Manager parameter for CSP applications, called "Hyperevent Implementation". "Hyperevent Implementation" has four possible values that determine how #server is implemented:

where:


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: CSP
Platforms: All
DevKey: MXT635
Summary: In 3.2 compatibilty mode, &html will ignore < and > within <%...%>

Description:

In &html 3.2 compatibility mode, CSP will ignore < or > within <% ... %>. This is meant to handle constructs like
&html< <% w "first->last" %> >
which are encountered in Cache 3.2 WebLink applications.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT118
Summary: Improve the validation of the session token's fields after a failover/restart situation.

Description:

This change improves the validation of the session token's fields after a failover (or web server/NSD restart) situation.

Previously, a request could be directed to an incorrect (or unexpected) Caché server after a web server/NSD restart. This issue could also result in requests in Virtual Host configurations being directed to incorrect (or unexpected) Caché servers. The term, 'unexpected' Caché servers, means a Caché server configured as an alternative to the main (or default) server).

Editing the Gateway's server and/or application configuration on web server/NSD startup would make problems of this nature more likely to occur.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT192
Summary: Fix a problem in the transmission of form data in which CSP* variables (e.g. CSPToken) were placed at the end of a form posting more than 8K of data.

Description:

This change corrects an issue in the transmission of form data in which CSP* variables (e.g. CSPToken) were placed at the end of a form posting more than 8K of data. The problem manifested itself as such forms failing validation checks on submission ('Illegal CSP Request' errors).

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT193
Summary: Ensure that Gateway error messages sent in response to SOAP-based requests are formatted as SOAP fault messages (as opposed to HTML).

Description:

This change ensures that Gateway error messages sent in response to SOAP-based requests are formatted as SOAP fault messages (as opposed to HTML).

For example, if the Gateway is unable to connect to the Caché server for the purpose of servicing a SOAP request, the following SOAP fault will be returned:

HTTP/1.1 200 OK
Content-type: text/xml
Connection: close
Expires: Thu, 29 Oct 1998 17:04:19 GMT
Cache-Control: no-cache
Pragma: no-cache

<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
   xmlns:s='http://www.w3.org/2001/XMLSchema'
   SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>CSP Gateway Error (version:5.1.0.423.0 build:663.775)</faultstring>
<detail>
<error xmlns='http://tempuri.org' >
<special>
Server Availability Error
</special>
<text>
Server is currently unavailable
</text>
</error>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
It should be noted that this facility can only work if the Gateway can identify the incoming HTTP request as a SOAP-based request for information. This may not be possible if a request for a SOAP-based response is made via the HTTP GET method. It is, however, recommended that requests for SOAP-based services be made through HTTP POST (or related) methods. If the HTTP POST method is used, the Gateway can identify SOAP-based requests by the associated content type.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP.Tags
Platforms: All
DevKey: MXT543
Summary: Don't display argument in argument too long message for HyperEvent

Description:

A message is displayed when a HyperEvent method's argument length is > 32000 characters. With this change, the argument will not be displayed since it detracts from the clarity of the error message.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Installation.Windows
Platforms: All
DevKey: TTS082
Summary: Packet-driver doesn't bind to multiple NICs

Description:

This changes corrects a situation where the packet-driver for Windows 2000/XP and 2003 Server did not properly report all the network cards it had bound to.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK323
Summary: $ORDER across ECP to restore the global vector when there is no answer

Description:

When $ORDER didn't find an answer across ECP, it sometimes left the global vector naked reference invalid. This caused a subsequent $ZREFERENCE to fail with wide character error.

This change prevents that from happening.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: Windows
DevKey: TTS083
Summary: Fix Windows fatal error caused by packet driver on SMP systems

Description:

Prior to this change, the Caché packet driver would cause a fatal Windows error when invoked on systems containing more the two processors. This no longer happens.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object
Platforms: All
DevKey: DLP1220
Summary: Index on %ID fails

Description:

This change corrects a problem where attempting to define an index involving the %ID token would fail.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: Object.CDL
Platforms: All
DevKey: DLP1128
Summary: Change max routine size to 32k

Description:

The maximum routine size has been changed from 40k to 32k. This will result in smaller OBJ routines and, for large source files, more routines generated. This adjustment was necessary in order to load files with methods with more than 32k of source code.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1127
Summary: Fix bug in CompileRoutine^%occSystem where errors not properly reported

Description:

This corrects an oversight where the status code from the compile was only being returned if the compiler flag to display errors was set. Now the status code is always returned.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK1071
Summary: Make sure variables do not leak from generator methods in class compile

Description:

If you write a generator method the compiler was not making sure that any variables you create in this generator do not end up in the partition. Now an exclusive new is done before running generators for a class to prevent this possibility.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Library
Platforms: All
DevKey: MAK1149
Summary: MoveToEnd of file streams not working if directory not default

Description:

If you open an existing file stream stored in a directory other than the current default directory (the one with the CACHE.DAT file in it for this namespace) then the MoveToEnd method would fail to work correctly. This change corrects the problem.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1198
Summary: Reduce chances of generating a duplicate default storage global name

Description:

The default global name generator used by the default storage class has been improved.

Note: This default global name generator reduces the number duplicate global names generated but it still does not guarantee uniqueness. It is still the responsibility of the user to make sure the global names used (IDLOCATION, DATALOCATION, INDEXLOCATION and STREAMLOCATION) are unique.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1207
Summary: Allow quotes & subscripts within stream LOCATION values

Description:

This change corrects an issue in the class compiler. In constructing the initial expression for stream properties, it did not properly handle values that contained quote characters. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Stream
Platforms: All
DevKey: MAK1033
Summary: FindAt doesn't work with larger streams/strings

Description:

This change corrects a problem in the FindAt method in %Stream.Object. The method would not calculate the correct position when it had read in two or more 20,000-byte chunks of data.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Stream
Platforms: All
DevKey: MAK815
Summary: Redirect temporary file stream location

Description:

If the global ^%SYS("TempDir") is defined, this is now used as the temporary location for stream data.

If this is not defined, then Caché will use "" as the directory. This puts the stream data in the current directory which is normally the location of the CACHE.DAT file.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT339
Summary: Disconnect active connection if %SQLGateway is killed

Description:

This change introduces a new class %GTWConnection. Its %OnClose method disconnects an active connection if the gateway is terminated.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: AND513
Summary: Fix a message sequence error/thread safety issue

Description:

The Caché ODBC driver has been externally thread-safe for quite some time now. For example, if two threads were simultaneously operating on the same statement object, Caché ODBC driver guarantees there will be no conflicts.

This change fixes the instances internally where there were thread-related issues that could result in "message sequence errors".


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: AND518
Summary: Add try/catch blocks to help exit critical sections in case of a crash

Description:

This change improves error handling in cases where ODBC terminates abnormally and error recovery actions by the application override the default actions taken by the operating system.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: DPV2196
Summary: Query fails if schema name equals username

Description:

A problem has been fixed in ODBC/JDBC. The first time a query is Prepared, if

an <UNKNOWN ERR> would get passed back to the client under some conditions.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: MIT235
Summary: Incorrect Preparsing for Decimal literal

Description:

This changes corrects a situation where a decimal literal in the first column of a SELECT statement, for example,
SELECT 0.1, F1  FROM TESTCASE1234
would prevent parameter replacements from being made.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK574
Summary: Set padcode before "next" loop

Description:

This change corrects an error that caused compile-time <UNDEFINED> errors in SELECT statements with OUTER JOINs when certain CacheSqlStorage "general mapping" features were used.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK582
Summary: Do streamless expression optimization

Description:

This change optimizes streamless (sub)expressions (i.e. expressions without any fields) in SELECTs and a few other places by evaluating them only once at the beginning of the query.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement Yes

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK597
Summary: Fix "pushlog" cloning of unary, streamless

Description:

This change corrects an error in optimization where certain query conditions were "pushed down" and applied within the evaluation of a view that has a GROUP BY clause. This occurred in cases where the condition included a unary operator or a {d ...} date expression.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK598
Summary: Fix 'opex' with many streamless expressions

Description:

This change remedies a situation which caused incorrect processing or a likely run-time <UNDEFINED> error when

An example of this is an IN condition on a collated field with more than 250 constants.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2192
Summary: SQL Datediff crashes with <ILLEGAL VALUE>

Description:

Caché SQL now supports a datepart of "ms" or "milliseconds" for the DATEADD and DATEDIFF functions.

We also now support SQL_TSI_FRAC_SECOND for the ODBC Scalar functions


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2200
Summary: A query with column < negative number returns wrong results

Description:

This corrects an instance where a query can return incorrect results when


Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2228
Summary: Support space collation properly against NULL values

Description:

An error has been corrected where a field value that used the SPACE collation compared against NULL was not returning the correct results. For example, a query like:
SELECT count(*) FROM SQLUser.MyTable WHERE MyField IS NULL
return the incorrect results if MyField's collation was SPACE.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: PVA050
Summary: Ensure use of rowid based on one field, and the field itself are equally optimized

Description:

This change adds a new feature. Previously, you could never use <viewcolumn>->x syntax. Now, if view column maps to a base table column that supports arrow syntax, the view column will support it as well. Note that arrow syntax referring to a child table from a parent table is still not supported for views because there is no way to specify whether the child table pseudo column is 'selected' by the view. In addition, this new feature will not work for views defined by SELECT DISTINCT, or aggregated views, or UNION views.

Another new feature is that special columns %ID, %CLASSNAME, %TABLENAME now work with arrow syntax. Thus ref->%CLASSNAME will return the name of the referenced class.

Compatibility note:

This change addresses many issues relating to column qualification in queries using views and subqueries. The extra qualification needed to work around these issues will no longer be needed.

Previously, if a table has a reference called X, and a child table called X, then X->col would work as long as both the referenced table and the child table don't both contain a column called. 'col'. With change, X->col will always get an ambiguity error if it there are two ways to resolve "X->", irrespective of what follows the arrow.

There is no change to the behavior that if you have a regular column called X, and a child table called X, "X->whatever" will be acceptable - because there is no ambiguity about what "X->" means: it cannot be referring to the regular column called X.

This situation is judged to be rare. Should it occur, it can be resolved by

Another upward incompatibility is that (contrary to other SQL implementations and the standard), Caché allowed two items in the FROM clause to have the same name, as long as one was a correlation name and one was a table name. For example: FROM T1 AS A, A was allowed. This will now produce an error.


Likelihood Medium
Risk Medium
Ad Hoc Yes
Enhancement Yes

 



Category: System
Platforms: All
DevKey: HYY948
Summary: Fix <STRINGSTACK> from $SORTEND

Description:

Addressed a problem where $SORTEND may generate a <STRINGSTACK> error when there are many SETs (hundreds of thousands of, or even millions) to sort.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: HYY954
Summary: Fix a problem with $SORTEND that could generate <ACCVIO> or <SYSTEM>

Description:

Under some circumstances $SORTEND would generate an access violation or <SYSTEM> error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: OpenVMS
DevKey: JO1811
Summary: Adjust code to avoid OpenVMS compiler bug

Description:

A problem has been resolved which could cause access violations on OpenVMS from certain block split operations in 8KB databases when more than 2GB of global buffers have been allocated.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: OpenVMS
DevKey: JO1823
Summary: Adjust OpenVMS mailbox code to avoid data corruption

Description:

A small problem in the internal mailbox code on VMS systems has been corrected. This could have caused corruption of data being returned on Caché's internal string stack in certain rare circumstances, particularly during reads from TCP/IP devices.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML473
Summary: Improve ECP dismount handling

Description:

Under some circumstances, when a sufficient number of KILLs have been done to reduce the number of global directory blocks needed by 1, the consolidation of directory blocks can cause a <DATABASE> error during dismount.

ECP is more likely to provoke this rare problem but it can occur without any ECP.

This change rectifies that possibility.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY959
Summary: Flush sorting in the case of using ZJRNFILT

Description:

This change addresses a situation with journal restore when using a journal filter where SETs may not get applied to the destination databases.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: JO1816
Summary: Change Quiescence code to wait long if just the write daemon is still busy

Description:

the wait time in Caché backup, and other places where the system waits for quiescence, has been extended. If, after the timeout period has expired, the system is quiet except for the write daemon, the timeout is extended for up to 2 minutes to wait for the write daemon to finish its current pass.

Previously on systems where the write daemon routinely took more than the allowed timeout, a backup might never succeed.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.StartUp
Platforms: All
DevKey: TTS081
Summary: Correct long startup problem for Windows 2000 SP4

Description:

This change corrects a situation where Wndows startup would take a long time whenever


Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: GK291
Summary: Fixed %GCMP across ECP

Description:

^%GCMP didn't work across ECP. It was looking for a legacy net connection id
NET(1,"ACTIVE","CPNU",<connection name>)
which wasn't set.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: PWC796
Summary: GBLOCKCOPY does not handle final $C(1) in pre-ISM 6.2 collated global properly

Description:

This change corrects a problem where globals in the ISM pre-6.2 collation that had a particular data pattern (final subscript of any global node ending with $C(1)) could cause problems. The particular symptom that was reported is a failure to convert the node properly when using GBLOCKCOPY.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Documentation Updates
The content of the Caché documentation evolves from release to release in response to editorial improvements, updates to existing material, and addition of new information. The following is a summary of the most noteworthy changes to the Caché documentation since the previous release:

These are in addition to minor enhancements in examples, as well as corrections and improvements to grammar and spelling.


Changes for Caché 5.0.10

This section provides a listing of changes between Caché 5.0.9 and Caché 5.0.10.
This document contains several sections:
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".


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: Networking
Platforms: All
DevKey: GK296
Summary: Delay journal open transaction index calculation after ECP recovery

Description:

ECP can survive server restarts and crashes without any client application involvement. During startup, if there were any ECP client open transactions, the open transaction journal offset got stored in the ^%SYS("ECPDELAYTR") global in case the system crashed again. The global was never killed after successful ECP recovery.

So after many hours or days, if the system is restarted (for any reason) it scanned from that remembered journal offset, which could be many journal records. This would cause the next system restart to take a long time, and some of the journal files may possibly have been deleted, which will abort the rollback because of missing journal file.

With this change, the information will be maintained in the WIJ file.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: JN140
Summary: Guard against internal dtds with no system or public IDs

Description:

An XML file such as this example
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note [
 <!ELEMENT note (to, from, heading, body)>
 <!ELEMENT to (#PCDATA)>
 <!ELEMENT from (#PCDATA)>
 <!ELEMENT heading (#PCDATA)>
 <!ELEMENT body (#PCDATA)>
]>
<note>
 <to>Tova</to>
 <from>Bill</from>
 <heading>Reminder</heading>
 <body>Don't forget the party this weekend!</body>
</note>
containing a DOCTYPE but no SYSTEM or PUBLICID caused
ERROR #6301: SAX XMLParser Error: Unknown Error.
This change accommodates the missing information.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV1970
Summary: Allow creation of view with query against linked table

Description:

An error has been fixed which prevented the creation of a view against a table linked via the SQL Gateway. With this change, SQL can now create such a VIEW. Previously, this operation would report that the table had no Master Map definition.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2047
Summary: Fix filing of node which only holds an embedded field

Description:

A deficiency has been fixed in which the insert/update of a serial field's values through SQL might not be stored properly in the database. The error occurred when the serial field was stored in a global node by itself (without any other fields stored in the same node).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2222
Summary: Fix binding of fields with SPACE collation to Map Subscript definition

Description:

In previous versions of Caché, fields using a Space collation in a CacheSQLStorage subscript expression of the form " "_{FieldName} were treated as expressions rather than collated field values. This made the SQL Query Optimizer less likely to use the index.

This is now corrected.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: PVA056
Summary: A case of OUTER JOIN acting like INNER JOIN

Description:

A problem was fixed where an OUTER JOIN could sometimes behave like an INNER JOIN. This occurred when the join column of the left side of the left join is an IDKEY, while the join column from the right side is an indexed column that has a collation different from EXACT.
Note: While the problem has been fixed so the correct answer is returned, this situation delivers poor performance. It is better to change the collation of the column from the right side table to be EXACT, or to not use primary key = IDKEY in the left side table.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQLManager
Platforms: All
DevKey: YSD683
Summary: SQL Manager: Delete Export/Import Generated Routines

Description:

This change corrects a problem in SQL Manager's export and import class methods, %SQL.Export.Mgr.DeleteExportRoutine and SQL.Import.Mgr.DeleteImportRoutine, that prevented generated routines from being later deleted.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: OpenVMS
DevKey: JO1811
Summary: Adjust code to avoid VMS compiler bug in ginsert related to large buffer pools

Description:

This change resolves a problem that could cause access violations in OpenVMS during certain block split operations in 8KB databases. The problem occurred when more than 2GB of global buffers had been allocated.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1434
Summary: Fix problem with $BITLOGIC(~x,len), where x is ""

Description:

This fixes an error in $BITLOGIC where empty strings would not get negated correctly if there were a length present and only one argument, i.e. $BITLOGIC(~x,len).

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1435
Summary: Fix problems with $BITLOGIC(x) and certain values of x

Description:

This fixes a problem with $BITLOGIC(X) for certain values of X. A spurious error would be reported when the following conditions were met:


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1436
Summary: Fix problems with $BITLOGIC(u^v) for Unicode systems

Description:

This change corrects a condition that resulted in the generation of an invalid bit string from $BITLOGIC(u ^ v) (i.e. XOR operation). The error occurred on Unicode databases when one of the operands was compressed and the other was not.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1474
Summary: Fix problem with $BITLOGIC on Unicode systems mixing narrow and wide bitstrings

Description:

This change corrects an error where, under circumstances requiring conversion from bitlist to bitmap, an incorrect result could occur using the & (AND) $BITLOGIC operator. This only occurred on Unicode installations.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML367
Summary: Fix DCP daemon rollback failure to record restored globals in journal file when it is shutdown.

Description:

When the DCP daemon is shut down, it will roll back all opened transactions by remote client jobs. However, it intermittently failed to record the restored globals into journal file. This caused the globals set be back to the pre-rollback value when the server is restarted.

This change corrects that occurrence.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY939
Summary: Fix the sorting code of journal restore

Description:

This change addresses a problem with journal restore involving a CACHETEMP database of specified max size (i.e., max explicitly set to a value greater than zero). Under some circumstances, users could experience a <SUBSCRIPT> or <UNDEFINED> error during journal restore.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Cluster Specific
Platforms: All
DevKey: HYY863
Summary: Fix problems with journal restore during cluster failover or recovery

Description:

This change corrects the following problems with cluster failover (after a node crash) or cluster recovery at startup (after cluster crash):


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Cluster Specific
Platforms:
DevKey: JO1797
Summary: Correct 60-second pause on a Tru64 cluster system has been resolved

Description:

A problem which could cause a pause in the write daemon cycle on a Tru64 cluster system has been resolved. Since global updates are locked out during this phase of the write daemon cycle, this appeared to an application as a global module pause.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1801
Summary: Prevent infinite loop in Write Daemon if startup fails

Description:

A problem with clusters where the write daemon would get stuck in an infinite loop if it encountered a problem completing its portion of cluster startup has been resolved.

This was found during internal testing, it has never been seen in the field.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.I/O
Platforms: All
DevKey: LRS780
Summary: Fix file handle and memory leaks with JOB servers

Description:

A problem has been fixed that could lead to file handle and memory leaks with JOB servers, mostly on Windows platforms.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY738
Summary: Journal start will skip any non-journal file and start journaling using the next available name

Description:

Journal start used to abort when the name for the new journal file was taken by an existing file other than a valid journal file. The new behavior of is to skip the non-journal file and use the next available name for the new journal file.

A warning message is also displayed in cconsole.log.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY758
Summary: Changes to journaling state take immediate effect

Description:

In previous versions, some settings affecting globals may not have taken immediate effect in existing processes. This was due to the fact that global vectors were cached locally in the process.

The system setting that dictates whether all or selected globals are journaled fell into this category.

This change enables the change of the system setting of journaling to take immediate effect, even in existing processes.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY779
Summary: Use database redirections in transaction rollback that is part of a journal restore

Description:

This change corrects a problem where incomplete transactions involving databases redirected elsewhere in the journal restore were not rolled back properly.

The problem is present in all Caché releases.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY862
Summary: Start journaling using correct file count and file name in cluster recovery and failover

Description:

There was a problem introduced by a change to version 5.0.5.

If a clustered system crashes shortly after journaling switches/rolls-over to a new file, open transactions may not be properly rolled back during the subsequent cluster recovery or failover.

This change corrects that circumstance.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY868
Summary: Preventing descendants of a KILL from being journaled unless in transaction

Description:

This changes corrects a problem in 5.0 where the descendants of a KILL of a global node are journaled if the global is marked for journaling, even though the KILL is NOT part of a transaction. It would be the correct behavior if the KILL is part of a transaction, but in this case it is not.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY893
Summary: Show sync journal I/O queue in cstat

Description:

Cstat has been enhanced with the “-j16” option to display jobs, if any, queued for synchronous journal I/O. For example,
Sync I/O queue (job:iowake:nextjob): 16
   15:0:   13,   16:0:   15
The job # at the end of the line "Sync I/O queue" is the head of the queue. It is followed by a list of jobs on the queue (not necessarily in their order on the queue) that are NOT the last entry on the queue. The nextjob field is the job # following this entry. In the example above, the actual queue is:
head = job #16 -> job #15 -> job #13 = tail
Job #13 is not shown in cstat because it is the last entry on the queue.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: System.Journaling
Platforms: All
DevKey: HYY895
Summary: Add a missing MEMBAR in journal I/O queue operation

Description:

This addresses a potential problem that might cause jobs to hang while waiting for journal I/O to complete.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY896
Summary: Prevent journal daemon from hanging in infinite loop of clearing sync journal I/O queue

Description:

This correction prevents the journal daemon from hanging in an infinite loop in some situations involving a job (or jobs) waiting in a synchronous journal operation (e.g., synchronous TCOMMIT).

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY907
Summary: Fix a potential problem with switching journal file amid a journal I/O failure

Description:

Under some circumstances an attempt to manually switch the journal file via ^JRNSWTCH or the GUI equivalent could hang indefinitely. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY924
Summary: Update journal info in the wij even if there is no database update

Description:

In previous versions, the journal info in the wij was not updated when there was no database update. This could become a problem in some situations where the journal grew indefinitely (e.g., with TS/TC or NN records) without any database update, resulting in stale journal info in the wij. If Caché aborted while in this state, users would see a time-consuming journal restore and transaction rollback at startup.

With this change, the journal info is updated in the wij as long as journal has grown, even if there