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 is no database update.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY925
Summary: Handle dead jobs on journal I/O queue

Description:

Under some conditions, jobs in synchronous journal operations (e.g., synchronous TCOMMIT) could hang if killed while the journal daemon is retrying a failed I/O operation.

This change prevents that from happening.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY931
Summary: Fix <ACCVIO> in dejournaling

Description:

This change eliminates a sporadic access violation error in dejournaling.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY933
Summary: Clear wij journal info if journaling didn't start at startup

Description:

If for some reason journaling failed to start at Caché startup, the journal info in the wij would remain stale even if databases are subsequently updated (without journaling). At the next startup, the stale journal info in the wij could cause the previous database updates (when journaling was off) to be overwritten by the stale data from the journal.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.NWDS
Platforms: All
DevKey: DAS597
Summary: Fix NWDS mapping of ^rINDEX, ^rINDEXCLASS, ^oddPKG, etc.

Description:

In an NWDS configuration, some globals were not properly mapped. This resulted in the SourceControl class being unaccessible from the client.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY909
Summary: Fix a performance problem with fast mode shadowing

Description:

In Caché version 5, fast mode shadowing may suffer a performance degradation if journal file grows substantially. This change addresses this issue.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.StartUp
Platforms: Windows
DevKey: TTS081
Summary: Correct Caché service long startup problem on Windows with packet-driver

Description:

When the packet-driver service is configured to start automatically, Caché could take a long time to start. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Trans. Proc.
Platforms: All
DevKey: HYY845
Summary: Address a couple of issues in DCP server rollback

Description:

This change corrects a problem where the DCP server may fail to roll back open transactions under certain circumstances. One such situation, for example, occurs when a DCP server terminated involuntarily at OS level. In this case, it left some incomplete transactions behind, which the succeeding DCP server would failed to roll back.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Trans. Proc.
Platforms: All
DevKey: HYY888
Summary: Log and generate <ROLLFAIL> upon error in TROLLBACK

Description:

When error occurs in TROLLBACK, <ROLLFAIL> is now generated and an error message is logged in the cconsole.log.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: Utilities
Platforms: All
DevKey: LFT1258
Summary: Have GBLOCKCOPY use an alternate OLD dir.

Description:

GBLOCKCOPY was using a subdirectory called "old" for saving temporary data. This changes that to be called "pre-gbcopy", so that it will not duplicate a commonly used name like "old".

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



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 numerous, minor enhancements in examples, and corrections to grammar and spelling.


Changes for Caché 5.0.9

This section provides a listing of changes between Caché 5.0.8 and Caché 5.0.9.
This document contains several sections:

Caché News, Alerts and Advisories
As necessary, 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.

New Platforms
This Cache version adds support for the following new platform:


Online Documentation
As a convenience to our users, InterSystems provides online access to documentation for recent versions of Caché at the InterSystems Website.

Once there, 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: Config Mgr
Platforms: All
DevKey: CFL962
Summary: Fix JournalZGlob

Description:

This change corrects a circumstance where the Config Manager would set the wrong value for the JournalZGlob parameter. This would cause globals beginning with "Z" or "z" not to be journaled when the user intent was the opposite.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK649
Summary: Named user license for CSP session not decremented correctly if session ended immediately

Description:

For a CSP page logged in with a new named user license and '%session.EndSession=1', the license associated with the most recent CSP session was not released. This has been corrected; the named user license for a CSP session is decremented correctly if its session ends immediately.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Languages
Platforms: All
DevKey: CDS423
Summary: Always generate QUIT at end of procedure

Description:

Under some circumstances, the ObjectScript compiler generated incorrect object code at the end of a procedure. This could result in various errors at the end of the procedure, such as <SYSTEM> or <NO CURRENT OBJECT>.

This only happened if all the following conditions were met:


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: MAK760
Summary: Connected property of FtpSession object still set to 1 (=True) after timeout

Description:

If the FTP connection times out, the Connected property of the %Net.FtpSession object was still true. With this correction, it is now correctly reset to false.

Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: Windows
DevKey: JN133
Summary:

Description: Facilitate Callback functionality for Delphi Clients of CacheObject (ActiveX)

Delphi has Edit/Text box windows with a 'Text' property. The windows do not support OLE Automation, so the SetOutput() method of CacheObject.Factory is unable to access them.

DelphiCallback is a new component. It is an ActiveX control that can be placed on a visual programming environment form. To use it, call the CacheObject.Factory.SetOutput() method, passing in the name of the DelphiCallback control. At runtime, the control is invisible but will trigger a 'TextChanged' event when its Text property is set. This event receives the Text written out by Cache.

Note: Use this component with Delphi Version 7 and earlier. Delphi Version 8 uses native .NET components that support the existing CacheObject.Factory.SetOutput() method.
How to use this callback with Delphi 7
  1. Create a Delphi 7 Windows Forms Project
  2. From the Project menu, select Import Type Library. Scroll through the list and select CacheObject, select the Install button, and follow the prompts.
  3. From the Components menu, select Import ActiveX Control. Scroll through the list and select DelphiCallback. Then, select the Install button and follow the prompts.
  4. Add a TEdit box, a TButton , a TCallback, and any other components to the form.
  5. Doubleclick the form to enter code for the form's creation, button press, etc.
  6. Click the TCallback. From the Object Inspector window, select events, and create an event for OnTextChange. This will tie the callback to the TEdit box.

Here is sample code assuming a TextBox called Edit1 on a Form called TForm1 with the OnTextChange event called TextChanged. Text shown in boldface was added to the code generated by Delphi.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, OleCtrls, DELPHICALLBACKLib_TLB,
  StdCtrls, CacheObject_TLB;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Callback1: TCallback;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure TextChanged(ASender: TObject; const p_bstrText: WideString);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Factory : IFactory;
  Connected : Boolean;
  ConnectString : string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  Dispatch: IDispatch;
begin

  Factory := CoFactory.Create;
  ConnectString := Factory.ConnectDlg('Connect to Cache');
  Connected := Factory.Connect(ConnectString);

  If Connected = False Then
    Begin
      ShowMessage('Could Not Connect');
    End
  else
    Begin
      Dispatch := Callback1.DefaultInterface;
      Factory.SetOutput(Dispatch);
  End
end;

procedure TForm1.Button1Click(Sender: TObject);
var Person: Variant;
begin

  Person := Factory.New('Sample.Person', 1);
  If VarIsNull(Person) or VarIsClear(Person) then
    Begin
      ShowMessage('Could not create person');
    End
  Else
    Begin
    Person.Name := 'Test Person';
    Person.PrintPerson;
  End

end;

procedure TForm1.TextChanged(ASender: TObject; const p_bstrText:
WideString);
begin
  Edit1.Text := Edit1.Text + p_bstrText;
end;

end.
How to use with VB
  1. Create a new VB standard executable.
  2. From the Project Menu, select Components. Scroll through the list and select a checkmark next to "DelphiCallback 1.0 Type Library." This will add a Component on the Components Tab.
  3. From the Project Menu, select References. Scroll through the list and select a checkmark next to "CacheObject".
  4. Add a TextBox, Callback (added from above), and other controls to the form.
  5. Hook up the text of the Textbox to the Callback. Double-click the Callback object. In this TextChanged method, set the text to the desired text. The output from the Factory's SetOutput() method is contained in the string passed to this method.

This is sample code assuming a Textbox called Text1 and CommandButton Command1:

Private Sub Callback1_TextChanged(ByVal p_bstrText As String)
Text1.Text = Text1.Text & p_bstrText ' Add the Text to the TextBox
End Sub

Private Sub Command1_Click()
Dim F As New CacheObject.Factory
Dim C As String
Dim P As Object

C = F.ConnectDlg("Connect Me to the Samples Namespace Please")
If F.Connect(C) = False Then
    Exit Sub
End If

F.SetOutput Callback1 ' Hook up the Callback Control to CacheObject Factory

Set P = F.New("Sample.Person")
P.Name = "Jamie"
P.PrintPerson ' Output should appear in the TextBox
End Sub

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: Object.Library
Platforms: All
DevKey: DLP1254
Summary: Validate MAXLEN parameter in IsValid generator for %String

Description:

The %String MAXLEN parameter must be a positive integer. Prior versions of Caché did not check MAXLEN for validity. This corrects the oversight in this class.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: Object.Library
Platforms: All
DevKey: MAK797
Summary: Enhance %Net.FtpSession so it can support both PASV mode and non-PASV mode for file transfers

Description:

The ftp client provided by %Net.FtpSession now supports both PASV and non-PASV mode for transferring data. Change the default PASV mode by setting the property UsePASV to 0.

Use the ChangeUser method to modify the current user logged in.

Sending LIST plus a space character even when there was no pattern caused a problem. This has been corrected.


Likelihood Low
Risk High
Ad Hoc Yes
Enhancement Yes

 



Category: Object.Library
Platforms: All
DevKey: MAK877
Summary: Relationship object was not keeping track of disconnected items correctly

Description:

If you removed an item from a relationship with the Remove method, and then you inserted the same item back into the relationship, the insertion operation was not restoring the connection between the two objects properly. The referred-to object was thus not being saved when its referrer was saved.

This is now fixed.


Likelihood Medium
Risk High
Ad Hoc No
Enhancement No

 



Category: Object.Library
Platforms: All
DevKey: MAK936
Summary: Read without a timeout in %Net.FtpSession class can cause hang

Description:

When an application calls the NameList method in %Net.FtpSession, that method issued a read without a timeout on it. The lack of the timeout could cause a hang in the presence of a bad network connection. The read has been changed to honor the same timeout as all the other reads.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: OpenVMS
DevKey: JCN494
Summary: Problem when using the WSDL Reader on OpenVMS

Description:

As an enhancement to Cache 5.0.5, URL parsing was removed from Caché code. Instead, Caché used the facilities of the underlying Xerces parser to process URLs.

On OpenVMS, this caused an opcode fault. The change rebuilds the Xerces parser properly for OpenVMS.


Likelihood High
Risk High
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage
Platforms: All
DevKey: DLP1115
Summary: Change deep save scheduling of disconnected related objects

Description:

Saving the object instance of a parent in a parent-child relationship now succeeds when the reference to the child is removed from the relationship.

In some more complex transactions, a child object could both be modified (requiring it to be saved), and removed from its relationship to its parent. This would result in validation failures when the save of the (previous) parent object was attempted.

This correction changes the behavior. Any objects deleted from relationships are removed from the save set so that they do not cause validation errors in saving the parent. These objects are examined after the save set is constructed.


Likelihood Low
Risk High
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage
Platforms: All
DevKey: DLP1257
Summary: Fix save of disconnected objects when parent object is not modified

Description:

When a relationship is severed between two objects, a record of that is kept in the relationship object. Prior to this change, under some circumstances Caché might miss this fact and not save the new relationship state. With this change, the new state is properly saved.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: JN193
Summary: ParseStream of %XML.TextReader caused segmentation fault

Description:

The XML parser used by %XML.TextReader uses a length value to indicate how much data it has room for in its buffer. Due to an oversight, one part of the routine was treating it as bytes and another as characters. This caused buffer overrun conditions when Unicode characters were read and could result in fatal errors on some systems.

This change makes the length interpretation uniform, and eliminates the error.


Likelihood High
Risk High
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: BJB289
Summary: KeepClassUpToDate setting unprocessed in "tune" procedure call

Description:

Prior to this change, when TuneTable had been run, all classes were marked as modified and requiring recompilation. This happened regardless of the setting of the "KeepClassUpToDate" argument to TuneTable. Now, only the tuned tables are marked as being updated.

Likelihood High
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2029
Summary: Prevent some <MAXSTRING> errors in table compilation for some really large classes

Description:

The number of properties in a class has been increased from 430 to about 800 mapped to a single node.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2180
Summary: Lock escalation is now per-table

Description:

The lock escalation is now performed on a per-table basis.

Caché has had the concept of lock escalation for some time. This is when "X" number of INSERT/UPDATE/DELETE/Saves occur within a single transaction, the next lock acquired for the table is a table-level lock. This prevents the Caché system lock table from filing up too quickly.

But, if an application inserted 1000 rows into table A and then 1 row into table B, table B would acquire a table-level lock. This is because the lock escalation threshold counter was incremented for each save in all tables.

With this change, there is a separate counter for each table. Therefore, the lock escalation only occurs on a table when that table reaches the lock escalation limit within a transaction (the default limit is 1000).


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2208
Summary: Fix <UNDEFINED> error on compile

Description:

This change corrects an instance where an <UNDEFINED> error may occur during the table compilation phase of the class compiler. Caché reports the error


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND415
Summary: Purge JDBC input before reporting stored procedure errors

Description:

When Caché detected a stored procedure parameter mismatch error, it immediately raised an exception. In some instances, this leaves the input buffer with data that was supposed to be consumed. The subsequent call would then fail with a message sequencing error.

This change clears the buffer so sequencing errors do not result from the exception being reported.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK576
Summary: Don't loop below DISTINCT fields

Description:

This change improves the speed of certain queries with GROUP BY or DISTINCT, especially when these operations can be assisted by an index. If a query has DISTINCT or GROUP BY and no aggregates need to be processed by the query, execution terminates as soon as all the DISTINCT field values become known.

Note: the optimization will not be evident in Show Plan.


Likelihood Medium
Risk High
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2145
Summary: Fix convert() to SQL_DATE failure when CASE is used in query

Description:

This correction changes the SQL CASE statement to return its result as the datatype of the result of the first CASE condition.

All the values returned by CASE are supposed to be of the same datatype, but Caché does not enforce this. So if the first condition returns a DATE, the column will be of datatype DATE. If a later condition returns an INTEGER, the value will be treated as a DATE value.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2210
Summary: Fix erroneous SQLCODE=-29 error with -> syntax and an unrelated sub-query in the FROM clause

Description:

A query such as
SELECT a.spouse->name FROM sample.person a,
       (SELECT contact FROM sample.vendor) b
containing a sub-query of an unrelated table would fail with an SQL erroe code of -29.

This change allows Caché to properly handle this case.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2213
Summary: Fix UPDATE Filing code with more than 200 fields in a node and delimited strings in use

Description:

This change corrects an error where Caché would report a <MAXSTRING> error during the table compilation phase of the class compiler if %CacheSQLStorage is used, and more than 200 fields are stored in a single node using a delimited string storage structure.

Delimited String storage simply means:

^glo(id)=field1^field2^field3^...^fieldN
where each field in this example is delimited by "^".

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: DVU1056
Summary: Changed property tree handling in Query wizard

Description:

The performance of the Studio New Query Wizard could be poor in a namespace that contained many classes with many relationships among the classes. The performance has been improved. The Query Wizard is initializes only the data for the levels the user actually explores.

Likelihood Medium
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: JN137
Summary: Indicate syntax error when missing final closing brace of class definition

Description:

The class syntax checker has been fixed to correctly report an error when the final closing brace of a class definition is missing. In previous versions, this invalid syntax was unreported.

Likelihood High
Risk Medium
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MC467
Summary: Set debug devices to use UTF8 mode

Description:

In previous versions, Caché failed to set UTF8 mode for devices used in debugging. This resulted in non-Latin characters (for example, Japanese) being displayed incorrectly.

This change rectifies that situation.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Linux, AIX, HPUX, OpenVMS
DevKey: HYY932
Summary: Correct $SORT* in handling double type values on 64-bit platforms

Description:

This change addresses a issue with sorting (started and ended via $SortBegin and $SortEnd, resp.) on 64-bit platforms. Global nodes that are set to values of double type may attain incorrect values after sorting. Since sorting is enabled in journal restore in 5.0.5 and later, journal restore was affected by the problem too.
Note: A 64-bit platform is one where we use 64-bit pointers. A platform where we use 32-bit pointers and 64-bit integers (e.g., 4.1 for VMS) is not considered 64-bit.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Linux
DevKey: JLC604
Summary: Fix OREF comparison error in Linux math functions

Description:

This change corrects an error that caused an <INVALID TYPE> error when comparing an OREF to a non-null string. Now this comparison returns 0 (false).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JLC612
Summary: Fix error in $NORMALIZE()

Description:

This change corrects the calculation for $NORMALIZE(<number>,-1) that could incorrectly return zero in some circumstances. For example, prior to this change, the sequence
Set x = 3.5
Write $NORMALIZE(x, -1)
would correctly return the value 3. However, the sequence
Set x = 7 / 2
Write $NORMALIZE(x, -1)
would return the value 0. Now it returns 3 as it should.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SML399
Summary: Fix access violation on $zu(156) to traverse lock table.

Description:

There is a small chance that ^LOCKTAB or ^$LOCK SSVN could get an access violation when there is heavy lock table activity. This change prevents that from occurring.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY921
Summary: Fix problem with restoring to a bigger existing database

Description:

Under certain circumstances, an attempt to restore a saved database file into a bigger existing database can cause data corruption resulting in <DATABASES MAP LABEL> errors and system hangs.

With this change, the data corruption no longer occurs.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: LRS772
Summary: Avoid inadvertent restore of mgr database with EXTSELCT^DBREST

Description:

An error in the non-interactive API for restoring backups, $$EXTSELCT^DBREST, has been fixed. The result of the error is that the manager's database could be inadvertently restored. This would happen even if it was not specified in the restore list. If it were present in the backup archive and the file containing the restore list contained a blank line, the manager's database would be overwritten.

This could also happen if the calling process had enabled $ZEOF handling.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.I/O
Platforms: All
DevKey: LRS775
Summary: Fix crash with long Windows printer names

Description:

In previous versions, a process would crash if it attempted to open a Windows printer device with a name longer than 69 characters (including the "|PRN|" prefix). Now, length of up to 256 characters is supported with a <NOTOPEN> error occurring for a length greater than 256.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML457
Summary: Display DTM lock owner with remote PID

Description:

If a lock is held by a remote DTM client, the LOCKTAB and Control Panel display will now append a "/" followed by the process ID of the owner on the remote DTM system to the lock display as a monitoring aid.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML464
Summary: Don't let ZA locking get lock count overflow

Description:

On earlier versions of Caché, it was possible for the statement
For i=1:1 ZA ^a(i)
to get a <COMMAND> error when $ZU(69, 8) is set. When it is not set, it should not get this error because ZA works like the LOCK command. This change fixes this issue.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.StartUp
Platforms: All
DevKey: MAK922
Summary: Make sure %CSP.Daemon process is started in %SYS namespace

Description:

Prior to this change, the %CSP.Daemon process was getting started in the implied namespace because this is the namespace the startup code is in before it calls the function to start the daemon. Now the daemon swaps to %SYS namespace.

Likelihood High
Risk Medium
Ad Hoc No
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 numerous, minor enhancements in examples, and corrections to grammar and spelling.


Changes for Caché 5.0.8

This section provides a listing of changes between Caché 5.0.7 and Caché 5.0.8.
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: CSP
Platforms: All
DevKey: MAK918
Summary: Use streams to hold more than 32K of data in CSP forms

Description:

If you have a form in a CSP page with a textarea, and the submitted data in the textarea is longer than 32K characters, the CSP server now automatically creates a stream to hold the data and returns the stream OREF as the result of %request.Data("txt",1).

This means that for any fields that could be larger than 32k you should code something like:

Set value=%request.Data("fieldname",1)
If $isobject(value) {
  ; Treat this as a stream
} Else {
  ; Treat this as a regular string
}

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Control Panel
Platforms: All
DevKey: CFL1029
Summary: Closing the backup status window may cause the system to hang

Description:

Under some circumstances, closing the status window of a GUI backup could result in the system hanging. This change corrects that.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK994
Summary: Improve CSP license accounting

Description:

If a request for a new CSP page comes in which causes a new session to be created, and a serious error occurs before the request is complete, there are situations where the %cspServer process may HALT after allocating a license but before storing the session information in ^%cspSession.

Should this occur, the license will never get released because the %CSP.Daemon process will never detect this session timeout (there is no entry in ^%cspSession).

With this change, the %cspServer process inserts an entry in ^%cspSession before allocating a license. Should the new process terminate abnormally, this license will still get released by the %CSP.Daemon process.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MXT583
Summary: Close CSP security vulnerability

Description:

This change removes support for URL and FILE query parameters of %XML.Utils.SchemaServer so that arbitrary file viewing is no longer possible.

Likelihood Low
Risk High
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MXT585
Summary: Fix %CSP.DwxUtils security hole that allows running of arbitrary classmethod

Description:

This change closes a %CSP.DwxUtils security hole that allows running of an arbitrary classmethod.

Likelihood Low
Risk High
Ad Hoc No
Enhancement No

 



Category: CSP.DreamWeaver
Platforms: All
DevKey: MXT557
Summary: Dreamweaver extension changes for MX2004 and error fixes

Description:

Dreamweaver MX2004 changed the mechanism needed for installing plugins. This change contains the modifications to the Caché plugin necessary for it to work with MX2004 as it has with earlier Dreamweaver versions. Corrections were made to fix uninstall problems uncovered in earlier releases.

Likelihood High
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT116
Summary: Posting small binary files as multi-part MIME attachments may fail

Description:

This change corrects a problem where attempting to post small binary files as multi-part MIME attachments could result in an error return. This issue was particularly relevant to files containing the NULL (ASCII 0) character in the first few bytes. This location, for example, is usually reserved for header information in image and zip files.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT134
Summary: Gateway and Caché 'textarea' submissions greater than 32K may fail

Description:

This change corrects an error in the Caché Version 5 communications protocol between the Gateway and Caché. Prior to this, 'textarea' submissions greater than 32K could fail.

Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT142
Summary: Hyperevents may fail in non-cookie session-management mode

Description:

Hyperevents may fail in non-cookie, session-management mode if the session token (CSPCHD) was not passed as the first hidden field in the form's posted data. This could also happen in regular CSP forms, but more rarely. This changes corrects this situation.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT177
Summary: Fix a problem in posting the contents of 'textarea' elements greater than 32K under some circumstances

Description:

This change corrects an issue involving a POST of a textarea element containing more than 32K characters. Under some circumstances, the textarea content could be silently truncated.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: Linux
DevKey: CMT182
Summary: Changes to ensure that the Gateway works with iPlanet/Sun ONE web servers under Linux

Description:

Sun has changed the default behavior of the Sun ONE (formerly iPlanet) v6.1 server. The change mainly involves requests processed through NSAPI extensions.

The effect of the change is that the server now assumes responsibility for formulating and dispatching HTTP response headers. Previous versions would allow NSAPI extensions to stream their own headers back to the client and wouldn't intervene in this process unless the module explicitly called the NSAPI header formulation and dispatch functions.

This change includes essential modifications to ensure that the Gateway works with the latest iPlanet/Sun ONE web servers under Linux.


Likelihood High
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: Languages
Platforms: All
DevKey: CDS532
Summary: Fix I/O keyword table truncation

Description:

The I/O keyword table was inadvertently truncated in Release 5.0.5. The keywords /WRI, /WRITE, /XYT, and /XYTABLE were not recognized as valid and attempts to use them resulted in <SYNTAX> errors on Windows systems.

On UNIX and VMS systems, only the last entry, /XYTABLE, was truncated with similar effect.

This change corrects both errors.


Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: Windows
DevKey: TTS031, TTS048, TTS073
Summary: Update the InterSystems packet driver

Description:

This change updates the InterSystems packet driver to correct issues with Windows "Plug-n-Play". Prior to this change problems during install or uninstall could sometimes cause a Windows system failure.

The driver also now processes properly many dynamic operations via packet-driver handles allowing the system to proceed more gracefully.

The internal version number of the driver has been updated to reflect the change.


Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object
Platforms: All
DevKey: DLP1137
Summary: Class instances are incorrectly marked as modified

Description:

Under some circumstances, class instances were being marked as modified when Count() or %GetNext() were invoked, and more than one instance of the object was stored in the database. An example is a "parent" object instance with multiple "children". This change properly preserves the modification state of the object.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: Object
Platforms: All
DevKey: MC429
Summary: Prevent loss of SQL privileges during upgrade

Description:

Under some circumstances, upgrading could result in the discard of privileges for SQL tables. This changes preserves the privileges across an upgrade.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT507
Summary: Properly return application SOAP faults from web service

Description:

The ReturnFault() method of web services was not properly preventing creation of the SOAP body after a fault was generated. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT539
Summary: XML Schema wizard does not display non-UTF8 characters correctly in schema source

Description:

Prior to this change, the XML Schema wizard could not properly handle an XML document that was encoded in a character set other than UTF-8. Now the Schema Wizard uses the character set encoding specified in the <?xml ...> directive.

Likelihood Medium
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT314
Summary: Linked tables containing class queries with parameter fail

Description:

Prior to this change, if a linked table (for example, to data residing in Microsoft SQL Server) contained a class query with a parameter, and that parameter was referenced in the WHERE clause, an attempt to compile the class would result in a <SYNTAX> error. This change corrects the problem and the class now compiles properly.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT316
Summary: Support HAVING clause for external tables

Description:

This change enables the generation of the HAVING clause for tables linked from other databases. In prior versions, the HAVING clause was wrongly omitted when the SQL was sent to the other database.

Likelihood High
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND455
Summary: Implicitly close all streams after (bulk) insert/update has completed

Description:

Under some circumstances, a user could receive a <MAXSTRING> error if a large number of streams were used in a bulk insert or update operation. The streams were not properly being closed when the operation completed.

Since there is no reason to keep the streams open in this circumstance, Caché now automatically cleans up all such structures after a(n) (bulk) insert/update has completed.


Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN491
Summary: Japanese SQL table/field name may cause errors

Description:

The internal use of the ISDIGIT ANSI function resulted in undefined behavior on integer values larger than 255. This failure was present in version 5.0.5 and 5.0.7. This has been corrected.

Likelihood High
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK555
Summary: Allow TOP constant/variable in parenthesis

Description:

Allow the constant, host varible, or "?" that follows TOP to be enclosed in parenthesis. (Currently, Caché does not allow a general expression there, not even a constant expression.) This is needed for external tables, since other vendors support only constants after TOP, and thus the parenthesis are required to prevent literal-replacement of that constant.

Likelihood Medium
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK577
Summary: Fix split subscript with "y" nexting

Description:

Before this, Caché would report an error when it attempted to compile queries with IN conditions on parent reference fields, and those conditions had more than one "||" component.

For example:

SELECT * FROM grandchild WHERE parentref IN ('1||2', '3||4')
This change allows the compilation to proceed correctly.

Likelihood Medium
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK590
Summary: Properly handle FROM with multiple OUTER JOINs of linked tables

Description:

A query that uses linked tables now succeeds when the query includes more than one OUTER JOIN.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement Yes

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK591
Summary: Padding may survive condition with ISNULL()

Description:

The existence of certain WHERE conditions can cause an OUTER JOIN to be converted to a regular join without affecting the query semantics. (Regular joins can be more efficient to process than outer joins.)

In prior versions, the analysis of the conditions under which this conversion could be performed was incorrect for some usages of ISNULL, NVL, COALESCE, NULLIF, IFNULL, DECODE, and CASE, as well as for fields in an extrinsic or a user-defined function. This change corrects the analysis.

It also extends the analysis to correctly convert queries involving OR conditions.

Finally, it corrects the regular 3-value logic NULL analysis in situations where there were NULL arguments in a call to an extrinsic or a user-defined function contained in a WHERE clause.


Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: Studio
Platforms: All
DevKey: RAW442, RAW444
Summary: Improve Studio reliability

Description:

Under certain circumstances, an attempt to copy and paste a program fragment would cause Studio to crash with an internal buffer overflow. This is more likely when the program fragment has a large number of short, syntactic elements because the internal representation of the fragment required more space than was allocated. This change allocates sufficient additional space to contain the copied section.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS535
Summary: Handle interruptions in Event.Wait()

Description:

When a process is using $System.Event.Wait() to do a timed wait, and it receives a signal from another process, such as from JOBEXAM or to update internal tables after mounting a database, the timing mechanism was lost and the process would never return from the Wait(). This change makes it work properly.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JLC591
Summary: Correct error in $QUERY/$ORDER from translated subscripts

Description:

This change corrects a error affecting non-Unicode Caché systems. The error happens during the translation of the internal encoding of subscripts from ISM versions 6.2 through 6.4 to Caché Standard collation. Such translations occur, for example, when using %GIF.

Subscripts starting with a ÿ (lower-case "y" with an umlautl HTML = &yuml; or &#255;) might not get translated properly and end up in the database with the wrong encoding. This would generate a <WIDECHAR> error when those nodes were later accessed via $ORDER or $QUERY.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: UNIX
DevKey: JO1792
Summary: Change incremental backup handling where a user job can't read from a database

Description:

A defect has been corrected that could cause the write demon to hang. The problem only occurs when a database on a Unix system is not readable by all Caché jobs, and the database is included in a Caché incremental or concurrent incremental backup. Under these circumstances, the system may hang following the backup.

This hang can be identified by examining the wdwake value displayed by cstat. It has a value of 2, the problem resolved by this change has occurred.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1794
Summary: Assure global vector resetting after database dismount and re-mount

Description:

This change corrects a problem which could cause processes to skip resetting their global vectors after a database has been dismounted and re-mounted.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Windows
DevKey: JO1799
Summary: Correct inaccurate reporting of dead jobs on Windows

Description:

From the Caché alert issued 22 April 2004:

InterSystems has corrected a defect that can cause Caché processes to be incorrectly deleted from Caché. This defect is present on Windows platforms only and applies to currently released Caché 5.0.x versions.

Only processes that call out of Caché using $ZF() and modify their Windows security profile are at risk of encountering this defect. The likelihood of encountering this problem is low, but the effects could be severe including causing Caché to hang. To determine if your system has encountered this defect check the cconsole.log file for a message indicating that a dead process has been "cleaned", for example:

04/20-17:28:33:734 ( 4184) cleaned dead job, pid: 4224
If the PID that has been cleaned still exists as a Windows process, then the problem may have occurred.
Note: the "cleaned" message is evidence that normal Caché functionality has been triggered to protect against dead processes, it is not, by itself, evidence of the defect. Moreover, PIDs are quickly reused in a running Windows system, so unless you find the PID in existence at the Windows level very shortly after the timestamp on the "cleaned" message you have likely not encountered the defect.
See the earlier section on alerts for related information.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: LRS757
Summary: Fix BACKUP restore errors with archives having many databases

Description:

From the Caché alert issued 27 April 2004:

InterSystems has corrected a defect in Caché backup that could result in inability to restore from a backup archive. This defect exists in all Caché 4.1.x and later versions and for all platforms and operating systems.

This problem can only occur in backup archives with 16 or more databases. The likelihood of encountering this problem is low but increases with the number of databases in an archive. Existing backup archives can be checked with the following procedure without actually restoring any databases.

To check whether existing archives are subject to this error, user should

If the restore reads through the entire archive without a "missing blocks" error the archive is not affected by the condition. No database restore should occur because none has been selected - that is what the "X" means.

Note: a clean check of one archive with the above procedure does not guarantee that the next backup will not encounter the problem.
This change eliminates the error. See the earlier section on alerts for related information.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: Windows NT
DevKey: SAP157
Summary: %PRIO malfunction on WIN NT 4.0

Description:

Prior to this change, a call to NORMAL^%PRIO after a call to LOW^%PRIO would leave the process in priority 0 (zero). This only happened on Windows NT.

A workaround for the problem was to set the priority by doing HIGH^%PRIO, then NORMAL^%PRIO.

With this fix, it no longer happens on any platform and the workaround is no longer needed.


Likelihood Low
Risk Low
Ad Hoc No
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 numerous, minor enhancements in examples, and corrections to grammar and spelling.


Changes for Caché 5.0.7

This section provides a listing of changes between Caché 5.0.5 and Caché 5.0.7.
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.


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: CFL1011
Summary: Fix deletion of .cpf backup files on OpenVMS

Description:

A bug has been fixed where all the VMS-created backup versions of the .cpf file were deleted when the configuration was edited via Config Manager.

Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: SML436
Summary: Reduce the precision of double-precision subscripts being sent to DSM systems

Description:

DSM systems cannot handle the full range of Caché double-precision numeric subscripts. The subscripts are now reduced in precision to that which a DSM system can accept.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Relationships
Platforms: All
DevKey: DLP1094
Summary: Fix <UNDEFINED> in %Collection.RelationshipObject::GetObjectAt

Description:

This change corrects an illegal internal reference in the named method which caused an <UNDEFINED> error.

Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Relationships
Platforms: All
DevKey: DLP1121
Summary: Don't automatically load related objects when swizzling the parent

Description:

Prior to this change, when a child object attempted to reference its parent, all the objects contained in relationships of the parent would be instantiated. This resulted in an unexpected and unnecessary large overhead in making the reference. This change removes the automatic loading in favor of loading only those objects actually referenced.

Likelihood Medium
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: Object.Relationships
Platforms: All
DevKey: DLP1134
Summary: Load related objects in Next() and Previous() if not loaded

Description:

With this change, related objects are now loaded when calls are made to the Next() and Previous() methods. Previously, these methods could return errors.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Relationships
Platforms: All
DevKey: DLP1138
Summary: Don't set modbit when swizzling relationship object

Description:

The modified bit for an object was incorrectly being set when other objects it referenced were brought into memory. This has been corrected and the modified bit is now set only if the object is actually modified.

Likelihood Medium
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: Object.Relationships
Platforms: All
DevKey: MAK853
Summary: Performance improvement and correction to %Collection.RelationshipObject

Description:

When an applilcation called Insert(oref) to insert an object reference into a relationship collection, or called the deprecated method SetAt(oref,key), instead of the oid being stored in the relationship, just the id was stored. This could cause problems when searching for an oid in the collection. Now both methods correctly insert the oid.

In correcting this, some changes were made to improve the performance of the internal storage for the relationship and to reduce the memory footprint required.


Likelihood Medium
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: Object.Relationships
Platforms: All
DevKey: MAK992
Summary: %ConstructClone failed with relationships

Description:

The %ConstructClone method failed to load all the ID's of a relationship before performing its work. Prior to this change, it would clone only the ID's that had been loaded by other reference attempts.

Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: JN178
Summary: Fix erroneous call to endDTD in Sax Parser

Description:

An incorrect method call in the SAX content handler resulted in an attempt to reach a non-existent method. This is now corrected.

Likelihood Medium
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: BJB284
Summary: Correct ifn conflict with Virtual OR

Description:

A problem has been corrected with the SQL code generator. If you selected against a UNION subquery containing an OR clause, under some circumstances the columns would display the wrong value in the results.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: DAS497
Summary: Correct <ACCVIO> associated with date/time processing

Description:

Under some circumstances, the conversion of a date/time to display format would result in an <ACCVIO> error if the fractional seconds portion of the date/time was zero.

Likelihood Medium
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: HYY864
Summary: $SortEnd preserving the order of SETs to the same node

Description:

Under some circumstances, $SortEnd() may apply SETs to the same global node in a different order from the one in which they were issued, resulting in incorrect value of the global node. This change applies them in the correct order.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: HPUX
DevKey: JLC590
Summary: Fix bug in Clsetcon() for hp11

Description:

This change corrects a performance degradation in the HPUX implementation of Caché that eventually results in a <STORE> error.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: LFT1134
Summary: Fix $zobjexport issues

Description:

This change corrects several errors in exporting objects whose size approaches 32K in length, and involve undefined variables. It also improves the handling of object tokens during export.

Likelihood Medium
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: Windows
DevKey: LFT1214
Summary: Improve Caché handling of lack of handles

Description:

This changes adds error handling for the condition where a Caché system running on Windows runs out of handles.

Likelihood Medium
Risk Medium
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RJF018
Summary: Improve handling of $BIT for old format databases

Description:

This change corrects a problem where SETs using the $BIT (bitmap indexing) function in a 2K (old format) database could cause database integrity errors. Prior to this change, when a $BITSET created bigstring data, it failed to update the bottom pointer node to reflect the addition of the bigstring node in the data block. This problem affects all prior Caché releases.

Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: OpenVMS
DevKey: SAP150
Summary: %PRIO set's rather than increments base priority

Description:

HIGH^%PRIO sets an incorrect priority on OpenVMS. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML398
Summary: Correct an issue with numeric subscript access over a network

Description:

Under some circumstances, attempts to access globals on a remote DSM/MSM system using $DATA or $ORDER could result in a <SUBSCRIPT> error or the wrong data being returned.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML400
Summary: Call netmap only when the network is configured

Description:

When there is no network configured, an attempt to use ^LOCKTAB or Control Panel to delete a lock entry would result in a <NETWORK> error. This change corrects that condition.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML445
Summary: Improve ECP connection startup to initiate ECP daemon jobs

Description:

The very first ECP access to remote server took about 5 seconds for Windows platform. This change corrects this issue.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY805
Summary: Reset internal state when errors reported by DBACK*

Description:

This changes corrects a situation where internal state flags were not being properly reset when errors were reported by DBACK* in the case where it was invoked by an application.
Even with this change, applications which invoke backup operations programmatically should handle all errors reported and attempt to restore the system state prior to the backup being invoked.

Likelihood High
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY886
Summary: Quiesce ECP-based cluster after setting backup switch

Description:

This change addresses an issue on an ECP-based Caché cluster where a corrupted backup may results because the cluster was not quiesced before backup started.

Likelihood Medium
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY859
Summary: Prevent non-privileged user from stopping journaling

Description:

A non-privileged user is not allowed to stop journaling. As far as journaling is concerned, a non-privileged user is one who doesn't have the write access to the journal file.

When a non-privileged user tries to stop journaling, one of the following errors is reported:

Access to journal file [journal name] denied
or
Unable to open journal file [journal name] for write access

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Licensing
Platforms: All
DevKey: RJW691
Summary: Can't Connect to License Manager After Hot License Upgrade

Description:

When upgrading a license key on a running Cache version 5.0 configuration, either by copying the cache.key file into the system manager directory and running $$UPGRADE^%LICENSE, or by installing it using the Configuration Manager License Wizard, communication with the License Manager would be lost because the internal License Manager address field was overwritten.

This change prevents this from happening. The License Manager will receive the new key capacity values and update its internal tables within a minute or so. The new capacity values are immediately available on the local system.

Note: This only applies to multi-server keys which use the License Manager. Also, you must install the new key on every configuration that shares the key.)

Likelihood Medium
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.StartUp
Platforms: All
DevKey: CFL981
Summary: Fix %SYS mappings

Description:

An error has been fixed where mappings defined for the %SYS namespace would be lost upon Cache restart.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.StartUp
Platforms: All
DevKey: SAP153
Summary: CCONTROL can use the wrong cpf file

Description:

If there is a file in the Cachesys directory such as:
cache.cpf.<config>
where <config> is the Configuration name, ccontrol will start the Configuration using the cache.cpf.<config> (even if you put nothing in the command line, or use 'cache'). During the startup it tells the user that it is using just the "cache.cpf" file.

With this change, it correctly reports the file name.


Likelihood High
Risk Low
Ad Hoc No
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 numerous, minor enhancements in examples, and the usual corrections to grammar and spelling.




Changes for Caché 5.0.5
This section provides a listing of changes between Caché 5.0.4 and Caché 5.0.5.
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.

At the time of this publication, the details on the following were available:

Date Subject
December 4, 2003 Caché Server Pages
November 19, 2003 Caché Backup Error and Lost Updates
November 17, 2003 IBM 64 bit - Caché Floating Point Zero Boolean Issue
November 14, 2003 Caché Server Pages
November 6, 2003 CSP Error Messages Corrupt in Caché 5.0.4 Only
October 17, 2003 Microsoft IIS 6.0 on Windows 2003 with CSP
October 6, 2003 Caché Process Local Variable Corruption [VMS]
March 13, 2003 Caché Process Local Variable Corruption
September 26, 2003 Caché and McAfee product conflict
September 22, 2003 Update: Hyper-Threading and Caché
January 15, 2003 Intel's Hyper-Threading technology and Caché
July 28, 2003 Caché and MultiNet
July 23, 2003 Journal Suspension and Data Loss
June 27, 2003 Caché and write permissions on UNIX systems
June 23, 2003 Wrong answer for certain OR conditions when multiple index
strategy used
June 20, 2003 Caché Networking and New Format Databases, Addendum
June 20, 2003 Caché Networking and New Format Databases
May 20, 2003 Transaction Processing over DCP
May 14, 2003 Telnet Connections on Caché Windows
May 12, 2003 Caché and AIX
March 13, 2003 Caché Process Local Variable Corruption
March 7, 2003 Multi-homing and Caché Clusters on OpenVMS
January 15, 2003 Intel's Hyper-Threading technology and Caché


 



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
Reference Summary
JCN465 Port linuxit platform to GCC 3.2 compiler
ALE349 Revamped Apache CSP installation on Unix
MXT541 Use binary streams for XML content in web service and web client
PVA058 Fix issues with conditional table maps
SML413 Fix ECP lock zero time out.
MXT526 Correct security flaw in CSP broker.
RJW791 Preferred Server in Registry is not updated when changed
ALE258 Upgrade from 2.1.9 does not convert configuration automatically
JCN479 Build thirdparty executables for Linux on SUSE with GCC 3.2 compiler
DPV2102 LogicalToDisplay() will now report %EXTERNAL(xxx) as type VARCHAR.
MXT499 Fix bug in assigning names of classes created for inline complexTypes by the XML schema wizard
DPV2109 Fix incorrect setting of $Bit for SQLStorage
JCN440 Fetch password from registry if Username passed in matches registry entry
DPV2053 Fix privilege checking with privileges granted indirectly through roles
DPV2131 Order By DESC does not always work with $Piece mapping
HYY837 Fix a problem with index sorting handling wide character strings
LFT1166 INTEGRIT misses database error on 2K database
RFD095 Fix ^SHUTDOWN hang on cluster recovery
RFD066 Allow process to recover MONITOR sessions
JO1742 Resolve issues using GTABSZ as maximum global reference length for 2KB databases
DMD043 Fix a system quiesce problem caused by a missed wakeup to a slave write daemon
JCN452 Fix for WTS connections to loopback address
DPV2079 Correct <LOCK TABLE FULL> on DELETE
STC490 Fix MAXSCOPE error in DDPMASTER
GK255 Fix the way journal checkpoint was used
CFL984 Fix DDP configuration startup issue
MAK942 If %SYS database was 2K then CSP could get SUBSCRIPT error
DLP1125 Add GetColumnExtInfo() method to %ResultSet

 


Possible Compatibility Issues
PLEASE EXAMINE THE REFERENCES IN THIS SECTION CAREFULLY.
They document necessary modifications to Caché for this version that may affect the way your applications are designed, implemented, executed and/or administered. Whether a given changes affects your system will depend on your use of the feature/facility noted.
If you need assistance in deciding whether any of these changes affect your application, please contact the InterSystems Worldwide Response Center for assistance.
Section Table of Contents

Category: Installation.UNIX
Platforms: Unix
DevKey: ALE349
Summary: Revamped Apache CSP installation on Unix

Description:

The CSP installation on Unix has been changed to use the same mechanism as on Windows and VMS. Previous versions of Caché installed the files into cgi-bin. With this change Caché does not use the /cachesys/csp directory with symbolic links anymore. Instead, <cachesys>/csp directory is set in the Apache configuration file (httpd.conf) and all CSP applications are executed from this directory. This eliminates most questions previously asked during this part of the install.

The URL to see the CSP systems management suite is now:

   http://<ip_address>/csp-bin/nph-CSPcgiSys.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: DAS458
Summary: Implement CacheBasic Sleep command

Description:

CacheBasic Sleep Command: The Sleep command suspends execution for the specified number of seconds. Its syntax is
SLEEP Interval
where Interval is the number of second to wait. Fractional seconds are supported. The resolution of the timer is the same as for the ObjectScript HANG command.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object
Platforms: All
DevKey: JCN465
Summary: Port Linux platform to GCC 3.2 compiler

Description:

The compiler for the Linux platform has been upgraded. The compiler is now GCC 3.2 which uses the new C++ standard; the previous compiler was 2.95.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical Yes

 



Category: Object.C++
Platforms: All
DevKey: IYB134
Summary: CPP Binding Erase removes selected element but nulls subsequent elements

Description:

The Vector Erase() method on the C++ side of the binding should work like the RemoveAt() method in Caché. It did not, but rather removed the selected element and all subsequent elements.

With this change, it now behaves as expected.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.C++
Platforms: All
DevKey: IYB137
Summary: Unicode character stream data is truncated on the right half

Description:

Under some conditions, the C++ binding would fail to return all of the characters in a string converted to Unicode. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1125
Summary: Add GetColumnExtInfo() method to %ResultSet

Description:

A new method, GetColumnExtInfo() has been added to %ResultSet. This method accepts the column number as an input parameter and will return a $list containing the class name and property name of the property corresponding to the column in the query. If the column is not based on a property then the returned information will be an empty $list.
Warning: As usual where upgrades are involved, this change requires that classes containing queries be recompiled. Failure to do so may result in <PARAMETER> errors under some circumstances.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: Object.Soap
Platforms: All
DevKey: MXT489
Summary: Add support for input and output of SOAP headers by SOAP web methods.

Description:

SOAP web services and SOAP web clients are enhanced to support input and output of SOAP headers within the SOAP envelope. This new header support works only for web methods that are defined as Methods in an instantiable class, not for ClassMethods. Web service methods can be plain Methods.
A new XML enabled class, %SOAP.Header, is introduced to represent a SOAP header. The mustUnderstand and actor attributes are defined as properties in the base class %SOAP.Header. The default for mustUnderstand is "0" and the default for actor is "".
Additional properties must be defined in the subclass that represents the header. The NAMESPACE parameter should be specified in the SOAP header subclass to specify the XML namespace that the SOAP header is defined in.
Two new properties and a new parameter are introduced in %SOAP.WebService and %SOAP.WebClient:
If any header in the SOAP request has mustUnderstand="1" and the header element name is not in the SOAPHEADERS list then a SOAP fault will be returned without processing the message.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT541
Summary: Use binary streams for XML content in web service and web client

Description:

The SAX parser interface was changed to treat characters streams as containing Unicode data. In fact, the streams used by web service and web client are actually in the encoding specified by the XML declaration at the beginning of the XML document. Therefore, web service and web client support now works with binary streams.
Externally visible effects of this change:

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB209
Summary: Double single quotes in literals won't work

Description:

This change corrects several issues regarding JDBC preparser processing literals with quotes inside and literals enclosed in parentheses. Double quotes are now treated as single quotes for parameters.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN460
Summary: Unicode stream data problem from VC++/ODBC

Description:

For European locales using single byte character sets or streams bound to the Unicode character type (SQL_C_WCHAR), the correct number of bytes of data is maintained when truncation occurs.

Applications can work around the original problem by binding the data to the Unicode datatype SQL_C_WCHAR


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.Query Processing
Platforms: All
DevKey: PVA058
Summary: Fix issues with conditional table maps

Description:

A problem has been fixed where errors like the following could occur if a conditional map is present for a table, and an SQL query using the table has host variables. From ODBC, JDBC, SQL Manager, and dynamic SQL Query, literals are converted to host variables, so this issue may occur even if the statements don't directly contain parameters or host variables. This situation does not occur if the conditional map is a NOTNULL map or the condition {ifn}'="" is in the map. It only occurs for other types of conditions.
The situation is manifest as the error code
<UNDEFINED> in range+19^%qaqpcmp
Warning: The conditional map option, ConditionalWithHostVars, now performs no function. This option indicated that host variables were not null, allowing queries against all conditional maps. With this change, host variables in queries are usable when null or not null.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: System
Platforms: All
DevKey: JLC559
Summary: Fix DTM color compatibility in %XDTM2

Description:

The following changes were made to the behavior of the /COLOR and /WOPEN mnemonics in %XDTM2:

  1. The colors in /COLOR(fg,bg) now follow this scheme:
    • 0 - Black
    • 1 - Blue
    • 2 - Green
    • 3 - Cyan
    • 4 - Red
    • 5 - Magenta
    • 6 - Yellow
    • 7 - White
  2. In /WOPEN, instead of always opening the window with white/black attributes both for the border and the interior, there are now two options:
    • If nothing else is specified, the previous colors establised via /COLOR(fg,bg) are used by both the border and the window interior.
    • Four extra parameters were added to /WOPEN so that it is now possible to specify the colors of the border and the interior separately as shown below.
/WOPEN(col,lin,wid,hei,bor,attr,battr,title,tpos,max,
       wfc,      /* Window foreground color */
       wbc,      /* Window background color */
       bfc,      /* Border foreground color */
       bbc)      /* Border background color */
Note: the "max" parameter is used only for DTM compatibility but is ignored by %XDTM2.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System
Platforms: AIX
DevKey: JLC566
Summary: Implement CPUS_USE_ONLN for AIX

Description:

When a logical partition (LPAR) is configured on AIX, for the purposes of licensing, Caché will count only the number of CPUs in the partition in which it is running. Previously the total number of CPUs configured in the machine would be used.

$system.Util.NumberOfCPUs() will also return the number of CPUs available in the current LPAR.

Note: This has no impact on concurrent-user-based licenses.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: SML388
Summary: Fix lock count inconsistencies.

Description:

On a DCP client, there was a small window during which the system could attempt to free an already-freed lock. This has been fixed.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: SML390
Summary: Serialize DDP request for each remote job.

Description:

Under some circumstances, an MSM client system attempting to gain a lock during a time of network instability could cause the DDP daemon to crash. This was caused by an mismatch in the systems' processing of lock/unlock requests. This has been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.Lock
Platforms: All
DevKey: SML413
Summary: Fix ECP lock zero time out.

Description:

If a lock is owned by another job on the ECP server, when ECP client does "Lock ^a(1):0" the lock command won't return until the lock is released on server. Previously, it returned immediately.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No
Critical Yes

 



Category: System.TCP Devices
Platforms: HPUX
DevKey: GK268
Summary: Disable TCP Nagle algorithm on all HP sockets.

Description:

This change disables the Nagle algorithm on all HP platforms. (It was enabled.)

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: Utilities
Platforms: All
DevKey: LFT1163
Summary: Add total pages to prompt in ^%SPOOL

Description:

This adds the total number of pages to the print prompt in ^%SPOOL.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Utilities
Platforms: All
DevKey: LFT1165
Summary: %GSIZE does not properly format the output for global names with > 10 characters.

Description:

This prevents the %GSIZE brief display from running the global name and number of blocks together, and also prevents splitting the global name and the number of blocks across lines, and also prevents splitting either the name itself or the number of blocks itself.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Other changes in this version
The following changes are deemed unlikely to affect applications in any significant manner. Nonetheless, InterSystems recommends examining them in view of your own application and system needs.
If you need assistance in deciding whether any of these changes affect your application, please contact the InterSystems Worldwide Response Center for assistance.
Section Table of Contents

Category: CHUI
Platforms: All
DevKey: SAP148
Summary: %DSMCVT gives <MAXARRAY> error on big string data when doing endian conversion.

Description:

Prior to this change, %DSMCVT could exceed the maximum array size when converting data from big-endian (Intel, Alpha) to little-endian (PA-RISC, SPARC) format. This would impede migration.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: Config Mgr
Platforms: All
DevKey: CFL979
Summary: Remote ECP databases cannot be read-only

Description:

With this change, the Read-Only check box is disabled when editing a remote ECP database.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Config Mgr
Platforms: All
DevKey: CFL984
Summary: Fix DDP configuration startup issue

Description:

Prior to this change, an incomplete DDP configuration would cause Caché startup to fail under some circumstances.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No
Critical Yes

 



Category: Control Panel
Platforms: All
DevKey: CFL862
Summary: Fix crash in Control Panel | ECP Network

Description:

A bug has been fixed where the Control Panel crashed under certain circumstances when you clicked on ECP Network.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Config Mgr
Platforms: All
DevKey: CFL986
Summary: Configuration Manager gets error 380 when 2K buffers > 4096MB

Description:

A a run-time "invalid property" error could occur when a 2KB cache size greater than 4096MB was specified. The Configuration Manager would terminate. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Control Panel
Platforms: All
DevKey: CFL967
Summary: Fix journal dump in Control Panel

Description:

Journal records containing $C(0) were not correctly displayed in the Control Panel. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Control Panel
Platforms: All
DevKey: CFL970
Summary: Fix Terminate for processes started via Job Servers

Description:

Prior to this correction, a user process started via the job server could not be terminated via Control Panel. RESJOB would have to be used to terminate certain processes.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Control Panel
Platforms: All
DevKey: CFL982
Summary: Control Panel doesn't show ECP incoming client node name for Locks

Description:

In previous versions, the Control Panel didn't show ECP incoming client node name for Locks. It does now.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Control Panel
Platforms: All
DevKey: HYY827
Summary: Fixed <UNDEFINED> error in control panel on source of shadowing

Description:

Fixed a potential <UNDEFINED> error occurrence in Control Panel in some unusual circumstances. When this happened, the Control Panel would close.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: CSP
Platforms: All
DevKey: MAK888
Summary: When importing a project from XML, modify the projects CSP paths if the CSP is imported to a different location

Description:

When a project containing a CSP file was exported from one namespace to another, the path for the CSP file in the new project remained as the original path, preventing the CSP file from being loaded. For example, from USER to SAMPLES namespace, an exported page would change from /csp/user/test.csp to /csp/samples/test.csp but the project would continue to refer to /csp/user/test.csp -- which prevented the item from being loaded from the project. Now, the correct path is created.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: CSP
Platforms: All
DevKey: MAK942
Summary: If %SYS database was 2K then CSP could get <SUBSCRIPT> error

Description:

CSP keeps an association of URL to class names to speed up finding the correct class to call. A <SUBSCRIPT> error sometimes occurred when %SYS was a 2K database. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: CSP
Platforms: All
DevKey: MXT526
Summary: Correct security flaw in CSP broker

Description:

This change removes a security flaw in the CSP broker facility.
Note: for details, see the item dated December 4, 2003 referenced in the alerts and advisories section above.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT130
Summary: Modify the Network Services Daemon clients such that they return the new CGI environment variable

Description:

With this change, the Network Servces Daemon clients have been modified such that they will now return the new CGI environment variable 'HTTP_X_UP_SUBNO' to the daemon.

This variable can now be requested via the 'Extra CGI Environment Variables' directive.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT131
Summary: Improve the mechanisms for requesting extra CGI Environment Variables.

Description:

Current versions of the Gateway will automatically pass the following CGI Environment Variables to Caché with each and every request.

The Gateway can also be configured to send extra variables to Caché using the following configuration parameter (under the 'Application Access' section):

Extra CGI Environment Variables

This is a comma-separated list of extra variables required by the application. The wildcard character '*' can be used to request all environment variables.

This facility works well for the Gateway's ISAPI (IIS) and NSAPI (iPlanet) based connectivity options because the DLLs (or UNIX Shared Objects) have a close working relationship with the web server and, as such, can easily request extra variables from their hosting environment. However, with NSD-based connectivity solutions (e.g. as commonly used for Apache under UNIX) things are slightly more complicated because the environment variables have to be passed from the Gateway's CGI module (or Apache API module) to the NSD for further processing. The web-server facing modules do not have access to the Gateway's (the NSD in this context) configuration and cannot know which extra variables are required by the application.

The CSP CGI modules will transmit all the variables listed above to the NSD with each and every client request. Other non-listed variables are packaged up into a single variable called 'ALL_ENV'.

Customers using previous versions of the NSD-Gateway addressed the problem of requesting extra variables by configuring the Gateway to send 'ALL_ENV' to Caché. The application could then extract the appropriate individual variables from this compound field.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: CSP.Gateway
Platforms: Unix
DevKey: CMT139
Summary: Improve the Gateway responsiveness with regards honoring the 'Server Response Timeout' at initial connection time.

Description:

This change improves the Gateway's responsiveness with regards to honoring the 'Server Response Timeout' at initial connection time. It introduces techniques that will make sure that the operating system gives-up trying to establish a connection after a preset period of time (i.e. the Gateway's 'server response timeout' value). This enhancement is only applicable to UNIX/Linux systems.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: CSP.Net
Platforms: All
DevKey: MAK883
Summary: %Net.FtpSession Retrieve method returns 0 when successful

Description:

The Retrieve method of the %Net.FtpSession would often return 0 instead of 1 even though it had retrieved the stream from the remote system correctly. It has been changed to consistently return 1 when successful.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: CSP.Tags
Platforms: All
DevKey: YSD648
Summary: Web Form Wizard: lower-case HTML tags for XHTML compatibility

Description:

HTML tags must be lower case for XHTML compatibility. This has been fixed in form wizard and studio new csp page, (since HTML tags are generated as well as csp tags) and in the CSP compiler where it generates script and applet tags.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: CSP.Web Server
Platforms: All
DevKey: MAK863
Summary: Fix minor problem with built-in web server not detecting sessionId

Description:

If a page is submitted to the built-in web server that uses a multipart MIME post (typically a file upload page), and cookies are turned off, then CSP embeds the CSPCHD token in the page. The built-in web server was not detecting this sessionId correctly. On a private page, it would report that you were logged out and could not perform this action.

This only affected the built-in web server. Using CSP from a real web server works correctly in this case.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: CSPGUI
Platforms: All
DevKey: YSD690
Summary: CSP Form Wizard - Disable 'readonly' setting for embedded properties

Description:

The ReadOnly checkbox is now not active for embedded properties of persistent classes and for the %ID field.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Cube
Platforms: Windows
DevKey: RJW791
Summary: Preferred Server in Registry is updated when changed

Description:

Changing the preferred server in the Caché Cube now immediately updates the registry. It no longer waits for the Cube to exit before updating the registry value.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: Documentation
Platforms: All
DevKey: GAB019
Summary: Use server name for class reference documentation

Description:

Prior to this change, the Caché Class Reference documentation was obtained from "localhost". Now the CSP page uses the name of the server it is executing on.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Explorer
Platforms: OpenVMS
DevKey: CFL969
Summary: Fix Export/Import in V mode in Explorer on VMS

Description:

A correction was made in the case where a global exported via Explorer in Variable Length Record format on VMS not be formatted properly and could not be imported by Explorer or %GI.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: Installation
Platforms: All
DevKey: LRS719
Summary: Fix issues with running user-defined installation routines

Description:

The running of customer-defined routines from cbootuser.rsa has been made more robust, so that they are better isolated from the INSTALL routine code and any errors that might occur during their execution are trapped and logged, and the installation continues.

Note that customer-defined routines are called via DO as they are loaded. Thus, they should not have an argument list on the main entry tag. If more than one routine is loaded, and there are dependencies among them, the user should ensure that all dependent routines are loaded before they are used.

Additionally, customer-defined installation routines should not OPEN, USE, CLOSE, or READ the principal device. It is preferable to avoid doing any I/O using the principal device.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Installation.UNIX
Platforms: AIX
DevKey: LRS733
Summary: Modify parsing of lsattr command output under AIX, in cplatname

Description:

On some AIX systems, cinstall was not recognizing logical partitions with high processor numbers. This has been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Installation.Windows
Platforms: All
DevKey: ALE258
Summary: Upgrade from 2.1.9 does not convert configuration automatically

Description:

The installation wasn't able to determine configuration and network file names correctly. Therefore conversion didn't happen and the upgrade could not proceed. This is corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE289
Summary: Install CSP Gateway modules for Apache2 and configure Apache2

Description:

The standard installation installs the CSP Gateway and configures Apache 2.0 for the Gateway, when Apache 2.0 is already installed. To select another web server, use the custom installation.

The URL to see the CSP systems management suite is now:

   http://<ip_address>/csp/bin/Systems/Module.cxw


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE307
Summary: Install files for server localization

Description:

Caché now installs files required for server localization. These files include CSPMessages*.xml, Errors*.xml, ObjectMessages*.xml and NLS *_src.goq and *_obj.goq files.

Due to the large size of goq files for Asian languages (Chinese, Japanese, Korean), they are not installed by default. There is an option that is part of the Unicode custom install under "Caché Server" to install them.

All xml files, goq files for all western languages and all files for installation language are installed. These files are installed under CacheSys\Mgr\Locale


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE313
Summary: Install Hungarian NLS goq files

Description:

The hun.goq files are installed in CacheSys\Mgr\Locale.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: CDS394
Summary: Fix Basic compiler failure on function call with no parameter list

Description:

Under some circumstances, the Basic compiler would overflow the argument stacxk when compiling functions with no argument list. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: JN087
Summary: Unary + operator now supported in Basic

Description:

The unary minus operator now does the expected numeric conversion. Prior to this change, it would be ignored under some circumstances.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Misc
Platforms: All
DevKey: JCN479
Summary: Build thirdparty executables for Linux on SUSE with GCC 3.2 compiler

Description:

InterSystems now has switched to build on SUSE with GCC 3.2 rather than RedHat. RedHat executables built previously use GCC 3.2.3 and are not compatible with the 3.2 release of the compiler on SUSE.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical Yes

 



Category: Networking
Platforms: All
DevKey: GK254
Summary: Fixed recovery of partially processed ECP requests

Description:

Upon server restart, when the last partially processed request buffer is received, it will skip already-processed/duplicate individual requests properly.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Networking
Platforms: All
DevKey: GK255
Summary: Fix the way journal checkpoint was used

Description:

The write journal checkpoint processing was improved to better handle system interruptions. Previously, there were cases when the system might have concluded that journalling was turned off.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical Yes

 



Category: Networking
Platforms: All
DevKey: GK257
Summary: Fixed error-trap error frames.

Description:

The error processor may attempt to get the routine source info, but that operation may fail because the network is not available. Typically, this results in the message "Error encountered while processing an error" being written to the cconsole.log file. This condition is now recognized and the extra message avoided.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Networking
Platforms: All
DevKey: GK258
Summary: ECP clients are not picking up ClientReconnectDuration value changes

Description:

Previously, ECP Timeouts were not persistent. Changes with the Configuration Manager will persist now with this change.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Networking
Platforms: All
DevKey: GK259
Summary: ECP updates locally cached block of readonly DB.

Description:

Caché ECP has been changed to honor readonly DBs. ECP will return <PROTECT> error before the request is sent to the server. In some situations, ECP updated the local cache before sending the request; the request failed but left the updated local cache intact with incorrect data.
Note: this change is message level compatible, backward and forward, except older versions will not honor the readonly state.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Networking
Platforms: All
DevKey: GK261
Summary: Defining an ECP client causes DCP to fail during startup

Description:

In prior versions, defining an ECP client would cause incorrect port numbers to be assigned legacy network nodes. This has been corrected.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: Networking
Platforms: OpenVMS
DevKey: LFT1157
Summary: EIA0: not recognised as ethernet device

Description:

This change adds EIA0 to the ETHERNET_DEVICE_LIST for VMS

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Networking
Platforms: All
DevKey: STC490
Summary: Fix MAXSCOPE error in DDPMASTER

Description:

In some rare cases when using DDP in a clustered environment, the DDP master process could receive a MAXSCOPE when restarting after an error. This has been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: Networking
Platforms: All
DevKey: TTS031
Summary: Fix Intersystems packet driver

Description:

The InterSystems packet driver is now fully "plug-and-play" compliant.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: Object
Platforms: All
DevKey: DVU892
Summary: Remove word "Caché" from Studio and Connection Manager title bar

Description:

Remove "Caché" from the title bar of Studio and Connection Manager. Remove "Caché" from menu item Help->About (Caché) Studio.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object
Platforms: All
DevKey: MAK865
Summary: Under some conditions, the class index and actual classes present could get out of sync

Description:

In some circumstances, a user could delete a class but the class index for this item was not updated at the same time. These have been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object
Platforms: All
DevKey: MAK886
Summary: XML import fails with <MAXSTRING>endCSP+16

Description:

Importing large CSP files that were exported as XML may cause <MAXSTRING> errors on import in some cases depending on where the record boundaries fall with regard to the XML structure. This no longer happens.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object
Platforms: All
DevKey: MC422
Summary: Update RoseLink

Description:

The following enhancements have been made to Caché Roselink:

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object
Platforms: All
DevKey: MC453
Summary: GetErrorText to return multiple errors

Description:

GetErrorText has a defect that prevented it from returning multiple errors. This is fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Activate
Platforms: All
DevKey: JN169
Summary: Prevent <list> error importing objects with huge enumerations

Description:

Caché would report a <LIST> error when importing Many Microsofts CDO objects at once. This was caused by the object having a very large enumeration which overflowed the 32K maximum length of a string, thereby corrupting the list. This has been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.ActiveX
Platforms: All
DevKey: DPV2102
Summary: LogicalToDisplay() will now report %EXTERNAL(xxx) as type VARCHAR.

Description:

Any column prepared via xDBC of the type %EXTERNAL(xxx) will now report as type VARCHAR.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU903
Summary: Fix application interruption caused by release of uninitialized binarystream.

Description:

Prior to this change, if a CacheObject.BinaryStream instance was allocated but not used, the application would report an error when the instance was released. This no longer happens.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1123
Summary: Generate additional query metadata

Description:

The GetInfo() method of all queries has been extended so additional metadata can be returned. Specifically, another formal argument has been added to GetInfo() that is a pass-by-ref argument. If this argument is sent a true value when GetInfo() is called then GetInfo will return extended info in the same argument. At this time, the extended information is a list that corresponds to the colinfo list. Each element in the list is the property name corresponding to the column contained in the same element position in the colinfo list. If the column is not based on a property, then the element value will be "".

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1136
Summary: Add STMTTYPE to extended query metadata

Description:

A new method has been added to %ResultSet - GetStatementType(). This method returns a number corresponding to the SQL statement type.

Other values are also possible but are not common statement types for %ResultSet queries.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1158
Summary: Tunetable info overwritten by XML load

Description:

Selectivity values defined in the storage definition of a class are retained when the class is loaded from CDL or XML files. Selectivity values contained in the CDL/XML file will overwrite any saved selectivity values.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK828
Summary: Do not generate member method code if this method is overridden by user code

Description:

Caché generated the default method for Get even if it was overriden. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK829
Summary: Allow multiple arguments to an object constructor %New method

Description:

With this change, up to ten parameters are permitted to be passed to the %New method. These are in turn passed to the %OnNew method to allow more flexibility in creating a new object.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK860
Summary: Prevent <UNDEFINED> in the class compiler when a dependency error exists.

Description:

When you compile some classes with a dependency error after reporting this error the class compiler was reporting:
<UNDEFINED>CompileList+66^%occCompile
Now it just reports the dependency error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK876
Summary: Prevent potential clash in use of ^CacheTempMAC if compiling a class with the same name in two namespaces at same time

Description:

If a class with the same name is present in two namespaces and it is compiled at the same time then there is a potential clash in the ^CacheTempMAC global which could result in the class compile failing when it should work correctly. This usage collision is now avoided.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK884
Summary: Report errors making class descriptor better

Description:

When creating the class descriptor if the routine to call for a method is invalid report an error message of the problem rather than failing with an <UNDEFINED> error. The message should allow the real cause of the error to be tracked down more easily.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK891
Summary: Should use lock escalation when compiling huge number of classes

Description:

Compiling a large number of classes in a namespace may fill the lock table or the internal system class lock, causing the compilation to fail with a lock table full error or <TOO MANY CLASSES>. Now, this no longer occurs but only one large namespace (4,000 classes or more) may be compiled at a time.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK897
Summary: Resolve ambiguous optimization in class compiler

Description:

The compiler now correctly optimizes code of this syntax:
Do ..Method().OtherMethod()

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Java
Platforms: All
DevKey: MAB207
Summary: Enhancement in Dynamic Java Binding when there is no Projected Java class

Description:

The Caché Java Reflection now uses a generic projection instead of a projected Java class.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.Java
Platforms: All
DevKey: MAB210
Summary: Fixes in Java client side collections

Description:

A server error message now is reported instead of an ArrayIndexOutOfBounds exception when there is an error fetching an object collection from the server.

The method SList.addAll() now successfully insert into an empty SList.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Java
Platforms: All
DevKey: MAB236
Summary: Support for Fileman Date and Timestamp in Java client

Description:

Caché now projects to Java clients properties of type %Library.FilemanDate and %Library.FilemanTimeStamp to java.sql.Date and java.sql.Timestamp, respectively.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1261
Summary: Fix Java compile problems when reserved words are used

Description:

If the user uses certain names in their program, it used to be the case that the generated program would not compile because of conflicts with names used in CacheDB.jar. Now Caché prefixes such names with an underscore. This resolves the conflict and the generated code will now compile.

Also get/set{Database/Id} are changed to get/set_{Database/Id} (underscore has been added between the get or set and the name).


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1295
Summary: Support Fileman Date and Timestamp in generated Java binding

Description:

Properties of %FilemanDate and %FilemanTimeStamp types are created in the Java projection.
Note: These types are not yet supported in BulkInsert or the C++ binding.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.Library
Platforms: All
DevKey: MAK900
Summary: Type of argument to IsValid property method was incorrect

Description:

The property IsValid method was always taking an argument of type %String but this is incorrect as some of the arguments may not be %String type. This now takes arguments of a type which allows any class to act as a subclass.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Relationships
Platforms: All
DevKey: MAK893
Summary: Prevent <UNDEFINED> error in %AddToSaveSet when saving a relationship object

Description:

When an application attempted to save a relationship object, under some circumstances %AddToSaveSet would report an <UNDEFINED> error. This no longer happens.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT483
Summary: WSDL reader extensions to handle WSDL for UDDI specification.

Description:

If no services are specified in a WSDL, then create a web client proxy class for each binding. The UDDI WSDLs are of this form. The default classname for this class is <BindingName>.<BindingName>.

Allow a web client class to not have a LOCATION parameter specified. In this instance, the location will need to be specified at run-time.

Change method name handling to replace _ and - with "" instead of "u" as previously.

Extend the web client to handle lists (i.e. maxOccurs="unbounded" in the schema) as method arguments in a document/literal WSDL. Changes required are:

  1. Support argument parameters for a web method by converting these parameters to property parameters in the %SOAP.Descriptor class for the web service or web client.

  2. As an exception to (1), if the type of an argument is %ListOfObjects or %ListOfDataTypes and ELEMENTTYPE is specified as a argument parameter, then create the property in the %SOAP.Descriptor class with the type given by the ELEMENTTYPE and Collection="list". This gives us a way to easily create list argments to a web method.

  3. The WSDL reader uses (2) in order to handle maxOccurs="unbounded" for the input or output parameters.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT487
Summary: Make SOAP web client class instantiable.

Description:

The SOAP client wizard now generates a new, instantiable form of client classes. This new form is recommended for all future usage. The new (instantiable) form is now generated by the SOAP client wizard, is recommended and will of course also work.

The SOAP web client has been modified to be an instantiable subclass of %RegisteredObject. The web methods generated by the SOAP WSDL reader will be now be instance methods. The current ClassMethods will continue to work.

Additional properties will be added to the %SOAP.WebClient class to allow control of the SOAP request:

%SOAP.WSDL.Reader (and therefore the SOAP client wizard) are changed to create instantiable web client classes using the new properties defined above.

Note: The old form continues to work.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT488
Summary: Allow use of transport protocol other than HTTP for SOAP web services

Description:

To implement a web service using your own transport, get the SOAP message as a stream using your transport, instantiate the web service class and call the OnSOAPRequest class method of the web service class. On SOAPRequest is defined as:
Method OnSOAPRequest(action, requestStream, responseStream)
where
An error will be indicated by returning a SOAP fault in response stream. No %Status is returned.

A SOAP transport class may be specified to %SOAP.WebClient by setting the Transport property of the web client to an instance of the transport class. The SOAP transport class may specify the DoSoapRequest method for the client class and may have additional properties to be used by the transport class.

If no transport class is specified the default transport is HTTP.

To implement a web client, the transport class should contain a DoSOAPRequest method that will be called by the web client with the request. The web client class MUST be an instantiable web client. The deprecated web client that uses class methods does not support use of a transport class. The responsibility of DoSOAPRequest is to transport the request to the service and obtain the response. The signature of DoSOAPRequest is:

Method DoSOAPRequest(webClient,
                     action,
                     requestStream,
                     responseStream) As %Status
where

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT490
Summary: Web Services with SoapBindingStyle=rpc and SoapBodyUse=literal

Description:

Add support for SOAP web services and web clients with SoapBindingStyle=rpc and SoapBodyUse=literal.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT491
Summary: Use stream properties for %CharacterStream and %BinaryStream web method arguments

Description:

If a web method argument is %CharacterStream, %FileCharacterStream or %GlobalCharacterStream, use a character stream property in the %SOAP.Descriptor class for this argument. This allows the use of the CONTENT="mixed" property parameter with this argument. For example,
arg As %FileCharacterStream(CONTENT="mixed")
may be used for a mixed content character stream.

If a web method argument is %BinaryStream, %FileBinaryStream or %GlobalBinaryStream, use a binary stream property in the %SOAP.Descriptor class for this argument.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT492
Summary: Support one-way SOAP messages

Description:

A method in a web service may be defined to be "one-way". This definition is done by not defining an "output" message for the operation in the WSDL. In this case, the method must return no value and no SOAP response is expected to the message. The exact meaning of "no response" is somewhat open for interpretation. We will ignore any response except a SOAP fault which we will process as per usual. The idea will be to be as forgiving as possible to support various interpretations. Note that this is different from a request-response SOAP message (the usual form) with an empty response. In the request-response, case an empty response element within the SOAP Body is always expected.

The return type %SOAP.OneWay is used for both web service and web client methods to indicate that message is one-way. For example,

Method send(x as %String) as %SOAP.OneWay
One-way methods should normally not be used even when no return type is expected, since the use of request-response is much more common, supported and expected.

When implementing a SOAP web service transport, OnSOAPRequest will return an empty responseStream unless a SOAP fault occurs in which case the responseStream will contain the SOAP fault.

When implementing a SOAP web client transport, the callback now has an additional argument

Method DoSOAPRequest(webClient,
                     action,
                     oneWay,
                     requestStream,
                     responseStream) As %Status
where OneWay = 1 if the no response is expected. Default is 0.

Note additional argument in the middle for DoSOAPRequest.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT493
Summary: WSDL reader to avoid creation of ambiguous code

Description:

For web client method that returns no value, the WSDL reader will generate code with extra parentheses to avoid an ambiguous construct which causes problems for compiler optimizing. The code should be
Do (..WebMethod(methodname)).Invoke(....)

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT494
Summary: List arguments created by WSDL reader with ELEMENTTYPE need XMLNAME

Description:

When a list argument for a web method is needed, the WSDL reader needs to insure that the correct element name is kept by creating an XMLNAME property parameter. XMLNAME is needed because of the change of type from %ListOfObjects to the base type when creating property in descriptor class will use the XMLNAME in the base class which isn't correct.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT497
Summary: Allow override of method to write the SOAP body of a SOAP request

Description:

Allow a web client class to take responsibility for writing the SOAP body of the SOAP request. Specify the name of the method to call to write the SOAP body by putting the method name into the WriteSOAPBodyMethod property of the web client class. For example
Method test(..... [WebMethod]
{
   Set ..WriteSOAPBodyMethod="override"
   Do ..WebMethod("test").Invoke(.....
   Set ..WriteSOAPBodyMethod=""
}
The signature of the override method is
Method override(proxy As %SOAP.ProxyDescriptor, tag As %String) As %Status
where


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT498
Summary: Ignore web services other than SOAP services in WSDL

Description:

Ignore any services that a WSDL defines which bind to other than SOAP 1.1 bindings.

Also change to accept transport other than HTTP in the SOAP binding. Create a comment to describe the transport. It is the user's responsibility to create an appropriate transport.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT499
Summary: Fix bug in assigning names of classes created for inline complexTypes by the XML schema wizard

Description:

When names were generated for classes created for inline complexTypes by the XML schema wizard, some properties that referenced that type were not fixed up. Fixup of property type references is now correct.

Previously classes were considered identical and rmeoved if all property names were equal. This lead to unlike classes incorrectly being represented by a single class. This problem was fixed by a change to use equality of class parameters and property names, types and parameters to establish equality of classes.

Correct overly aggressive folding of type references into collections that lead to losing elements in XML.

Support includes a schema that has no target_Namespace and no default namespace. This situation is treated as the target_Namespace and default namespace being the same as the including schema per XML specification.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: Object.Soap
Platforms: All
DevKey: MXT501
Summary: Do not, by default, validate SOAP messages against a schema

Description:

Change the web service and web client classes to pass the SAX flags to the SAX parser as specified by the new SAXFlags property. The default for SAX flags will no longer do schema-based validation of SOAP messages. Since this level of validation is not really needed for SOAP, it hurts performance and causes problems with not knowing the location of the schema on the target system.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT503
Summary: WSDL Reader should not give error for soap:header

Description:

Ignore soap:header element in binding section. Previously an error was returned.

The header classes neeeded to manually put in headers are generated.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.Soap
Platforms: All
DevKey: MXT504
Summary: Fix method method names by WSDL reader not being unique

Description:

Class name is restricted to be unique in the first 25 characters. Make the descriptor classes for the generated web client be unique in 25 characters by truncating and appending unique a integer as necessary.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.XML
Platforms: All
DevKey: MXT463
Summary: Support NAMESPACE parameter of XML enabled classes.

Description:

This change adds support for the NAMESPACE class parameter for XML enabled classes. The NAMESPACE parameter specifies the XML namespace to be used when that class is projected to XML.

The NAMESPACE parameter is supported by %XML.Writer as the namespace to use when exporting a class. If the NAMESPACE parameter is specified for a class, then the namespace specified in the class is always used even if the DefaultNamespace property is specified for %XML.Writer or the namespace argument is specified for a %XML.Writer method.

However, direct calls to XMLExport ignore the NAMESPACE class parameter, since XMLExport does not directly support XML namespaces.

The NAMESPACE parameter is supported by %XML.Reader as the required namespace for a class when importing an XML document.

In addition, the XMLPROJECTION property parameter is extended with a new value, "elementref", that indicates that this element is defined by a ref= attribute to a global element, possibly in another namespace.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.XML
Platforms: All
DevKey: MXT479
Summary: Change XML Schema wizard to save namespace information

Description:

As an optional feature of the XML Schema wizard, the schema wizard saves XML namespace by using the NAMESPACE parameter of the generated classes and marking properties created for <element ref=...> tags as XMLPROJECTION="elementref". This behavior is controlled by the optional CreateNamespace %Boolean.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.XML
Platforms: All
DevKey: MXT480
Summary: Handle more general specification of parameters for document literal WSDL

Description:

For document literal WSDL, SOAP must to deal with a parameter element that does not specify complexType inline, rather it use type= attribute of the parameter element.

Allow specification of package name as an argument to Process method of %SOAP.WSDL.Reader to handle the case where default package name will not result in unique class names with class descriptor limits.

Do not require message elements to have a name attribute with value of "parameters".

Fix an issues where the SOAP wizard display would be blank for the file:// protocol.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Object.XML
Platforms: All
DevKey: MXT485
Summary: Cleanup XML schema reader api and allow control from UI

Description:

Add a new command line interface, Process, to %XML.Utils.SchemaReader that is instantiated and controlled by setting properties. Keep the existing ProcessSchema interface. Modify ParseSchema to use the same properties.

The properties that control %XML.Utils.SchemaReader are:

Add flags to the user interface template to allow control of MakePersistent, MakeRelationships and MakeNamespace.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.XML
Platforms: All
DevKey: MXT502
Summary: XML Schema Reader fixes

Description:

Implement <xs:any> element as an element with type of %XML.String and XMLPROJECTION="any" which is a new XMLPROJECTION that just displays the property value with no containing tag. The property must be defined with CONTENT="mixed" and the value should have a containing tag.

XMLPROJECTION="elementref" was not being generated for ref= of element with type attribute specified. This has been fixed.

Make a created class Abstract if the abtract="true" attribute is specified for a top-level complexType or element.

Allow character and binary stream properties to have XMLPROJECTION="content".


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Object.XML
Platforms: All
DevKey: MXT522
Summary: Fix ExportToString reporting <MAXSTRING> error

Description:

This method has been changed to return error %Status if result of ExportToString will be > 32K.

Add ByRef %Status return argument to GetXMLString method of %XML.Writer. Method signature is

Method GetXMLString(ByRef status As %Status) As %String
Return error %Status if result string > 32K.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV1873
Summary: Support LENGTH(expr) as SQL Scalar function

Description:

We now support LENGTH(expr) as a synonym for {fn LENGTH(expr)}

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV2020
Summary: Correct error reporting during preparsing in Dynamic SQL

Description:

If an SQL Dynamic Query results in an error during SQL preparsing, the error will now be returned properly rather than crashing. For example:
USER>Set rs = ##class(%ResultSet).%New("%DynamicQuery:SQL")
USER>Set xx="Select %ID From Sample.Person Where Name like ""A%' order by Name"
USER>Set sc = rs.Prepare(xx)
USER>Do $SYSTEM.OBJ.DisplayError(%objlasterror)

ERROR #5521: SQLError: SQLCODE = -3
 SQL ERROR #3: Closing quote () missing^Select %ID
   From Sample.Person Where Name like "A%' order by Name
Prior to this fix, Set sc = rs.Prepare(xx) would crash with an <UNDEFINED> error and the query would fail.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV2076
Summary: ConvertDollarH2Date ignores $$SetDCFormat^%NLS("DateSeparator",".")

Description:

An issue has been fixed where the wrong value might be returned from the SQL TO_DATE function is the process was using a non-default DateSeparator and/of DateFormat.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV2079
Summary: Correct <LOCK TABLE FULL> on DELETE

Description:

A problem has been fixed which was introduced in Caché 5.0.3 where the lock table could fill up if thousands of rows were deleted from a table within a single transaction and the table had at least one unique constraint defined on it. When this happened, application would hang or terminate.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: SQL
Platforms: All
DevKey: DPV2088
Summary: Fix problems with Foreign Key constraints and $Piece access type

Description:

In some situations, a class compilation might result in a generated syntax error in the compiled table routine if the table had a single field foreign key constraint and the field in the foreign key was mapped in a subscript level of a map using an Access Type of Piece (in %CacheSQLStorage). This has been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV2089
Summary: Implement many SQL Functions in $SYSTEM.SQL.<Function>()

Description:

The following SQL Functions have been provided as API entry points in $SYSTEM.SQL.<Function>() so they can be easily called from ObjectScript code.
$SYSTEM.SQL.ABS(val)
ABS returns the absolute value, which is always zero or a positive number
$SYSTEM.SQL.ALPHAUP(stringexp)
ALPHAUP returns the Alphaup collation of the passed in value
$SYSTEM.SQL.CEILING(val)
CEILING is a scalar numeric function that returns the smallest integer greater than or equal to a given numeric expression
$SYSTEM.SQL.DATEADD(datepart,val,dateexp)
DATEADD is a general date/time function that returns a date calculated by adding a certain number of date parts (such as hours or days) to a specified timestamp
$SYSTEM.SQL.DATEDIFF(datepart,startdate,enddate)
DATEDIFF is a general date/time function that returns the interval between two dates
$SYSTEM.SQL.DATENAME(datepart,dateexp)
DATENAME is a general date/time function that returns a CHARACTER STRING containing the name of the specified date part of a date/time value.
$SYSTEM.SQL.DATEPART(datepart,dateexp)
DATEPART is a general date/time function that returns an INTEGER representing the specified date/time part of the specified date/time expression.
$SYSTEM.SQL.DAYNAME(dateexp)
DAYNAME is a date/time function that returns a character string containing the name of the day in a given date expression.
$SYSTEM.SQL.DAYOFMONTH(dateexp)
DAYOFMONTH is a date/time function that returns an integer from 1 to 31 that corresponds to the day of the month in a given date expression.
$SYSTEM.SQL.DAYOFWEEK(dateexp)
DAYOFWEEK is a date/time function that returns an integer from 1 to 7 that corresponds to the day of the week in a given date expression.
$SYSTEM.SQL.DAYOFYEAR(dateexp)
DAYOFYEAR is a date/time function that returns an integer from 1 to 366 that corresponds to the day of the year in a given date expression.
$SYSTEM.SQL.FLOOR(val)
FLOOR is a numeric function that returns the largest integer less than or equal to a given numeric expression
$SYSTEM.SQL.HOUR(timeexp)
HOUR is a date/time function that returns an integer from 0 to 23 that corresponds to the hour component in a given date-time expression.
$SYSTEM.SQL.MINUTE(timeexp)
MINUTE is a date/time function that returns an integer from 0 to 59 that corresponds to the minute component in a given date-time expression.
$SYSTEM.SQL.MONTH(dateexp)
MONTH is a date/time function that returns an integer from 1 to 12 that corresponds to the month in a given date expression.
$SYSTEM.SQL.MONTHNAME(dateexp)
MONTHNAME is a date/time function that returns a character string containing the name of the month in a given date expression.
$SYSTEM.SQL.QUARTER(dateexp)
QUARTER is a date/time function that returns an integer from 1 to 4 that corresponds to the quarter of the year in a given date expression.
$SYSTEM.SQL.SECOND(timeexp)
SECOND is a date/time function that returns an integer from 0 to 59 that corresponds to the second component in a given date-time expression.
$SYSTEM.SQL.SQLSTRING(stringexp,maxlen)
SQLSTRING returns the SqlString collation of the passed in value
$SYSTEM.SQL.SQLUPPER(stringexp,maxlen)
SQLUPPER returns the SqlUpper collation of the passed in value
$SYSTEM.SQL.STRING(stringexp,maxlen)
STRING returns the String collation of the passed in value
$SYSTEM.SQL.TOCHAR(expr,format)
TOCHAR is a general SQL string function that converts a given date or number value to a string.
$SYSTEM.SQL.TODATE(dateexp,format)
TODATE is a general SQL string function that converts a given string expression to a value of DATE data type.
$SYSTEM.SQL.UPPER(stringexp)
UPPER returns the Upper collation of the passed in value
$SYSTEM.SQL.WEEK(dateexp)
WEEK is a date/time function that returns an integer from 1 to 53 that corresponds to the week of the year in a given date expression.
$SYSTEM.SQL.YEAR(dateexp)
YEAR is a date/time function that returns an integer in the range 1840-9999 that indicates the year in a given date expression.
For more information about each of the functions above, see the documentation for the matching SQL function in the Caché SQL Reference.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV2093
Summary: Implement $LIST, $LISTDATA, $LISTFIND, $LISTGET, $LISTLENGTH, and $PIECE functions

Description:

The following new SQL Scalar functions have been implemented. The functions mimic the ObjectScript functions of the same name.

$PIECE(plist,delimiter,from,to)
This function returns data of type VARCHAR
$LIST(list,position,end)
This function returns data of type VARCHAR
$LISTDATA(list,position)
This function returns data of type SMALLINT.
$LISTFIND(list,value,startafter)
This function returns data of type SMALLINT.
$LISTGET(list,position,default)
This function returns data of type VARCHAR.
$LISTLENGTH(list)
This function returns data of type SMALLINT.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV2100
Summary: SQL: Implement $EXTRACT, $FIND, and $LENGTH functions

Description:

The following new SQL Scalar functions have been implemented. The functions mimic the ObjectScript functions of the same name.
$EXTRACT(expression,from,to)
This function returns data of type VARCHAR
$FIND(string,substring,position)
This function returns data of type SMALLINT
$LENGTH(expression,delimiter)
This function returns data of type SMALLINT

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV2109
Summary: Fix incorrect setting of $Bit for SQLStorage

Description:

A defect has been fixed where SQL INSERT, UPDATE, and DELETE did not work properly if a table had a Bitmap Extent index, but no Bitmap index.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: SQL
Platforms: All
DevKey: DPV2140
Summary: SQL Fix: Handle DataAccess expression with "(" in global name

Description:

A bug has been fixed where a class using %CacheSQLStorage with a DataAccess expression that contains a global reference with a "(" in the global name would not compile properly. An example DataAccess expression which caused the problem is:
^[$Piece(IVIndex({L1}),"^",1)]IVPatient

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV2143
Summary: SQL Fix: Support global reference with a "(" but no subscripts.

Description:

A bug has been fixed where a table and queries against a table would not compile if there was a mapping to a global which contained no subscripts, but there was at least one "(" in the global reference. An example global reference which caused the problem is:
^[$Piece(%NSP({L1}),"^",1)]IPatientSys

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV2151
Summary: Keep class definition up-to-date after tuning the table

Description:

After tuning a table, the class definition that projected the table definition will be marked as up-to-date. The class definition will be updated with the new EXTENTSIZE and SELECTIVITY parameter values, but will not be marked as modified.

All dynamic SQL and xDBC SQL queries will use the new EXTENTSIZE and SELECTIVITY values the next time the query is prepared. Class queries, embedded SQL in a class definition, and stand-alone routines must be manually recompiled for the queries to be optimized with the new values.


Likelihood High
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: SQL
Platforms: All
DevKey: DPV2158
Summary: Do not tune external tables; keep-up-to-date now configurable

Description:

There is a new parameter to TuneTable called KeepClassUpToDate. This flag takes 1 or 0. If 1 is passed in the table/class will be tuned and the EXTENTSIZE and property SELECTIVITY settings will be updated in the class definition, but the class timestamp will not change, which means the class will still be considered up-to-date. If 0 is passed in, the class definition timestamp value will be updated and the class will be considered NOT up-to-date. The default value for KeepClassUpToDate is 0.

The API calls to TuneTable are now defined as:

Do $SYSTEM.SQL.TuneTable(<table name>,<update>,<display>,.errors,<KeepClassUpToDate>)
and
Do TuneTable^%apiSQL((<table name>,<update>,<display>,.errors,<KeepClassUpToDate>)
SQL Manager has not been updated yet to allow the setting of the up-to-date flag for the class when tuning the table. This will be added in the near future.

There is also one other change in behavior. When all tables are tuned (by calling (Do $SYSTEM.SQL.TuneTable("*",...)), the utility no longer attempts to gather statistics for and tune External tables linked through the SQL Gateway.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: SQL.DDL
Platforms: All
DevKey: DPV2078
Summary: DDL CREATE TABLE/VIEW works when security is off and user not logged in

Description:

A bug has been fixed where it was not possible to create a table or view through SQL Manager if SQL Security was turned off and no username was provided upon log in to the SQL Manager. Now, if this scenario occurs, the table or view will be created with an owner of _SYSTEM.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND363
Summary: Set current row to 0 (before first) after delete/insert/updateRow has been executed

Description:

Until now, Caché attempted to restore the current row after deleteRow, insertRow or updateRow was executed. Under some conditions, this can possibly result in invalid cursor state. With thischange, Caché sets the current cursor position to BEFORE FIRST (0) right after refetching the result set.

ResultSet.getRow() was also corrected so that it returns 0 if the cursor is positioned before/after the first/last row.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.JDBC
Platforms: All
DevKey: JCN428
Summary: Add jdbc documentation to javadoc

Description:

This change allow the building of documentation for jdbc classes: com.intersys.jdbc.CacheConnectionPoolDataSource and com.intersys.jdbc.CacheDataSource

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN440
Summary: Fetch password from registry if Username passed in matches registry entry

Description:

The SQLDriverConnect API prompts for a password if DSN and UID are passed in without specifying the password, regardless of what exists in the registry for the password value. The password will now be read from the registry if the password is not passed and the UID passed into SQLDriverConnect matches that found in the registry.

This was affecting Crystal Reports use.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN451
Summary: Display DSN Help as single screen

Description:

The Help for Caché ODBC DSN has been streamlined. It was changed to just display one screen of help and skip displaying the index and find tabs.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN452
Summary: Fix for WTS connections to loopback address

Description:

Connections from Terminal Server processes via the loop back address were not getting counted properly as separate connections. Now they are.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN454
Summary: SQLGetData returns uneven byte length for Unicode

Description:

When performing a Link to a Table from MS-Access, and then opening it results in the error message "The Width of a Unicode text column must be an even number of bytes". This has been corrected.