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


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

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

This document contains several sections:
InterSystems advises all users to recompile their applications as part of the upgrade process so as to take advantage of all the performance improvements as well as other changes that may affect them in this release.
Known Regressions In Functionality
The following regressions in functionality are known to exist in this release and may adversely affect applications. If you need an immediate correction for any of these defects, please contact the InterSystems Worldwide Response Center.

They will be fixed in a future maintenance release.


Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate importance to users of our software. These include alerts, mission critical issues, important updates, fixes, and releases of Caché.

The most current list can be obtained from the InterSystems Website.

Users should check this list periodically to obtain the latest information on issues that may have an effect on the operation of their site.


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

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


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

 



Category: Config Mgr
Platforms: All
DevKey: CFL1014
Summary: Add async disconnect switch to Config Manager

Description:

A new switch has been added which allows processes connected to a Windows system via telnet to receive a <DSCON> disconnected error asynchronously at the time the disconnect occurs. The default behavior is to give the error only on the next READ command. This switch has no effect unless disconnect errors are enabled with $ZU(68/69,15,1). The new switch is $ZU(68/69,60,1).

This change adds the parameter, AsyncDisconnectErr, to the Miscellaneous section of the .cpf file.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: CSP
Platforms: All
DevKey: MAK1455
Summary: When ending a CSP session make sure the session global is present

Description:

If a user CSP application

it was possible for the CSP daemon to clean up this license just before the process running this connection exited. In fact, the license and session information would get cleaned up twice.

With this change, the end session code gets another lock on the CSP session before doing anything with this in case the user code released this lock. If the session global is empty, then it knows someone else has removed the session so it has nothing to do. Also the CSP daemon will time the session out just slightly slower than the process exiting so the actual process gets to close the session properly first before the daemon tries to close it.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MXT536
Summary: CRLF in a string breaks #server()#

Description:

This change adds code to handle the case where the characters $c(13) and $c(10) occur inside the #server directive.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MXT693
Summary: Applet version of #server has some locale inconsistencies

Description:

This change always forces JavaScript conversion of #server arguments to strings which will always use periods in a decimal number. Previously, when using the Java applet, #server relied on Java LiveConnect conversion of a number to a string. Internet Explorer used the current locale for this conversion (for example, ",", for non-English locales) and Mozilla used JavaScript conversion (always "."). Now all browsers consistently use JavaScript conversion.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Net
Platforms: All
DevKey: MXT691
Summary: %Net.SMTP BCC written to mail header

Description:

This changes the default behavior of %Net.SMTP to not write Bcc headers into the email message.

The ShowBcc property has been added to %Net.SMTP which, if set to 1, will keep the old (incorrect) behavior of sending the Bcc headers.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: Ensemble
Platforms: All
DevKey: MC479
Summary: Fix bug that %File:DriveList query does not return the last item

Description:

In prior versions, the logic in DriveListFetch caused the last item not to be returned. This is fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Languages.COS
Platforms: All
DevKey: SJ1657
Summary: Fix $BITLOGIC(a|b) problem for certain values

Description:

This fixes a bug that occurred when or'ing two bitlists, where one was in bit list format (as opposed to bit map format), and the other one had a shorter logical length and was all ones and had no body.
Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: DAS469
Summary: Fix OpenVMS <ACCVIO>

Description:

This change alters the optimization which determines the optimal number of open files for network daemons by eliminating it for OpenVMS. The optimization addressed a performance problem on NT only and is not an issue on OpenVMS.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK416
Summary: Added protection to prevent buffer overrun when invalid blocks are viewed across ECP

Description:

Applications can only view global directory blocks across ECP, other blocks may fail or not arrive completely. This change modifies the view across ECP to protect ECP and application from buffer overruns.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK425
Summary: Refresh remote class descriptors after ECP failover.

Description:

When a remote class is in use and there is an ECP server failover, sometimes the method invocation fails with an unexpected remote class recompiled error. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK430
Summary: ECP client to exit on shutdown consistently

Description:

Sometimes the ECP client read daemon didn't exit on shutdown. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK433
Summary: NWDS (Net Wide Domain Server) activation to preserve ECP client sessions

Description:

This changes the NWDS master to preserve ECP client configuration after master reactivation. Without this fix any reference to a remote DB via ECP may cause an access violation.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Activate
Platforms: All
DevKey: JN211
Summary: Rework handling of UserDefined Types by Activate

Description:

Activate did not properly discriminate between interface-based and enumerated user-defined types. This led to access violations when attempting to use some ActiveX Objects. The situation has been corrected to treat these types appropriately.
Note: This fix has introduced a backwards incompatibility for *some* ActiveX objects. Use of the generated classes remains the same so it is not necessary for users to update their applications per se, but to ensure continued proper operation, existing users of Activate should re-import their classes using the Activate wizard.
Additionally, to help identify those ActiveX objects which cannot be handled by Activate, the classes %Activate.SafeArray and %Activate.UserDefined (which are subclasses of %Activate.Unsupported) have been introduced. Those ActiveX objects that have method/property parameters or return values of these types are not supported.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1329
Summary: <FRAMESTACK> error in %AddToSaveSet()

Description:

Some classes have recursive references that allow simple structures such as linked lists to be represented. Under some circumstances, a relatively small number of objects that are linked can cause a <FRAMESTACK> error when triggers fire during a save if all objects have been swizzled. A change has been made to %Save() that recognizes simple recursive references and chooses a different mechanism for including each swizzled reference to the save set.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK804
Summary: If an error occurs when importing an XML class definition, keep the old class

Description:

This change, originally introduced in Caché 5.0.17, had issues related to importing OBJ code stored in an XML file. These have been addressed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Library
Platforms: All
DevKey: DLP1346
Summary: Fix infinite loop when a recursive reference cycle is encountered during save

Description:

Some object references result in a circularly linked list. This structure caused an infinite loop. This change detects that situation and prevents the loop.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT708
Summary: Add option to WSDL reader to include parameter for xsi:type attribute

Description:

This change adds an OutputTypeAttribute property to %SOAP.WSDL.Reader class. If OutputTypeAttribute = 1 when the Process method is called, then the OUTPUTTYPEATTRIBUTE will be added to the Web Client which is created.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1339
Summary: Set %msg variable when an invalid ID is generated

Description:

The variable, %msg, is now set to the error text when an ID counter validation check failure occurs. This makes object behavior consistent with SQL error reporting.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1331
Summary: Fix recursive reference calculation

Description:

An error was fixed where an <INVALIDOREF> error is reported when a property that originates in a superclass is subsequently inherited from a different superclass.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1343
Summary: Call index build/purge functions in table routine

Description:

%BuildIndices and %PurgeIndices is now supported for classes using %CacheSQLStorage. Previously these methods were only implemented for classes using %CacheStorage. %CustomStorage does not implement these methods.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1452
Summary: %ExistsId returns incorrect value for SQL storage after rollback

Description:

Caché Objects use transactions during filing. If the user initiates a transaction outside of a call to %Save(), then some in-memory structures might not be updated if the user transaction is subsequently rolled back. There is no mechanism available to rollback the state of the in-memory objects in this situation. The problem is that object persistence might improperly dispatch to an update when the object does not exist in storage. Classes using %CacheStorage do not experience this problem because of an internal existence check that is performed prior to dispatching to insert or update. %CacheSQLStorage does not perform this check so it is possible that an object will be dispatched to update which will subsequently fail with SQLCODE = 100.

%CacheSQLStorage will now check for an update failure with SQLCODE=100. In that case it will attempt to save the object with an insert.

Note: This change does not solve the problem of user-initiated transactions and rollbacks, only update failures due to non-existent objects.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP982
Summary: Don't add parent reference to ROWID if already specified

Description:

If the idkey definition includes the parent reference then, with this change, it will not be automatically added to the idkey by the class compiler.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage
Platforms: All
DevKey: DLP1407
Summary: Address infinite loop in %AddToSaveSet when saving an object containing a reference to a self-referencing object

Description:

Previously, it was possible for an infinite loop to occur when saving an object that contained a reference to a self-referencing object (also known as a reflexive object); this loop occurred in %AddToSaveSet. This has been addressed.
Background:
A recursive class is a class that has a property whose type is that same class. A recursive object is an instance of a recursive class such that one instance of the recursive class has reference to another instance. A self-referencing or reflexive object is a special type of recursive object — one that has a reference to itself.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Stream
Platforms: All
DevKey: MAK1465
Summary: Object instances "loses" stream if save fails

Description:

Prior to this change, if a stream is saved as part of a transaction, and the transaction is rolled back because another object in this transaction failed to save, the stream was not rolling back its internal state and so would lose the stream data. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT705
Summary: Add option to always include xsi:type attribute for elements output for a class

Description:

Some Java tool kits require the xsi:type attribute to be specified for all elements even when the type can be determined from the WSDL document.

This change adds the property OutputTypeAttribute to the %XML.Writer class which forces the xsi:type attribute to be added to elements that are output based on object properties.

It also adds the parameter OUTPUTTYPEATTRIBUTE to SOAP Web service classes that forces the xsi:type to be used for all elements in the response; and the parameter OUTPUTTYPEATTRIBUTE to SOAP Web client classes that forces the xsi:type to be used for all elements in the request.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2121
Summary: Add To_Char and To_Date with Timestamp (and other date formats)

Description:

The SQL Scalar functions TO_DATE and TO_CHAR now accept %TimeStamp values as input. In addition, support for some time-related formats have been added.

For TO_DATE and TO_CHAR, the expression passed to the function may now be a valid %Library.TimeStamp logical value.

For TO_DATE and TO_CHAR, the following format codes have been added for support of TimeStamp values:

   HH     Hour of Day (1-12)
   HH12   Hour of Day (1-12)
   HH24   Hour of Day (0-23)
   MI     Minute (0-59)
   SS     Second (0-59)
   SSSSS  Seconds past midnight (0-86399)
   AM     Meridian indicator
   PM     Meridian indicator

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: SQL
Platforms: All
DevKey: DPV2167
Summary: Allow date format of YYYYMMDD in TO_DATE

Description:

TO_DATE now supports the following two formats: 'YYYYMMDD' and 'DDMMYYYY'

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2416
Summary: Improvements to handling $Piece maps with Overridden DataAccess expressions

Description:

With this change, when an application

it needs to specify a valid Row Reference in your map definition rather than try letting the system generate one for you.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2435
Summary: Fix compilation of read-only table when CompiledTopLevelPieces is ""

Description:

A problem has been fixed where a table that could not generate filing code due to a non-filable %CacheSQLStorage mapping might get a <NULL VALUE> error during the compilation of the table.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.DDL
Platforms: All
DevKey: BJB295
Summary: Make sure Selectivity is not 0 with $justify(19), same as %qarTune

Description:

A correction has been made to the SQL Manager. If TuneTable was invoked from SQL Manager and ended up with a very small Selectivity, first 5 decimal places all 0, the SQL Manager would file the wrong value.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: AND611
Summary: Pay attention to user-supplied parameter type

Description:

A previous change (AND453) made parameter resetting impossible. This caused issues when SQLExecDirect was called. Hence, the behavior has been reversed, so that Caché now pays attention to user-supplied parameter types.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK619
Summary: Parent reference with more than 10 physical parts

Description:

This change corrects a problem that occurs in child table when the parent table rowid has more than 10 physical components, for example, more than 10 generations of parents/grandparents. This problem exists in all versions of the product.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: BJB274
Summary: Add Name Space info to the mtemp0 header, $zu(67,6)

Description:

This is an enhancement to the header info that is stored in ^mtemp0. The change adds Name Space info the header of ^mtemp0. This is used by generated SQL code for sorts during query runs. The info can be used to track down problem queries.

The structure looks like:

^mtemp(8,0)=$H^Job #^UserName^Server Name^Client IP^Routine Name^Name Space
for example:
^mtemp0(8,0)=58953,29117^1984^TestUser^TESTLAB2^127.0.0.1^CacheSql1^User

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2426
Summary: Rollback fail after UPDATE problem

Description:

SQL UPDATE, DELETE, and INSERT...SELECT statements are now atomic in nature; the statement either completes successfully or no rows in the table are modified.

For example, assume you execute an update statement that will update 20 rows in the table. The new value for a field in the 17th row fails validation. Prior to this change, the first 16 rows would have been updated and the statement would return an SQLCODE=-104 error. It was up to the application to catch the error and role back the update of the previous 16 rows (if desired). Now, if any row fails to update, none of the rows in the table will be updated by the statement. The same is true for DELETE and INSERT ... SELECT statements.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2442
Summary: UPDATE problem in transaction

Description:

A bug has been fixed where a statement like:
UPDATE MyTable
   SET MAXID = MAXID + 1
 WHERE MyField = ?
might not update any rows due to concurrency issues if multiple processes where attempting the update at the same time.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK974
Summary: Improvements to source control hooks

Description:

This change, originally introduced in Caché 5.0.17, had issues related to importing OBJ code stored in an XML file. These have been addressed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System
Platforms: All
DevKey: CDS413
Summary: Give <EDITED> when routine changes during debugging

Description:

If a routine being debugged by one process is updated by another process, the system could attempt to use an invalid address to resume execution in the debugger. This gives invalid results or an access violation for the process being debugged. The situation is now corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: GK378
Summary: Changed ECP client connection name

Description:

The ECP client sends its connection name to the server. Currently the name is
<cli sys name - default is host name>.<ECP connection name>
This change alters the order and the separator; the new format is:
<ECP connection name>:<cli sys name - host name>
If the cli sys name is too long it will not prevent ECP from recovery, (The server identifies the connection by the connection name + the client GUID). Also, the server entry in the control panel will have the connection name followed by the host name; it makes the connection name be more useable since most sites are configuring multiple connections to the same server.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: GK382
Summary: ECP client to display the connected host IP.

Description:

This change adds a console log msg with the destination host IP when an ECP client establishes a connection

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: GK399
Summary: TCP read to honor PSW2OLDTCPXY switch.

Description:

This change makes TCP disable x/y calculation when a process's $zu(68,55,1) switch is set.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1943
Summary: Correct reference counting error

Description:

A rare problem which can result in memory exceptions has been resolved. The problem is most likely to be seen in application which reference more than 8 namespaces (often) or rarely when the system reloads the namespace configuration.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: LFT1451
Summary: Fix error using UTF8 in zobjexport

Description:

This fixes a problem on the import side of $zobjexport when using function 13 and UTF8.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.I/O
Platforms: All
DevKey: CDS515
Summary: Allow asynchronous DISCONNECT errors for telnet sessions

Description:

A new switch has been added which allows processes connected to a Windows system via telnet to receive a <DSCON> disconnected error asynchronously at the time the disconnect occurs. The default behavior is to give the error only on the next READ command.

This switch has no effect unless disconnect errors are enabled with $ZU(68/69,15,1). The new switch is $ZU(68/69,60,1).


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY811
Summary: Fix global reference passed to journal restore filter

Description:

This change addresses an issue where an invalid (incomplete) global reference name may be passed to the filter (^ZJRNFILT) used in journal restore. This occurred if the character "]" appears in a subscript of the global reference.

The problem was present in all released Caché products.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: RJF027
Summary: Avoid redundant error logging in JRNINFO

Description:

If the source of cluster shadowing has a CACHEJRN.LOG whose last entry for a particular cluster system number is a journal file that doesn't exist, a message like the following message would be logged repeatedly to the cconsole.log:
JRNINFO SERVER ERROR: Information about _$101$DKA200:[JANUS.RJF5.MGR.JOURNAL]200
30917.001 cannot be updated as the file is gone
The most common reason for this situation would be if a former member of a cluster has been removed from the cluster. With this correction, the message will be logged only once.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: RJW1148
Summary: Multi-threaded shadowing using excessive cpu

Description:

Corrects a problem where shadow processes would consume excessive cpu on client systems because of excessive polling. This problem was most evident on AIX.
Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1135
Summary: Addressed a case of accvio in journal utility

Description:

Addressed an issue where running journal utilities (such as JRNDUMP or JRNINFO) might result in an access violation (accvio) or a core dump in some circumstances. It affected mainly clustered Caché systems.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML563
Summary: Fix a potential dead lock when locking parent node on ECP server

Description:

This change avoided a possible dead lock on the ECP client. For example:

If the client job then did the following:

F i=1:1:10000 l +^TEST(1) l -^TEST(1) w !,i
it will eventually hang.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML604
Summary: Handle unlock locks to more than 8 different remote servers.

Description:

When a job owned locks to more than 8 remote server through any network (ECP,DCP,DDP), a non-incremental lock (L ^a) or argumentless lock (L ) command will leave the lock to 9th remote server in 'delock pending' state in lock table. Furthermore, the lock won't be released on the remote server either.

This change corrects that situation.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1110
Summary: Address <ACCVIO> in cluster shadow

Description:

This change addresses a concurrency issue in cluster shadow that could cause an <ACCVIO> error.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1121
Summary: Address a <NOROUTINE> error on shadow

Description:

This change corrects a problem in 5.0.13 and later where, under some rare circumstances, shadow processes might terminate unexpectedly for no obvious reason (i.e., no error message indicating what went wrong).

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: RJW1132
Summary: Shadow getting <DIRECTORY> during namespace reactivation

Description:

A problem that could cause the shadow set/kill process to get a <DIRECTORY> error during namespace reactivation has been corrected. The error had caused shadow dejournaling to stop on the shadow client.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LFT1449
Summary: Fix bug in AllocateBlockInMap

Description:

This fixes a problem using REPAIR to allocate and free blocks in a map. The problem occurs if the database has more than one map and the block number is not in the first map.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: SML599
Summary: Remove extraneous check for some references

Description:

Prior to this change, Caché would try to access $D(^|NS|foo) to validate the input namespace. This caused the system to slow down if the namespace were mapped to remote ECP.

Because the reference won't be cached in the client's buffer, there is an unnecessary round trip network for every use of it. This change removed this unnecessary checking.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: TCS015
Summary: Identify Lock Master for LOCKTAB

Description:

When LOCKTAB is run on a cluster, this change will now add a line to the headed identifying this node as a cluster member, whether or not this node is the lock-master and, if not, the name of the node that is the lock-master. Attempting to free a lock on a cluster that was taken out on a node other than the originating node will display a warning message before allowing the user to proceed.

The change also adds a new, non-interactive utility to provide information about the cluster.

Manually freeing a single lock through LOCKTAB will add a message to the console log.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LRS965
Summary: Fix %FREECNT utility calculations

Description:

An issue was introduced with Caché 5.0.17 where the free space calculations of the %FREECNT utility and the Caché Control Panel's Local Databases display caused all free block values to be displayed as zero. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 


Changes for Caché 5.0.17
This section provides a listing of changes between Caché 5.0.16 and Caché 5.0.17.

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

This document contains several sections:
InterSystems advises all users to recompile their applications as part of the upgrade process so as to take advantage of all the performance improvements as well as other changes that may affect them in this release.
Known Regressions In Functionality
The following regressions in functionality are known to exist in this release and may adversely affect applications. If you need an immediate correction for any of these defects, please contact the InterSystems Worldwide Response Center.

They will be fixed in a future maintenance release.


Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate importance to users of our software. These include alerts, mission critical issues, important updates, fixes, and releases of Caché.

The most current list can be obtained from the InterSystems Website.

Users should check this list periodically to obtain the latest information on issues that may have an effect on the operation of their site.


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

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


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



Category: Misc
Platforms: All
DevKey: RJW970
Summary: Cstat shows a dead process as alive if Windows has reused the process id

Description:

Prior to this change, it was possible for cstat to show a dead process as alive (that is, no "D" indicator in the pid table display) if the process Id had been reused by the operating system for a new process.

Cstat now performs further tests to insure that the process is running cache.exe from the configuration's bin directory before considering it a valid Caché process in the current configuration.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Misc
Platforms: All
DevKey: SAP388
Summary: Correct access violation in mailbox broadcast

Description:

This change corrects a situation where, under certain circumstances, an attempt to send a broadcast message to all mailboxes could result in an access violation error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: DLP1445
Summary: %IsModified and IDKey Integers

Description:

A correction has been made for the situation where an object ID based on a simple integer property might be inappropriately detected as modified when set to itself. For example, 'set obj.Prop=6' would report the object as modified when the original value of obj.Prop had previously been 6.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK804
Summary: If an error occurs when importing an XML class definition, keep the old class

Description:

Prior to this change, if you had a class on your system, and then an attempt to import another version of that class failed, Caché would delete the existing class. Now it correctly leaves the existing class present if there during import.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage
Platforms: All
DevKey: DLP1353
Summary: EXTENTSIZE loading restored

Description:

A prior change discarded the value of the EXTENTSIZE parameter when loading a class from XML or CDL. This change reverses that. If you are replacing an existing class with XML or CDL that does NOT contain EXTENTSIZE the EXTENTSIZE of the replaced class will be retained.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1319
Summary: Optional OID uniqueness checking added

Description:

A new configuration option now makes it possible to validate system-assigned ID values for new instances of objects. The option is activated by
SET ^%SYS("dbms","validate system-assigned id") = 1
Classes using default storage and system-assigned IDs do not normally check for the existence of an object with the newly assigned ID value. That check is, under normal circumstances, not necessary as the global reference used for the system ID counter is updated each time a new object is inserted into the extent. However, in very rare cases, it is possible for this counter to contain an incorrect value. This can happen if the user modifies the value manually; if objects are inserted into the extent without using the object or SQL filer; or system recovery efforts modify this value and are subject to errors.

By setting the configuration option, the class compiler will generate a uniqueness check on insert for the ID value. If at runtime the uniqueness constraint fails, an error, IDKeyCounterNotValid, will be returned to the caller and a message will be written to the console log. Each failure will also cause the ID counter to be incremented so it is possible that the problem will correct itself over time. It is important to review the console log when this error is reported .

In certain deeply nested object models, it is possible that the underlying error message will not be reported. Rather, a cyclical dependency error could be reported from %Save(). This is not the usual case but, when a cyclical dependency error is reported, one possible cause might be the IDKeyCounterNotValid condition.

When an IDKeyCounterNotValid error message is reported it will be necessary to bring the ID counter back into sync with the data. It is the responsibility of the application developer or administrator to determine how the counter became invalid (manually set by a user or by code not using object encapsulation, bad recovery of a journal file, disk failure, etc.). The correction for the error condition depends on how the data and counter were caused to be out of sync.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2289
Summary: For SQL INSERT, Start transaction prior to default value allocations

Description:

During SQL INSERT, if the SQL filer needs to start a transaction, the transaction will now start earlier in the filer than it used to. The transaction will now start before any default values are assigned, including the $Increment(^glo) default value of the RowID field (if applicable). This allows the $Increment of any globals in default values to be recorded in the journal file.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2301
Summary: Conditionally report error if RowID counter is out-of-synch

Description:

This is the SQL counterpart to DLP1319. Please see that item for details.

The condition will be reported as an error code of -119.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2419
Summary: %r and default parameter for device

Description:

The default file parameters when sending the output of %r to a file are now "WNS".

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2422
Summary: Correct duplicate cached query problem

Description:

A problem has been corrected where under certain rare circumstances the same cached query routine could be associated with and invoked by two different SQL statements.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: PVA080
Summary: Join condition following IN type condition on each of its operands produces wrong result

Description:

An error has been fixed where certain queries could return the wrong answer. The type of query affected contains these phrases:

and also the condition, col1 = col2, is true.

The problem may occur whether col1 and col2 come from the same table or different tables. Also, the IN condition could also be "(col1=? or col1=? or ...)" and similarly for col2.

Other conditions can occur before or after these, or in between them. However, if the join condition occurs before at least one of the IN conditions, the problem doesn't happen.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: AGC304
Summary: Studio COS Parser - support $ZLIST and other legacy functions

Description:

The Studio COS parser now colors legacy list functions: $ZLENGTH, $ZLIST, $ZELEMENT, and $ZSUBLIST.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: DVU1044
Summary: New menu item: Add to Source Control

Description:

Added Tools->Source Control->Add to the Source Control menu item which will cause to add the active document to source control.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: JN289
Summary: Support #[]# syntax in CacheHTML

Description:

A previous change introduced support for the new #[]# syntax, which allows ObjectScript commands to be embedded. This adds it to the &html(...) processor.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK1002
Summary: Two periods appear in mac file when load from XML

Description:

In prior versions, importing a routine from Studio was not working correctly because Studio lost the extension type of the item it had imported. The item would be imported correctly but it would not get compiled. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK1082
Summary: Improve error message from Studio GetStatus hook

Description:

When an attempt to lock an item calls the studio hook in the 'GetStatus' method, Caché now uses more information in returning an error code to the caller.

Prior to this, Caché would always report that the item was not checked out of source control. Now it only reports this is if the 'isinsourcecontrol' argument is true; otherwise it just reports that this item is not editable.

Also if a username is returned from the GetStatus call, this is displayed as part of the error text.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK1145
Summary: BAS routines not compiled on load from Studio

Description:

This change fixes a problem importing and compiling a BAS routine. It also improves support for importing large numbers of items into Studio.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK1205
Summary: Allow open dialog to respond faster in namespace with huge numbers of routines

Description:

The Studio Open dialog displays items sorted case insensitively. When a user opens up a namespace with a huge number of routines, Studio must scan the whole list to find the correct order to place these routines in. This can cause delays when there are hundreds of thousands of routines in a namespace. In order to allow these namespaces to be usable you can now set a flag:
Set ^SYS("Studio","CaseInsensitive")=1
This will force Studio in this namespace to work in a case insensitive manner which allows it to list the items as they are found rather than having to sort them all first. The routines are all listed at the root level rather than the standard approach which is the list routines from a class compile along with that class.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MAK974
Summary: Improvements to source control hooks

Description:

This change modifies the import/export functions so that they will also call the source control hooks when a user imports items. This permits the source control hooks to export them to a source control system.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System
Platforms: All
DevKey: CDS388
Summary: Ignore $HALT for error HALTs

Description:

When a process has set $HALT, it should be effective only for normal process termination. This fix corrects a problem that caused the system to attempt to locate and run the $HALT routine in situations such as RESJOB and system errors when the process should be halted immediately without attempting the $HALT.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS656
Summary: Fix %STACK $ZU(41,n) when routine has changed

Description:

The %STACK debugger utility could display unprintable characters if the routine object code is modified while the routine is being debugged. This is no longer the case.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS659
Summary: Fix bad routine context after $HALT trap

Description:

If a routine sets $HALT to an entry point in a different routine, and the halt trap returns back to the original routine because of a QUIT command or a trapped error, the original routine context is not restored correctly. Prior to this change, this situation could cause invalid execution results or memory access violations.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS665
Summary: Fix error processing crash when routine source unavailable

Description:

A memory access violation could occur during error processing if there was an unexpected additional error while trying to read the routine source. With this fix, the system will continue without providing source information about the original error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1909
Summary: Fix deadly embrace in system function

Description:

This changes corrects a rare problem where Caché may get suspended in a system function while holding database blocks under a lock.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1926
Summary: Eliminate <EDITED> error for changed callers

Description:

A problem which could cause an exception (core file, dump file, etc) where an <EDITED> error should have been generated has been resolved. This involved cases where the program is returning after evaluating the result of an indirection that involved invoking another routine and the routine it is returning to has been recompiled. An example of where this could occur is a reference of the form:
 Set str="name($$ent(123))"
 Set x=@str
where $$ent goes off to another routine which causes the calling routine to be recompiled.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Windows
DevKey: LFT1371
Summary: Handle Windows process table expansion correctly

Description:

This fixes possible access violations during shutdown in situations where the process table has been expanding. This is on Windows only.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: LFT1446
Summary: Fix Unicode problem in $zobjexport

Description:

This correct a problem in $zobjexport with exporting long strings in a Unicode encoding.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: LRS771
Summary: New $System.Device methods

Description:

New $System.Device class methods have been implemented. Descriptions are available in the %SYSTEM package class documentation. In summary:


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: UNIX, Linux
DevKey: LRS947
Summary: Fix startup node name detection on UNIX for DHCP

Description:

A problem with the Caché node name recognition has been fixed. This only affected UNIX/Linux systems which connect to a DHCP name server. After an abnormal system shutdown, Caché startup could believe the instance was still in use by another node.

Correct utilization of the unique node name mechanism requires that the 'ccontrol nodename <name>' command be used to assign a unique name to the local node/machine, and that no instance of Caché should be active when the node name is assigned or modified.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD097
Summary: Allow "0" process count in PATROL

Description:

Allow users to select "0" process count for less overhead in collection.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD101
Summary: Enable system-only MONITOR statistics for ^PATROL

Description:

This change corrects issues with interactions between ^PATROL and ^PERFMON (MONITOR), and also removes unnecessary overhead (STATISTICS resource locking) when running PATROL.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD118
Summary: Add ECP statistics to MONITOR utility

Description:

This change adds ECP operations to the MONITOR (i.e. ^PERFMON and $System.Monitor) network statistics.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System
Platforms: All
DevKey: RFD137
Summary: Fix server name for ECP MONITOR statistics

Description:

This change displays the correct client name for server statistics in MONITOR. ECP shows the name of client, as opposed to the address for DCP statistics.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD138
Summary: Fixes for ECP/DCP MONITOR statistics

Description:

This change corrects network MONITOR statistics, including proper display of ECP and DCP node names.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD140
Summary: Add all metrics for ECP MONITOR statistics

Description:

This change adds all network related counters (total requests, cache hits/misses for client, etc.) to the ECP MONITOR metrics. They now parallel DCP metrics.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Windows
DevKey: SAP247
Summary: Cforce works for any error getting events

Description:

This corrects a situation where, on Windows XP after the Control Process has crashed, the system can not be cleanly halted, even by cforce.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP261
Summary: Fix mailbox send hang when destination process is hung in %HALT

Description:

A process performing %SS or any mailbox send may hang forever if the destination process has gotten in a state where the mailbox lock is permanently held. With this change, the calling process will exit the mailbox code after trying and failing to get the mailbox lock 10 times (total wait of 1 second).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Windows
DevKey: SAP289
Summary: Use correct thread handle for priorities on Windows

Description:

This corrects a situation where, if you change the priority of one process other than the current one, using $SYSTEM.Util.SetPrio(prio, processid), then all process priorities may be changed by the same amount. This will not happen if the current process priority is changed, using ^PRIO or $system.Util.SetPrio(n).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP392
Summary: Correct segmentation fault in the signal handler of $VIEW(-1)

Description:

This corrects a problem where a fault could occur during use of the $VIEW function to view data in the process partition.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SML471
Summary: Add a Clean daemon to take over from Control Daemon clean task

Description:

This change adds a new daemon called the 'Clean Daemon' (CLNDMN). This daemon wakes up every 10 minutes to scan the system pid table to see if any dead jobs are pending. It will reclaim any dead job pid slot it finds. This daemon takes over the duty used to be done by Control Daemon.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System
Platforms: All
DevKey: JLC740
Summary: Support 64-bit dllids in $ZF(-4) and $ZF(-5)

Description:

This change fixes a potential problem on 64-bit platforms where trying to load a user DLL or shared library via $ZF(-4)/$ZF(-5) might result in an error depending on previous memory allocations.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY1038
Summary: Add an option to ignore default journal directories during journal restore

Description:

This change adds an option to remove default directories (for searching for journal files to dejournal) when setting up noncluster journal restore. (The mechanism/interface for locating journal files in cluster journal restore is different.)

Prior to this change, the prompt for specifying journal directories along its help text looked like this:

Files to dejournal will be looked for in:
d:\Cache51\mgr\journal\

Specify other directories to search: <return when done>
There was no way to remove "d:\cache51\mgr\journal\" from the list of directories to search for journal files.

With this change, the prompt looks like this:

Files to dejournal will be looked for in:
     d:\cache51\mgr\journal\
in addition to any directories you are going to specify below, UNLESS
you enter a minus sign ('-' without quotes) at the prompt below,
in which case ONLY directories given subsequently will be searched

Directory to search: <return when done> -
     [Directory search list is emptied]
Directory to search: <return when done> d:\cache51\mgr\journal\
Directory to search: <return when done>
Here is a list of directories in the order they will be searched for files:
     d:\cache51\mgr\journal\
Note that there must be at least one entry on the directory search list or Caché will issue a warning:
** WARNING ** Directory search list must NOT be empty
and the setup will keep prompting.
Directory to search: <return when done>
unless one hits Ctrl-C to abort journal restore.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System.I/O
Platforms: All
DevKey: LRS778
Summary: Implement sequential file sharing/locking option in OPEN

Description:

A new sequential file OPEN option has been added, to provide exclusive write access to a file. This provides a way of blocking simultaneous updates of a given file by various processes. The "L" option may be combined with "R" and "W" options as follows:

Under Caché/Windows, shared access for read and write is the default, so "RL" does not alter the behavior. Exclusive mode interacts with file accesses by non-Caché applications on the system.

Under Caché/UNIX, the share mode mechanism employs file locks, so "RL" is necessary to coordinate with "WL" usages. If the "L" option is not specified on OPEN, file locking neither affects nor is affected by processes that do not employ it.

Under Caché/OpenVMS, files opened for write access use exclusive mode (no sharing), and those opened for read use shared GET mode. This behavior is not affected by the current change, hence the "L" option is not used.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: System.I/O
Platforms: All
DevKey: LRS836
Summary: Avoid file deletion if user confuses keyword syntax

Description:

To avoid accidental deletion of a sequential file due to incorrect keyword syntax specification in the OPEN command, this change nows causes a syntax error to be reported if there is a "/" (slash) anywhere in the mode parameter string (the first positional device parameter).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.StartUp
Platforms: All
DevKey: SAP351
Summary: File associations are confused when a multivolume DB fail to mount

Description:

In previous releases, if one of the extensions after the first volume of a multi-volume DB fails to mount during startup, then those extensions that successfully mounted before the failure are not cleared, and are assigned instead to the next DB in the list of databases in the config file.

For example, suppose there are two databases, "Multi" and "Single". Multi has primary and 3 extensions stored in these files:

Further suppose that the cache.ext in c:\v4 is deleted and Caché is started.

In this case, the DB Multi is not mounted because extension v4 fails to mount. But the DB Single will be started as a multi-volume DB, with extensions in


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: RFA019
Summary: In %Buttons, do not delete cstat output file(s) if not appended to the HTML report

Description:

An error was corrected in %Buttons where the cstat output and/or cconsole.log files were being deleted even if they were not copied to the HTML output file.

%Buttons does not include these two files if they are larger than 5MB or if appending either one of them will make the HTML output file larger than 5MB. In this case, a pointer to the original location of the cstat and/or cconsole.log is written to the HTML file.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: SAP123
Summary: %FREECNT performance enhancements

Description:

In calculating free space, this change causes Caché to examine secondary map blocks first to determine which maps are full maps. This avoids the need to read in those blocks for maps that are known to be full.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: Utilities
Platforms: All
DevKey: STC498
Summary: Allow rebuildindex to work with implied namespaces

Description:

This change allows $$RebuildIndex^%R(impliednamespacereference) to work correctly. Prior to this, it would return an error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities.Globals
Platforms: All
DevKey: SAP379
Summary: %FREECNT for 2K Databases fails for large databases

Description:

This changes corrects errors in looking at the bitmaps on big-endian databases.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Weblink
Platforms: All
DevKey: CMT173
Summary: Make WebLink compliant with HTTP v1.1 response headers

Description:

With this change, WebLink is now fully compliant with HTTP v1.1 response headers.

In particular it is possible to take advantage of v1.1 KeepAlive connectivity in WebLink applications. Unlike HTTP v1.0, KeepAlive connectivity is 'on' by default in v1.1. If KeepAlive connectivity is not required the 'Connection: close' header directive must be added. For example:

HTTP/1.1 200 OK
Content-type: text/html
Connection: close
If KeepAlive is used, a 'content length' header field must be supplied. If the response header generated by the application indicates that KeepAlive should be used but does not contain a 'content length', WebLink will automatically buffer the response content, determine its size, and insert the length header before dispatching the whole response to the client.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Weblink
Platforms: All
DevKey: CMT267
Summary: Introduce full support for HTTP 'Keep-Alive' connectivity

Description:

This change allows HTTP 'Keep-Alive' connectivity to be used in WebLink applications, for example,

Minimal HTTP/1.0 response header without keep-alive:

HTTP/1.0 200 OK
Content-Type: text/html
Minimal HTTP/1.0 response header with keep-alive:
HTTP/1.0 200 OK
Content-Type: text/html
Connection: keep-alive
Minimal HTTP/1.1 response header without keep-alive:
HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Minimal HTTP/1.1 response header with keep-alive:
HTTP/1.1 200 OK
Content-Type: text/html
Note that the default behavior is for keep-alive to be 'off' in HTTP v 1.0 but 'on' for HTTP v1.1.

When Keep-Alive connectivity is used it is necessary to include a 'Content-Length' response header. If the application does not include this field in a response for which keep-alive is required (as is the case in the examples above), WebLink will cache the response data to determine its size and add the length field before dispatching the final response headers. However, better performance will be achieved if the application is able to add this field. For example:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 123

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Changes for Caché 5.0.16
This document provides a listing of changes between Caché 5.0.15 and Caché 5.0.16.

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

This document contains several sections:
InterSystems advises all users to recompile their applications as part of the upgrade process so as to take advantage of all the performance improvements as well as other changes that may affect them in this release.
Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate importance to users of our software. These include alerts, mission critical issues, important updates, fixes, and releases of Caché.

The most current list can be obtained from the InterSystems Website.

Users should check this list periodically to obtain the latest information on issues that may have an effect on the operation of their site.


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

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


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

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT225
Summary: Fix a race condition in the UNIX Apache API modules that resulted in the Gateway configuration not being correctly read and initialized.

Description:

This changes fixes a race condition in the initialization procedures for the UNIX Apache API modules which could result in the Gateway not correctly reading and initializing its configuration.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT239
Summary: Fix a problem that resulted in the PATH_INFO CGI environment variable not being correctly set for Apache-based installations.

Description:

This build fixes a problem that resulted in the PATH_INFO CGI environment variable not being correctly set for Apache-based installations.
InterSystems recommends that configurations should not use period characters (.) in the paths.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP.Tags
Platforms: All
DevKey: MXT542
Summary: Insert hidden fields for form just after <FORM> tag

Description:

Originally the hidden fields were inserted just after FORM tag. Then the hidden fields of a form were moved to just before the ending <FORM> tag to make scanning certain pages easier. However, this change introduced problems with uploading large files. Therefore, the hidden fields will be moved back to just after the <FORM> tag.

To control placement of the hidden fields, this change introduces a new CSP:CLASS attribute, FormHiddenFieldsAtEnd. If set to other than "0", the hidden fields will be placed just before the closing <FORM> tag. Default is to have the fields after the opening <FORM> tag.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Tags
Platforms: All
DevKey: MXT616
Summary: Make studio templates HTML 4.0 compliant

Description:

This change makes CSP pages used for studio templates compliant with HTML 4.0.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Languages
Platforms: All
DevKey: CDS626
Summary: Fix $BITLOGIC with more than 17 operands

Description:

This change corrects a circumstance where attempting to invoke the $BITLOGIC() function with more than 16 bitstrings in the argument could result in a memory access violation when the routine is compiled or incorrect results when it is executed. $BITLOGIC() will now correctly handle up to 31 bitstrings as documented.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: DAS596
Summary: Fix CacheBasic EQV, IMP, XOR operators

Description:

This corrects a problem where incorrect code was being generated under certain circumstances for expression involving the EQV, IMP, and XOR operators.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: DAS764
Summary: Fix EQV, IMP operators

Description:

This fixes a bug in the CacheBasic XOR and EQV operators where they were being handled as bitwise and not logical operators.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK412
Summary: Init "Language" section of .cpf before SuperServer startup.

Description:

During startup, before finishing system initialization, ECP connections are accepted to be recovered. If the ECP client connection is accepted before the initialization is complete, the ECP daemons are started with incorrectly enabled NullSubscripts values.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object
Platforms: All
DevKey: MC488
Summary: Clean up temporary stream globals in %Dictionary classes

Description:

This change enables clean up of temporary stream globals in %Dictionary classes; an %OnClose() method calls the Clear() method for each stream property.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Activate
Platforms: All
DevKey: JN248
Summary: Old-style OLE variables not recognized by Activate Wizard

Description:

Early incarnations of OLE objects in Caché defined properties as variables in the type library. This technique is almost obsolete and as such the Activate Wizard (type library reader) did not recognize them. The reader has been updated to recognize these variables as properties.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1426
Summary: Parent->Child->SubClassOfChild compile dependencies not detected

Description:

This change corrects an error where multi-level dependencies among classes where not detected by the class compiler. The compiler now correcting interprets the dependencies and compiles all the affected classes/

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK919
Summary: Add ReturnTypeParams tnodes

Description:

This change adds a new method keyword, ReturnTypeParams. This can contain a comma separated list of parameters for the return type of the method.

Previously, Caché supported parameters on arguments to the method. Now this is extended to the return type as well. A change to the parser in Studio will follow that takes advantage of this new method level keyword to store this information. Here is an example of a method definition that has parameters on the return type:

Method Test() As %String(MAXLEN=100)

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Library
Platforms: All
DevKey: MIT248
Summary: Strip trailing zeroes after the decimal point in %TimeStamp normalization

Description:

This corrects a problem where trailing zeroes after fractional parts of seconds prevented correct comparison for %Timestamp values.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Roselink
Platforms: All
DevKey: MC490
Summary: Continue importing after error on one class

Description:

The specific problem this change resolves is that Rational Rose does not allow a class and a package share the same name, but Caché does. This means, if you select all the classes in Caché, some of them will generate an error on importing into Rational Rose.

The old behavior in RoseLink is that it quits once it encounters an error creating a class or creating the package of the class. This is fixed to allow it to continue so that it can finish the rest of the classes.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT505
Summary: Change Web Service wizard to create instance methods for web method

Description:

With this change, the old form continues to work. A new (instantiable) form now generated by the web service wizard is recommended, and will also work.

Since web services (subclass of %SOAP.WebService) are now a subclass of %RegisteredObject, the web service wizard will now create instance methods for the specified web methods. Class methods will continue to work for web methods.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT506
Summary: Use instantiable web service and web client for SOAP samples

Description:

Change the SOAP web client (SOAP.DemoProxy) and web service (SOAP.Demo) samples in the SAMPLES namespace to be instantiable, i. e. to use Methods instead of ClassMethods.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT507
Summary: Fix bug in returning application SOAP faults from web service.

Description:

This fix corrects an issue where the ReturnFault method of web service was not properly preventing creation of SOAP body after a fault was generated.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT508
Summary: Optionally keep empty classes in xml schema wizard

Description:

This adds a KeepEmptyClasses property to %XML.Utils.SchemaReader.

If KeepEmptyClasses is true (1), then do not remove unused classes with no properties. The default is to remove them.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT512
Summary: URL unescape SOAPACTION header in web service

Description:

This change causes .NET to escape the URL in the SOAPACTION header that is sent to a web service. For example, "%Studio" becomes "%25Studio". We need to URL unescape the SOAPACTION when it is received.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT514
Summary: Support soap:binding being last element in wsdl:binding

Description:

Soap:binding element is specified by WSDL schema to be the first element contained in the wsdl:binding element. However, JAX makes it last. This change adjusts the WSDL reader to handle this difference.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT530
Summary: Fix SOAP web client wizard bugs

Description:

This change has two parts:


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT533
Summary: Fix SOAP web service HTTP test page error handling

Description:

Errors during web method execution were not returned correctly in HTTP test page. This is now fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT534
Summary: Add sample web method to SOAP.Demo sample that shows return of list of objects

Description:

This change adds a GetListByName query to SOAP.Demo which returns a query result as a list of objects.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT547
Summary: Fix Bad error message in SOAP web client

Description:

This corrects the message returned to the SOAP web client when the message contains an empty body.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT554
Summary: Allow setting of %Net.HttpRequest properties by SOAP web client

Description:

This change adds properties to %SOAP.WebClient that it in turn will set in the %Net.HttpRequest instance that it uses to make the SOAP request. The %SOAP.WebClient property is the same as the %Net.HttpRequest property with "Http" as a prefix. The following properties are implemented:

In addition, headers may be set in %Net.HttpRequest by calling the

SetHttpHeader(name As %String, value As %String)
method of %SOAP.WebClient.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT559
Summary: Support return type parameters in web methods

Description:

An earlier change added support in web methods for parameters for the method return type.

This upgrades the SOAP Client wizard to create returned lists as %ListOfObjects or %ListOfDatatypes return type with ELEMENTTYPE parameter.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT560
Summary: %SOAP.WebService and %SOAP.WebClient no longer have persistent properties

Description:

Normally web clients (subclasses of %Web.Client) and web services (%SOAP.WebService) should not be made persistent. In the rare case when they are, the properties of the base SOAP classes should be transient. This change implements that position.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT562
Summary: Add SendSOAPBody method to %SOAP.WebClient for body as XML

Description:

The SendSOAPBody method of %SOAP.WebRequest will send an XML document as the body of a SOAP request and return the response body as an XML document.

This method is defined as

Method SendSOAPBody(Action As %String,
                    OneWay As %Boolean,
                    Request As %CharacterStream,
                    ByRef Response As %GlobalCharacterStream)
       As %Status
where:

The Location property of %WebRequest must be set to the endpoint of the web service before SendSOAPBody is called.

%SOAP.WebRequest is a subclass of %SOAP.WebClient and thus properties of %SOAP.WebClient such as HeadersIn, HeadersOut, Timeout, etc. may be used with the SendSOAPBody call.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT566
Summary: Fix schema created for a typed dataset

Description:

%XML.DataSet generated schema must include elementFormDefault="qualified" which it did not previously. Microsoft .NET 1.0 did not catch this problem. .NET 1.1 does catch the problem and no data was loaded for typed datasets. This has been corrected in Caché.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT588
Summary: Support %XML.DataSet as either input argument or return value or web service or client

Description:

This change implements full support for import by %XML.DataSet. Therefore %XML.DataSet can now be an input, output argument or result value of a web service or web client.

Note that when an %XML.DataSet is an input argument to a web method in a web service, Execute for the %XML.DataSet has already been called on entry to the web method. Similarly, when a %XML.DataSet is the result of a web method in a web client, Execute has already been called for the %XML.DataSet when the web method returns.

This change also supports import of typed datasets, i.e. datasets whose column information is known at compile time. A typed dataset is a subclass of %XML.DataSet in which the column information is defined by specifying a query using class parameters CLASSNAME and QUERYNAME.

A new class parameter, DATAONLY, is added for typed %XML.DataSet's. If DATAONLY is set to true (=1), then the schema and diffgram will not be included in dataset XML output.

Support is added for the XMLIGNORENULL class parameter for %XML.DataSet. XMLIGNORENULL will now work just as for any subclass of %XML.Adaptor. When XMLIGNORENULL = 1 or XMLIGNORENULL="runtime" and ignorenull is specified, then both missing tags (NULL) and empty tags (<tag /> are stored in Cache %String property as "" and both $c(0) and "" are exported as empty tag (<tag />).

The SOAP.DemoProxy class now had web methods for the GetByName and GetDataSetByName methods of the SOAP.Demo web service.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT589
Summary: XML and SOAP wizards should not add XMLNAME to datatype class

Description:

The XML Schema Wizard and the SOAP Client Wizard no longer add the XMLNAME parameter to datatype classes. The XMLNAME parameter on the datatype class was being treated as a property parameter and thus incorrectly overriding the property name.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT591
Summary: Error Detection problem with SOAP arrays

Description:

Now a dummy type is created for SOAP encoded array if no arrayType attribute is defined. This changes the name of the dummy type to UndefinedSoapArrayType to make the problem easier to spot.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT592
Summary: New Web Service wizard should not create LOCATION parameter

Description:

This correction removes the LOCATION parameter from a web service created by New Web Service wizard.

The LOCATION parameter defaults correctly to the location of the web server and thus will usually not need to be specified.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT593
Summary: Various extensions and fixups of SOAP Client Wizard.

Description:

This change contains a number of fixes to the SOAP client Wizard and the XML Schema Wizard:

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT597
Summary: Multiple <s:simpleType> occurrences are generated within a WSDL of a service using a custom datatype

Description:

This corrects the repeated definitions of simpleTypes for datatype classes.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT599
Summary: Make web service generator methods not ProcedureBlock to allow splitting

Description:

Large methods generated for %SOAP.WebService are marked as ProcedureBlock by default and thus cannot be split.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT608
Summary: Long clean up after XMLExport.

Description:

Cache now unswizzles each list or array of persistent objects after it is exported via XMLExport with literal format.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT613
Summary: Error message for part not found in WSDL

Description:

This correction causes Caché to return an error message rather than <UNDEFINED> when element reference is not found in WSDL in part of an element in message element.

It also improves the part element not found error message.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT642
Summary: Support elementFormDefault for SOAP web service and web client

Description:

This change adds class parameter, ELEMENTQUALIFIED, to control the format of the SOAP body. ELEMENTQUALIFIED has the value of 1 (true for qualified) or 0 (false for unqualified). The ELEMENTQUALIFIED specification matches the elementFormDefault attribute of the schema element in the WSDL defining the SOAP service.

To maintain compatibility, ELEMENTQUALIFIED will default to 1 for SoapBodyUse="literal" and will default to 0 for SoapBodyUse="encoded". These were the values always previously assumed for the elementFormDefault attribute.

The SOAP client wizard is upgraded to create an ELEMENTQUALIFIED parameter based on the elementFormDefault attribute of the schema element having a non-default value.

When upgrading the SOAP client wizard fix the fact that _ was being lost from XMLITEMNAME when folding array of elements into a wrapped array.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT645
Summary: Support multiple namespaces in an XML document

Description:

This change completes the process of supporting multiple XML namespaces in an XML document, particularly in a SOAP message.

Support is added in XML enabled classes for the XMLELEMENTQUALIFIED class and property parameter. The possible values of XMLELEMENTQUALIFIED are "" (unspecified and the default), 0 (false) and 1 (true). The XMLELEMENTQUALIFIED property parameter indicates whether that property will be qualified (in the sense used by the XML schema) when exported as XML. The default is the value of the XMLELEMENTQUALIFIED class parameter. The XMLELEMENTQUALIFIED in turn defaults to 1 for "literal" format exports and to 0 for "encoded" format exports. These defaults are to maintain backward compatibility.

The XML schema wizard will add the XMLELEMENTQUALIFIED property parameter whenever the form attribute is specified for an element. The XML schema wizard will add the XMLELEMENTQUALIFIED class parameter based on the two new properties: MakeElementQualified and DefaultExportFormat. If MakeElementQualified is true, then XMLELEMENTQUALIFIED will be added based on DefaultExportFormat. If DefaultExportFormat="" or not specified, then XMLELEMENTQUALIFIED will be added to all classes. If DefaultExportFormat="literal" XMLELEMENTQUALIFIED=0 will be added to classes in schema for which elementFormDefault is not specified or is equal "unqualified". If DefaultExportFormat="encoded" XMLELEMENTQUALIFIED=1 will be added to classes in schema for which elementFormDefault is equal "qualified". The SOAP client wizard will always process schemas with MakeElementQualified=1 and DefaultExportFormat=value of BodyUse if it is the same for all methods, else DefaultExortFormat="".

Properties are added to %XML.Writer and arguments to some of its methods to better control ElementQualified at runtime when XMLELEMENTQUALIFIED is not specified.

The ElementQualified property is added to %XML.Element. The local and elementQualified arguments are added to the Element and RootElement methods of %XML.Writer. The default for the local and elementQualified arguments are the properties Local and ElementQualified of %XML.Element if present and if not the properties Local and ElementQualified of %XML.Writer.

The elementQualified argument is added to the Object and RootObject methods of %XML.Writer. The default for the elementQualified argument is the property ElementQualified of %XML.Writer.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT650
Summary: Handle prefix for result tags in SOAP response

Description:

This change makes Caché ignore the result tag prefix/namespace in a SOAP response message because all external web services are not consistent in usage for this tag especially for RPC documents.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT655
Summary: Make SOAP fault available after web method call in web client

Description:

This change makes SOAP faults available after a method call.

After a web method in a web client class is called, the SoapFault property of the web client will contain a returned SOAP fault as an instance of %SOAP.Fault. If the SOAP message returned to the web method did not contain a SOAP fault, then SoapFault will be "".

If the SOAP response is a SOAP fault, then <ZTRAP> is issued and SoapFault will contain the %SOAP.Fault instance. In the case of <ZTRAP>, %objlasterror will continue to contain the SOAP fault as a Caché %Status.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT656
Summary: Allow SOAP web method arguments to be marked as required.

Description:

If a web service has a web method with SoapBindingStyle="document", then this change allows the use of the REQUIRED argument parameter for the input arguments. REQUIRED=1 means that the argument is required and results in minOccurs=1 in the WSDL's schema for that argument.

This change was made because .NET does not add the additional argSpecified boolean argument if the argument is required.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT659
Summary: Fix problems with multiple file WSDL

Description:

This change fixes a number of bugs in handling WSDL which consists of multiple included files:

  1. If elements from multiple schemas are used in a WSDL, use the correct targetNamespace for the elements in each schema. The enclosing WSDL targetNamespace must be saved and changed to the schema's targetNamespace for each schema.

  2. The port type in the binding element was not found if it referenced a different namespace than the WSDL targetNamespace.

  3. Only require a prefix for the SOAP namespace where it will be used. The SOAP namespace need not be mentioned in a file if only portType and message elements appear in that file.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT668
Summary: Make XMLIGNORENULL appear in inherited parameters for SOAP class

Description:

This correction allows XMLIGNORENULL specified in a SOAP class already to influence the SOAP messages used for each web method. See %XML.Adaptor for behavior of XMLIGNORENULL. However, XMLIGNORENULL did not appear in the inherited class parameter list for SOAP classes. It will now appear as an inherited parameter.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT671
Summary: Support schema with no targetNamespace in WSDL

Description:

This change corrects problems in our support of a schema which does not have a targetNamespace attribute that is contained in a WSDL.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT676
Summary: Allow XMLPATTERN property parameter in XML enabled classes

Description:

This change allows XMLPATTERN property parameter for properties within XML enabled classes. XMLPATTERN is generated by the XML Schema Wizard for the pattern facet within XML schemas. The XMLPATTERN parameter just documents the pattern facet and is not implemented in Caché.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT678
Summary: Optionally create persistent classes in SOAP client wizard

Description:

This change adds an option to the SOAP Client Wizard to make the created classes (except for the client itself) registered, persistent or serial. This is implemented by adding a MakeSerial property to %XML.Utils.SchemaReader and %SOAP.WSDL.Reader.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT680
Summary: Handle RPC WSDL with same name used for input and return parameter

Description:

With this addition, the RPC/literal WSDL created by Axis will use the parameter as the input and output of a message. However, the types are different. Caché treats the output parameter as the return value of the web method.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT681
Summary: Fix bug: SOAP client opens stream twice

Description:

The SOAP client was opening the response stream twice. This still worked, but was fixed to get a slight performance improvement.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT688
Summary: Move SOAP logging parameters to local database

Description:

This correction moves parameters that control the logging of input to web services/clients to a local database. These parameters, which were previously in ^%SYS, will be writable for any given user. Set

^ISCSOAP("Log")="i"
to log web service requests and web client responses.

^ISCSOAP("LogFile")
is the full path of the file to contain the logged input.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Soap
Platforms: All
DevKey: MXT692
Summary: Empty dataset throws errors when specified in a different format

Description:

This change allows the input XML dataset format that has only diffgram element with no child elements and interprets this to be a dataset with no rows.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1273
Summary: Fix computation of data address base global reference

Description:

A limitation for %BuildIndices has been removed.

In the past if you change the Storage Property DataLocation so that it contained a subscript, something like ^User.GloTest("data") instead of ^User.GloTestD then Build Indices would fail to populate any indexes. This also works if there are multiple literal subscripts in the global reference.

BuildIndices now takes this into account and correctly builds the Indices.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: MXT511
Summary: Need to clear collections before import

Description:

Before this change, if a collection is passed to a web client as an Output or ByRef argument, the elements returned by the web service were incorrectly just added to the collection.

This modifies the web client to clear all Output or ByRef collection arguments before importing the web service SOAP message so that the collection argument contains just the elements sent by the web service.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1343
Summary: Call index build/purge functions in table routine

Description:

This change adds support for the %BuildIndices and %PurgeIndices methods in classes using %CacheSQLStorage. Previously these methods were only implemented for classes using %CacheStorage. %CustomStorage does not implement these methods.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: JN247
Summary: Correct Handling of Unicode in %XML.SAX.Utils.Sequencer

Description:

While the SAX parser makes sure that callbacks to content handler methods do not contain character strings longer than 32k, the %XML.SAX.Utils.Sequencer was attempting to put 32k of Unicode characters into a $List. $List only supports 16k of Unicode characters so <MAXSTRING> could be encountered. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT510
Summary: Make internal representation of XML document smaller

Description:

%XML.Reader imports the XML document into a global. Previously each element node stored its namespace as a string in the node. Better storage usage is now obtained by storing a small integer index into a namespace table in each node.

This change improves performance with no external changes.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT516
Summary: Fix XML schema wizard not to reduce a collection that references a collection

Description:

XML schema wizard was incorrectly combining a class that contained only a collection with a referencing collection property. This reduction is no longer done.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT518
Summary: Fix enumeration problems in XMLSchema

Description:

This correction fixes XMLSchema for enumerations created for VALUELIST property parameter:


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT520
Summary: Improve error message for unexpected xsi:type in XML document

Description:

If an element has an unexpected (invalid in this context) type specified using xsi:type, then give a clear, unique error message.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT522
Summary: Fix bug: ExportToString crashes MAXSTRING

Description:

This change causes Caché to return an error %Status if result of ExportToString will be > 32K.

Also it adds a ByRef %Status return argument to GetXMLString method of %XML.Writer. The method signature is

Method GetXMLString(ByRef status As %Status) As %String
It returns an error %Status if the result string > 32K.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT532
Summary: %XML.DataSet has INVALID OREF error when executing %Resultset functionality

Description:

The method, Execute, for an %XML.DataSet is not defined. The XML must be produced using XMLExport or returning the %XML.DataSet via SOAP. If the data in the query is desired, then %ResultSet should be used instead.

This change gives a good error return instead of <INVALID OREF>. Note the application code still needs to be changed to pick up embedded error status.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT537
Summary: OpenURL method in %XML.Reader

Description:

This change adds the OpenURL(url,...) method to %XML.Reader class. The input XML document is specified by a URL.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT539
Summary: Fix bug: XML Schema wizard does not display non-ascii characters correctly when displaying schema source

Description:

This change modifies the XML Schema wizard and SOAP Client Wizard to handle XML document that is encoded in other than utf-8.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT545
Summary: Fix XML compile order problems

Description:

Before this change, some classes needed to be compiled twice to correctly get the list of subclasses allowed for a class reference. This problem is addressed by the following changes:

In addition the XML Schema Reader is changed to add

      Parameter XMLINCLUDEINGROUP = 0;
to classes created for inline elements so that they are not used as subclasses for choice list or types. This parameter does not need to be generated for direct subclasses of %XML.Adaptor, %RegisteredObject, %SerialObject or %Persistent.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT555
Summary: XML Schema wizard support for currently unsupported built-in types

Description:

With this change, the complete set of built-in schema types is now supported, since a few missing ones have been added. These additional types all map to %String.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT569
Summary: ERROR #5490 reported while running generator for method 'XMLImport'

Description:

The change fixes a compile error in XML enabled classes when XMLCHOICELIST property parameter is used with one of the classes in the list being a subclass of another class in the list.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT570
Summary: Add ability to force SOAP encoded XML to be exported inline

Description:

By default, SOAP encoded XMLExport of a class uses idref's for class instances referenced by a class that is being exported. This is indicated by the XMLExport format parameter of "encoded". This change allows the referenced class instances to be XMLExported inline as for "literal" format. This is indicated by the XML format parameter of "encoded,inline".

%XML.Writer is also extended to allow inline writing of encoded objects. The ReferencesInline property will control inline export. Default is true (1).


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT578
Summary: Extend %XML.Writer capabilities to include most XML node types

Description:

Methods are added to %XML.Writer to control document start and end:
Method StartDocument() As %Status
Method EndDocument() As %Status
The StartDocument and EndDocument methods are added to explicitly mark the beginning and end of the XML document being written. If StartDocument is not called, the XML document begins implicitly with the first output and ends when EndRootObject or EndRootElement is called. Therefore, StartDocument may not be called after any output has been written. Also, EndDocument may not be called unless StartDocument has been previously called. The purpose of allowing explicit calls to StartDocument is to allow content such as comments and processing instructions to be written after the end of the root element.

Methods are added to %XML.Writer to support additional XML node types:

Method WriteAttribute(Name As %String,
                      Value As %String,
                      Namespace As %String,
                      ValueNamespace As %String)
       As %Status
This method writes an attribute for the last element started. This method may only be called immediately after StartElement or Element. Arguments:

Method Write(Text As %String|%CharacterStream)
This writes arbitrary text in the XML document without any escaping being done. This method can be used in any part of the XML document where Text is the character data to output and is of type of %String or %CharacterStream.
Method WriteBase64(Binary As %Binary|%BinaryStream)
This encodes the specified binary bytes as base64 and writes out the resulting text.
Method WriteBinHex(Binary As %Binary|%BinaryStream)
This method encodes the specified binary bytes as binhex and writes out the resulting text.
Method WriteChars(Text As %String|%CharacterStream)
This method writes the XML element text performing any required escaping.
Method WriteCData(Text As %String|%CharacterStream)
This methods writes the XML element text in a CData section.
Method Comment(Text As %String|%CharacterStream)
This method writes out its argument as a comment <!--...--> containing the specified text.
Method WriteDocType(Name As %String,
                    PublicId As %String,
                    SystemId As %String,
                    Subset As %String)
          As %Status
This methods Writes the DOCTYPE declaration with the specified name and optional attributes.
Method WriteProcessingInstruction(Name As %String,
                                  Text As %String)
       As %Status
This method writes out a processing instruction with a space between the name and text as follows: <?name text?>.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT579
Summary: Improve error checking in XML schema wizard

Description:

This change add an error check for the case of an incomplete form loaded on namespaces page. This fixes an issue that has only appeared for the OpenVMS web server.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT584
Summary: Require explicit Execute call for %XML.DataSet

Description:

This changes the API for %XML.DataSet to require a call to Execute before the dataset is returned by a WebMethod. The use of the SetArgs method along with implicit Execute is deprecated.

The form of a WebMethod that returns a dataset becomes:

Method GetByName(name As %String) As %XML.DataSet [ WebMethod ]
{
   Set result=##class(%XML.DataSet).%New()
   Set status=result.Prepare(
      "SELECT Name, SSN FROM Sample.Person WHERE Name %STARTSWITH ?")
   If $$$ISOK(status) Set status=Do result.Execute(name)
   If $$$ISOK(status) Quit result
   /* Create fault and return */
   set fault=##class(%SOAP.Fault).%New()
   set fault.faultcode="GetByName"
   do $system.Status.DecomposeStatus(status,.err)
   set fault.detail=err(1)
   set fault.faultstring="application error"
   do ..ReturnFault(fault)
}

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT586
Summary: Enhance %XML.Writer use of prefixes

Description:

This change adds two enhancements:

In the case where default namespace is set for a tag by using xmlns=..., do not create a prefix for the same namespace unless required for this class.

And, optionally suppress the use of xmlns= to set default XML namespace for literal XML documents. Control use of default XML namespace by %XML.Writer property, SuppressXmlns (declared as %Boolean) with default = 0 (false). If SuppressXmlns is true then a prefix is used for each tag rather than default namespace with xmlns=.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT598
Summary: Improve XML schema wizard support for maxOccurs="unbounded"

Description:

In XML Schema wizard and SOAP client wizard, this change improves support for maxOccurs="unbounded" in sequence or choice element. The maxOccurs="unbounded" will be pushed onto any contained element tags and will override the maxOccurs specification for the contained element. This extended support is correct for sequence or choice that contains exactly one element -- a fairly common case.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT600
Summary: Unnecessary swizzle of object in XMLExport of ID or OID

Description:

When XMLExport is outputting an array of objects or list of objects property as an ID or OID (XMLREFERNCE="ID" OR "OID"), the generated code uses GetNext to loop over the objects which causes unnecessary swizzling. This change uses GetObjectNext for the loop.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT601
Summary: CONTAINSID should not imply unique constraint in %XML.DataSet

Description:

With this change, %XML.DataSet will include a unique constraint in the schema it writes only if CONTAINSID is specified and all columns are from the same table.

Also, this change removes the ROWSPEC from the query in Sample.Person, since ROWSPEC is no longer needed and having ROWSPEC doesn't allow ID to be considered in the table.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT602
Summary: In XML schema and SOAP client wizard, cleanup unused classes created for %XML.String properties

Description:

In XML schema and SOAP client wizard, unused and unnecessary classes with no properties were being created when processing complex Type with mixed="true". These unused classes are no longer created.

The specific case handled here is a complex type like:

<xs:complexType name="myType">
   <xs:sequence>
      <xs:element name="mix">
         <xs:complexType mixed="true">
             <xs:sequence>
                <xs:element name="e" type="xs:string"/>
             </xs:sequence>
         </xs:complexType>
      </xs:element>
   </xs:sequence>
</xs:complexType>
The class created for myType has a property
Property mix As %XML.String;
Previously an unused class named "mix" was also being created for the complexType in the mix property. This class is totally unnecessary and is no longer created.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT603
Summary: XML Schema and SOAP Client Wizards handle .Net format datasets

Description:

The Soap Client Wizard and the XML Schema Wizard will now recognize the proprietary Microsoft .NET dataset representation in XML schemas. These will be mapped to %XML.DataSet for untyped datasets or a subclass of %XML.DataSet for typed datasets.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT606
Summary: Can't generate class with element name start with underscore and number in XML Schema Wizard

Description:

If property name or class name begins with a digit after removing leading _, then this changes appends "X" to the name. For example, XML name _-1a becomes Caché name X1a.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT607
Summary: Do not call IsValid method for importing by %XML.DataSet

Description:

When importing XML data in %XML.DataSet, IsValid does not need to be called to check the logical value since only datatype classes in which the XSDToLogical method generates a valid logical value are used. This change removes the call.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT614
Summary: Change %XML.Writer default to not add XML declaration for strings and character streams

Description:

After this change, if the NoXMLDeclaration property of %XML.Writer is 1 (true), then the XML declaration will not be written. The default is to write the XML declaration unless the Charset property is not specified and the output is directed to a string or character stream in which case no XML declaration is written.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT627
Summary: XML Schema Wizard ignores maxOccurs="unbounded" in schema

Description:

This corrects an error where maxOccurs was being ignored for sequence or choice schema element that was the immediate child of a complexType schema element.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT628
Summary: Generate correct class for mixed complex type that contains an attribute

Description:

If an element definition has an inline complexType with mixed="true" that contains an attribute, Caché now generates the correct class for the complex type.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT641
Summary: Relative Fonts in XML Schema Wizard

Description:

This change causes Caché to use relative font-size values for XML Schema Wizard, SOAP Client Wizard and New Web Service Wizard.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT644
Summary: Fix XML Schema Wizard for HL7 schemas

Description:

This makes several corrections in the XML schemas wizard for HL7 schemas:


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT646
Summary: XML Schema Wizard mishandles long Relationship names

Description:

This change corrects an error that occurs When property names in a relationship are reduced to 31 characters. It also reduces the Inverse attribute of the relationship property.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT651
Summary: Make import of SOAP encoded arrays more forgiving of format

Description:

On XML import, Caché now allows either SOAP encoding format for arrays (includes arrayType attribute) or literal format. This change also effects input of SOAP requests by a web service or input of a SOAP response by a web client.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT657
Summary: XML Dataset needs to allXMLExport of imported dataset

Description:

This change fixes the XMLExport and XMLImport methods of %XML.DataSet (and it's subclasses) so that export of an imported dataset works properly. This problem arises in SOAP web service that is attempting to return an %XML.DataSet that was retrieved using a web client.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT658
Summary: Add new SchemaReader/Result feature - SqlColumnNumber=SequenceNumber

Description:

This change adds a SQL feature (..Features("SQL")="") to %XML.Utils.SchemaReader to have columns displayed in the same order as properties in Studio. The same feature is also added to the Schema wizard.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT660
Summary: %XML.Reader reads a %Float value 1e-128 as 0

Description:

This change corrects problems in validation and conversion from XML for %Float, %xsd.float and %xsd.double to handle values close to 0.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT661
Summary: Fix bug: <ILLEGAL VALUE> when %XML.Writer.Charset="Windows-1251" on 8-bit Caché

Description:

This change eliminates an <ILLEGAL VALUE> error when the Charset property of %XML.Writer is set to a charset that does not have the corresponding translate table loaded. %XML.Writer will now return a %Status error from the first output to the document.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT667
Summary: Fix XML Schema Wizard to handle additional cases for HL7 CDA schema

Description:

If XML element names differ only in case, this results in two properties in a class that differ only in case which is not valid. This correction changes the XML schema wizard to disambiguate these property names by adding a number to the end of one of the second property name.

If class XMLNAME is different from class short name, then Caché needs to create XMLTYPE class parameter to specify the type to be projected to XML.

This change also handles multiple levels of ref's. For example, group ref=g1 and within group g1 element ref=e1. Previously this was not picking up types for inner elements.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT670
Summary: Typed .NET format datasets come up as %XML.String when schema is imported via Schema Wizard

Description:

This change fixes the XML Schema Wizard to use the underlying support for creating typed datasets as subclass of %XML.DataSet.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT677
Summary: Project Calculated properties as CONTENT without error

Description:

This change allows the support XMLExport of calculated properties with XMLPROJECTION="content".

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT682
Summary: Error check writes to stream

Description:

This change installs improved error return checking from the Write method of stream, since this can fail because of file permission issues.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT683
Summary: Allow href attribute for literal format XML import or export

Description:

Use of the href attribute has special meaning for SOAP encoded format XML document. Fix literal format XML support to allow href attribute to correctly map to
Property href As ...  (XMLPROJECTION="attribute");

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: MXT684
Summary: Add new "No Sequence Check" feature to XML Schema Wizard

Description:

This change adds a new "No Sequence Check" feature to the XML Schema Wizard which forces XMLSEQUENCE parameter in generated classes to always have value of 0. The purpose of this feature is to deal with some situations in which the customer's XML file does not have elements in the same order as the XML schema.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT686
Summary: %Status needs to be base64 encoded when exported as XML

Description:

This change exports %Status type properties using base64 encoding, since value is binary and can thus include octets that are not valid characters in XML.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Special Projects
Platforms: All
DevKey: MXT563
Summary: Fix bug: file streams not cleaned up for XML enabled registered objects

Description:

If a subclass of %RegisteredObject has file streams that are created by %XML.Reader on XML import, then these streams were not being deleted when the object is deleted. This change corrects that issue and the streams are deleted.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



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

Description:

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

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2326
Summary: Implement Build and Purge Indices for %CacheSQLStorage

Description:

Caché now supports %BuildIndices and %PurgeIndices for %CacheSQLStorage.

When %BuildIndices is called for a table using %CacheSQLStorage, the method traverses every row of the master/data map and selects the field values needed for all the indices being built and sets the index value(s). When %CacheSQLStorage is used, the index IS NOT deleted or purged first. The reason is there might be data in the index global which belongs to another table or index. Also, $SortBegin and $SortEnd are not used when building indices that use %CacheSQLStorage for the same reason.

When %PurgeIndices is called for a table using %CacheSQLStorage, the method traverses every row of the master/data map and selects the field values needed for all the indices being purged and deletes the index value(s).

At this time %BuildIndices and %PurgeIndices do NOT perform the index sets/kills within a transaction, nor do they perform any locking of the table.

Users are cautioned to build/purge indices only when no one else is performing inserts, updates, or deletes, on the table.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement Yes

 



Category: SQL
Platforms: All
DevKey: DPV2348
Summary: Report SQLStatistics for master map with single field PKey/IDKey

Description:

A problem has been fixed where a class with a single field IDKEY/PRINARY KEY index like:
Index APPIdkeyIndex On APP [ IdKey, PrimaryKey, Unique ];
was not projected to ODBC/JDBC as a unique index when using the SQLStatistics catalog query.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2355
Summary: Undefined in Trigger Code trying to read a {Name} variable not used in dynamic query

Description:

A problem has been fixed where a {Field} referenced in an INSERT trigger, but not in an UPDATE or DELETE trigger resulted in an <UNDEFINED> error upon insert, if a value was not specified for the field.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2400
Summary: Correct update (to NULL) of serial sub-field in SQL filer

Description:

A problem has been fixed where the SQL UPDATE of a serial sub-field value from a non-NULL to a NULL value might not file properly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2417
Summary: Don't generate setting of default value in SQL filer for virtual computed fields

Description:

With this addition, fields that are SQLComputed and Transient (virtual computed fields) will no longer set the default value of the field in the SQL filer if there was an initial expression defined for the field's property. This will allow the referencing of ..Property in the initialexpression of a transient property without affecting the SQL table.

References to ..property are NOT allowed in the initialexpression of persistent fields because there is no object context inside of the SQL filer.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: SQL.DDL
Platforms: All
DevKey: BJB295
Summary: Make sure Selectivity is not 0 with $justify(19), same as %qarTune

Description:

A correction has been made to the SQL Manager. If you ran TuneTable from SQL Manager and ended up with a vary small Selectivity, first 5 decimal places all 0, the SQL Manager would file the wrong value.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.JDBC
Platforms: All
DevKey: JMM028
Summary: JDBC preparser: allow extrinsic functions

Description:

This change corrects a regression in functionality that prevented the JDBC parser from recognizing intrinsic functions. It now allows the first character of an identifier to be '$', and accepts '$' and '^' as possible values for subsequent characters.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB316
Summary: Correct handling of Japanese full-width space character in JDBC preparser

Description:

Japanese full-width space character "\u3000"($c(12288)) was not recognized by JDBC preparser. This is now fixed and it is treated as any other whitespace.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT287
Summary: Fix a case of an id field with an aliased external table

Description:

This change fixes a problem where a query with an id field was referenced in the case of an aliased external table.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT392
Summary: SQLGateway and Functions

Description:

Support for CAST and TODATE was added for external tables with this change.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN532
Summary: Add CodePages for decoding 8 bit Cache

Description:

This change adds several additional Code Pages to decode new Cache locales on 8-bit Cache:

Users must use the Unicode ODBC APIs to properly see the data, or their regional settings Code Page must match Cache's NLS default. In general it is safest to use Unicode Cache and Unicode ODBC API's to avoid conversion confusion.

The full list of supported Code Pages is:

ODBC does not use these tables when communicating with the Unicode version of Cache, only 8-bit.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN537
Summary: Fix ODBC Stream Problem

Description:

Binding a Character Stream to a parameter and inserting it into Caché would fail on Streams >32K. We do handle large character streams if they are inserted using SQLPutData, which sends them in smaller chunks. This now works in both cases.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN539
Summary: Fix for SQLGetData with 0 buffer size, to return length of data to convert

Description:

VBScript used in an HTML document would make two calls to SQLGetData on the same column. The first call had a buffer length of zero, with the intent of getting back from SQLGetData the length of the buffer needed after converting the data. This is important for Character conversion and possibly retrieving binary data types.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK609
Summary: Fix ORDER BY ID DESC when BSL used

Description:

This change fixed a problem where a query specifying DESC sort on the ID would sometimes return the results in ASCending order when a multi-index access path is used.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK618
Summary: Ignore NULLable keys for DISTINCT

Description:

When using UNIQUE keys to determine whether a field is functionally determined by a set of fields for DISTINCT purposes, Caché now ignores UNIQUE keys that have NULLable (not required) fields, since in the DISTINCT semantics all NULLs are one NULL, while for UNIQUE semantics each NULL is different (so DISTINCT requires a stronger dependency).

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK620
Summary: Fix DESC for "set" traversal

Description:

This change fixed a problem with a %ID or IDKEY field that has an IN condition and an ORDER BY DESC .

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MXT531
Summary: XML Schema Wizard Back button does not go to previous screen

Description:

This changes fixes the Back button to return to previous screen in XML Schema wizard.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MXT674
Summary: Service method name at Web Service Wizard

Description:

This change causes Caché to ignore empty lines and check method names in method name text area of Web Service Wizard

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Studio
Platforms: All
DevKey: MXT701
Summary: Schema Wizard cannot read xsd file from directory which contains non-ascii character

Description:

This change fixes the XML Schema wizard and SOAP Client Wizard to correctly display files with paths that have Unicode characters that are not in the ISO-8859-1 charset.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS390
Summary: Implicit clear $ETRAP when $ZTRAP is set

Description:

When $ZTRAP is set to a non-empty value, it will now take precedence over any existing $ETRAP error handler. Caché will implicitly perform a NEW $ETRAP command and will set $ETRAP="".

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS635
Summary: Fix frame stack problem in stackinfo()

Description:

This fixes a problem that could lead to a process crash if a second error was encountered while the system was collecting stack information about the first error. The most vulnerable type of error would be problems accessing routine source. The problem could also occur if there was an error while executing a $STACK() function call.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS652
Summary: Fix <ACCVIO> with op=1 after <EDITED>

Description:

This fixes a memory access violation that could occur during a debugging session. After an <EDITED> error is received, a QUIT command removes some, but not all, of the levels on the execution stack causing a GOTO command to resume execution at an invalid location instead of issuing another <EDITED> error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: GK381
Summary: Speed up ECP client connection.

Description:

This change improves the time required to make a connection to the ECP client. The server no longer does a DNS lookup for the client name; it uses the specified hostname or IP address. Furthermore, it registers itself with the superserver much earlier in the connection sequence.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: HYY947
Summary: Address issue of routine referencing purged namespace cache that caused <ERTRAP>

Description:

This change addressed an issue where Caché startup with a small routine buffer pool may get <ERTRAP>.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JLC659
Summary: Fix bug in $Normalize

Description:

This change fixes an error in $NORMALIZE where 0 (zero) would be incorrectly returned for certain input values.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Windows
DevKey: JO1904
Summary: Disable piece of JO1849 on OSWNT which use file id to match files

Description:

This fixes a problem introduced in 5.0.15 which could prevent access to databases hosted on NAS (network attached storage) on Windows systems.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: LFT1383
Summary: $zu(178) should check global name

Description:

$ZUTIL(178) for creating globals was not checking the global name for validity. This could corrupt the global directory. It has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: LRS782
Summary: Enable error trap recovery after namespace switch

Description:

Error trap processing has been improved to dispatch to the defined trap handler even though a subsequent namespace switch has been performed. As with QUIT processing in these same circumstances, control will pass to the appropriate routine but it is up to that routine to restore the original namespace if desired.

Prior to this change, an <ERRTRAP> exit could occur during error trap processing after a namespace switch.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: RFD104
Summary: Fix display of large counts for line-by-line monitor

Description:

Counts in ^%MONLBL were being displayed as signed integers, which caused larger numbers to appear as negative numbers. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP332
Summary: Change max size of view buffer to prevent mailbox queue overwrite

Description:

A long view string could overwrite the mailbox queue, causing possible access violation. It has been fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1433
Summary: Fix errors in JOB server

Description:

This change corrects a circumstance which could hang Caché job servers. The problem would show up after a number of JOB commands had been executed by a given jobserver process when the routines being run uses more than 64KB of local symbol table space.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1456
Summary: Fix errors in generation of Caché Basic XOR, EQV, and IMPLIES logical operators

Description:

This change corrects instances where the Caché Basic compiler may generate incorrect code for the logical operators mentioned above. The code generator for these operators now is the same as for $ZBOOLEAN.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Cluster Specific
Platforms: 1
DevKey: JO1898
Summary: Acquire exclusive rather than shared ownership of clustered blocks with a NL lock

Description:

A problem has been corrected where a cluster member acting as an ECP server for non-cluster members could "freeze" Caché.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.I/O
Platforms: AIX
DevKey: JO1891
Summary: Enable USE_EFFICIENT_TTINPUT for AIX

Description:

Terminal input on AIX has been made more efficient to bring it in line with the implementation on other UNIX platforms.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.I/O
Platforms: OpenVMS
DevKey: LRS795
Summary: Close RMS file if can't obtain I/O buffer

Description:

An error in Caché for OpenVMS has been fixed that could keep an RMS file open even after a <NOTOPEN> error caused by insufficient partition memory space to allocate an I/O buffer.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1026
Summary: Disable sorting in journal recovery at startup

Description:

With this change, sorting is disabled in journal recovery at startup so database updates are applied in the order they were created.

Sorting is still enabled in regular journal restore that is initiated by the user.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1034
Summary: Address a problem with $zu(78,18,0) on current journal

Description:

This change addressed a problem with cluster shadowing that caused an error such as <VALUE OUT OF RANGE>updseqinfo+7^JRNINFO to be generated on the source side. The error itself is recoverable and may or may not affect the database integrity on the shadow.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1073
Summary: Fix cluster shadow inconsistency caused by copier setting "jrnend" value back

Description:

This change addresses a problem that can cause inconsistency between a source and a cluster shadow in version 5.0.14 and upward. Non-cluster shadowing situations are not affected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY987
Summary: Set wdstop when journal daemon gets <ACCVIO>

Description:

This change prohibits global updates once a journal daemon dies with <ACCVIO>.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: 1
DevKey: SML521
Summary: Improve lock management when the number of locks for a specific job is over 32 KB

Description:

When a job owned many locks (when the locks could not fit in a 32 KB chunk of memory), a JOBEXAM to that job may cause job been examined to hang because a needed resource is not released by the JOBEXAM codes. This change corrects that situation.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1007
Summary: Clear $ZE in error trap

Description:

This change addresses an issue on cluster shadow where a shadow logged a <NOTOPEN> error on exit. The error was actually generated (and trapped) during shadow dejournaling.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1037
Summary: Fix an <UNDEFINED> error in cluster shadowing

Description:

This change corrects a situation where possible intermittent <UNDEFINED> errors (on line openjrnf+3^SHDWX) on cluster shadow may occur.

The problem was believed to be present in 5.0.13 and up.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1045
Summary: Fix collation handling in shadowing

Description:

This change corrects a <SUBSCRIPT> error during shadowing (5.0.13 and forward) in the scenario where the collation of the global from the journal doesn't match that of the shadow database.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY978
Summary: Start cluster shadowing at the location specified by the user (not earlier than that)

Description:

This change addresses a problem with cluster shadowing where shadow dejournaling may start at an earlier location than specified by the user if the specified location contains a nonzero sequence.

For example, if user specifies "20040811 14:11:12,22531", shadow dejournaling would start at 20040811 14:11:12,22403, or 128 items earlier in terms of sequence #. Usually this is not a problem (other than being a little inefficient), unless the user intends to exclude the records prior to the specified location from being dejournaled on the shadow.

There is no problem if the user specifies the location using cluster start time only (e.g., "20040811 14:11:12").

The problem is present in 5.0.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: CDS454
Summary: Handle <STORE> errors in %ETN

Description:

With this change, when a <STORE> error is handled by the %ETN error trap routine, it will save some minimum information to identify where the error happened in a %ERN error log entry. It will then try to acquire more memory from the system and create a normal %ERN log entry.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: JLC685
Summary: Fix UnicodeLittle/Big in old custom locales

Description:

This change adds code to the Caché upgrade procedure to convert eventual custom UnicodeBig and UnicodeLittle locale tables to the new format used by current and future Caché releases. Additionally, importing a locale with the old format will automatically convert it to the new one.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LFT1321
Summary: Fix error trapping in 5.0 process class

Description:

This fixes a problem using the $SYSTEM.Process:ALLFIELDS query. In prior releases, if there is a hung process somewhere when this query is run, the query will hang.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: RJF015
Summary: %FREECNT minor fix to free data block calculation

Description:

This corrects a problem where %FREECNT / GetFreeCount^%DM would report several more free data blocks than were really available.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: 1
DevKey: RJF029
Summary: Fix calculation used for ^REPAIR block allocation

Description:

This corrects a problem where using the Map Edit functionality of REPAIR to allocate a block in a new-format database could occasionally result in an inconsistency in the internal structure of the map block. This inconsistency could later result in a <DATABASE> error when new data is inserted into that database.

This change also corrects a problem where ^REPAIR would not allocate or deallocate the last block in the range of blocks referenced by a map block. This latter problem affects both old and new format databases. When attempting to allocate or deallocate the last block in a map, ^REPAIR would incorrectly state that "Block X is not the correct map block for Y".


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: SML540
Summary: Disable dead job cleanup by default

Description:

This change will disable Dead Job Cleanup as the default setting when Caché is started.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Changes for Caché 5.0.15

This section provides a listing of changes between Caché 5.0.14 and Caché 5.0.15.

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

This document contains several sections:
Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate importance to users of our software. These include alerts, mission critical issues, important updates, fixes, and releases of Caché.

The most current list can be obtained from the InterSystems Website.

Users should check this list periodically to obtain the latest information on issues that may have an effect on the operation of their site.


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

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


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

 



Category: Config Mgr
Platforms: All
DevKey: CFL542
Summary: Hide the Config Manager main form when Database Wizard called from Control Panel

Description:

Under certain conditions, when the Control Panel launched the Database Wizard, a portion of the Config Manager window remained visible in the screen. This change corrects that problem.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Control Panel
Platforms: All
DevKey: CFL1148
Summary: Kill ^%utility($J) upon exiting from Control Panel

UNRESOLVED
Description:

A bug has been fixed where ^%utility($J) was not killed by the return code from the Control Panel. The left-over nodes in this global can lead to undesirable database expansion.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK1213
Summary: Avoid closing the session if the CSP method is not an allowed type

Description:

If an application issues an HTTP request on Caché 5.0 for a method other than GET/POST/HEAD, Caché would report this as an error. However the error handler for this was getting a further error which caused the session to be closed. Now we report this error correctly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK1242
Summary: Prevent a hyperevent for a session that is closed from taking a new license out

Description:

If an application runs a hyperevent for a session that has expired, Caché warns that the session is timed out and the hyperevent can not be processed. However, notifying the application takes out a license in order to report this error. This changes corrects the problem; a hyperevent that cannot be run will not use another license to report the error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK977
Summary: End of file $zeof reset at the end of every CSP page, so it does not reflect system default

Description:

At the end of every CSP request, the CSP server cleans up the session for the next request. This resets the end of file/$zeof setting so that it always generated an <ENDOFFILE> error when the end of a file was reached, even when the system default was set to $zeof. Now it respects the system default correctly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT216
Summary: Ensure that a session token received as a cookie (CSPSESSIONID) will always take precedence over a token received as a form variable (CSPCHD) for cases where both are present in the request

Description:

This change ensures that a session token received as a cookie (CSPSESSIONID) will always take precedence over a token received as a form variable (CSPCHD) for cases where both are present in the request. This is for security reasons: a cookie is much more likely to uniquely identify a particular user and is harder to spoof (either deliberately or by accident).

A typical situation where users can end up accidentally sharing the same session token is in the case of search engines which have recorded CSP URLs containing a session token in the query string.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: AIX, All
DevKey: CMT222
Summary: Add extra processing to protect against the effect of SIGHUP (hang-up) signals in the AIX environment

Description:

This change introduces extra processing to protect against the negative effects of SIGHUP (hang-up) signals in the AIX environment. These signals, if not processed correctly, can cause the NSD process to close down unexpectedly.

Typically, the following error condition will be recorded in the Event Log if the installation is affected by this problem:

>>> Time: Sat Dec 27 11:25:24 2003; RT Build: 662.741; Log-Level: 0;
>>> Thread-Id: 258
    Operating System Event
    Signal Received: 1
A SIGHUP signal essentially means 'hangup' and is typically generated when a terminal disconnects from a service.

This is a strange and unexpected signal to receive in a daemon process, at least in the context of a controlling terminal disconnecting. The usual precautions for dealing with this UNIX signal were already implemented in the NSD daemon. In addition to this processing, an extra layer of processing has been added to specifically deal with this signal under AIX.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: SML498
Summary: Reset argument stack after ECP server daemon processed one request

Description:

This change fixes an issue where the ECP server daemon may get an access violation after processing many (about 135168) 'JOB' requests from the ECP client.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object
Platforms: All
DevKey: DMC079
Summary: Mac OS: Fix Caché SAX problem loading XML files with relative paths

Description:

This corrects an issue where attempting to load an XML file with a relative pathname on Mac OS X would result in an error although absolute pathnames worked properly. With this change, they both work.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.ActiveX
Platforms: Windows
DevKey: DVU1003
Summary: Wrong internal conversion for large integers

Description:

This corrects a problem where large integers in $LISTs would be incorrectly converted for COM output.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU1116
Summary: Retain trailing zeroes in large numeric/integer/float-point values

Description:

This corrects a problem where trailing zeroes were incorrectly dropped when converting large numeric values to display format.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU1273
Summary: Numeric values are passed to methods with wrong precision

Description:

This change suppresses adding a decimal point when converting integer values for display.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU1287
Summary: Numeric values are passed to methods with wrong precision

Description:

This change corrects a problem where numeric values used as string arguments had trailing $c(0) appended to them.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU962
Summary: Problem with %Float and %Currency data types on non US locales

Description:

This corrects problems in the use of the %Float and %Currency data types when the locale is not the United States. The thousands separator for numbers was not honored properly.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU972
Summary: Use a 15-digit mantissa for double conversions

Description:

This corrects problems resulting in loss of precision when converting numbers to %Library.Float.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Library
Platforms: All
DevKey: MIT407
Summary: Fix Unicode setting during initial connection in %SQLGatewayConnection

Description:

The problem with an incorrect environment setting on UNIX in the case of Unicode Caché was corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2312
Summary: ISNULL returns incorrect values

Description:

The following problems have been fixed:


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT368
Summary: Enable DataDirect driver connections in the Connect method of %SQLGatewayConnection

Description:

DataDirect drivers require setting a special option and supplying a password in order to be functional. This change modifies our connection code to detect that we are using DataDirect drivers and to set the necessary options

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN526
Summary: Cannot see view list in some ODBC client tools

Description:

Some applications include the null termination character in the length of the string. This is wrong.

Caché now walks the Unicode string to terminate the read at the specified length or at the first encountered null-terminated string, whichever comes first. This ensures the null termination character is not sent to Caché over the wire.

The outward symptom is that some ODBC client tools cannot list views in Caché.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN532
Summary: Add CodePages for decoding 8 bit Caché

Description:

This change adds several additional Code Pages to decode new Caché locales on 8-bit installations: CP1250, CP1256, CP874, CP1253, CP1255, CP866, LatinA, LatinT, and Latin7

Users must use the Unicode ODBC APIs to properly see the data, or their regional settings Code Page must match the Caché NLS default. In general, it is safest to use Unicode Caché and Unicode ODBC APIs to avoid conversion confusion.

ODBC does not use these tables when communicating with the Unicode version of Caché, only with 8-bit databases.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN534
Summary: Use CharToUnicode for converting from 8-bit Caché

Description:

Conversions from an 8-bit Caché required a specific Unicode conversion call when the client locale does not match Caché. This change adds the necessary call.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS576
Summary: Prevent access violation in $LIST()

Description:

The $LIST() function could cause an access violation if the input list happens to be exactly at the end of a memory page and the following page has never been allocated. This is now corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS611
Summary: Fix crash vulnerability in stackinfo()

Description:

In some rare situations, during error processing involving routines that are automatically recompiled because of old object code, the process could crash with a memory access violation. This vulnerability has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS619
Summary: Correct $ZTRAP/ZQUIT issue

Description:

Applications using a ZQUIT 1 command to pop execution levels could encounter <FRAMESTACK> errors after upgrading to 5.0.12. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: GK386
Summary: Clean up routine buffer reference when routine is not available

Description:

When a routine is modified on the server, and a job in the application server has a reference to the invalidated routine buffer, the error handler may corrupt the routine buffer list if errors occur while returning from a call to the routine. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: GK387
Summary: Fixed remote auto recompile routines

Description:

If auto-recompiled network routines are shared by more than one job on the client, then on routine completion they may corrupt or lock the routine queue. This has been fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: Linux
DevKey: JLC545
Summary: Improve detection of HyperThreading on Linux

Description:

This change correctly detects the number of physical CPUs on SuSE 8.2 and Red Hat 7.3 for licensing purposes when HyperThreading is enabled. Previous versions of Caché worked only on Red Hat 8.x and later.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JLC702
Summary: Fix bug in $Normalize on 32-bit platforms

Description:

An error was fixed in $NORMALIZE that could cause incorrect results for some combinations of input number and scale. Only 32-bit platforms were affected by this change, 64-bit platforms did not have the problem.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1796
Summary: Remove restriction on changing the default collation in a database

Description:

^MSU now allows the default collation for new globals to be changed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: OpenVMS
DevKey: JO1802
Summary: Prevent hang during open if LAT device returns DEVOFFLINE

Description:

A rare problem on OpenVMS systems which could result in a Caché process entering an infinite loop while opening an application mode LAT device has been resolved.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1821
Summary: Change dkmount/dkvolinfo so they don't hold seize during an open() call

Description:

$ZU(49), which is used to report the status of a database, no longer acquires an internal Caché resource that would block new users from entering Caché.

Under certain conditions a disk can be in a state where $ZU(49) might hang while it tries to open the cache.dat file and in the past this would block users from entering Caché until the $ZU(49) completed.

It no longer does this.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: OpenVMS
DevKey: JO1845
Summary: Fix problem where a Caché job started via SYSMAN could enter a spin loop

Description:

A problem has been resolved on OpenVMS cluster systems involving the OpenVMS SYSMAN utility and Caché processes.

Previously if the OpenVMS SYSMAN utility was used to execute a Caché job on a remote node, and that Caché job issued more than one read request, the Caché job would enter a CPU loop on the remote node.

Caché has been updated so that the job will terminate in this situation. According to the HP documentation for the SYSMAN DO command, it is unsupported behavior to use the SYSMAN DO command to invoke a procedure which performs input.

Note that when (1) a Caché job started via SYSMAN is terminated by SYSMAN in this manner and (2) SYS$OUTPUT is an RMS file or a mailbox device which has been buffered, then pending I/O for SYS$OUTPUT is discarded instead of being written. This is true for any Caché job started with SYS$INPUT defined as a mailbox device, but only when SYS$OUTPUT is also a mailbox or an RMS file.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1849
Summary: Use operating system file info to prevent assigning two SFNs to a database

Description:

Caché has been enhanced to prevent problems with symbolic links and other aliases for database files. Previously Caché would not detect that two file specifications resolved to the same database. This resulted in database degradation if both pathways were used simultaneously.

If links are used, the recommended method is to create a link at the directory level rather than the file level. There are other files in the directory such as the cache.lck file which are required for other mechanisms to work properly. Links at the database level are not prohibited because there are some facilities which require them. In these cases, the link is to a special file rather than simply a CACHE.DAT in a different directory. Veritas Quick I/O files are an example of this.

If a link is changed while a database is mounted, it may become inaccessible.

When a database is mounted for the first time, the name which is used is added to an internal table for lookups. All requests to access a database which matches this file will use this name to open the file. If the name stored is the name of a link and that link is changed, the system will refuse to open the database until the problem is resolved.

Note: Make sure that all affected databases are dismounted before changing any links.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: Windows
DevKey: JO1872
Summary: Correct ASYNCWIJ error handling and recovery in the write daemon

Description:

A rare problem has been resolved which affects Windows systems where the write daemon could get an error writing to disk. This would cause it to skip the rest of the work for that pass resulting in database degradation. In order to cause a problem, the write error had to occur writing the image journal or the last database block to disk. Errors at other times were handled properly.

This change only affects Windows as asynchronous journal writes are not enabled on other platforms.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: UNIX, OpenVMS
DevKey: JO1882
Summary: Assure multiple WD's don't overwrite each others work

Description:

A problem affecting UNIX and OpenVMS systems which could occasionally result in hung jobs (but not a hung system) has been resolved. The symptom was that jobs would show up in cstat with a pstatebits value of 41.

Not all jobs with 41 are hung. This is a normal state for jobs queued to be run or which were queued and are in the process of waking up. The orphan jobs would be seen in this state on an idle system.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1889
Summary: Make %STACK and %ETN work properly with null subscripts

Description:

Error handling and viewing the execution stack of another process has been enhanced in the case where a process enables null subscripts, but null subscripts are not enabled for the job viewing the information.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SML366
Summary: Fix a situation where locking may go into loop

Description:

In a scenario where multiple processes are attempting to lock nodes, such as:
Process A: L +^a(1,2,3,4)  ; granted
Process B: L +^a(1,2,3,4)  ; wait here
Procses C: L +^a(1,2,3,5)  ; granted
Process A: L +^a(1)        ; wait here because process C owned the node
Process B will be awakened and go back to top level to lock again and wait in ^a(1). ^a(1,2), ^a(1,2,3) and ^a(1,2,3,4) are marked with BACKTOTOP flag.

Then if process C attempts to lock ^a(1,2,3) or ^a(1,2,4) it will go into a CPU loop.

This has been fixed.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML495
Summary: Only convert allocated blocks in map block for CVENDIAN

Description:

When CVENDIAN converts an 8 KB database, it is now only converts blocks allocated in map blocks. This will make the conversion faster when the database is only partly filled up with data.

This change also handles a stranded block (marked 'allocated' in map block, but not used in any global). In some cases these blocks could have badly formatted data so this change does more sanity checks while converting Data and Pointer blocks.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML502
Summary: Support converting databases greater than 4 GB

Description:

CVENDIAN would not convert databases larger than 4GB; this change enables it.

The problem could occur when an 8-KB database is converted, and there are big string data blocks in the database above the 4-GB boundary. Caché uses fseek() to change the file position which fails on files larger than 4GB.

With this change, Caché changed the way it converts 8-KB databases. It reads the map block first and then only converts the blocks marked 'used' in the map block. The original way is to convert every block in the database sequentially, though if there is a big string block it will reposition the file to read other blocks.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: AIX, Linux
DevKey: SML503
Summary: Fix problem with SuperServer file descriptor

Description:

This change fixes an occasional problem where the SuperServer daemon for Caché would crash generating a core dump on AIX and Linux. It was due to the generation of an invalid file descriptor created for the SuperServer's TCP device.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML504
Summary: Fix CVENDIAN to flush previous written map blocks before reading a converted map block

Description:

This change fixes a problem for CVENDIAN running over a networked (NFS) database.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SML506
Summary: Fix CVENDIAN for a case on a zero-offset 8-KB block

Description:

The CVENDIAN utility could go into a loop when it tried to convert an 8-KB block with a zero offset in the block. It failed when converting little-endian to big-endian running in a big-endian machine or converting big-endian to little-endian running in a little-endian machine.

This is now fixed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY897
Summary: Prevent RECEIVE daemon from holding up quiescing

Description:

This change addresses an issue where quiescing the master after the last pass of backup could not complete due to the RECEIVE daemon checking connections to remote servers.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY906
Summary: Fix quiescing problem with external backup

Description:

This change corrects a problem during concurrent external backup where quiescing system activity might fail, resulting in backup failure.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Cluster Specific
Platforms: OpenVMS
DevKey: JO1830
Summary: Allow ENQ daemon to exit without hanging system due to daemon termination

Description:

A problem which affects the startup of a clustered OpenVMS Caché configuration has been resolved.

A problem was introduced in 5.0.10 where, if the ENQ daemon exited because there was a problem that prevents it from joining the cluster, it would freeze the system.

This has been changed so the system does not freeze in this situation.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY1024
Summary: Fix cluster journal restore

Description:

This corrects two problems in specifying an existing journal log to use in cluster journal restore after one selects the option
"[I]dentify an existing cluster journal log to use for the restore"
(under the menu "Cluster Journal Restore - Setup - Journal File Info"):
  1. The path of journal marker log was constructed incorrectly. The problem was present in 5.0.4 and later.

  2. If one got an error in the "[I]" option (such as journal marker log not found) and then pressed <ENTER> to skip the "Journal File Info" menu, cluster journal restore would be aborted. Then the operator was prompted for "running private journal restore". The problem was present in 5.0.0 and later.

The correct behavior is returning to the upper-level menu.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: JGM016
Summary: Overflow when Extend size > 2047

Description:

A bug has been fixed where having an "Extend by:" setting for a database of greater than 2047MB will cause the Control Panel to generate a run-time error '6' Overflow when exiting the database properties window.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: JGM017
Summary: In the Control Panel, a security-enabled check-mark momentarily appears incorrectly

Description:

An error has been fixed in the Control Panel where the context menu in the Caché Direct Users window can momentarily show the Security Checking Enabled setting incorrectly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: OpenVMS
DevKey: JGM018
Summary: Suspending a job on an OpenVMS server from the Control Panel

Description:

An error has been fixed which prevented the Control Panel from suspending and resuming user processes on OpenVMS servers.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: TCS013
Summary: Provide non-interactive %FREECNT entrypoint

Description:

This change adds a non-interactive entry-point into %FREECNT.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: TCS014
Summary: %IS and %GIGEN need to consistently handle "^" and "?"

Description:

In both of these routines, entering a "^" will now take you back to the "Device" prompt; and entering a "?" will provide help text or tell you there is no help text available.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 


Changes for Caché 5.0.14

This section provides a listing of changes between Caché 5.0.13 and Caché 5.0.14.

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

This document contains several sections:
Important Caché News, Alerts, and Advisories
From time to time, InterSystems publishes items of immediate importance to users of our software. These include alerts, mission-critical issues, important updates, fixes, and releases of Caché.

The most current list can be obtained from the InterSystems Web site.

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 Web site.

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


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

 



Category: CSP
Platforms: All
DevKey: MAK1011
Summary: %cspServer processors were not timing out correctly for Preserve=0 sessions

Description:

In the CSP gateway, there is a timeout value for %cspServer processors that have not had a request for a while. This value was being lost on the server which prevented these %cspServer processors from timing out. This is not serious as they do not consume licenses or use any significant resources. However, this logic is now fixed to time these jobs out.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK1199
Summary: Report error if you continue a session by passing CSPCHD argument to a cookie based session

Description:

If a session is using cookies only to provide session management, and a request comes in for an existing session that does not provide a cookie, and the request uses a CSPCHD argument to specify the session, this will now throw an error. This error, $$$CSPNoCookie, is trapped in the error page as normal.

This means that if you bookmark a link with a CSPCHD sessionId in it and then use this link to a CSP application that is only using cookies, it will generate an error. The error page could use an HTTP redirect to the same page (but without the CSPCHD) to create a new session and continue if it wishes.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK1222
Summary: #call always throws a warning when used with HTTPS

Description:

When an HTTPS connection is used for a CSP page with #call in it, then we insert the HTML line:
<iframe id="cspBrokerFrame" height="0" width="0" frameborder="0"></iframe>
This is used by #call on some platforms to request data from the Caché server. Due to a bug in Internet Explorer, if you bring up a page using an HTTPS connection, Internet Explorer reports that this page contains insecure objects because this tag does not have a 'src' attribute. Actually, it is not loading any data from the server so it is perfectly secure.

To work around this bug for HTTPS connections we will now output an IFRAME tag with a 'src' specified to a page that does not exist. This will cause the browser to request this page and get a "page not found" error, which it ignores.

With this workaround in place the page is shown as being secure in Internet Explorer; Mozilla, Safari, Opera, etc. continue to work correctly even with this work around.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK367
Summary: Increased max number of DBs that ECP can recover.

Description:

ECP recovery was limiting the total of all remote DB path lengths to 4KB. ECP server would deny recovery if the total of all DB paths exceeded 4KB. This change increases that length to 65KB.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: JO1852
Summary: ECP Server fix for 2-KB database sending data block for deleted global

Description:

A problem with ECP configurations involving 2-KB databases on the server has been resolved. The symptom was spurious database errors or other errors on a client referencing globals with single character names after a global with the same first character has been killed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: MAK866
Summary: Improve documentation of %ConstructClone and introduce a new flag

Description:

The documentation of %ConstructClone in %RegisteredObject failed to mention that if you clone the parent side of a parent-child relationship or the "one" side of a one-to-many relationship with shallow clone (deep=0), it will still clone the children/many objects. This is because each child/many object can only have one parent/one object it is pointing to. If Caché did not do this, the relationship would always be empty as the existing object will still be pointing at the original parent/one object and not the cloned one.

This change introduces new argument 'deep=-1', which when set will force a shallow clone even for these two relationship cases. Thus, the application can just clone this object and not touch any of the child/many objects.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: Object.Java
Platforms: All
DevKey: MAB361
Summary: "No serial storage information available" message in Light Java Binding

Description:

Exception with message "No serial storage information available" was raised in some cases in Light Java Binding for valid serial classes. This happened when objects of the class were initially loaded from child tables and then from embedded objects. This is fixed now.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Java
Platforms: All
DevKey: MAB362
Summary: Performance of creating single objects in Light Java Binding

Description:

Performance tests indicated that creating single object in Light Java Binding had become about 15% slower compared with Caché version 5.0.5. This is fixed now and it is actually slightly faster.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Java
Platforms: All
DevKey: MAB363
Summary: %Date and %Time values get corrupt when serialized in collection properties

Description:

The %Date and %Time data types are now converted to logical representations when they are serialized on Java client. This prevents their being corrupted.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Library
Platforms: All
DevKey: MAK1202
Summary: %File:FileSet query could get a <STORE> error if a large number of files involved

Description:

If there were a very large number of files to report in a %File:FileSet query, it was possible to get a <STORE> error. Now instead of using a local array to sort the files, Caché uses a global to avoid this problem.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV1897
Summary: Add #classcontext and #classmethod to generate table routines

Description:

This changes corrects an error involving the use of ..methodcalls in SQL triggers code and SQL computed field code where the computed field is a triggered computation. Now the code in the generated table routines treats these calls as class method calls and not as instance method calls.

If you have an computed-always computed field (transient property), you must handle the #classmethod/#classcontext settings yourself as this computed code can end up in any generated query routine in cached queries, embedded SQL, etc.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK593
Summary: Optimizations for rowid conditions

Description:

The performance of the optimized multi-index algorithms was improved in certain cases where there are conditions on the rowid or its components, for example:
SELECT %ID FROM t WHERE t.x=? or %ID=?
In these cases, the use of an additional temp file was avoided, resulting in overall better speed as well as possibly a faster retrieval time for the first row.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK602
Summary: Multi-index optimizations for default structure inherited index

Description:

When using default storage, the map definition of a non-bitmap index inherited from a superclass contains a condition that has to be applied to each row when reading the index, to verify that the row actually belongs to the current table.

In prior releases, this code was not used in all cases. This change makes it applicable where it should be used.


Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2298
Summary: A query with a date in the WHERE condition returns a wrong type

Description:

A query with a WHERE condition on a date field like:
SELECT * FROM Table WHERE Datefield = {d '2000-01-01'}
might not work through ODBC from an Microsoft Query client. This change corrects that issue.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



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

Description:

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

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY894
Summary: Fix cluster backup

Description:

This change corrects a cause of <NOLINE> and <UNDEFINED> errors in cluster backup.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY906
Summary: Fix quiescing problem with external backup

Description:

This change corrects a situation that can occur during concurrent external backup where an attempt to quiesce system activity might fail resulting in backup failure.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY990
Summary: Update write-image journal file name after JRNSTOP and JRNSTART

Description:

This change addresses a problem with updating the write-image journal information after journaling is stopped and started. The problem could prevent journal recovery from running at startup.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Licensing
Platforms: All
DevKey: RJW989
Summary: Correct <ACCVIO> when CPU count exceeds license capacity.

Description:

If an Entree license key is used on a Windows or Linux system with more than two CPUs, the garbage collector process encountered an access violation and the system would not start up properly. Although the Entree product type does not support this type of system, the configuration should start in diagnostic mode which permits a single user to log in and diagnose the problem. With this change it now does.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML490
Summary: Fix problems sharing a lock on non-subscripted nodes

Description:

This change fixes two problems related to sharing a lock on a non-subscripted node lock.
  1. A incoming share lock should wait if there is any waiter on the lock even though the lock is owned by another job with share mode.

    For example: JOB A locked ^a#"S", job B's attempt to lock ^a will be blocked, then job C tries to lock ^a#"S" should also wait.

  2. When there is than one job on network (ECP or DCP), the client may try to lock the same non-subscripted node on the server. They can get hung if a job on the server also competes for the same lock.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML491
Summary: Send out ECP de-lock request right away even though it is an asynchronous request

Description:

This fixes an issue when there is only one job on an ECP client doing lock and unlock. The unlock request may be delayed for one second before being sent to the ECP server. This may cause a performance problem on another non-ECP client talking to the ECP server.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML494
Summary: Fix another share lock on non-subscripted node

Description:

This change fixes an issue with sharing a lock on a non-subscripted node. For example:
Process A locked ^A#"S"
Process B locked ^A  <- it will wait here.
Process C locks ^A(1)#"S" should also wait, without this fix it will grant this lock.
Change SML490 fixed the case where Process C lock ^A#"S".

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML497
Summary: Fix a problem of 'Immediate' unlock mode over DCP

Description:

When a DCP client job is in an open transaction, the 'Immediate' unlock a node (for example, L -^a(1)#"I") over DCP only removes the lock entry in client site. The lock stays in DCP server. This change fixes this problem.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML499
Summary: Fix a possible lock structures inconsistency on network server

Description:

This change fixes a possible lock structure corruption on the network server side when jobs lock parent and child nodes, for example
L +^a(1,2)
L +^a(1)

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Lock
Platforms: All
DevKey: SML500
Summary: Fix one more problem of sharing a lock on non-subscripted node

Description:

This change fixes a problem on non-subscripted share lock in addition to the problems solved by SML490 and SML494. For example:
Job A: L +^a(1)#"S"
JOB B: L +^a         <- it will wait here.
JOB  : L +^a#"S"     <- This should be waiting, but without
                           this fix the job C will grant this lock.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1008
Summary: Fix a performance/correctness problem with cluster shadowing and fast shadow de-journaling

Description:

The symptoms of the problem on a cluster shadow may include:

  1. Shadow de-journaling falls behind gradually (but once restarted, the shadow can catch up quickly)
  2. Potential incorrect values of SETs (very rare)

This changes corrects this issue.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.TCP Devices
Platforms: All
DevKey: GK371
Summary: ECP client change state to NOT CONNECTED or DISABLE didn't cleanup all blocked processes

Description:

When an ECP client is out of request buffer space, and processes are waiting to queue a request across ECP, if during the wait period the connection state is changed to DISABLED or NOT-CONNECTED only the first 100 jobs will return a <NETWORK> error, the rest will hang forever.

This change will resume all jobs when the connection state is not normal or recovery, so they can cleanup/return net err.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Changes for Caché 5.0.13

This section provides a listing of changes between Caché 5.0.12 and Caché 5.0.13.
This document contains several sections:
Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate importance to users of our software. These include alerts, mission critical issues, important updates, fixes, and releases of Caché.

The most current list can be obtained from the InterSystems Website.

Users should check this list periodically to obtain the latest information on issues that may have an effect on the operation of their site.


General Improvements
When appropriate, InterSystems adds general improvements to the features and functions of Caché beyond those required by critical fixes. Such improvements are contained in this version.

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: CFL1145
Summary: Fix edition of ECP server

Description:

This change ensures uniqueness in server names and address fields when a new server is added.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Control Panel
Platforms: All
DevKey: CFL1136
Summary: Fix Control Panel holding lock indefinitely

Description:

This change corrects an issue with the Control Panel. Prior to the modification, every time a Local Database was expanded a new entry was added to the lock table. These lock entries were removed only when the Control Panel was closed. With the correction, the lock is released when the expansion is finished.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK918
Summary: If posting >32k of data in a form to CSP create a stream object to hold information

Description:

If you have a form in a Web page such as:
<form name=form1 method=post action='textarea.csp'>
<textarea name=txt rows=15 cols=100 value="">
</textarea>
<br><input type=submit name="btn" value="Submit">
</form>
And the text area contained more than 32k of data then the CSP server was crashing. Now it creates a stream to hold all the data and when you access %request.Data("txt",1) you will get the stream oref. This means that for any fields that could be larger than 32KB, 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: CSP
Platforms: All
DevKey: MXT561
Summary: Make boolean value passed by #server or #call a proper Caché value

Description:

Before this change, the passing of JavaScript boolean values as #server or #call arguments was inconsistent. A boolean value passed by #call or #server is "true" or "false"; the Java applet based #server in IE passes these values as -1 or 0; and the Java applet based #server in Mozilla passes these values as "true" or "false". No upward compatible solution is consistent, so we are implementing the most Caché like solution of passing true or false as 1 or 0.

The implementation of this change is designed to make it fairly easy for a customer to back out the change if desired. The adjustment of the JavaScript boolean value is done in the JavaScript function cspMakeBoolean in <CacheDirectory>/csp/broker/cspbroker.js. Comments are included in this function explaining how to restore functioning to the previously inconsistent model.

The programmer will need to adjust the application code if passing boolean value arguments by #call or #server. In this case, scan the code for tests for equality to "true", "false" or -1 and change the code to expect 1 or 0 as the Caché value of the boolean.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT211
Summary: Resolve an issue in which the Gateway's Systems Management suite would not operate for cases where the path to the IIS root contained a period.

Description:

This change resolves an issue in which the Gateway's Systems Management suite would not operate for cases where the path to the IIS root contained a period. For example:
C:\Inetpub\www.com\Website
Calls to the systems management suite resulted in an 'Invalid Request' error being returned to the browser because the 'www.com' component that was confusing the Gateway's logic for identifying requests for Systems Management forms.

In general, having periods in file paths (that is, in directory names) to Web resources can cause ambiguities and confusion. This is particularly true for cases where the entities in question are virtual (as is the case with CSP-based resources).


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Net
Platforms: All
DevKey: MXT529
Summary: %Net.POP3 should save attachments with improper headers

Description:

If StoreAttachToFile property of %Net.POP3 is true, then attachments are saved to the directory specified in AttachDir. An attachment is indicated by the "Content-Disposition=attachment" header. Previously the file would only be saved if the filename attribute was specified in the content-disposition header.

Now %Net.POP3 will save all attachments, generating the file's name as follows:

  1. If filename specified on Content-Disposition filename attribute, then use that.
  2. If filename specified on Content-Type name attribute, the use that.
  3. Otherwise create a temporary name of the form ATTxxxxxx.dat

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSPGUI
Platforms: All
DevKey: YSD878
Summary: SQL Manager Tune Table does not stop if table is empty

Description:

Prior to this change, when you run Tune Table through SQL Manager, if the calculated Extentsize is zero, the selectivity functions will still be called and updated. After this change, if the calculated Extentsize is zero (meaning there is no data), then the selectivity functions will not be called resulting in no changes saved to the table. A message will display:
Table extentsize = 0. No changes will be made.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Explorer
Platforms: All
DevKey: CFL966
Summary: Rebuild ^rINDEX only if needed

Description:

With this change, Caché rebuilds its routine index global only when it is needed. Prior to the modification, the index was often rebuilt unnecessarily which resulted in a performance slowdown.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Installation
Platforms: All
DevKey: LRS817
Summary: Caché installation node conflict avoidance

Description:

This change avoids installation conflicts with Caché running on a different node. It applies to UNIX and OpenVMS installation procedures.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Languages
Platforms: All
DevKey: CDS594
Summary: Fix compiler <ACCVIO> with GOTO $CASE()

Description:

When a $CASE function was used as the argument for a GOTO command, there could be an access violation when compiling the routine or an unexpected error when executing it. This change removes that possibility.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Languages
Platforms: All
DevKey: CDS597
Summary: Fix compiler <ACCVIO> with $ZSORT(var,2)

Description:

A Caché process could get an access violation when compiling a $ZSORT() function which had an invalid second parameter. This correction eliminates that situation.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK289
Summary: Fixed a typo in ecprecovery.mac

Description:

This corrects a typographic error in a label that could cause ECP recovery to fail.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK346
Summary: Change LAT connect and disconnect logging

Description:

Caché on OpenVMS logged a SYSLOG entry for every LAT session start and stop. This change modifies Caché not to log an entry on session enter and exit.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.CDL.UNIX
Platforms: All
DevKey: DLP1113
Summary: Validate ID value in %OnDetermineClass

Description:

If %OpenId is called with an ID value that contains multiple components, and one of those components is null, then an error will be returned indicating that the ID value is invalid.

For example, Class A is persistent and has two properties, P1 and P2. There is an idkey index on P1 and P2. ##class(A).%OpenId("abc||") will not succeed and the error message will indicate that one of the ID component values is null.

Previously, a <SUBSCRIPT> error would have been reported.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1135
Summary: Qualify constraint origin

Description:

Unique constraints that originate in a class are not properly enforced when inherited by a subclass because the origination of the constraint is not projected to SQL.

Caché now qualifies any unqualified class names projected to SQL as constraint origination classes.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1165
Summary: Support references in parent IDKEY

Description:

IDKEYs (aka ROWIDs) are either simple values or multiple values delimited by "||". When a value is a reference to another class and that reference also contains "||" characters (the referenced class has an IDKEY based on multiple properties), then Caché must keep track of the number of "||" characters expected to be in each component value of the IDKEY. It uses that information to extract the individual IDKEY component values using $PIECE.

When a class is a child, and the IDKEY of the parent is based on multiple properties, and one or more of those properties is a reference to another persistent class whose IDKEY is also based on multiple properties, then the storage compiler would generate incorrect code to save the data. This is because it was making an assumption that all parent properties (identity properties) did not contain component values.

This has been fixed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DLP1130
Summary: Uniqueness check not enforced by SQL if subclass

Description:

SQL was not properly enforcing an inherited uniqueness constraint. For example, suppose Class A is a persistent class with a property, P1, with an index, I1, on P1 which is defined to be unique.

Then, further assume Class B extends Class A.

Prior to this change inserting a row into Class A will fail if the value provided for P1 already exists in the extent of Class A. However, an SQL insert into Class B will incorrectly succeed if the value of P1 exists for a row in Class A.

This has been fixed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2105
Summary: Uniqueness check not enforced by SQL if subclass

Description:

An error has been fixed where a unique constraint was inherited by a subclass and an INSERT was allowed into the subclass's table such that the unique constraint as defined in the base class was violated.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2177
Summary: <SUBSCRIPT> errors occur when compiling tables

Description:

A problem has been corrected in the SQL table compiler where an index map might not produce the correct filing code if an overridden full row reference was used for the map.

Also, a problem has been corrected in the SQL table compiler where code to determine if a value exists for a field in any row of the table might not produce the correct code if an index was defined with a structure like:

^[$Piece(LVar({F1}),",")]Glo("a",{F1},{ID})
Both of these problems resulted in incorrect syntax generated for the table filing routines.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2244
Summary: Fix INSERT/SELECT when table has stream fields but none inserted

Description:

An error has been fixed where an INSERT/SELECT statement would crash with an <INVALID OREF> error if the table being inserted into had a stream field that was not specified in the insert column list.

Likelihood Medium
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2251
Summary: DDL Import which gets <ROUTINE TOO BIG TO SAVE> gets Caché Internal Error

Description:

A problem has been corrected in the Caché Macro Preprocessor where a <UNDEFINED> error might occur in the preprocessor's error trapping, masking the real error it was attempting to report.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2300
Summary: Syntax error creating a view

Description:

A error was corrected where a view with a sub-query in the view query's WHERE clause was incorrectly treated as a potentially updatable view causing an <UNDEFINED> error during compilation. This change makes Caché SQL views with any subqueries in the view's query not updatable.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2308
Summary: Correct issue with Parent table ID/RowID field in MapData

Description:

Prior to this change, a table might fail to properly compile code responsible for filing the data if %CacheSQLStorage was used, and a field in the map data was the IDKEY field of a parent/grandparent table, and the IDKEY of that table was based on the single field.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN473
Summary: Fix ConfigDSN code for Unicode builds

Description:

This change fixes the problem with DSNConfig, and updates the parameters to take the following keywords for Caché 5.0:
  1. User or UserName or UID
  2. PWD or Password
  3. Host or Server
  4. Port
  5. Description
  6. Namespace or Database
  7. Unicode SQLTypes
  8. Static Cursors
  9. Query Timeout

These keywords are case insensitive.

If a keyword is not defined, appropriate values are assigned with the exception of UID and PWD.

To pass this into the ConfigDSN API, you must format a string with "\0" separators between each keyword=value pair. The entire entry must be followed by a double "\0". For more details on the use of ConfigDSN, see the Microsoft online documentation.

The following is an example of such a string. It has been broken up on multiple lines for readability.

DSN=Testing\0
    Namespace=User\0
    Host=myhost\0
    Port=1976\0
    Description=My own private server\0
    UID=someone;Pwd=passwd\0\0

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK600
Summary: Fixes to loop suppression code generation

Description:

Previous speed improvements for queries with GROUP BY or DISTINCT have been extended to apply in more cases, and also to work correctly in a few cases in which problems occurred, for example where an indexed property containing NULL values had caused a <SUBSCRIPT> error or an infinite loop when running certain queries.

Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK603
Summary: For TOP 1 uses faster no-temp-file solution

Description:

When TOP and ORDER BY are specified, this change promotes the choice of access paths that do not build temp-files. This produces the first few rows faster (for example, by using an index that matches the ORDER BY), rather than choosing the access path that is judged to be the fastest in returning ALL the rows that satisfy the query.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2204
Summary: "set option lock_timeout = xx" cause error at Prepare()

Description:

A problem has been corrected where a statement like:
SELECT OPTION LOCK_TIMEOUT = 30
would not Prepare when using a Dynamic Query.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2257
Summary: "insert into...select" fails when table has blobs

Description:

A condition has been fixed where:
INSERT INTO MyTable1,... (MyStreamField1)
    SELECT MyStreamField2,... FROM MyTable2
would crash with an SQLCODE=-400 error for cases like:
INSERT INTO MyTable1,... (MyStreamField1)
    SELECT 'some literal',... FROM MyTable2
or
INSERT INTO MyTable1,... (MyStreamField1)
    SELECT NULL,... FROM MyTable2

Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2258
Summary: Fix <UNDEFINED> in %qaccpq2 with objcode(1)

Description:

A problem has been corrected in the table compiler when compiling large tables where an <UNDEFINED> error would occur in some cases when splitting the generated table filing code into multiple routines.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2275
Summary: SQL update causes invalid result

Description:

An error has been fixed where an SQL UPDATE statement might not save the data correctly if the class used %CacheStorage, and had about 185 fields in the table, when all were stored on the same node in the data (master) map.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQLManager
Platforms: All
DevKey: YSD824
Summary: SQL Manager Show Plan using up License

Description:

This changes SQL Manager's QueryPlan to use "/csp/docbook/" instead of "/apps/documatic/" in the URL. The former will not consume an extra license and will clean up CSP session correctly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQLManager
Platforms: All
DevKey: YSD834
Summary: Display problem with SELECTIVTY

Description:

This change corrects a problem with SELECTIVITY where a property may be indicated incorrectly when you switch tables under certain conditions. Now, after the table fields are loaded, the selectivity box and label will be set to null. These two fields will be filled when you click on any row.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS589
Summary: Do not return bad object code after <ROUTINE TOO BIG TO SAVE>

Description:

This fixes a possible access violation when attempting to run a routine that received a <ROUTINE TOO BIG TO SAVE> error.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: OpenVMS
DevKey: HYY973
Summary: Pass proper OS directory to jobbed job on OpenVMS

Description:

This change addresses an issue on Caché for OpenVMS systems configured with the option SwitchOSdir=1 set, where the OS directory of a user login process didn't get passed on to a jobbed job.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: HYY974
Summary: Pass proper OS directory to jobbed job

Description:

Addressed an issue on Caché systems configured with the option SwitchOSdir=1 set, where the OS directory of a user login process didn't get passed on to a jobbed job.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JLC666
Summary: Fix UnicodeBig/Little translations in 8-bit locales

Description:

In some character sets used by 8-bit locales, some characters are left undefined (for example 0x98 in CP1251). In the corresponding UnicodeLittle and UnicodeBig translations, these undefined characters used to map to '?'. This feature made it impossible to perform round-trip binary translations, for example CP1251->UnicodeLittle->CP1251, without losing data.

Since UnicodeLittle is used for communication between clients and servers in several situations (for example shadowing), in which binary data may be involved, the UnicodeLittle and UnicodeBig translations have been changed so that undefined characters now map to themselves in both directions. This has no effect on text data and allows binary data to do round trips without any loss.

The affected character sets are: CP874, CP1250, CP1251, CP1252, CP1253, CP1255, LatinG, LatinH.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1828
Summary: Gcompact() now checks switches between bottom pointer blocks

Description:

GCOMPACT did not check to see whether switch 10 or 13 was set except between globals. The result is that if GCOMPACT is running, a BACKUP or other activity which has a timed wait for the system to quiesce could fail.

GCOMPACT has been updated to check for switches while it is processing a global so that it will pause more quickly when a switch is set.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1831
Summary: Test return status from fsync and take action if it fails

Description:

Internal retry loops were added to fsync() calls for UNIX platforms to wait for a successful completion if there is an error. fsync() is used on UNIX during database expansion, writing the journal file and when writing database blocks to the WIJ and cache.dat files to flush the UNIX buffer pool out to disk so the writes are known to be persistent.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1832
Summary: Add fsync() calls to writeemptyblks()

Description:

Operating system calls to sync data to disk during file expansion for 8-KB databases on UNIX systems have been enhanced to avoid possible problems on certain types of devices. Prior to this change, problems in this area would show up as a serious disk write error occurring in the write daemon following an expansion which appeared to succeed even though there really wasn't enough disk space available for the newly allocated blocks.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: LFT1286
Summary: Prevent changing the new pointer block to 0

Description:

This prevents accidentally setting the New Global Pointer Block to 0.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: LRS812
Summary: Caché startup node conflict avoidance

Description:

The ability to prevent simultaneous startups of Caché configurations on different network nodes has been added to Caché. This feature applies to configurations that share the same physical directory, but have been installed on different machines, for example members of a cluster.

The current change blocks starting or stopping Caché if the directory is already in use on a different node instead of the local node. It does not provide protection against mounting a database or accessing a file that is in use on a filesystem shared among machines. That is the responsibility of the user/application.

The ccontrol "list" and "all" commands have been modified to identify configurations in use by a different network node.

This startup conflict avoidance mechanism involves recording the system (or node) name in the cache.ids file during startup. Thus, all machines which can share the physical file system containing the Caché configuration should have unique names. Under UNIX, this is the node name shown by the uname -n command, not the Internet name from the hostname command, which might be somewhat different.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: Windows
DevKey: LRS821
Summary: Fix Windows version of Caché to handle COM ports with job servers

Description:

This change corrects an error in COM port handling that caused memory leaks with JOB servers as well as an previous problem with JOB servers.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: Windows, 32-bit UNIX, 32-bit Linux
DevKey: RJF028
Summary: Use auint2 instead of auint1 for incblksfn array

Description:

Prior to this correction, running Caché backup on an instance of Caché with more than 256 databases mounted could cause the label block and incremental bitmap blocks of one database to overwrite blocks of another database. This problem affects Caché 5.0 on all platforms except for OpenVMS and Tru64 UNIX.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: RJW944
Summary: Remove confusing error messages on Windows startup if %ZSTART needs a long time

Description:

A confusing and spurious error message that was reported to the Windows event log if Caché required a long time (>10 minutes) to start (due to a long running ^ZSTU routine) has been removed. The message read:
Cache service process creation failed, child did not return;
Cache configuration CACHE error: 997.
Cache Control Service Startup failed; Cache configuration CACHE: .
The message is spurious because Caché did indeed start.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP231
Summary: Cforce completes no matter what processes are running

Description:

This fixes a situation where a control process crash prevented cforce from completing on Windows systems due to events not being available to Caché processes. Now cforce halts processes even if all events are not available.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP232
Summary: Use proper access rights when terminating jobs

Description:

This corrects a problem where cforce fails to terminate by force jobs that cannot be terminated cleanly during shutdown, possibly leaving jobs behind after cstop or cforce.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SAP238
Summary: Set ECP daemon priority to standard user priority

Description:

ECP daemons were running at low priority (5 on Windows and 2 on UNIX). This change now has the daemon run at normal user priority (7 on Windows, 0 on UNIX).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1430
Summary: Fix DCP lock uploading problem when DCP server shutdown and restarted.

Description:

This corrects an error where the wrong result was be returned by $DATA(^global,variable). It occurred when a global was stored in a new format (that is, 8-KB block) database and the two-argument form of $DATA was being used on a top-level global node which was undefined but which had descendants.

It now returns the proper value, 10. Previously, it had returned 0.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SML477
Summary: Fix DCP lock uploading problem when DCP server shutdown and restarted.

Description:

When the DCP server has some locks from DCP clients, and is shut down and restarted, the locks on DCP clients may get into 'Lost' state because the upload of lock information from client to server may fail.

This has been fixed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: SML486
Summary: Fix a lock memory corruption on ECP lock.

Description:

This change fixes a lock memory corruption problem when an ECP client locks the server node and the ECP server node has SWITCH 10 or 13 turned on (for example on Caché backup). Previously, it only failed when a child node already been locked and it tried to lock the parent node.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: LRS770
Summary: Fix <UNDEFINED> error when $$EXTSELCT^DBREST skips files

Description:

This change corrects a problem with the non-interactive API for restoring backups, $$EXTSELCT^DBREST. Under some circumstances, an <UNDEFINED> error would be reported when attempting to skip over a database entry not flagged for restore in the directory list (that is, excluded from restore in a multiple database backup archive).

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY1011
Summary: Fix <UNDEFINED> error when shadow is configured to start at startup

Description:

This change addresses an issue where a shadow configured to start at startup could cause <UNDEFINED> error when it began.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LFT1297
Summary: .obj only routines overwritten by %RI

Description:

This fixes a problem using %RI. Prior to the change, it would allow you to unintentionally overwrite object-code-only routines. This change refuses to load a routine if you say YES to Compile? and NO to Replace? and the object code version of the routine still exists.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LFT1313
Summary: Prevent accidental duplicate ^mtemp nodes

Description:

This fixes a problem where a wrong routine list may be produced by routine utilities because the ^mtemp indices become inconsistent.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Weblink
Platforms: All
DevKey: CMT212
Summary: Improve the exception handling and automatic recovery mechanisms in the core Event Broker service.

Description:

This change improves and extends the exception handling and automatic recovery mechanisms in the core Event Broker (EB) service. The core Event Broker service is the dedicated TCP service that usually listens on port 7001 and is used in the non-HTTP modes of EB operation (for example, mode 0).

This correction was motivated by a problem in which the EB service closed down unexpectedly in a production system.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



General Areas of Improvement
In addition to critical fixes, this version of Caché contains improvements to specific areas of the product. They area summarized by area as follows:
Locales
This version of Caché adds support for the following locales: Thai, Arabic.
SQL & Object Connectivity
Numerous changes and enhancements have been made to Caché SQL and Objects. Among them are:

Support for Macintosh
This version of Caché nows installs and executes natively on Macintosh OS X 10.3. The installation kit is a standard ".dmg" distribution produced by PackageMaker.
Improved Handling of Database File-Full Condition
Many changes have been installed in this version of Caché to better handle the condition where the database, or the disk volume containing the database, becomes full. Among the more important of these are:

Improvements to Journal Restore
Journal restore has been made more robust in this version. Among the more noteworthy changes are these:

Performance Enhancements for Shadowing
This version of Caché includes a number of improvements in shadowing performance:

Note: To take full advantage of the improvements to shadowing, the Generic Memory Heap size in a Cache configuration should be increased by 2MB per CPU on systems where a shadow is expected to run. Increases larger than 2MB per CPU may improve performance eve further, but this is dependent on the nature of the shadowing demands.
Support for BigInt
Support has been added to Caché for the BigInt datatype, that is, integers in the range -9223372036854775808 to 9223372036854775807 inclusive. This support includes:



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.12

This section provides a listing of changes between Caché 5.0.11 and Caché 5.0.12.
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: CSP
Platforms: All
DevKey: MAK1153
Summary: %CSP.SysConnection exposes session data to client

Description:

Make sure that %CSP.SysConnection (which is used to test connectivity from the CSP gateway to the Caché server) can only be called from the gateway. If it is called from somewhere other than the gateway, it returns an HTTP error - Page Not Found.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK1177
Summary: If charset and content type are specified then always write out the 'charset=' header and use this charset

Description:

If a CSP page specifies a 'ContentType' and also a 'CharSet' then Caché always outputs the 'charset=<charset>' header and uses the requested charset to write the page out.

%CSP.Page does not define a CharSet by default. So this change will only effect pages where ContentType and a CharSet are explicitly defined.

Prior to this change, CSP would only write the 'charset' header out if the ContentType contained 'text/'.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT204
Summary: Resolve a problem whereby state-aware sessions would occasionally lock-up under Linux

Description:

This change corrects a situation where state-aware sessions (preserve mode 1) would occasionally lock-up, especially on Linux systems. In extreme cases, the Gateway could become unresponsive to other users. The cause was an internal memory access violation when responding to a session close or timeout event.

The integrity checking for state-aware connections has been improved and the logic for detecting and responding to closed sessions has been reworked.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Languages
Platforms: All
DevKey: CDS587
Summary: Provide switch so exponent must be upper case 'E'

Description:

Since Release 4.1, Caché has allowed the exponent designator for a number in scientific notation to be either upper or lower case, 'E' or 'e'. However, this is not compatible with some programs written in other dialects of the M language, which recognize only upper case 'E'. Those programs use lower case 'e' as a string delimiter. This change provides a switch which restores the behavior of recognizing only upper case 'E' as the exponent designator. The default behavior will continue to allow lower case 'e'.

To change the value of the switch for the current process, issue

SET oldvalue=$ZUTIL(68,63,newvalue)
To change the default value of the switch for all processes which start after this command is executed, issue
SET oldvalue=$ZUTIL(69,63,newvalue)
If newvalue is 1, both uppercase 'E' and lower case 'e' will be recognized as the exponent designator. If newvalue is 0, only uppercase 'E' will be recognized.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK301
Summary: ECP failed node recovery to scan for all possible ECP sessions

Description:

During ECP recovery, all ECP sessions should be reset. This change fixes a problem where some of the previous sessions would not be correctly identified and therefore not reset upon recovery.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK314
Summary: Fixed ECP client shutdown wait loop

Description:

In prior versions, ECP client shutdown didn't wait for all connections to drop, and it didn't handle free nodes properly. This change causes client shutdown to scan for all allocated slots.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK317
Summary: ECP recovery to cleanup sessions with no open transactions

Description:

ECP recovery didn't remove ECP sessions info if the session didn't have any open transactions. Because the session slot was not cleared, on the next system restart it would wait unnecessarily for that client to reconnect.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK324
Summary: Fixed a timing problem which prevented the write daemon from joining cluster failover.

Description:

Prior to this change, on slow machines, the write daemon might not join the cluster failover promptly which caused the failover to hang forever.

This was due to intercluster synchronization overwriting the write daemon recovery state, which prevented the new cluster master from resuming the recovery. This now operates properly.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK325
Summary: Reset the ECP client session on unexpected errors during recovery

Description:

This change corrects a circumstance where unexpected database errors that occurred during ECP client recovery could cause the recovery to hang.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK326
Summary: Add new ECP connection states to handle hang in connection-in-progress state

Description:

This change corrects the way ECP handles connection states. Prior to this, unexpected errors could result in ECP being hung waiting for a re-connect and the only way to clear it was to restart Caché.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK349
Summary: Clear ECP pending transaction bits on halt or dead job cleanup

Description:

If a job exited unexpectedly (for example, with an access violation), ECP did not clear the pending open transactions for that client. The next job that got assigned to the same process slot inherited these transactions, causing confusion between the client and server states. This change correctly handles the cleanup.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK350
Summary: %HALT to handle ECP open transactions

Description:

%HALT didn't rollback ECP open transactions when the client journaling was disabled. This change corrects the behavior to rollback ECP open transactions.
Note: rollback returns <ROLLFAIL> error if application server journaling is disabled. %HALT will rollback ECP transactions first, then it will raise <ROLLFAIL> error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: BJB291
Summary: Selectivity not saved in the class if KeepClassUpToDate = 1

Description:

If you run $SYSTEM.SQL.TuneTable("Schema.Table",1,1) the Selectivity was not getting saved as part of the Class definition. This has been fixed.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1025
Summary: Don't use preconstructed inheritance tree for inheritance resolution

Description:

In some rare cases, "method does not exist" errors would be reported when compiling classes. This was caused by an error in determining which methods are inherited from the superclasses. It is now fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK1042
Summary: Prevent <MAXSTRING> when importing classes from XML with very large implementation blocks

Description:

When importing a class from an XML file into Caché with a very long implementation (over 64k of data), it was possible to get a MAXSTRING error. The import routine tried to concatenate the beginning of the last line from the first 32k block with the next block and this pushed it just over the 32k limit. Now it keeps the beginning of the last line in a separate buffer and only concatenates this with the rest of the first line from the next 32k block rather than the entire block.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Relationships
Platforms: All
DevKey: DLP1064
Summary: Don't set modified bits when swizzling related objects

Description:

When a reference is swizzled, the modbit for that property is not supposed to change. This changes corrects the behavior; the value of the modbit is unchanged for simple swizzling.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1288
Summary: Clean up empty index globals in %DeleteExtent

Description:

The bitmap extent index for a class is automatically built whenever any index is built and the bitmap extent has never been built. When all instances are deleted from an extent there was a situation that caused the system to incorrectly assume that the bitmap extent index was already built.

This has been fixed by assuring that indices are purged whenever extents are removed. If any instances fail to be deleted successfully, the indices remain.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: JN228
Summary: Release Stream OREFS following parse

Description:

The SAX parser caches the XML parser it uses for performance reasons. During entity resolution, CacheStreams may be created via callbacks to %XML.SAX.EntityResolver and its subclasses. As a side effect of parser caching, the OREFS of these stream objects are also cached. (They are eventually garbage collected, but in a non-deterministic manner). This causes a problem if the user of the parser were to change namespaces before garbage collection of the stream occurs.

This modification corrects the error by reclaiming the streams as soon as the parse is completed.


Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: JN229
Summary: Return LocalName For EndElement NodeType %XML.TextReader

Description:

When the XML Reader NodeType was 'endelement', the LocalName property returned empty string. This correction makes it return the proper value.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2248
Summary: Use fields in subscripts when determining MapBlocks

Description:

An enhancement has been made to the calculation of a Map's estimated block usage to include information about the fields in map subscripts for the map. Now an index of the form:
^glo("index",Field1,Field2,ID)=""
will have a higher "cost" than an index of the form:
^glo("index",Field1,ID)=""
If the query optimizer can use an index on Field1, the second index should now be chosen.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement Yes

 



Category: SQL
Platforms: All
DevKey: DPV2252
Summary: Tune Table via SQL Manager was not updating map statistics

Description:

An oversight has been corrected where a table's query optimizer information was not fully updated until the class was recompiled. This was missed when the extentsize of the table was calculated through SQL Manager's tuning facility.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2255
Summary: Use $Get() for invalid condition / NEXT code with piece map when needed

Description:

In the situation where the last subscript defined in a storagemap for %CacheSQLStorage was a constant, attempts to execute a runtime query against this table could result in an <UNDEFINED> error. Whether the error occurred or not depended on the details of the global structure for the storage.

The possibility of this error has now been removed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2267
Summary: ASC does not work correctly

Description:

Prior to this change, a query that JOINs two tables in a WHERE condition and has an ORDER BY <f1> DESC, <f2> ASC might not return the rows in the correct order. This has now been corrected.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2270
Summary: GetCachedQueryInfo gets <NULLVALUE> error

Description:

In prior versions, Caché might fail to display the text of a cached query when listing the queries of a namespace. This change corrects that error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2278
Summary: Correct query generation for RowID mapping

Description:

This change corrects a situation where a table which uses %CacheSQLStorage and specifies its own Map RowID Specifications might generate improper map definition code. This causes improperly generated query code for queries against the table.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.DDL
Platforms: All
DevKey: DPV2283
Summary: Fix <UNDEFINED> error When InvalidCondition in Map

Description:

This change corrects an error in constraint checking. Under some circumstances, the checking of a unique constraint or a foreign key referential integrity check by SQL might produce an <UNDEFINED> error. This happened when an SQL query was needed to check the constraint, and the constraint was on the IDKey field.

Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT356
Summary: Infinite loop in CEnvironment::DisconnectAll()

Description:

Under some circumstances, Caché processes could generate a high CPU load after the user has closed them. The symptom was caused by an infinite loop in the process disconnect logic. This change eliminates that circumstance.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN482
Summary: Use localized decimal separator

Description:

A new checkbox has been added to the DSN configuration screen: "Use Locale Decimal Symbol". By default, CacheODBC sets the default decimal separator to "." to provide legacy support for some customers. Unfortunately, this causes some difficulties with applications like PowerBuilder that prefer to use the decimal separator as defined for the current locale.

Checking the checkbox "Use Locale Decimal Symbol" will use the decimal separator in process and leave its value unchanged. Leaving this unchecked will give the old default behavior of setting the decimal separator in the process to "." regardless of the locale.

This setting is defined for all DSNs on a system as it is a property of the driver when it is loaded. On UNIX, setting the environment variable CACHEODBCLOCALEDECIMAL = 1 lets the driver use the Locale's decimal separator value.


Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2260
Summary: Fix line-too-long issue with 16 map subscripts and overriding data access expressions

Description:

Under some circumstances, an SQL query might generate code in a single line which is too long (longer than 4095 characters). This can happen when there are many subscript levels (greater than 15) in the map definition and overriding data access expressions are used in the map definition.

This change corrects the problem.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: PVA070
Summary: A SELECT * query with joins on single column idkey columns does not work properly

Description:

An error has been fixed where conditions (especially JOINs) on single column idkey columns did not behave properly if the SELECT clause were 'SELECT *'. The suspect behavior could be poorly performing plans or SQLCODE= -400 when the query executes.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQLManager
Platforms: All
DevKey: YSD768
Summary: Menu options don't work in SQLMgr/Object/Execute/Query

Description:

In prior versions, choosing to execute a query from SQL Manager, but selecting an option from the menu after the query had been typed but not run, would not execute the query. The option choice and query execution would run properly, however, if you used the keyboard shortcuts to execute it instead.

This circumstance has been corrected.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS427
Summary: Fix ZQUIT 1 when $ZT=""

Description:

This corrects a problem that would cause an error handler to be skipped when a lower level error handler issued
ZQUIT 1 GOTO @$ZTRAP.
The problem happened when the lower level error handler set $ZT="". This would cause the ZQUIT 1 command to bypass the next error handler.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1825
Summary: Fix dead job cleanup to release global buffers

Description:

The code which cleans up after dead jobs in Caché will now check to see if the job has retained a global buffer and if so, it will free it.
Note: This does not mean that any global buffers owned by the dead job will be released. In many circumstances it is not safe to release the buffer as doing so might result in database degradation getting written to disk.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1826
Summary: Write image restore refuses to run if Caché shared memory section exists

Description:

The write image restore program will now refuse to run if Caché appears to be running from the manager's directory specified as part of the restore. A message noting this will be logged in the console log.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: UNIX
DevKey: LRS813
Summary: Fix TCP read and accept timeout handling under UNIX

Description:

A bug in timeout handling for TCP read requests under Caché/UNIX has been corrected. It could cause the READ to continue waiting past the specified timeout if the process were probed by ^%SS, ^JOBEXAM, or similar interrupting utility programs.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: Windows
DevKey: RJW753
Summary: Logging off windows causes dead cache processes

Description:

On Windows systems, Caché processes running in a Windows Command Prompt window or running from a local Caché terminal (the title bar will contain Caché TRM:processId) will be improperly terminated when the user who started them logs out of the Windows Workstation. This improper termination also occurs in Caché processes started via the job command from these processes. This problem has existed since Caché 4.0.

This change corrects this problem by establishing a console control handler to catch the Windows Logoff event and exit Caché normally. It also changes the way processes started by the job command are created so they will persist following logout from the Windows Console.

Users may encounter one different behavior in processes started by the job command. Since the process is started by the Caché control process at the request of the Caché foreground process, the jobbed process no longer runs in the login session of the user at the console who created the process with the job command. This means that on Windows XP, the process created by the job command will not be able to access network devices using the drive letter mappings defined for the user logged into the Windows console. You should use the UNC naming convention (that is \\server\share...) instead of the local drive mapping (for example w:\...) in your code to access network shares from processes started by the job command.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1560
Summary: Fix JOBEXAM causing access violations later

Description:

This corrects a rarely occurring situation where using JOBEXAM to view a process could cause that process to crash and get an access violation. This happened in the case where the examined process was completely out of process-private memory.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML472
Summary: Fix missing one DDP job array allocation

Description:

When an MSM job with a large internal job number accesses a remote Caché system using DDP, it may get <DSTDB> error.

This change fixes this problem.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML475
Summary: Fix missing wake up on write daemon lock complete, and avoid forcing ENQ daemon while shutting down master

Description:

This change corrects a problem with cluster failover failure when the master node is shut down. The source of the issue is that write daemon failed to notify the shutdown requestor when it finished causing a long delay. Also, the ENQ daemon has to be forced down when the cluster node is shutdown.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY885
Summary: Correct switch setting propagation in clusters

Description:

On a cluster platform, a situation may occur during backup if the procedure to block and quiesce updates/accesses gets an error or fails to quiesce. The problem is that switches set locally but outside the backup program may get cleared during backup.

This change corrects the issue.


Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: System
Platforms: All
DevKey: SML476
Summary: Fix ACCVIO on scan through lock table

Description:

This change eliminates a small timing window where a ^LOCKTAB or ^$LOCK SSVN could get an access violations when there is a large volume of lock table activity.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1798
Summary: Suspend lock timeouts over ECP during cluster failover and cluster backups

Description:

CLU^SWSET, ENQ10^DBACK and ENQ13^DBACK have been enhanced so that timed locks will not time out while switch 10 or 13 is set in a cluster.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY762
Summary: Enable null subscript support in journal restore and rollback

Description:

This change eliminates potential <SUBSCRIPT> errors during journal restore and transaction rollback.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY928
Summary: Allow transaction rollback in journal restore even when current journal file is not involved

Description:

In interactive mode, journal restore prompts for transaction rollback if some transactions remain incomplete at the end of restore. This happens even if the current journal file is not involved in the restore.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY944
Summary: Fix a problem in locating next journal file

Description:

This change addresses a problem with locating the next journal file. In earlier versions, Caché could incorrectly compute the next journal file name. This has now been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: Tru64, OpenVMS
DevKey: HYY952
Summary: Address issues updating cachejrn.log

Description:

Cluster journal files are logged in cachejrn.log in the pij directory of a Caché cluster. This log, cachejrn.log, is used by cluster journal restore and cluster shadowing to locate every journal file used by any past or present node of a Caché cluster.

This change causes failures in logging the journal file name in cachejrn.log to be reported in cconsole.log.

On VMS, updating cachejrn.log allows read sharing, eliminating a potential cause of update failure in lieu of cluster shadowing.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY960
Summary: Update transaction index properly

Description:

This change corrects a circumstance where the beginning offset of an open transaction was set to a value smaller than it should be. This did not affect transaction rollback but could affect those applications that assume the return value points to a valid journal record.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: OpenVMS
DevKey: HYY964
Summary: Fix an <ENDOFFILE> problem with reading journal files using sequential I/O on VMS

Description:

This corrects an issue on OpenVMS that may cause a copier on the source side of fast-mode shadowing to get occasional <ENDOFFILE> errors when reading a very small journal file.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY966
Summary: Retry journal expansion with smaller size, rather than switching to a new file, if bigger size fails

Description:

This corrects an issue that could result in unnecessarily many small journal files when the amount of free space on the journal disk is less than the expansion size of the journal file.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY603
Summary: Maintaining transaction states on the shadow (fast-mode only)

Description:

Fast-mode (aka "block-mode") shadows are now transaction aware and maintain a list of incomplete transactions that are applied on the shadow. To roll back incomplete transactions, stop shadowing and execute
SET rc=$$ROLLBACK^SHDWCBLK(ShadowID)
where ShadowID is the name of the shadow, and "rc" is the result code for the operation: 1 = success and 0 = failure.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY834
Summary: Correct a problem that caused shadow source nodes to be mistakenly deleted

Description:

This corrects an instance where choosing "this system as source" in control panel may not show any server info (and may get an <UNDEFINED> error) even if there is a running server servicing a shadow.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY835
Summary: Improve error recovery in shadowing

Description:

This change improves the error recovery processing in shadowing by addressing an issue affecting how stack was unwound when errors are passed on to upper level routines.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: Tru64, OpenVMS
DevKey: HYY946
Summary: Address a couple of issues of opening cachejrn.log in JRNINFO

Description:

This change does two things:

  1. It prevents occasional <NOTOPEN> errors (generated from updjrninfo^JRNINFO) on the cluster data server ("source") of shadowing.

  2. It allows multiple jobs on the source to open CACHEJRN.LOG file for READ simultaneously, resulting in some degree of performance improvement on journaling and shadowing.
Note: The latter item affects VMS clusters only. Read sharing is already in use on Tru64 clusters.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: OpenVMS
DevKey: HYY951
Summary: Address <ENDOFFILE> errors in shadowing on VMS

Description:

This change corrects a problem where the source of fast-mode shadowing (i.e., data server) on OpenVMS might get occasional <ENDOFFILE> errors.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY953
Summary: Address a partition issue in cluster shadowing

Description:

This change corrects an issue that some component of cluster shadowing might use more process memory than specified in Caché configuration.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY956
Summary: Disable journaling ^%SYS("JRNINFO") (for cluster shadowing)

Description:

Updates to ^%SYS("JRNINFO") by JRNINFO server are no longer journaled.

This addresses an issue of cluster shadowing where the shadow of a source server with no user activity is constantly seen as busy if ^%SYS("JRNINFO") is marked journaled (or "journal all globals" is set in 5.0.x).


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY957
Summary: Cluster shadow keeps device open for the same JRNINFO server whenever possible

Description:

This change corrects a performance issue where each cluster shadow request resulted in a JRNINFO server being jobbed off. Now, JRNINFO servers corresponding to a cluster shadow stay around whenever possible.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY986
Summary: Allow cluster shadow GUI on non-cluster platforms

Description:

This change corrects a situation where the control panel could report an <UNDEFINED> error when attempting to manage a cluster shadow, if the system running the shadow was different in kind from the system running the cluster. An example of this would be a Windows system shadowing a VMS cluster.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: RJF022
Summary: Compatibility-mode shadow should avoid reading beyond end of current journal

Description:

A correction to compatible-mode (record-mode) shadowing has been made to prevent the source of shadowing from sending journal records to the shadow destination which have not yet been written to the current journal file

This corrects a problem where the source of shadowing could get transient <FUNCTION> (or other error) while processing the current journal file during a journal switch. It also corrects an issue where, if the source of compatible-mode shadowing crashes, the shadow destination may have more recent completed transactions than what is available on the source after recovery.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shutdown
Platforms: All
DevKey: RJW945
Summary: Extra process started during shutdown for Windows 2003

Description:

Shutting down Caché on a Windows Terminal Server system can leave a cache.exe process attached to the shared memory object if ^SHUTDOWN takes more than about 3 minutes. This residual cache.exe process prevents the configuration shared memory from being destroyed at shutdown. This prevents Caché from being restarted without either rebooting Windows or terminating the residual process with the Windows task manager.

This change properly shuts down all the processes.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: CFL1150
Summary: Allow defining a cluster shadow on a system that doesn't support clustering

Description:

Prior to this change, Caché would refuse an attempt to define the shadow for a cluster to be a machine type that did not itself support clustering. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LFT1292
Summary: Handle 2k corrupt directory better

Description:

This fixes a problem in integrity checking of very old ISM databases. Running INTEGRIT would give false errors when global name is not in the top pointer block.

This corrects the issue so that the error is only given when there really are duplicate pointers in the global directory.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: MAK1123
Summary: rMACSAVE data is inconsistent

Description:

In prior versions, when saving MAC/INC from Studio, the data stored in ^rMACSAVE or ^rINCSAVE had the root node incorrectly formatted. This should be the $horolog value of the time this MAC/INC was last changed.

This change sets the proper value in place.


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

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 compatibility 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 (for example 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 (for example 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 Windows 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 (for example, 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 (for example, 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 (for example, 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, for example <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 error 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 (such as, 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 variable, 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 application 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 third party 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 established 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 Services 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 (for example 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 journaling 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 recognized 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 Microsoft 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 overridden. 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 arguments 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:

  • Location - override the location URL
  • Timeout - timeout for waiting for web response

%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 removed 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 needled 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 abstract="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 this change, 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.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN455
Summary: Plus-Minus sign and Multiplication sign are garbled

Description:

Characters is the range of 128-255 stored in Caché $List as a type 1 string were not being converted to multibyte characters correctly. This change corrects that.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN459
Summary: New CacheCharToMultiByte function used to convert string data from Caché

Description:

A new conversion function was added to support Caché Narrow string conversions to MultiByte data.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN461
Summary: Return Truncation situations for stream support and SQLBindColumn -> SQLFetch

Description:

If SQLBindColumn -> SQLFetch on a stream (LONGVARCHAR, LONGVARBINARY), it would not return a truncation error if application buffer was too small.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.ODBC
Platforms: UNIX
DevKey: JCN462
Summary: Parse DSN connection string on UNIX without trailing ";"

Description:

When calling SQLDriverConnect on UNIX systems, the iODBC Driver Manager does not normalize the connection string to contain a final ";" as the Windows Driver Manager does. This causes a normal looking connection string to fail:
DSN=Samples;UID=_SYSTEM;PWD=sys
while the following will succeed:
DSN=Samples;UID=_SYSTEM;PWD=sys;
This adds additional logic to handle missing ";" at the end of the connection string.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN469
Summary: Build usparc32 ODBC driver

Description:

This change adds a 32-bit usparc version of the ODBC driver to the release.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes
Critical No

 



Category: SQL.Privileges
Platforms: All
DevKey: DPV2053
Summary: Fix privilege checking with privileges granted indirectly through roles

Description:

Under some circumstances, checking the rights of a user to perform a query could fail if the query had been previously executed and changes to the user privileges had been made since that query was cached. This has been fixed.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical Yes

 



Category: SQL.Privileges
Platforms: All
DevKey: DPV2122
Summary: Incorrect Privilege checking on insert into..select

Description:

A issue has been fixed regarding SQL privilege checking where INSERT privilege was erroneously required on both tables referenced in a statement like:
INSERT INTO TableA SELECT * FROM TableB

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK567
Summary: Outer join into a split parent reference subscript

Description:

This change fixes two problems where the parent ID key is constructed from multiple parts, and a query is made against the table involving an outer join from parent to child (this includes using Caché "arrow" syntax). Under some circumstances, this will result in occasional compile-time errors because the generated code would attempt to access non-existent variables. In others, users will experience <UNDEFINED> errors at run-time. Both of these have been fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK581
Summary: Don't get fields when looping over bit chunks

Description:

For a table with a bitmap index, and with an IDKEY field that supports bitmaps, Caché erroneously attempted to get the ID field when it was not present. This was fixed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK583
Summary: Use correct value for %STARTSWITH DESC

Description:

The code for DESCending on a non-numeric field with %STARTSWITH requires use of the highest possible character, $C(65535) for a UNICODE system and $C(255) on a non-UNICODE system. This choice was made at query compile time, relying on the fact that $C(65535) gives "" on a non-UNICODE system. This erroneously led to a <WIDE CHAR> error being reported. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.Query Processing
Platforms: All
DevKey: BJB275
Summary: Do not allow DesRef->field to be modified by INSERT or UPDATE

Description:

A problem with the SQL compiler has been corrected. In the past we let syntax like:
UPDATE MyTable SET DesRef->FieldName = 'NewVal'
compile even though we never supported this syntax.

Caché will now report an error at compile time if it encounters something like this. For example,

CacheSql1.MAC(9) : SQL24 : SPOUSE->NAME can not be modified by an UPDATE
  UPDATE Sample . Person SET Spouse -> Name = SAMPLES
The same rules apply to INSERT.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2131
Summary: Order By DESC does not always work with $Piece mapping

Description:

A problem has been fixed where a query with ORDER BY DESC on a PieceCounter field for a %CacheSQLStorage map definition with AccessType="Piece" would return incorrect results in some cases.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: SQLManager
Platforms: All
DevKey: YSD649
Summary: Execute Query result splitter not resizing grid

Description:

When the result splitter is dragged to an faraway position, Caché now resets the splitter top to the position where the four little buttons on right side of the query text box can still be seen.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQLManager
Platforms: All
DevKey: YSD651
Summary: Sort Date Field for Open Table

Description:

The sort for date is corrected for Open Table.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: SQLManager
Platforms: All
DevKey: YSD652
Summary: Non-standard shortcuts have been added in Execute Query window

Description:

Shortcuts for the following options have been changed:
Shortcut        Old                     New

Export          Ctrl+E                  none
Print           Ctrl+P                  none

Execute Query   Alt+E                   Ctrl+E
Show Plan       Alt+P                   Ctrl+P
Previously, Alt+E and Alt+P were used before because of the small images we had words on the buttons where Alt+E was shortcut for Execute Query and Alt+E P was for Show Plan. Now the shortcuts for Export and Print have been removed because they were seldomly used. They have been recycled for Execute Query and Show Plan.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: SQLManager
Platforms: All
DevKey: YSD662
Summary: Fix <PROTECT> error in SaveQueryHistory

Description:

Prior to this change, while Executing Queries in SQL Manager it displays pop-up window with <PROTECT> error
<PROTECT>zSaveQueryHistory+1^%ooSQL.Manager.API.1 .
when, in the Configuration Manager, on the Advanced tab, in the ObjectScript section, the Global Kill Enabled choice is set to NO.

Now, if Global Kill is set to No, then the query history will not be saved.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: SQLManager
Platforms: All
DevKey: YSD674
Summary: 'Execute Query' shows wrong error messages

Description:

Caché might fail to report the actual error (especially if it was a low-level error) in the SQL Manager dialog box. Instances where this could happen have been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: DVU869
Summary: FindInFiles dialog box limits find to 24 characters

Description:

The FindInFiles dialog box does not allow more than 24 characters in the string, where as the regular Find dialog allows as many as are typed. The dialog box restriction has been removed.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: DVU870
Summary: Supply default class name for Ctrl-Shift-G

Description:

If a user selects "GoTo ... " (Ctrl-Shift-G) for a statement
do ##class(ClassName).xyz
and Class name is in short form, the full class name form will be selected, that is, %Library.ClassName, if ClassName has a '%' class or is current_document_package.ClassName

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: DVU876
Summary: View Storage marks class as modified.

Description:

When viewing the storage for a persistent class and clicking but not modifying the class, the class appeared modified (* appeared in the title bar). This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: DVU891
Summary: Implement Full Screen Feature

Description:

A new menu choice, View->Full Screen (F8), implements Full Screen Mode. A second F8 or a click on the "Full Screen" icon toggles the mode.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Studio
Platforms: All
DevKey: DVU901
Summary: Compile with Options

Description:

A new menu for classes, Build->Compile with Options, has been added to allow the user to change compile options for each compilation.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: DVU916
Summary: Project Save As dialog box title is 'File Dialog'

Description:

The dialog for File | Save Project As appeared with a "File Dialog" title. The title now is "Save Project As."

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Studio
Platforms: All
DevKey: DVU920
Summary: Studio GOTO tag is not case sensitive

Description:

In Studio, if you have code that looks like
routine   ;
          do tag
          ;
          do TAG
          ;
tag       ;
          quit
          ;
TAG       ;
          quit
if you right click on TAG in the "do TAG" line and select GOTO TAG from the menu, you will be positioned at "tag" instead of "TAG". The search should have been case-sensitive. With this change, it is.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: DVU934
Summary: Rebuild all dialog box is incorrectly worded

Description:

The wording associated with the F7 key has been changed to more accurately reflect its function. It now reads, "Do you want to rebuild all modified files in your project?"

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: DVU974
Summary: Goto on #include items

Description:

With this change, you can create a MAC routine with a line like:
#include %occInclude
and right click on the '%occInclude'. The menu will now have a 'Goto "%occInclude.inc"' item on it in the same way it does for a 'Do entry^Routine' statement.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: JN138
Summary: Code between <server> tags is not recognized as Caché Objectscript

Description:

Previously, in a CSP-file, the code between <server>-Tags was not detected as Caché Objectscript. It is now recognized properly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: JN162
Summary: Syntax checker flags code in <CSP:SQLQUERY>

Description:

The code inside the <csp:SQLQUERY> tag is now syntax colored correctly.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: MAK747
Summary: Remove 'modified' from list of class attributes

Description:

Remove the 'modified' class attribute from Studio as this is no longer used. Also, do not export this item to the XML class export format.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: MAK887
Summary: Report better error message from Studio from opening a CSP page from a different namespace

Description:

If you open a CSP page /csp/user/mypage.csp from the SAMPLES namespace Studio now reports correctly that this must be opened from the other namespace.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: RAW339
Summary: Hang/loop when finding text that matches in contracted code

Description:

A hang sometimes occurred when searching for a string in contracted code. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Studio
Platforms: All
DevKey: RAW386
Summary: Update enhanced searching

Description:

The full search pattern now uses only a single escape character, the backquote.
[`!][`<attrName>]text[`!]
Search and replacement text can also contain explicit tabs, as `t, and backquotes, as ``.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Studio
Platforms: All
DevKey: RAW402
Summary: Better printer font selection

Description:

Sometimes the screen font may not be available for printing. (FixedSys is a common example.) In particular, this can cause a fixed pitch screen font to generate a variable pitch printer font. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Studio
Platforms: All
DevKey: RAW411
Summary: Display and print control codes

Description:

Studio now displays control codes and will print them as well.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: System
Platforms: All
DevKey: CDS346
Summary: Catch invalid $list instead of crashing

Description:

If a character string which is not a valid list is passed to a $LIST function, it should give a <LIST> error. Prior to this change, a process could get an access violation in some cases.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: CDS483
Summary: Make sure $ETRAP frames are popped before %HALT runs

Description:

If an application has set $ETRAP, it could interfere in some circumstances with the %HALT routine which the system runs as part of HALT processing. This change ensures that the $ETRAP is cleared before %HALT runs.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: DMD025
Summary: Remove some SERNBADCHUNK errors from SYSLOG

Description:

Some sites making frequent changes to globals with data larger than 768 bytes would get thousands of entries with error 10017 in SYSLOG. These entries do not indicate a genuine error, but will just force some data to be downloaded from the client again to get the correct version. These entries are no longer logged in SYSLOG.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: DMD043
Summary: Fix a system quiesce problem caused by a missed wakeup to a slave write daemon

Description:

A rare timing bug that kept the system from quiescing has been fixed.
Warning: Should this problem occur backup operations will be suspended and this will block application execution indefinitely.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical Yes

 



Category: System
Platforms: All
DevKey: DMD044
Summary: Remove a potential infinite loop in GetDirLoop

Description:

A rare bug that led to an infinite loop in %FILE when getting an I/O error on terminal read or write has been fixed.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: HYY802
Summary: Prevent <ACCVIO> when a database is not accessible

Description:

Addressed an issue where an access violation occurred when a database was made inaccessible to write daemon (or any Caché job trying to gain access to it).

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: HYY837
Summary: Fix a problem with index sorting handling wide character strings

Description:

This change addresses an issue on Unicode platforms where index sorting ($sortbegin/$sortend) might incorrectly set a global to an 8-bit character string value instead of what would be the correct wide character string value.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: System
Platforms: All
DevKey: JLC545
Summary: Improve detection of HyperThreading on Linux

Description:

This change correctly detects the number of physical CPUs on SuSE 8.2 and Red Hat 7.3 for licensing purposes when HyperThreading is enabled. Previous versions of Caché worked only on Red Hat 8.x and later.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: JLC551
Summary: Create Hungarian locales

Description:

Two new locales for Hungarian were created: an 8-bit version based on Latin2 (hun8) and a Unicode version (hunw).

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: System
Platforms: OpenVMS, Tru64
DevKey: JLC577
Compatibility: 8
Summary: Correct variable corruption on SET

Description:

This changes corrects a situation that could, on rare occasions, corrupt a local variable during a SET command on Alpha platforms.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: JLC570
Summary: Fix error handling for UnicodeLittle/Big

Description:

This change fixes an issue when doing file I/O with UnicodeLittle or UnicodeBig translations in 8-bit locales. Now Caché correctly scans the replacement string for terminators. Previously this situation could cause an interruption under some circumstances.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: JO1742
Summary: Resolve issues using GTABSZ as maximum global reference length for 2KB databases

Description:

A problem has been resolved which could result in database degradation. This only affected 2KB database which contained globals in collating sequences other than Caché Standard(*). In certain circumstances a global reference which would otherwise generate a <SUBSCRIPT> error because it was too long would get applied to the database resulting in degradation.

For databases created with 4.1 a default collation sequence can be specified in MSU. For these databases the problem exists when the global being referenced has a different collation sequence from the default of the database.


Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No
Critical Yes

 



Category: System
Platforms: All
DevKey: JO1760
Summary: Fix transaction rollback failure

Description:

An issue has been resolved where transaction rollback might fail in certain cases. The bug was only present in 8KB database where a KILL of a node was an exact match of a node that existed in the database. In some of these cases, the kill would not be journaled correctly so rollback would not restore the original data.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: JO1766
Summary: Broadcast database full status to operator console

Description:

When a database is marked as full, a message is broadcast to the operator's console (if there is one) and stored in the cconsole.log file.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 




Category: System
Platforms: UNIX
DevKey: LRS749
Summary: Fix terminal disconnect detection under UNIX

Description:

A problem with terminal disconnect detection under UNIX has been fixed.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: PWC787
Summary: Fix issue with long node-name / IP addresses

Description:

A problem has been corrected that could cause an error during startup if the combined length of the node name and the node IP address was longer than 77 characters.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: RFD066
Summary: Allow process to recover MONITOR sessions

Description:

If a MONITOR session (i.e ^VPMON or ^PERFMON) is 'paused', and then the process which paused the session logs out, the MONITOR session is essentially "hung". Any attempts from another process to stop or resume the session would result in a <FUNCTION> error, and Caché must be re-booted to use ^PERFMON again.

This change allows a new process to stop (or resume) the MONITOR session.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical Yes

 



Category: System
Platforms: All
DevKey: RFD091
Summary: Stop MONITOR (^PERFMON) at shutdown.

Description:

This change ensures the shutdown of MONITOR data collection at Caché shutdown.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: RFD094
Summary: Replace support for ViewPoint connection in SuperServer

Description:

This change replaces support for a connection from the ViewPoint collector. The code which checks for a ViewPoint connection was inadvertently removed from Caché 5.0.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: System
Platforms: UNIX, OpenVMS
DevKey: RFD095
Summary: Fix ^SHUTDOWN hang on cluster recovery

Description:

This change fixes a problem which causes cluster recovery on OpenVMS and UNIX to hang under some situations where MONITOR was running.
Note: This problem can impede cluster recovery.

Likelihood High
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: System
Platforms: All
DevKey: SAP133
Summary: Add Event query to see named resource definitions

Description:

$SYSTEM.Event.Query() provides a query object to traverse a list of currently defined Event Named Resources which returns the list of currently defined Named Resources

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: System
Platforms: All
DevKey: SML415
Summary: Ignore incoming DDP connection if remote maximum user is greater than 16000.

Description:

Prior to this change, systems using DDP may suffer a system interruption when the maximum number of users exceeded 16384.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System
Platforms: All
DevKey: STC474
Summary: Fix Dismount call when DB not mounted

Description:

A rare problem involving the dismount of a database that had not been mounted which affected the write daemon has been fixed. The state of the database is now properly maintained in this case amongst the various daemons.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.Backup/Restore
Platforms: All
DevKey: CFL968
Summary: Fix error handling in RESTORE

Description:

A bug has been fixed that could cause a <FUNCTION> error when restoring a multi-volume backup.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY828
Summary: Journal restore performance enhancements: sorting and parallelism

Description:

Enhancements have been made to processing during journal restore. Although the improvements are automatically enabled, the user should be aware of the basic mechanisms to extract the most benefit from it:
  1. Sorting: SETs are sorted on a per-global basis, initiated via $SortBegin.

    Because sorting may use a CACHETEMP database for temporary storage, it is advisable to allow CACHETEMP to expand indefinitely for optimal performance. If you must limit the maximal size of CACHETEMP for some reason, journal restore will use a heuristic method to set a limit on the number of SETs to be sorted before committing at least some of them to databases to avoid overflowing CACHETEMP (and a generating <FILEFULL> error). To give sorting the most elbow room (i.e., to make it least likely to get a <FILEFULL> error), set the max size of CACHETEMP (in MBs) to a number ending with 99 instead of 00 (for example, 299MB instead of 200MB or 300MB).

    In general, however, the bigger the max size of CACHETEMP, the better the performance.

  2. Parallelism: On multi-processor machines, restoring of multiple databases is distributed to several concurrent jobs.

    The number of jobs chosen is the smaller of the number of allocated CPUs, or the number of specified *target* databases to restore to.

    Concurrent restore is NOT enabled if

    • the system has only one CPU; OR
    • there is only one target database to restore to; OR
    • no database is specified (i.e., to restore ALL).

Thus, for optimal performance, you should specify the databases to restore instead of choosing to restore ALL.

With concurrent restore, some error messages are different and some are new.


Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System.Backup/Restore
Platforms: All
DevKey: JO1746
Summary: Changes properly clear incremental backup flag

Description:

A problem has been corrected where clearing the incremental backup flag did not update the databases to allow the next Caché backup to be an incremental backup. This problem was introduced in 5.0.1 and the workaround was that you had to perform one full backup using Caché's backup facility before Caché would let you run an incremental backup.

It has now been fixed.


Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System.Backup/Restore
Platforms: All
DevKey: LRS735
Summary: Adapt DBSIZE to 8K databases and new BACKUP buffering

Description:

The DBSIZE utility, used for estimating the size of BACKUP archives, has been updated to handle 8KB databases and changes in BACKUP buffer sizes. Note that the actual backup size can be greater if a backup is performed while applications are updating the databases involved.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: System.Cluster Specific
Platforms: OpenVMS
DevKey: GK270
Summary: Failure to join DECUNIX cluster corrected

Description:

On the DECUNIX cluster configuration the write daemon requires network SHM to join the cluster, but it wasn't mapped properly, and failed to join the cluster.

This has been corrected.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.Cluster Specific
Platforms: All
DevKey: HYY799
Summary: Overcoming a bottleneck in quiescing the system during cluster backup

Description:

The timeout for quiescing a DCP cluster has been changed back to 10 seconds from the longer timeout used previously.

With the older timeout value, jobs waiting on network events did not receive responses from the server in a timely manner. This caused other errors while attempting to quiesce the DCP cluster.


Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1736
Summary: Error detection/handling during cluster journal restore and TP rollback

Description:

If cluster failover detects an error during the journal recovery or transaction rollback phases then it will declare a cluster crash. The entire cluster, that is, all of the Caché instances in that Caché cluster, must be shut down at this point.

CCONTROL START will encounter the same problem on any node and abort. When CCONTROL START aborts, an error message appears with a question about continuing with startup.

At this point if you answer <Yes> then the error will be ignored and the system will continue to start up. Cluster recovery consists of recovering all journal files from all cluster members. If the error is in the journal file of the local system, then startup will abort again. However, this time it is "local" startup not "cluster" startup.

The cluster can be started by other cluster members which do not have errors in their journal file(s). The procedure for recovering from "local" errors is similar to that for "cluster" errors. For local errors there are some additional options such as bringing the system up in multi-user mode while for cluster recovery you need to shut the system down and start it up again.

If you answer <No> to the question, the default, then you will get one more question about whether you want to leave the system up in single-user mode or not.

If you say yes here, then CSTART exits and the system is left up. If you say NO here then the system is shut down and you have to run CCONTROL start again to bring it up. You can run CCONTROL start with the "nostu" option if you wish to bypass the cluster recovery (for example just bring it up so you can get into Caché and try to fix the problem), or you can let it get back to this point and say Yes. The state of the system is the same in both cases.

To get into Caché to fix the problem(s) use the -B option on csession (use -"B" on VMS) as in:

csession TEST1 -B
or
csession TEST1 -"B"
You should be in the manager's directory when you do this or you can use
ZN "^^"_$ZU(12)
to switch to the manager's directory after you are in Caché.

Once in Caché you can use the ^STURECOV routine to display the errors and run the journal restore/transaction rollback process again. During journal recovery Caché does not stop restoring to a specific database until 3 errors are encountered. This differs from transaction rollback where Caché marks that database to be skipped on the first error. This is means that the list of errors that you can display may not be complete.

In addition to ^STURECOV you can run any of the routines on the system that help you repair the problem. The journal restore/transaction rollback can be repeated as many times as necessary. Some utilities are listed in ^STURECOV which may be useful.

Enter choice (1-9) or [E]xit/[H]elp?
When you have fixed the problem and successfully restored the journal to shut down the system use:
ccontrol stop <config name> bypass [quietly]
The "bypass" qualifier is required because Caché is running in single user mode, this is the same as the -B parameter to csession. "quietly" is optional and it tells ccontrol stop not to ask any questions. Then use
ccontrol start <config name>
to start the system back up. This will redo the cluster recovery operation but it should succeed now since the errors have been resolved. It will shut down Caché and bring it back up in normal mode.

If the errors cannot be repaired and you need to get the system up anyway there are two choices:

  1. Run "CCONTROL start" and tell it that you want to continue when you get the message stating that an error was encountered recovering the journal and rolling back open transactions during the final phase of cluster recovery. You can either continue and lose the ability to try again (although you can always restore from the journal) or you can stop here, resolve the problem and try again.

    If you elect to continue, the cluster will start up. Any system which had errors in its journal will not start up though. For those systems you can use Option 8 of ^STURECOV, which will be in "local recovery mode" now, to skip the restore of the journal at startup. Then you can restart that system, or use option 3 to bring the system up in multi-user mode. Note that options 3 and 8 are not available while you are in cluster recovery mode.

  2. The alternative is to use cwdimj to mark the cluster as recovered the same way control start does when cluster recovery is successful. To do this, start in the "mgr" directory and enter:

    ../bin/cwdimj -s. -pa
    ../bin/cwdimj -s. -pf

    This cannot be undone so it should be used with care.

Likelihood High
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1750
Summary: Correct cluster recovery problem

Description:

A problem has been resolved that could result in cluster failover not completing on a 4+ node cluster when a node which had been running is shut down and then started before the failure occurs. If this occurs, the "hang" can be resolved by starting up all of the cluster members which are not running (at least 1 node which had been part of the cluster must be down for this to occur).

Likelihood High
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1753
Summary: Enforce max routine name length in cluster routine purge message

Description:

A problem with non-Unicode clustered systems where saving a routine with a name longer than 63 characters could cause access violations in the ENQDMN has been resolved.
Warning: The occurrence of this error may be accompanied by a cluster hang.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No
Critical Yes

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1756
Summary: Fix USE_EFFICIENT_TTINPUT/LIMITED_TERM_CHAR to work with terminals accessed via -H

Description:

A problem which was introduced between 4.1 and 5.0 with terminals and the -H startup flag that broke timed reads has been resolved. Input from the principle device when the -H flag is used should work as it did before.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.I/O
Platforms: All
DevKey: LFT1158
Summary: Undesired change in concurrent OPEN "|TNT| ...

Description:

This turns back on the USETTYHASH feature code under Windows to enforce exclusive access to telnet devices. The operating system enforces this itself for other terminal devices, but not for telnet devices.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.I/O
Platforms: All
DevKey: LFT1171
Summary: Using %GOF to write to Mag Tape fails

Description:

This fixes a problem causing an <UNDEFINED> error preventing use of %GOF to mag tape.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System.I/O
Platforms: OpenVMS
DevKey: LRS723
Summary: Fix slow sequential file writes on OpenVMS

Description:

A defect has been fixed in sequential file OPEN processing under OpenVMS, that under certain conditions could severely slow file writes. A file opened for both read and write access (the default mode) would be affected.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System.I/O
Platforms: All
DevKey: RJW727
Summary: $zu(94) to a process with a TCP device should flush the output immediately.

Description:

When the target process of a broadcast using the $zu(94) function has a TCP device as $PRINCIPAL, output data is buffered the i/o device, but not transmitted until either the buffer is full or the process issues a subsequent "write !" to the device. This change makes the broadcast message be transmitted immediately.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.I/O
Platforms: Windows
DevKey: TTS049
Summary: Additional printer oriented OPEN keyword parameters

Description:

Extended list of possible options for OPEN of printer devices:
Note: All these options are very Windows specific! They are not defined for non-Windows Caché systems.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes
Critical No

 



Category: System.Journaling
Platforms: All
DevKey: HYY817
Summary: Address an issue of mismatching journal offset and file name/count in the Write Image Journal

Description:

Occasionally Caché startup would generate the following error message:
Error in JRNROLL: <VALUE OUT OF RANGE>bldxopen+24^JRNROLL
(the exact line of code may vary from version to version) which would cause transaction rollback (and startup in 5.0 and beyond) to fail.

This change addresses the cause of this problem, which was present in all Caché releases.


Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical Yes

 



Category: System.Journaling
Platforms: All
DevKey: HYY826
Summary: Detect and warn about journal corruption during journal restore

Description:

With this change, a warning is issued if journal restore stops short of the true end of journal, which usually indicates the journal is corrupted.
Warning: When this warning message is issued, the journal restore may be incomplete.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical Yes

 



Category: System.Journaling
Platforms: All
DevKey: SML417
Summary: Fix ECP recovery problem when a server is shut down more than once. The roll back will fail for pending transaction.

Description:

This fixed an ECP transaction recovery problem where there is an 'open' transaction on ECP client to the server, and the server shutdown and restarted more than once. In this case, when the client did a TROLLBACK it would get <ROLLFAIL> error.

This has been fixed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.Localization
Platforms: All
DevKey: VS176
Summary: Add Hungarian locale

Description:

Hungarian has now been added to the list of available locales.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: System.Lock
Platforms: All
DevKey: SML423
Summary: Process old delock answer from remote DCP server with old lock system.

Description:

When new lock DCP client (Caché 4.1 and later) communicates with old lock DCP server (Caché 4.0 and earlier), and when remote locks are removed by ^LOCKTAB (or ControlPanel) on the DCP client, the lock will stay in the lock table with 'Delock Pending' state. There are chances that the delock command on the DCP client could also leave the lock in the lock table when the delock request has implicit 'zynch' function. This change fixes this problem.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY785
Summary: Prevent shadow dejournaler from stalling when shadow copier is copying the file

Description:

This change addressed an issue where the shadow dejournaler appeared to be stuck at the end of a journal file when the shadow copier was copying the next journal file.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY824
Summary: Interlock block reads and writes on fast-mode shadow

Description:

This change corrected an issue on fast-mode shadowing that may result in incorrect result of dejournaling on the shadow in rare situations.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY851
Summary: Enable shadow to reconnect in a timely manner after failure of IP alias

Description:

On a multihomed shadow server, if the shadow process is on an IP alias instead of the primary IP address, it would take the shadow process a long time (several minutes) to recognize the connection drop after the alias was brought offline. This change addresses this issue.

This applies to all Caché releases on platforms that support IP aliases at the operating system level.


Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System.Shadowing
Platforms: All
DevKey: RJF014
Summary: Use 32KB buffer for shadowing

Description:

The TCP input and output buffer size used by the shadow process has been increased from 1024 bytes to 32KB for both fast mode and compatible mode shadowing.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System.Shutdown
Platforms: All
DevKey: HYY763
Summary: Disable notification of asynchronous network errors in Caché shutdown

Description:

Addressed an issue on systems with Caché networking enabled (DCP/ECP) where Caché shutdown may get an error such as <NETWORK DATA UPDATE FAILED>, resulting in cforce or (in Caché 4.1 and earlier) journaling not stopped properly.

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: System.StartUp
Platforms: All
DevKey: CFL987
Summary: Mount required not respected

Description:

An issue has been fixed where if we had a database marked as "Mount required at startup" and this DB was not mounted, Caché would come up without any complaints.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.StartUp
Platforms: All
DevKey: HYY820
Summary: Correct a typo that caused <UNDEFINED> error in STURECOV

Description:

An issue has been addressed that caused an <UNDEFINED> error during journal recovery.

Likelihood High
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.StartUp
Platforms: All
DevKey: HYY821
Summary: Prevent stale transaction info after startup

Description:

This change addresses an issue where startup aborted as JRNROLL got an error <VALUE OUT OF RANGE>.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.StartUp
Platforms: All
DevKey: HYY822
Summary: Clear journal update flag once it is not needed

Description:

This change addresses an issue where transaction info in the Write Image Journal might not be updated for the duration of a Caché session (from startup to shutdown), which could result in either an error from JRNROLL or long startup time.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.StartUp
Platforms: All
DevKey: HYY823
Summary: Allow user to run STURECOV if journaling failed to start for transaction rollback at startup

Description:

Transaction rollback at startup requires journaling to be on.

If journaling failed to start for whatever reason, startup used to skip rollback and continue. With this change, the user has an option to fix whatever problem that prevented journaling from starting and rerun startup (and rollback).


Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.TCP Devices
Platforms: All
DevKey: GK266
Summary: Allocate an ECP client connection for ECP clusters, when not enough are configured.

Description:

When a cluster configuration is set for ECP, it will make sure there is an ECP client allocated for cluster communication.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.TCP Devices
Platforms: All
DevKey: GK267
Summary: Prevent ECP server cleanup during shutdown.

Description:

If for some unexpected reason server shutdown is taking too long, the cleanup may close all ECP sessions as unrecoverable. This change prevents that.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: System.TCP Devices
Platforms: All
DevKey: GK269
Summary: Added NODELAY keyword to TCP open and use cmd.

Description:

This change added /NODELAY keyword to TCP "use" and "open" command. A non-zero value enables TCP No Delay transmission. The default value is 1.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: System.TCP Devices
Platforms: All
DevKey: HYY850
Summary: Add $zu(54,26) to return the IP address bound to current TCP device

Description:

To get the IP address bound to a TCP device, make the device current and then issue the command:
USE device
s ip=$zu(54,26)

Likelihood Moderate
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: Terminal
Platforms: All
DevKey: RJW757
Summary: Character value $C(255) is not telnet escaped in cterm /console=cn_iptcp:addr[port]

Description:

When the Caché Terminal supplied with the Windows product is launched from the Caché Cube by selecting a host from the "Remote System Access" -> "Terminal" menu to make a telnet connection, and a telnet IAC (interpret as command) character (with the value $c(255)) was entered at the keyboard or cut and pasted into the application, it would be lost because telnet escape processing of the IAC character was not performed. This was especially a problem for Russian users for whom this character is in their alphabet.

This change corrects the problem.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Utilities
Platforms: All
DevKey: EKP016
Summary: Fix error trapping problem in %DTMCVT

Description:

This change corrects a situation where %DTNCVT could enter an infinite loop during conversion. It also improves the error reporting in cases where conversion exceptions involve wide characters.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Utilities
Platforms: All
DevKey: LFT1131
Summary: REPAIR: deleting first node does not update next pointer reference in left neighbor

Description:

REPAIR was not correctly modifying higher level blocks if deleting the first node.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Utilities
Platforms: All
DevKey: LFT1137
Summary: False "block not allocated" errors in INTEGRIT 2K databases

Description:

This changes INTEGRIT to accept big string blocks allocated by REPAIR.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Utilities
Platforms: All
DevKey: LFT1166
Summary: INTEGRIT misses database error on 2K database

Description:

This adds an integrity check of the match between directory pointer and top pointer block.

Likelihood Moderate
Risk Low
Ad Hoc No
Enhancement No
Critical Yes

 



Category: Utilities
Platforms: 1
DevKey: LFT1177
Summary: Don't include MESSAGES.INC in %DM

Description:

This change allows %DM to work properly in the absence of a %MESSAGES global.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Utilities
Platforms: All
DevKey: LFT1181
Summary: 2K dataset creation failure, error message

Description:

This changes MSU to allow 2K or 2KB to be entered for block size. It also causes a better error message if something really invalid is entered.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Utilities
Platforms: All
DevKey: MAK913
Summary: Routine index was not being automatically created in all databases referenced from this namespace

Description:

When you first perform a routine query (for example use the open dialog from Studio or Caché Explorer), if there is not already a routine index then one will be built automatically. However, it would only build the index in the implied namespace. If this namespace had routine mappings so that it referenced multiple databases, then not all of them would be updated. Now Caché scans the list of implied namespaces referenced and updates the index in all of them.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical 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 an issue 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 No
Enhancement No
Critical No

 



Category: Utilities
Platforms: All
DevKey: SML416
Summary: DDP should work when only DDP Host is configured.

Description:

If a Caché is freshly installed and only the DdpHost is changed to non-null in CPF file, the DDP won't be started. Without this change, you will need to configure the DDP Ethernet device in order to have it work.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No
Critical No

 



Category: Utilities
Platforms: VMS
DevKey: SML427
Summary: Fix lock display of JOBEXAM for VMS.

Description:

This change corrects an issue with JOBEXAM for VMS platforms. Previously, it failed to display locks owned by the examined job. Now it displays them.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



Category: Utilities
Platforms: All
DevKey: STC489
Summary: Start SuperServer in %SYS namespace

Description:

This change guarantees the SuperServer is always started in the %SYS namespace.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No
Critical No

 



Category: Utilities
Platforms: All
DevKey: STC500
Summary: Map oddEXT

Description:

This change adds a new global mapping which Caché objects requires.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes
Critical No

 



 


Changes for Caché 5.0.4
This section provides a listing of changes between Caché 5.0.3 and Caché 5.0.4.
This document contains several sections:
Security Vulnerability Notice - 27 June 2003
This notice applies to Caché -
Caché and write permissions on UNIX systems
Default installations of Caché for UNIX systems are configured with write permission on the Caché bin and csp directories enabled for all UNIX users. In addition, Caché can be installed in a configuration that allows UNIX users (other than "root") in a specified group to start and stop Caché. This can result in certain vulnerabilities if hostile users have access to the system. The following example assumes that Caché has been installed in /cachesys and that members of the "cachemgr" group are allowed to start and stop Caché.

Present Status

The installation defaults have been changed for Caché 4.1.16, and for Caché 5.0.3 and later releases. If you have installed one of these versions, this notice does not apply. For more information, please contact the InterSystems Worldwide Response Center.

Workaround for earlier releases

Log on as "root", change to the directory where Caché is installed, and issue the command:

chmod go-w bin
If Caché is not being used for CSP programming, and is not running in conjunction with a local Apache web server, issue the command:
chmod -R go-w csp
Security Vulnerability Notice - 01 October 2003
This notice applies to Caché -
Disabling csp/samples before deploying Caché applications
Default installations of Caché are shipped with the settings and samples appropriate for developing Caché-based applications. These settings, facilities, and examples are not needed in deployed-application environments; their inclusion may permit inappropriate use of the system in certain cases.
Present Status

When Caché is installed it automatically configures the web server so the /csp path and any directories under this are mapped to the local Caché system. Caché also has configurations defined for /csp/user and /csp/sample.

This means that, in the default installation, requests for the page /csp/samples/menu.csp are passed by the web server to the local Caché installation (because it is a subdirectory of /csp). This matches the CSP application /csp/samples, so the menu.csp page from this application is run. Thus, any user with access to run /csp/samples/query.csp gains the ability to create and execute arbitrary stored procedures written in Caché ObjectScript. The user can therefore create new tables, modify or delete existing ones, and invoke many other Caché system functions.

When you go live with a CSP application you should ensure that the only CSP applications available on the web server are the ones you have intended to make available and that these default /csp/samples and /csp/user applications are not present. Leaving other applications available could make information useful to unauthorized users that would allow them to compromise your system.

Workaround

To remove these additional applications the best way is to remove the mapping for them on the web server so only requests for your application go to Caché and no other ones even get to Caché at all. To do this remove the mapping on the web server for the /csp application and make sure it just has the /yourapp mapping (this could be /csp/yourapp) so that you specifically map your application only from the CSP gateway.

Then test the web server by requesting pages from any other applications you may have defined, /csp/samples/menu.csp for example, and make sure these pages are not active.

For more information or assistance in implementing this, please contact the InterSystems Worldwide Response Center.

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
MAK790 Check on CSP URL and filename should be case insensitive on OpenVMS
CFL941 Address loop in Explorer
CFL943 Address loop in Global View
CFL947 Change REALLOC to minimize Caché memory footprint
GK234 Disabling a failed ECP connection leaves the connection in in-progress state
GK238 ECP client failed to recover after cforce and restart of server
GK240 Minimize memory allocation for networking.
GK241 Purge the ECP client cached block when the cluster database block is dropped from the server cache.
GK243 Remember ECP journal index.
MAB192 Projecting data types as primitive Java types
DLP1048 Address transaction rollback
DLP1072 Lock globals when performing uniqueness checks
DLP1080 Storage fails when migration includes 3.x to 4.1.x to 5.0.x
DLP1090 Use an extent level lock when a deleting a large number of objects in a single transaction
DLP1093 Address extent lock release
DPV2041 Address lock removal if transaction is aborted
AK570 Improve queries using DESCending order on a bitmap
DPV2055 A query with DESC keyword returns the wrong resultset
MAK811 New backup files do not overwrite previously created backups
CDS431 Prevent shutdown in Basic compiler
CDS435 Close objects during HALT
JB141 Task Manager consuming 100% CPU
JO1682 Address <ACCVIO> if "CacheTemp" is dismounted
JO1717 Rolling journal restores for clusters &amp; new backup jrn restore dialogue
JO1735 Checkpid() for OpenVMS now only checks whether pid exists (like UNIX/Windows)
LRS705 Avoid <ACCVIO> in $ZIO if we can't identify the principal device
SJ1411 Address issues with reverse $BITFIND
SML380 Address a lock timeout issue over a net
SML381 Address a possible opened transaction aft
SML383 Lock the lock table resources when expanding a lock to the next level.
SML384 Correct problem with DCP server shutdown.
SML385 Wait longer (2 min) for ECP client to reach the disabled state during Caché shutdown.
SML387 Address possible stranded DELOCK_PENDING lock after lock is reset on a DCP client.
STC458 Address <UNDEFINED> errors in GBLOCKCOPY when converting old ISM routines
STC459 GBLOCKCOPY now handles 2-KB multiple volume databases
LRS685 Address <ACCVIO> when database size is exact multiple of block size
HYY783 Address an issue that caused jobs to hang on I/O error even when journaling is disabled
JO1730 Address SETCLUSW^JRNMARK so it doesn't leave switch set if quiesce fails
CFL951 Do not run startup code more than once
JO1666 Don't freeze the system on journal errors during startup
LFT1139 Stop JOBEXAM from corrupting local variables on OpenVMS
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: Object.Java
Platforms: All
DevKey: MAB195
Summary: Implementation of Java methods List.addAll() and Map.putAll() for Caché Collections

Description:

This change contains native implementation for Java methods:

for projected Caché collections. This method will now work significantly faster than adding single elements. If an application needs to add a bunch of elements to a collection, it is recommended first to store them in a temporary local collection (java.util.ArrayList or java.util.HashMap) and then add them using one of methods above.

This change affects only full Java Binding, it does not affect Light.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1135
Summary: Let EJB accessors that use "_" be consistent between BMP and CMP

Description:

There are two forms of accessors - ones like getName which have no underscore and get_Name which has an underscore.

CMP has abstract implementations where regardless of the case of the Caché property (for instance s1) the abstract accessor must be of the form getS1. So we must upper-case the first variable in the name. However, with this change the "_" (underscore) form of the accessor will be get_s1 and this will allow the user to write programs that are portable between BMP and CMP.

The user who wants to code portably should also use the "_" (underscore) form of the accessors.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1147
Summary: If a property is a child table then change how it is named when projected to EJB

Description:

The name that a property had when projected to EJB used to be the SQL child table name and now it is the name of the property in the parent class.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.XML
Platforms: All
DevKey: MXT467
Summary: Project all subclasses to XML schema

Description:

XMLSchema will now show all subclasses of the class whose schema is being output.

In addition, XMLSchema will show each class as an extension of its primary superclass. Properties inherited from a secondary superclass are considered defined in the class being projected to a schema.

If a property of the class being projected violates the XML extension restriction of only adding properties, then all properties are considered to be in the class being projected and it will not be projected as an extension.

For format="encoded", an xsi:type attribute is already added to every exported class. For format="literal", xsi:type will be added if the actual instance type does not match the type of the property.

When importing the type specified by xsi:type will override the property's type.

This change addresses a SOAP issue where subclasses sent in SOAP response do not work with encoded body.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes Yes No

 



Category: Studio
Platforms: All
DevKey: MAK793
Summary: Implement an OnAfterLoad method in the Studio hooks

Description:

Added an OnAfterLoad hook to the source control hooks for Studio. This is called after the item has been loaded but before it is sent to Studio. This gives a chance to modify it before Studio sees this item. This is passed the oref of the object that represents the document so this can be changed before the data is sent to Studio.

Added an optional oref that represents the document to the OnBeforeSave method so this provides an easier way to change the data before it is saved to disk.

Addressed issue with the abstract document user defined document type which was not calling the correct source control hooks.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes Yes No

 



Category: System
Platforms: All
DevKey: SML383
Summary: Lock the lock table resources when expanding a lock to the next level.

Description:

This addresses a timing hole when a job is expanding a lock to the next level. Another job could also expand the same lock, resulting in two sub-nodes in the lock table. This could cause lock memory corruption.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: System
Platforms: All
DevKey: SML384
Summary: Correct problem with DCP server shutdown.

Description:

A job waiting on remote lock may not ever get the answer when the DCP server shutdown and restarted.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes No Yes

 



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: Caché Direct
Platforms: All
DevKey: CFL950
Summary: Caché Direct Manager strips out white spaces

Description:

If your server name has a space in it, Caché Direct Manager fails to work because it strips out the spaces when you try to assign it to an executable. This has been corrected.
Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Caché Direct
Platforms: All
DevKey: RAW372
Summary: Address an issue translating formal namespaces from the registry

Description:

Two issues were found in the code that translates formal namespaces in Caché Direct:

  1. the namespace map was being retrieved from the registry incorrectly;
  2. the translation was off by one character.

They have been corrected.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Caché Direct
Platforms: All
DevKey: RAW378
Summary: Handle port forwarding correctly

Description:

In the reply to its first message, the Caché Direct server reports the port on which the slave server will be communicating. With port forwarding in effect, this is different from the requested port, even when the channel has not changed. On seeing the new port, Caché Direct disconnects from the old (forwarded) port and tries to connect to the new (actual) one - and fails.

This no longer happens; it now succeeds.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: CHUI
Platforms: All
DevKey: LFT1110
Summary: Copy empty global confirmation lost in GBLOCKCOPY

Description:

An update of GBLOCKCOPY resulted in a loss of functionality whereby empty globals were always included in the set, instead of asking the user whether to include them. The confirmation sequence has been restored.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Config Mgr
Platforms: All
DevKey: CFL933
Summary: Support DBSizesAllowed parameter

Description:

There's a new parameter in Configuration Manager | Advanced | General to specify if the creation of 2-KB databases is allowed.

On upgrades from previous versions this parameter is set to "Yes", that is, 2-KB databases are allowed. For new installs, the creation of 2-KB databases is not allowed by default. If needed, the user can switch the parameter on.

The Database Wizard has changed. The block size selection is now buried at a deeper level (via Advanced button) which is enabled only if multiple sizes are allowed.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes Yes No

 



Category: Config Mgr
Platforms: All
DevKey: CFL938
Compatibility: 10
Summary: Fix partial initialization of Config Manager

Description:

A change was made to correctly recover from an abnormal situation where the Configuration Manager where the configuration data was only partially initialized. When this occurred, the Configuration Manager would not close and had to be terminated via the Windows Task Manager.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Config Mgr
Platforms: All
DevKey: CFL937
Summary: Address runtime error in Configuration Manager when a remote file is imported

Description:

An issue in the Configuration Manager was addressed where, if the [SqlUserDataTypes] section of a remote configuration file was empty and the position of the [SqlUserDataTypes] string was close to a multiple of 10000 bytes, a runtime error could occur.

This has been addressed.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes No No

 



Category: Config Mgr
Platforms: All
DevKey: CFL939
Summary: Set MaxServerConn when EnableServer is toggled

Description:

In an effort to minimize Caché memory footprint:

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Control Panel
Platforms: All
DevKey: CFL898
Summary: Unexpected Control Panel shutdown with ECP

Description:

When the console log window popped up and there was an active ECP display, the timer that updates the ECP display would attempt to update the panel and that would result in a shutdown.

This has been addressed.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Control Panel
Platforms: OpenVMS
DevKey: CFL944
Summary: Address PID Hex display in lock list

Description:

The Visual Basic Format() function treats a hex string as a decimal number if the string happens to be valid when considered as a decimal number, for instance, "1234E02". This now works as it should; the string is interpreted in hexadecimal.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: CSP
Platforms: All
DevKey: MAK706
Summary: Allow CSP application of '/'

Description:

If a CSP application called '/' is defined then made to match any URL that is at the root level such as '/default.csp', previously, we only matched at least one directory level deep. In order to make this work the web server and the CSP gateway also need to be configured to pass these CSP requests through to Caché.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: CSP
Platforms: All
DevKey: MAK783
Summary: If CSP login as SQL user fails, leave the user logged in as the previous SQL user

Description:

If from CSP, you login as another SQL user and the SQL login failed, then it changed the current user you were logged in as to "" which is the same as the default user rather than leaving it as the previous user.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: OpenVMS
DevKey: MAK790
Summary: Check on CSP URL and filename should be case insensitive on OpenVMS

Description:

If you edited a CSP page on OpenVMS in Studio and then tried to view this CSP page from a browser, you may get the error message:
However, in this case, it is the same page. The issue occurs because the case of the URL and filename are different but on OpenVMS as on Windows this does not matter. This is now not case-sensitive on OpenVMS, so CSP will display correctly.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: CSP
Platforms: All
DevKey: MAK851
Summary: Write $system.CSP.GetConfig does not show the defaults

Description:

'Do $system.CSP.DisplayConfig()' shows the current CSP system configuration parameters but ' Write $system.CSP.GetConfig(param)' does not show the default value which makes this inconsistent. Now they both show the default values.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: CSP
Platforms: OpenVMS
DevKey: MAK856
Summary: Parsing of URL to directory name for CSP did not work on OpenVMS

Description:

When loading all CSP pages in a directory, the parsing to convert the URL to a directory name on OpenVMS was not correct. This has been addressed so $system.CSP.LoadPageDir will work on OpenVMS systems.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: CSP.Tags
Platforms: All
DevKey: MXT455
Summary: CSP:SEARCH: 'sortbox' does not work with 'order'

Description:

If ORDER is specified, the radio button selected in the sortbox (if OPTIONS="sortbox") or the column header that is clicked, was ignored. This change correctly overrides the ORDER attribute with the user input.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: CSP.Tags
Platforms: All
DevKey: MXT456
Summary: Allow optional error if no search criteria for csp:search

Description:

If OPTIONS="CriteriaRequired" is specified in the csp:search tag, then an alert box with an error will be displayed if the user requests a search and no search criteria have been specified.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: CSP.Tags
Platforms: All
DevKey: MXT457
Summary: Cannot select data from a cspbind lookup window if the value of a field is $C(0)

Description:

Convert $c(0) to "" when returning value from search page.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Documentation
Platforms: All
DevKey: MAK780
Summary: Documentation for $system.OBJ.ExportCDLALL is incorrect

Description:

The documentation for $SYSTEM.OBJ.ExportCDLALL was incorrect and said that all the classes would be exported as a single CDL file, when in fact it exports each class as an individual CDL file. The documentation has been changed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 


Category: Documentation
Platforms: All
DevKey: GAB020
Summary: Update displayed comments in $SYSTEM.OBJ.ShowFlags

Description:

The comments produced by the $SYSTEM.OBJ.ShowFlags() method were changed to improve clarity.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Documentation.DocBook Application
Platforms: All
DevKey: MAK789
Summary: Search results return huge chunks of data

Description:

If, in DocBook, you search for a term that appears in a large table, 'charset' for example, then the search results displays the entire table even though the word you are looking for only appears in a small subsection of this table. This makes it hard to see the other search results.

With this change, if the text being returned is over 3k in size, it will scan it for the word you are looking for and just display this subsection of the match making the results easier to read.

For tables, it will display the row the matching item is on and for other types it will remove the formatting from this item in order to make sure it does not have any unmatched tags.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Explorer
Platforms: All
DevKey: CFL941
Summary: Address loop in Explorer

Description:

An issue has been addressed where a Global Find operation in the Explorer would cause the utility to loop if the global had a unsubscripted node whose value didn't contain the substring being searched for.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Explorer
Platforms: All
DevKey: CFL943
Summary: Address loop in Global View

Description:

Previously, if the following global structure existed,
   USER>kill ^GBL
   USER>s ^GBL(1_$C(27)_"""2""")=$ZV
   USER>s ^GBL(2_$C(27)_"""2""")=$ZV
   USER>s ^GBL(3_$C(27)_"""2""")=$ZV
Listing the global would loop and display the three nodes infinitely.

This looping behavior has been corrected.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Installation.UNIX
Platforms: UNIX
DevKey: ALE226
Summary: Correctly determine cgi-bin directory for Apache when it is defined more than once

Description:

CSPinstall should now correctly determine cgi-bin directory for Apache when it is defined more than once. It will use the last defined value.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE248
Summary: Delete CacheList.ocx, CacheQuery.ocx and VisM.ocx from bin directory when upgrading from Caché 4.1 or before (InstallSheild)

Description:

In Caché 5.0 all OCX files were moved from CacheSys\bin directory to Program Files\Common Files\Intersystems\Cache. With this change, old OCX files were removed from the bin directory when upgrading from older Caché versions.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Languages
Platforms: All
DevKey: CDS424
Summary: Avoid <MAXARRAY> during $COMPILE

Description:

When the $COMPILE function was given routine source that was too large to compile, it would throw a <MAXARRAY> or <STORE> error. Now it will give a return value of 1, with an element in the error return list that shows <ROUTINE TOO BIG TO SAVE>.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Languages
Platforms: All
DevKey: SAP125
Summary: Caché will start up when less than 32MB is available

Description:

Caché memory usage has been improved.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Languages.Caché Basic
Platforms: All
DevKey: CDS439
Summary: Address false <STORE> error in Basic compiler

Description:

Compiling a Basic routine could result in a <STORE> error or <ROUTINE TOO BIG TO SAVE> even though the routine is really not too large. The conditions that caused this issue are unpredictable.

This has been addressed.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Languages.Caché Basic
Platforms: All
DevKey: CDS441
Summary: Address Basic compiler issues with Debug mode

Description:

Some Basic commands and functions did not work correctly when entered from the terminal during debugging. They could give unexpected errors or incorrect results. With this change, all Basic commands should work from debug mode, except CALL. CALL from debug mode requires the external routine syntax label@routine, even for calling internal subroutines.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Languages.Caché Basic
Platforms: OpenVMS
DevKey: CDS445
Summary: Address OpenVMS process shutdown after internal compile error

Description:

After the Basic compiler gave an "Internal error" message on OpenVMS, the process would fail the next time any other error was thrown. This has been corrected.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Misc
Platforms: All
DevKey: SAP119
Summary: Add ability to get MQ Message ID for message sent from Caché

Description:

New MQ methods have been added:


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Misc
Platforms: All
DevKey: SAP120
Summary: Translation of MQ Series messages from EBCDIC to ASCII

Description:

Two new methods are provided:

For output (MQSend.%Put()), the Coded Character Set Id describes to the system the character set used for the message. If not set, the MQ system assumes the default character set for the MQ client.

For input (MQRecv.%Get()), the Coded Character Set Id indicates to the MQ client how the message should be converted. The conversion is done automatically during message receipt on the client.

Thus one may send messages in any encoding (notifying the system what the encoding used is), and receive messages converting from one encoding to another.

See the IBM WebSphere MQ documentation for a full discussion of Coded Character Sets.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Misc
Platforms: Windows
DevKey: SAP126
Summary: Signal main thread to wake hibernating after disconnect of principle device

Description:

On Windows, if the user opens a terminal and types, for example, "lock a" where a is already locked, or "halt 100"), and closes the terminal window, the process stays until the condition for resuming is met.

With this change, the process exits immediately.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Networking
Platforms: All
DevKey: CFL947
Summary: Change REALLOC to minimize Caché memory footprint

Description:

The network configuration utilities were changed to minimize the amount of memory allocated for networking. Before this change, even if there was no networking configured (no ECP, DCP or DDP), 40MB of memory would needlessly be allocated for networking.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes Yes

 



Category: Networking
Platforms: All
DevKey: DAS457
Summary: Improve DDP error messages for invalid configurations

Description:

If the DSM-DDP parameters are not set up correctly in the CPF file, the error messages displayed may be very misleading. In some cases, a Caché ObjectScript error such as <SUBSCRIPT> OR <FUNCTION> is displayed rather than an explanation of what is invalid in the CPF file.

The issue areas are:

These have all been corrected.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Networking
Platforms: All
DevKey: GK232
Summary: Don't accept an ECP connection if the server is not enabled

Description:

If the ECP server flag is not enabled, "Act as ECP server" is ignored.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Networking
Platforms: All
DevKey: GK233
Summary: Activate ECP access list changes.

Description:

Changing the ECP access control list from the Configuration Manager was ignored until the next restart. This now takes place immediately.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Networking
Platforms: All
DevKey: GK234
Summary: Disabling a failed ECP connection leaves the connection in in-progress state

Description:

When ECP failed to establish a connection and it was in the retry loop, if the connection state was set to disabled, sometimes the session was left in in-progress state, and the system had to be restarted to clear that state. It now sets the appropriate state at the end of the retry loop.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Networking
Platforms: All
DevKey: GK238
Summary: ECP client failed to recover after cforce and restart of server

Description:

ECP server shutdown by cforce didn't preserve the client state. The clients cleared their sessions and didn't recover after server restart. This was because cforce started the shutdown of the ECP daemons out of order. During shutdown cleanup, the ECP daemons got killed which caused the issue.

Cforce has been modified to cleanup in an organized way so out of order kills are not destructive.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Networking
Platforms: All
DevKey: GK239
Summary: Recover $INCREMENT when answer is lost from the ECP server.

Description:

If $INCREMENT over ECP answer is lost due to server failure or network outage, the ECP recovery retransmission of $INCREMENT returned a <NETWORK> error. Caché has been modified to re-increment properly.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Networking
Platforms: All
DevKey: GK240
Summary: Minimize memory allocation for networking

Description:

If only ECP is configured, memory is no longer allocated for legacy networking facilities, for example, DCP & DDP.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes Yes

 



Category: Networking
Platforms: OpenVMS
DevKey: GK241
Summary: Purge the ECP client cached block when the cluster database block is dropped from the server cache.

Description:

ECP server did not correctly invalidate the client cache when

The server was modified to keep the client in sync.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes No Yes

 



Category: Networking
Platforms: All
DevKey: GK243
Summary: Remember ECP journal index.

Description:

Modified the ECP server to track the journal index more accurately. The journal index is used for locating the first open transaction, or last processed ECP request number after a server crash or restart.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Networking
Platforms: All
DevKey: PWC766
Summary: Default for netsiz is now 65404

Description:

In early releases of 5.0, the "netsiz" parameter was too small to cope with some larger configurations. This could cause issues bringing up a network configuration with large numbers of remote DDP hosts. It has been made larger.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Networking
Platforms: 1
DevKey: TR966
Compatibility: 10
Summary: Don't issue errors on retry of $INCREMENT over ECP.

Description:

If $INCREMENT over ECP answer is lost due to server failure or network outage, the ECP recovery retransmission of $INCREMENT returned <NETWORK> error. It nows attempts to re-increment the variable and, if successful, does not report the error.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object
Platforms: All
DevKey: MAK791
Summary: $system.OBJ.ExportAllClassesIndividual was defaulting to wrong type

Description:

When you call $system.OBJ.ExportAllClassesIndividual(dir) it was trying to export all the classes into subdirectories based on the package name, but it should default to translating ".%" to "__" and exporting to a file with this name.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object
Platforms: All
DevKey: MC423
Summary: Change SqlColumnNumber to be of STRING type

Description:

Otherwise, through ActiveX, one cannot set the value to "", and 0 is not equivalent to "".

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object
Platforms: All
DevKey: MC424
Summary: Inherit projections

Description:

Sub-classes now inherit projections from their superclasses.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object
Platforms: All
DevKey: MC425
Summary: Remove class from in-memory structure when it is being deleted

Description:

Remove the class from the in-memory data structures when it is deleted

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object
Platforms: All
DevKey: MXT468
Summary: Allow $system.OBJ.CompileList to compile more than 32K of classes

Description:

Accept the list of classes to be compiled as local array in addition to the current "'" separated list in a string.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object
Platforms: All
DevKey: TAP009
Summary: Add port option to POP3 class (as arg to new ConnectPort method)

Description:

The new method ConnectPort(ip,port,username,password) is similar to the old method Connect(ip,username,password). The port argument allows you to get mail from mail servers configured on ports other than the standard POP3 port 110. This is useful for testing.

The new method FetchMessageHeaders() is similar to the old method FetchMessageInfo but doesn't get the bodies and is thus more likely to be quick.

The new method GetHeadersArray() is a helper method for FetchMessageHeaders() that returns the message header fields in a multidimensional array.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object
Platforms: All
DevKey: TAP010
Summary: Added TranslateTable property to %Net.FTPSession class

Description:

Setting the TranslateTable property of a %Net.FTPSession object to a string naming a Caché translation table will cause files being stored and retrieved via FTP to be translated to or from the corresponding external character set.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.Activate
Platforms: All
DevKey: JN123
Summary: Recognize Dual Interfaces as Dispatchable

Description:

The Activate type library reader was not recognizing dual interfaces as being dispatchable. This meant that the activate wizard would not create the concrete proxy classes needed to create instances of certain COM objects. This has been corrected.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Activate
Platforms: All
DevKey: JN126
Summary: Correct marshalling of byref parameters

Description:

Parameters passed by reference were not being marshaled correctly. Fortunately, pass by reference is rare in COM objects. This change addresses the issue.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Activate
Platforms: All
DevKey: JN131
Summary: Activate Generic Object SetProperty1() method has extra argument

Description:

A typo had been introduced which passed a duplicate parameter to the underlying activate implementation resulting in an ActiveX invalid number of parameters method. This only affected the SetProperty1() method of %Activate.IDispatch. This typo has been corrected.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes No No

 



Category: Object.Activate
Platforms: All
DevKey: JN132
Summary: Initialize output parameters to correct type

Description:

Output parameters passed by reference were being initialized to a variant of type VT_EMPTY. Whilst this seemed to work correctly, certain COM objects require that the object be initialized to an expected type. The code has been changed to perform this conversion whenever the target type is known.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU810
Summary: OpenID with Non ASCII ID against 8 bit system produces a <WIDE CHAR> error

Description:

A <WIDE CHAR> was generated when attempting to open a routine with Cyrillic name in Studio. This no longer happens.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU813
Summary: Connection Manager error when switching namespaces

Description:

Under some circumstances, Studio failed to open a connection properly when switching namespaces resulting in a Connection Manager error and a dialog box. From the dialog box, one could choose the proper connection to use.

The cause of the originating error has been addressed.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU815
Summary: Connection Dialog Errors in SQL Manager

Description:

SQL Manager sometimes failed to properly connect to a remote machine when given the name of the machine. It always succeeded when given the IP address. With this change, it works consistently with either.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1063
Summary: Detect recursion in nested %Save calls

Description:

The issue reported was caused by a call to %Save() from a user-implemented %OnBeforeSave callback. The primary save object (the object on which %Save() was originally invoked) has references to instances of two other classes. One of those classes has a %OnBeforeSave that causes the primary object class to instantiate a third class and then save it. That save causes a new SaveSet with a different primary object to be created. The objects in the new save set are all, with the exception of the newly instantiated class, the same as the original SaveSet. The %OnBeforeSave callback is again invoked which starts the cycle all over again.

All persistent classes inherit a property from %Persistent, %IsInSave. This property is set when %Save() is invoked on an object. The original %Save() algorithm used this property to detect recursion and prevent an infinite loop. The new %Save() algorithm does the same but only for the primary object. The notable case creates a new primary object for each instance of %Save() on the stack so recursion is not detected. The new %Save() algorithm is not recursive so the only possibility for recursion to occur is if a user implemented callback invokes %Save() and the intersection of the new SaveSet with the original SaveSet is not empty. %IsInSave is not set for all objects, only the primary object and recursion is prevented only if the nested call to %Save() is on the primary object.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK805
Summary: Class index was being built incorrectly

Description:

When updating the class index for an individual class rather than rebuilding the entire index the position of the 'abstract' keyword was placed incorrectly. This would only effect code that looked for this node which is rarely used. Now the individual class index rebuild put it in the correct location.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK833
Summary: Allow package with the same name as a class but different case

Description:

If you have a class say 'A.B.C' and there is already a class 'A.b' then we were reporting a package conflict error between the 'A.B.C' and the 'A.b' class. However, there is actually no issue here because A.b is just a class and there is no A.B package so it is valid to add the new class A.B.C in this case.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK855
Summary: Make class depend on all projection classes

Description:

When you compile a class that has a projection, then this class is dependent on the projection class being up to date and compiled before this class is compiled. The compiler now takes this into account when choosing the classes that need to be compiled.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Java
Platforms: All
DevKey: MAB191
Summary: Enhancements to Relationship projection in Java Client

Description:

Added several methods to com.intersys.classes.RelationshipObject:

insert() addAll() add()

and addressed the issue with put using Integer as a key


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.Java
Platforms: All
DevKey: MAB192
Summary: Projecting data types as primitive Java types

Description:

This change adds an option to project data types properties as primitive Java types. Thus a property of type %Integer may be projected as int instead of as java.lang.Integer. Null values cannot be set for such a projected property from Java client. Attempts to retrieve a property with NULL value will cause a CacheNullValueException.

This change has 2 main objectives: facilitate migration of Java Binding applications from Caché 4 (that used primitive Java types) to Caché 5 and provide easier way to write applications that stores mostly non-NULL values in database.

To project a property as primitive type one must specify its JAVATYPE parameter. For instance, if the JAVATYPE is "int", the property will be projected as int, if it is "double" it will be projected as double, etc. Relevant conversions will be attempted when needed, thus it is valid to project %Integer or even %String properties as double (provided %String always contains a valid double value).


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Object.Java
Platforms: All
DevKey: MAB193
Summary: Minor issues storing and retrieving data from SList

Description:

SList store / retrieval operations currently have the following limitations:

  1. Boolean objects cannot be added. list.add(new Boolean(true)) produces an exception, even though a user can create a list containing single boolean value.
  2. Character objects and nulls cannot be added either (this would rather be an enhancement).
  3. get(int index) method instantiates an Integer object for all integral types, even if this leads to an overflow when the value is too great for an Integer.
  4. The output of SList.toString() is cryptic which doesn't help testing it or debugging programs.
These have been addressed as follows:
  1. Boolean, Character and null objects can be added to SList via add method.
  2. SList.get(int index) now instantiates Long if value if the value in the list is greater than will fit in an Integer.MAX_VALUE
  3. Improved SList.toString() method

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.Java
Platforms: All
DevKey: MAB197
Summary: Limits when writing to streams from Java.

Description:

Limits on the amount of data that can be written to streams using the Java Binding have been removed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Java
Platforms: All
DevKey: MAB201
Summary: OpenByQuery() doesn't work for an empty condition

Description:

Allow empty query in Database.openByQuery()

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Java
Platforms: All
DevKey: MAB204
Summary: Methods openByQuery() now work in full Java Binding

Description:

This change implements family of methods openByQuery(...) for the full Java Binding. The implementation opens objects on the server and puts them into a %ListOfObjects collection. They are then retrieved from this collection using normal collection methods.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Java
Platforms: All
DevKey: MAB205
Summary: Added deployment mode for Java client that bypass checking of consistency between Caché class and its Java Projection

Description:

A new value for the system property com.intersys.classes.update.user is added. If this property is set to "nocheck" than consistency checking is bypassed. It will speed up initial class loading into JVM.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1133
Summary: Project method unless same in passed arguments and different in return type

Description:

If there were any differences in method signature between the class and the primary superclass, the behavior WAS as follows:

  1. Caché would generate a comment for the method in the projection code for the class.
  2. The method would still be accessible from the class because it is accessible in the primary superclass, BUT the method is not validly callable. This is because the Caché class does not pick up its method from the primary superclass.
We cannot change the latter since this mismatch is unsolvable. Instead, we modify the behavior to do the following: if the method arguments differ then we project the method and it will be picked up by Java and C++ overloading.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1140
Summary: Rules for handling methods when non-identical or conflicting signatures with method in primary superclass

Description:

Two methods have conflicting signatures if they have the same argument prototypes but differ in return types.
Consider a method that is in a class and in the class's primary superclass. If the method (considered in its class) has a conflicting signature with the method (considered in the primary superclass), then the method as it is exists in the class is not generated in the code for the class. That is,

The above, however, is modified further. Two methods have non-identical signatures if they differ in return type or in the prototype of one of their arguments or their number of arguments.

For example, suppose we have a class C that extends classes A and B. Suppose further that method M in C is not identical to the same method in class A. In this case, we do generate a method M for class C as it exists in class A.
Here are examples of the generated exceptions:
d_status User_Complete::X(Database *__db)
{
   throw Db_err(ERR_USER, "We cannot invoke this method since there is
   a conflict between the method X in this class User.Complete and its
   primary superclass User.A");
}

    public static void X (Database db) throws CacheException {
        throw new CacheException("We cannot invoke this method since
        there is a conflict between the method X in this class
        User.Complete and its primary superclass User.A");
    }
If we did not guard this call with an exception, there would be an irresolvable conflict because of the difference in definition between the method in the class and the method in its primary superclass.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1143
Summary: If a property is a Serial and the server is Pramati then GetCMPSupported should return 1

Description:

There was an issue generating the code for get_S1() when S1 was a serial property that contained serials because the contained serials were flagged as "CMP Unsupported". They are supported because they are not primitive types. It is only properties that are primitive types that are "CMP Unsupported" because Pramati cannot map them to the server. Derived types are okay.

This has been corrected.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1144
Summary: Allow error message from getConnection to bubble up

Description:

In getConnection, we now return the full text of the exception including the stack data rather than just the shorter message.
Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1145
Summary: Don't generate code for dynamic queries

Description:

We skip over dynamic queries. Since such queries do not have a fixed number of parameters we cannot generate static code for them.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1146
Summary: Put a $ztrap around call to query_GetInfo

Description:

If a SQL query fails to compile it can throw a <SYNTAX> error. We trap these and other Caché errors and return an error code. They are not included in the generated code.

If display is set in the call to the Java or C++ generator then any errors will be displayed.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1149
Summary: Ignore serveronly flag in certain cases

Description:

We now ignore serveronly under the following circumstances:

  1. Generator is for Java (for C++ behavior is unchanged)
  2. PropGet method derives from property Prop
  3. The Property is calculated

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1155
Summary: Address error in projection of Relationship Objects to Java

Description:

RelationshipObject was recently subsumed under Collection. The algorithm for calculating property accessors has changed; it now uses information about the relationship derived appropriately.

Likelihood Risk Ad Hoc Enhancement Critical
Low Moderate No No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1173
Summary: Address calculation of default ROOTDIR on UNIX and OpenVMS

Description:

The projection was calculating the default ROOTDIR using "\" as the path separator on all platforms. On OpenVMS, the path separator is "." and "]". On UNIX it is "/". This resulted in projections failing on OpenVMS and UNIX when they used the default ROOTDIR.

This has been corrected.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1177
Summary: Integrate EJB Session Beans with Studio

Description:

The writing of Session Bean methods with .inc files is now deprecated.

Instead in your Caché Session Bean Class (indicated by SESSIONBEAN parameter being 1), write your methods using [language = java], for example,

Class ISC.SessReg Extends %RegisteredObject
{
  Parameter SESSIONBEAN = 1;

  Method RunTest(r As ISC.SessRegress) As ISC.SessRegress [ language = java ]
  {
    ISC.EJBSessRegress _result = null;
    ISC.Utility utility = new ISC.Utility();
    EJBSessRegress r1 = null;
    try {
        System.out.println("fetch from regression id = 1");
        utility.dumpRegression("r from id 1: ",r);
        Context jndiContext = null;
        try {
            jndiContext = new InitialContext();
        }
        catch (NamingException ne) {
            utility.logtrace("NamingException in new
        InitialContext()"+ne.getMessage());
            ne.printStackTrace(System.out);
            throw new EJBException(ne.getMessage());
        }
        String jndi_name = null;
        jndi_name = "SessReg_ISC_EJBSessRegress";
        Object home = null;
        try {
            home = jndiContext.lookup(jndi_name);
        }
        catch (NamingException ne) {
            System.out.println("Could not find
                SessReg_ISC_EJBSessRegress in "+jndi_name);
            System.out.println("NamingException in
                jndiContext.lookup"+ne.getMessage());
            ne.printStackTrace(System.out);
            throw new EJBException(ne.getMessage());
        }
        EJBSessRegress_Home homeISC_SessRegress = null;
        homeISC_SessRegress = (EJBSessRegress_Home)
        javax.rmi.PortableRemoteObject.narrow(home,
        EJBSessRegress_Home.class);

        r1 = null;
        System.out.println("about to create new regression");
        try {
            r1 =
        homeISC_SessRegress.create(r.get_MyBit(),r.get_MyBitList(),
        				r.get_MyPerson(),r.get_MyPersonList());
            System.out.println("after create of new regression");
        }
        catch (javax.ejb.CreateException ce) {
            System.out.println("CreateException: ce.getMessage()");
        }
        System.out.println(" create new regression id = "+r1.get_ID());
        System.out.println("setting fields in new regression");
        utility.setFirstFromSecond(r1,r);
        utility.dumpRegression("new r1 :",r1);
    }
    catch (java.rmi.RemoteException ce) {
        StringWriter wr;
        wr = new StringWriter();
        PrintWriter out = new PrintWriter(wr);
        logerror("SQLException:"+ce.getMessage());
        ce.printStackTrace(out);
        logerror("Stack trace:"+wr.toString());
        throw new EJBException (ce.getMessage());
    }
    Context jndiContext = null;
    try {
        jndiContext = new InitialContext();
    }
    catch (NamingException ne) {
        System.out.println("NamingException in new
    InitialContext()"+ne.getMessage());
        ne.printStackTrace(System.out);
    }

    String jndi_name = null;
    jndi_name = "SessReg_ISC_EJBSessRegress_Local";
    EJBSessRegress_Home_Local home = null;
    try {
        home = (EJBSessRegress_Home_Local)jndiContext.lookup(jndi_name);
    }
    catch (NamingException ne) {
        System.out.println("Could not find
    SessReg_ISC_EJBSessRegress_Local in "+jndi_name);
        System.out.println("NamingException in
    jndiContext.lookup"+ne.getMessage());
        ne.printStackTrace(System.out);
        throw new EJBException(ne.getMessage());
    }
    EJBSessRegress_Local local = null;
    try {
        local = home.findByPrimaryKey( new EJBSessRegress_Pk(new
    Integer(1)));
    }
    catch (javax.ejb.FinderException ex) {
        utility.logtrace("primary key 1 not found");
        throw new EJBException("primay key 1 not found");

    }
    utility.logtrace("local.get_MyString()="+local.get_MyString());
    try {
        System.out.println("removing new regression");
        home.remove(r1.getPrimaryKey());
    }
    catch (javax.ejb.RemoveException ex) {
        System.out.println("RemoveException: REMOVE: "+ex.getMessage());
    }
    catch (RemoteException ex) {
        System.out.println("RemoteException: REMOVE: "+ex.getMessage());
    }

    // _result = r1;
    _result = null;
        return _result;
}
Note that it is still possible to use .inc files, but they cannot be mixed with "language = java", the preferred methodology.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.Library
Platforms: All
DevKey: MAK726
Summary: Add a scrollable and savable resultset object

Description:

Add a new class with the ability to move forward, backward and jump to any location in the result set. It can also be saved and loaded. It works by running the entire query in the Execute and storing the results in a global. Then, you can move around the results by setting the CurrRow and you may also call Previous as well as the standard Next. In addition you may save this resultset and then load it potentially in a different process at a later date and continue reading from it, for example:
Set results=##class(%ScrollableResultSet).%New("Classname:QueryName")
Do results.Execute()
Do results.Next()
Write results.Data("fieldname")
Do results.%Save()
Set id=results.%Id()
Kill results
Set results=##class(%ScrollableResultSet).%OpenId(id)
Do results.Next()
Write results.Data("fieldname")
There is also a Count method to find the total number of entries in this resultset.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.Library
Platforms: All
DevKey: MAK770
Summary: Prevent UNDEFINED error in %ResultSet

Description:

If the Fetch did not define the 'Row' parameter then this could cause an UNDEFINED error in %ResultSet class. It now accepts this undefined Row as "".

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Library
Platforms: OpenVMS, Windows
DevKey: MAK787
Summary: %File.GetFilename("name") did not work correctly on OpenVMS

Description:

On Windows or UNIX if you called 'Write ##class(%File).GetFilename("myfile.txt")' it would return 'myfile.txt' but on OpenVMS it would return ''. This caused an issue with importing CSP files from Studio to a OpenVMS system, the files would show up without any filename portion. This now works correctly.

Also change %File to use the case sensitive directory normalization function so it will not lower case all filenames when calling the normalization methods on Windows.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Library
Platforms: All
DevKey: MAK798
Summary: %RoutineMgr and %Routine Exists methods did not handle versions of routine properly

Description:

If you called
Write ##class(%Routine).Exists("MyRtn.MAC;1")
and there was a version stored on disk it would still report '0' because it was checking the wrong global. Now the Exists method in %Routine and %RoutineMgr work correctly with versions of routines.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Library
Platforms: All
DevKey: MAK842
Summary: Ftp class should use a timeout on the data read

Description:

When reading a file using the %Net.FtpSession class, the main read loop did not have a timeout on the read, so if for some reason the other end stopped sending data then the process would just hang. Now it honors the timeout and reports a timeout error.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Library
Platforms: All
DevKey: MAK852
Summary: Prevent <UNDEFINED> in %DeleteId of %ScrollableResultSet object

Description:

Calling %DeleteId of the %ScrollableResultSet object would cause an <UNDEFINED> error. This is now addressed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Library
Platforms: All
DevKey: MXT464
Summary: Allow user to specify port number in %Net.POP3

Description:

Add port property to %Net.POP3 defaulting to 110.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.Soap
Platforms: All
DevKey: MXT471
Summary: Address SOAP Client Wizard interoperability issues

Description:

The following changes have been made to the SOAP Client Wizard:

  1. Address SOAP Client Wizard and SOAP client to deal with long XML type and element names taking account of Caché class, method and property name length limitations.
  2. Generate TYPENAMESPACE parameter, if different from NAMESPACE the WSDL target_Namespace, for the target_Namespace of the schema contained in the WSDL.
  3. Use classes %xsd.double and %xsd.float for the double and float XML data types. %xsd.double and %xsd.float are extended to accept value INF, -INF and NaN which are stored as strings.
  4. Change %xsd.base64Binasry and %xsd.hexBinary to not have a length limit.
  5. When importing %SOAP.Fault, ignore any unknown elements.
  6. Address XMLNAME property parameter to be the actual name from the schema. Was name from schema with "_", "-" and "." removed.
  7. Improve namespace handling for SOAP clients with methods that have different SoapBodyUse values. For SOAP client methods change SoapNamespace to override TYPENAMESPACE as well as NAMESPACE for classes generated for the method.
  8. Do not generate SoapNamespace override for web methods unless value differs from the NAMESPACE parameter.
  9. Temporary change to ignore datasets instead of having an unexpected shutdown.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.Soap
Platforms: All
DevKey: MXT477
Summary: Address SOAP Client Wizard support for document literal WSDL

Description:

Address errors in SOAP client wizard that prevented producing a SOAP client for a WSDL file with
   <soap:body use="literal">
and
   <soap:binding transport=... style="document" />
Make the list of classes output by SOAP Client Wizard Add-in accurate.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Storage
Platforms: All
DevKey: DLP1048
Summary: Address transaction rollback

Description:

An issue was addressed where, under certain rare conditions, the %RollBack method of a class could fail because of untrapped error conditions.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Object.Storage
Platforms: All
DevKey: DLP1072
Summary: Lock globals when performing uniqueness checks

Description:

Uniqueness checks are performed in persistent classes using %CacheStorage by invoking $Data() with a unique reference formed from the index global reference. There are no unique constraints possible without a corresponding index. Other storage classes (%CacheSQLStorage) don't require an index in order to enforce a unique constraint. Concurrency issues involved in enforcing unique constraints can be therefore resolved in such classes by locking the index global reference using only the subscripts corresponding to properties included in the unique constraint definition.

This change implements lock behavior when concurrency is active in a manner consistent with the way the SQL filer implements such locks. All uniqueness checks are now performed with locks in place (assuming concurrency is active). Locks are also acquired for the duration of the transaction when an object with a unique constraint is deleted.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Object.Storage
Platforms: All
DevKey: DLP1080
Summary: Storage fails when migration includes 3.x to 4.1.x to 5.0.x

Description:

In migrating applications from 3.x to 4.1.x to 5.0.x, an issue occurs because the storage type class in 3.x is not package qualified. A qualified name will be required for the later migration. The conversion code has been updated to accept either a qualified or unqualified name.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1065
Summary: Allow bitmaps when IDKEY is based on single integer property

Description:

Previously, only classes with system assigned IDs were allowed to have bitmap indices. This restriction was relaxed for classes using %CacheSQLStorage if the IDKEY was based on a single property whose type was %Integer and the MINVAL is greater than zero. This change relaxes the restriction under the same conditions for classes using %CacheStorage.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1069
Summary: Address bitmap index filing in %CacheStorage when idkey is not system assigned

Description:

Caché allows bitmap indices to be used when the idkey is based on a single property that is a positive integer. There are situations that don't properly check for 'positive integer' and also filing issues when generating the chunk and offset when the idkey is not system assigned. Both issues are addressed by this change.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1089
Summary: Address construction of baseref for child classes using default storage

Description:

This issue is rather obscure and rarely encountered. The baseref for any address in the compiled extent of a persistent class using default storage (%CacheStorage) was not properly constructed. It was missing leading and trailing literal subscripts. The baseref is now properly constructed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1090
Summary: Use an extent level lock when a deleting a large number of objects in a single transaction

Description:

When deleting a parent object that has over 1000 children the lock table could be filled, causing an error to be reported. Now, when more than 1,000 object locks are in place within a single transaction, subsequent locks will be made on the extent. This significantly reduces the chance of the lock table filling up.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1093
Summary: Address extent lock release

Description:

There was an inconsistency in the lock escalation logic. If an extent lock failed, Caché was still releasing the lock. That would cause a previously acquired lock to be released improperly. Now Caché checks to see if the lock was acquired before releasing it.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



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

Description:

If the global ^%SYS("TempDir") is defined, then this is now used as the temporary location for stream data. If this is not defined, then it will work as before using "" as the directory which puts the stream data in the current directory - normally the location of the cache.dat file.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.Sys
Platforms: All
DevKey: CDS420
Summary: Address circular reference check when many objects in list

Description:

An <INVALID OREF> error could happen because an object was erroneously closed when it was a member of a relationship containing more than 1018 members. This is addressed and the error is no longer possible.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.XML
Platforms: All
DevKey: MAK838
Summary: <COMMAND> error for XML export of object code

Description:

$SYSTEM.OBJ.Export method for object code gives <COMMAND> error:
     TEST>d $system.OBJ.Export("test.OBJ","c:\aaa\export.xml")
     Exporting to XML started on 08/06/2003 17:03:53
     Exporting object code: test.obj
     <COMMAND>Export+34^%occSAX
This is now addressed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.XML
Platforms: All
DevKey: MXT453
Summary: Create %XML.Writer class for easier export of an XML document

Description:

The new class %XML.Writer will control export of XML from Caché. The %XML.Writer class will generate a complete XML document including the <?xml> tag. To improve performance it will work sequentially, outputting the XML as it goes.

%XML.Writer works in two phases. During the first phase, any required parameters are set for the entire document. For example indentation, charset, output media. In the second phase the root element and its child elements are exported. The root element may be the export of a single object and its referenced objects. Or the root element may be a simple element with any number of objects exported as its children.

Control of XML output is implemented as properties of %XML.Writer.

The destination for XML output is specified by the Output... methods. Only one of these methods may be called. If none are called, the default is to output to the current device.

The actual output of XML may accomplished by calling the RootObject() or RootElement() methods.

RootObject([oref],[tag],[namespace],[local]) will output the document as a single object instance and all its references. The RootObject() method initializes itself based on the properties of the %XML.Writer instance and does the output. When output is complete, it writes the final end tag and closes the output device. At this point, the %XML.Writer properties may be modified and RootObject() or RootElement() called again to output another document.

If the Format="encoded" property is used and a RootObject() method, then all object instances will be output as embedded in the top level object. This is usually not desired and therefore objects to be output using SOAP encoding should usually be enclosed in by a root element using RootElement() and EndRootElement().

The RootElement() method writes only the root element of the XML document. Child elements must be written by the user. The RootElement() method initializes based on the properties of the %XML.Writer instance and does the output. EndRootElement() writes the final end tag and closes the output device. After EndRootElement() is called, the properties may be modified and RootObject() or RootElement() called again to output another document.

There are two possible formats for the RootElement method:

EndRootElement() is the method to end the root element.

Elements that are contained in the root element may be output using the Caché ObjectScript Write command or Basic Print command. In this case the user is responsible for proper management of namespaces and nesting.

Additionally, the Object() and Element() methods may be used to output nested elements.

The Reset() method may be called after an XML document has been output by RootObject() or RootElement() to reinitialize the properties of the XML document.

Namespace handling is for the most part automatic. %XML.Writer adds namespaces and their automatically created associated prefixes to the XML output as needed. The usage of namespaces is controlled by the ElementQualified, AttributeQualified and DefaultNamespace properties, and any [namespace] argument to an Object or Element call. However, it is possible to control when a namespace is introduced into the document and the prefix used with the AddNamespace() method.

The %XML.Element class defines an XML element to be used by %XML.Writer. The tag name, attributes and namespace may be defined. To get a new instance of %XML.Element call
%New([tag])
where [tag] is the tagname to be used for the element.

The Tagname property may alternatively be set to the tag name.

The Namespace property is set to the namespace to be used for this tag. If Namespace is not set then %XML.Writer will use the default namespace or no namespace if no default is set.

The Local property is %Boolean, default is 0. The Local property determines how the tag is qualified for the case of elementFormDefault="unqualified".

The AddAttribute([name],[value],[namespace],[valueNamespace]) method adds an attribute to this element. [name] and [value] are required. [namespace] is the optional namespace for the attribute name. If [namespace] is not specified, then the default namespace is used for the attribute name. [valueNamespace] is the namespace for the value. If [valueNamespace] is not specified (the most usual case), no namespace prefix is used for the value. [valueNamespace] is used for attributes like xsi:type whose value comes from an XML schema namespace.

In addition, support is added 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. However, direct calls to XMLExport ignore the NAMESPACE class parameter, since XMLExport does not directly support XML namespaces.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.XML
Platforms: All
DevKey: MXT458
Summary: Correct SOAP server SoapBodyUse

Description:

The SOAP Service has been corrected to properly create WSDL when some web methods have SoapBodyUse = literal and some have SoapBodyUse = encoded.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.XML
Platforms: All
DevKey: MXT459
Summary: Address miscellaneous XML Schema Wizard errors

Description:

The following changes have been made:
  1. Handle large schema by using ^CacheTemp to store parsed schema rather than local array.
  2. The Caché class compiler requires that class names do not differ only in case. If the schema wizard creates class names that differ only in case, then makes names unique by adding integer.
  3. Map xsd:base64Binary XML type to %xsd.base64Binary.
  4. Map xsd:hexBinary XML type to %xsd.hexBinary.
  5. Address handling of relative include or import paths with "/" separators on Windows.
  6. Non-unique names can be created for the inverse property of a relationship when the class contains a relationship with one of its subclasses. Make these added inverse property names unique by concatenating an integer.
  7. If the specified package name contains a ".", then classes generated for inline elements where being created with only the first part of the package name. Change to use the entire package name in this case.
  8. Pass classes to compile as array instead of string to avoid <MAXSTRING> error.
  9. Address algorithm for unique long names to always have 3 digits after 22 characters. Previously, sometimes 4 digits were added.
Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.XML
Platforms: All
DevKey: MXT462
Summary: Change CSP XML sample to use %XML.Writer

Description:

Change the xmlclasses.csp sample CSP page to use %XML.Writer instead of XMLExport.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.XML
Platforms: All
DevKey: MXT465
Summary: Add Schema Wizard features

Description:

The following features have been added or modified:
  1. Support <xs:group ref=....> by including elements inline.
  2. Note use of xs:restriction by adding the restriction information to the class description.
  3. Avoid multiple includes of the same schema. The purpose is to keep from creating classes multiple times and then needing to reduce which reduces memory usage. This change will also avoid infinite loops in certain cases.
  4. Only generate compileAfter list for a class that includes referenced datatype classes. compileAfter was cut down to prevent compile circularities. compileAfter is not needed for non-datatype classes since we no longer check for XML enabled at compile time.
  5. Delay resolution of <element ref= > until after all types created in order to address issues with inline XML types created for <element ref=...>. The issues were excessive types created and type not able to be found in case of loops in imported schema.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.XML
Platforms: All
DevKey: MXT466
Summary: Improvement to XML schema wizard handling of groups especially choice groups.

Description:

The following changes were made:
  1. Add "Parameter XMLSEQUENCE = 1;" to created classes to enforce ordering on import. This change deals with properties in a class with duplicate XMLNAMEs.
  2. However, XMLSEQUENCE cannot ever be added to a class that contains a choice group. This is a temporary change until full support of xs:choice is implemented.
  3. Do not allow properties within a choice group to be marked as Required since they cannot all appear. This is a temporary change until full support of xs:choice is implemented.
  4. Change default for xs:element minOccurs to the correct value of 1 unless element is in a choice group.
  5. xs:all only allowed in complexType, restriction or extension. Set XMLSEQUENCE parameter to 0 for xs:all.
  6. Normalize ".." in include paths to avoid including schema file multiple times.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Object.XML
Platforms: All
DevKey: MXT469
Summary: Address XML schema wizard to display utf-16 files

Description:

XML Schema wizard was not displaying schemas that were stored as utf-16. This has been corrected.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.XML
Platforms: All
DevKey: MXT472
Summary: Address XML export with format encoded of serial objects

Description:

With the format specified as encoded, the generated XML is incorrect if it pertains to a serial object which contains a reference to a persistent object. Once the persistent object is projected, the remainder of the XML serial object properties are projected at the embedded level instead of at root level.

The change is to change XMLExport for serial objects to defer export of referenced non-serial objects until the top level of the export is reached.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.XML
Platforms: All
DevKey: MXT474
Summary: Maintain namespace information when exporting mixed XML node

Description:

Modify %XML.Reader, SOAP web service and %SOAP web client to maintain namespace attributes in %XML.String mixed nodes. Make sure all attributes in %XML.String text are exported correctly including the prefix. Export empty tags in %XML.String as <tag/>

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Object.XML
Platforms: All
DevKey: MXT476
Summary: The XML export XMLNAME is ignored for array of serial objects

Description:

Address issues with Array of serial objects:

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: SQL
Platforms: All
DevKey: DPV2041
Summary: Address lock removal if transaction is aborted

Description:

An issue has been addressed where the lock obtained on a row during a query run with READ_COMMITTED isolation level was not released when the query encountered an error resulting in the query's error trap code being run.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: SQL
Platforms: All
DevKey: DPV2048
Summary: Function {fn WEEK ()} now returns the same results as SQLServer

Description:

The Caché function, {fn WEEK ()}, now returns the same value as SQLServer.

Previously, it counted the first Sunday as the transition from week 1 to week 2. When the year started on a Sunday, this was incorrect and has been accounted for.

This was changed for compatibility and ease of use in importing and exporting data.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes No No

 



Category: SQL
Platforms: All
DevKey: DPV2050
Summary: Add ORIGINATING_PROPERTY Column to %Library.SQLChildTables query

Description:

%Library.SQLCatalog.SQLChildTables query now has a column named ORIGINATING_PROPERTY:

ORIGINATING_PROPERTY:%String - The name of the property which produced the projection of this Child Table. If the child table was projected because of an ARRAY or LIST collection, the name of the collection property is returned. Otherwise, it is assumed the child table resulted from a relationship and the property name of the parent reference field is returned. In this case, the parent reference field's property is the name of the relationship.

The rowspec for this query is now defined as:

ROWSPEC = "TABLE_NAME:%String(MAXLEN=128),
           COLLECTION_TYPE:%String(MAXLEN=12),
           ELEMENT_TYPE:%String(MAXLEN=10),
           CLASS_NAME:%String(MAXLEN=128),
           ORIGINATING_PROPERTY:%String(MAXLEN=128)"

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: SQL
Platforms: All
DevKey: DPV2058
Summary: Add INVERSE_RELATIONSHIP column to %Library.SQLCatalog.SQLChildTables query

Description:

The column INVERSE_RELATIONSHIP has been added to the %Library.SQLCatalog.SQLChildTables catalog query. The documentation for this catalog query is now as follows:

SQLChildTables Procedure

%Library.SQLCatalog_SQLChildTables('tablename')

This method takes one %String/VARCHAR type parameter which is the name of a BaseTable, and returns any child tables of the named table.

The ROWSPEC descriptions is:

The rows are returned in arbitrary order.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: CSP.Tags
Platforms: All
DevKey: MXT454
Summary: Fix SQL statement used by csp:search to avoid duplicate columns

Description:

Normally the SQL select statement that is generated by csp:search will add an ID column as the first column. This change makes it so that an ID column is not added if the ID field is already in the select list. This change is made to avoid duplicate columns which causes Informix issues when used through the SQL Gateway.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND357
Summary: Added the ability to control the JDBC Connection Pool Size

Description:

With this change, it is possible to control the connection pool size. There are now two new InterSystems proprietary APIs associated with this in CacheConnectionPoolDataSource:

Default maximum size is set to 40. When the pool maximum size is reached, connections will not be pooled any more. The underlying physical connections will be closed, and all corresponding structures will be made available to the garbage collector.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND359
Summary: Add support for ?username=foo&password=bar as part of the connection URL

Description:

This change adds the ability to pass username and password as part of the URL string. The new URL syntax is:

jdbc:Cache://machine:port/namespace/logfile:eventclass:nodelay?username=foo&password=bar

where logfile, eventclass, nodelay and ?username=foo&password=bar are all optional.

If password and username are supplied as part of the URL string, they will be used in attempting the connection. Otherwise, other mechanisms already in place will be invoked. Note that the new username/ password syntax is case-sensitive.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: SQL.ODBC
Platforms: All
DevKey: AND352
Summary: ODBC: Implement SQLGetData random column access

Description:

Previously, we did not support random column access in ODBC. While random column access using SQLGetData is a not a standard feature, it turns out some tools rely on it. This capability has been added.
Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: SQL.ODBC
Platforms: All
DevKey: MIT260
Summary: ODBC: parameter substitution in IN clause with one parameter

Description:

Now, Caché performs substitution of parameters in the IN clause: IN(constant). Previously, we stated that no substitution will be done for a constant enclosed within parentheses. In this case, a way not to perform substitution is to add an extra pair of parentheses: IN((constant))

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: SQL.ODBC
Platforms: All
DevKey: MIT261
Summary: Dynamic SQL:parameter substitution: IN clause with one literal

Description:

Now, Caché performs substitution of parameters in the IN clause: IN(constant). Previously, we stated that no substitution will be done for a constant enclosed within parentheses. In this case, a way not to perform substitution is to add an extra pair of parentheses: IN((constant))

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK570
Summary: Improve queries using DESCending order on a bitmap

Description:

This changes corrects an issue where queries that specified:

"... ORDER BY id DESC"

would sometimes return data in ascending order instead of descending when the data was retrieved using a bit-map index or a bit-map temp-file.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2055
Summary: A query with DESC keyword returns wrong resultset

Description:

An issue has been addressed where certain queries with ORDER BY xxx DESC would order in ascending order rather than descending order. The situation happened in some cases where there were multiple conditions in an IN clause or OR clause.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2056
Summary: The function "fn week" failed if the DateFormat or DateSeparator was not the default.

Description:

An issue has been addressed with the SQL WEEK function when a non-default DateFormat or DateSeparator was used. The function might have returned an <ILLEGAL VALUE> error prior to the change if a non-default format or separator was used by the process running the query. Now it does not.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes No No

 



Category: SQLManager
Platforms: All
DevKey: DLP1062
Summary: Implement PropertyInfo method in %SQL.Manager.Catalog

Description:

A new PropertyInfo method has been added to the named class. It returns all property names and associated SQL column name for all properties projected to SQL for a class. The information is sorted either by property name or SQL column number, specified by input parameter. The result is in the form of a Caché ObjectScript array with the base node set to the number of properties and each node in the array is:
<array>(<ptr>) = <property name> _ $c(22,35,1) _ <SQL column name>

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: SQLManager
Platforms: All
DevKey: PYD095
Summary: SQLMigration now handles table imports requiring the table be split

Description:

The SQLMigration package was failing with a routine too big to save error when trying to import tables that had a large number of columns (>400). The Generated SQLImport routine needed to be split into multiple INT routines when compiled. It now does this.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: SQLManager
Platforms: All
DevKey: YSD610
Summary: Namespace Privileges in SQL Manager

Description:

This enhancement enables user to grant/revoke Namespace privileges in SQL Manager.

There is a new tab on the User/Role Privileges property called Namespace. If the ODBC Namespace Security Enabled is set to No in the Configuration Manager, then all users and roles will have the Namespaces privileges granted.

If the ODBC Namespace Security Enabled is set to Yes in the Configuration Manager, then when you (the logged in user) click on a user or role then only the namespaces that you have the privileges for seeing will be shown.

If you are the system manager, then you can grant/revoke privileges in the same fashion as you do for General system permissions.

To grant/revoke all namespaces to a user/role, right click on the first row (the row that says Namespace) and see the popup menu.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: SQLManager
Platforms: All
DevKey: YSD611
Summary: Misleading prompt in Execute Query

Description:

The SQL statement executed from the Execute Query dialog in SQL Manager had an unquoted occurrence of 'delete'. As a result, the following misleading prompt was displayed:
'Are you sure you want to PERMANENTLY delete the data? Undo not available!'.

SQLManager will now check, within the first 10 characters, for an instance of the word "DELETE", allowing a space or two. If it finds it, then the warning for Deletion will come up. Otherwise it will proceed without the warning.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: SQLManager
Platforms: All
DevKey: YSD625
Summary: Set $zeof on in Configuration Manager breaks data import

Description:

Previously, if the user set Configuration Manager to use $ZEOF instead of <ENDOFFILE>, then the import could not stop properly after it finishes importing the rows.

This has been corrected. (The class already handles the case when <ENDOFFILE> is used.)


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: SQLManager
Platforms: All
DevKey: YSD626
Summary: Data import - truncated records display incorrectly

Description:

An ASCII import of csv (comma-separated values) data with missing fields at the end of the record appear in the display screen with all 'missing' fields set to the last actual data field. This now works correctly; missing fields are indicated correctly.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: SQLManager
Platforms: All
DevKey: YSD631
Summary: SQL Manager: Add shortcut F4 for changing namespace

Description:

The F4 key now invokes the dialog for changing the namespace.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: SQLManager
Platforms: All
DevKey: YSD632
Summary: Improve ASCII import for relational data

Description:

Previously, the column order after import was displayed in collated order by column name. This usually contrasts with the exported order from the origination RDBMS>

Caché has been modified to preserve the column order of the import.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: SQLManager
Platforms: All
DevKey: YSD636
Summary: Show popup menu even if the first cell is empty

Description:

If the result of running a query in the SQL manager returned a number of rows in which the first column of the first row was null, then it is impossible to select and copy all rows. It is also not possible to select the column and right-click on the header to do sorting.

Caché has been changed it so that the popup menu would always be available.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Studio
Platforms: All
DevKey: AGC238
Summary: Studio Caché ObjectScript, XML parsers - make the &apos; entity an alternative to single quote

Description:

The Caché ObjectScript parser has been changed so it accepts "&apos;" as an alternative to the single quote character "'" when it is used as a monadic operator (logical not) or as a modifier to a dyadic operator (for example "'<").

"&apos;" is not accepted as an alternative to "'" in "#'" (pre-processor line comment) or in "#'...'#" (CSP extension).

The "&" character is still accepted as itself except where it is followed by "apos;".


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU795
Summary: "Send to Server" appears when change namespace and Namespace tab is open in Workspace

Description:

An erroneous report of a "Send to Server" failure was eliminated.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU796
Summary: XML, CSS, and JS files don't appear in Workspace in Studio

Description:

Previously, the Namespace tab of Studio did not show XML, CSS, or JS files. This has been changed to show all files of these types in the CSP directory.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU801
Summary: Find in Files changes

Description:

If the "Find what" or "in files" combo boxes were empty, the "Find" button was disabled, and "*.* was missing from list of available types. This has been addressed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU805
Summary: Report project name in Studio title

Description:

Studio has been changed to include the project name as part of the title bar. This makes it easier to distinguish among multiple simultaneous Studio instances.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU806
Summary: Choose file type by keyboard from NEW dialog

Description:

In the NEW dialog (that may be called from File/New or by Ctrl-N), if a user moves by keyboard from the General Tab to another Tab (CSP File or Custom), there is no way to select a file type by keystrokes, as none of the types are highlighted initially. This has been corrected.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU807
Summary: NEW Dialog: Remember previously selected page and file type

Description:

Studio now remembers the previously chosen page and file type.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Studio
Platforms: All
DevKey: DVU812
Summary: Jump from Find in Files not quite right

Description:

The transition from a search for text to the actual location of the text in a routine, class, method, and so on placed the cursor slightly off from where it should have been. Studio now positions the cursor properly.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Studio
Platforms: All
DevKey: DVU817
Summary: Up and down arrows in a project list move you to the top of the list

Description:

In Studio, after selecting a member of a long list of projects by typing the first letter of its name, the up-arrow and down-arrow keys wrapped around to the bottom or top of the list respectively rather than stopping at either end. This disorienting behavior no longer occurs.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Studio
Platforms: All
DevKey: DVU821
Summary: Add *.CSS, *.JS and *.XML to list of files in Find in Files

Description:

Studio has been changed to include Cascading StyleSheet (css), JavaScript (js) and eXtensible Markup Language (xml) file types in its Find list.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Studio
Platforms: All
DevKey: DVU827
Summary: Used only the class name (with no package) for the default file to export to.

Description:

When exporting a class definition from Studio, the Export command now uses the class name, without the package name, as the default export file name. It used to include the package name as well.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU833
Summary: "New File" button in "export to remote file" appears as "pressed" even it is not pressed.

Description:

The "New File" button in "export to remote file" appears as "pressed" even it is not pressed. This has been addressed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU841
Summary: UndoCheckout option for SourceControl menu

Description:

Add UndoCheckout to the list of source control options for a document. This will go with the current list of checkout/checkin/get latest.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU846
Summary: Remove *.prj filter from Open Dialog, invoked from Export

Description:

The Open Dialog, displayed within the Studio export window, no longer includes *.prj as a file filter as it does not make sense to select projects in this context.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU849
Summary: Foreign Key Wizard - add support for extended property name

Description:

In foreign key definitions, it is now acceptable to entered an extended property name. For example,

ForeignKey FK1(Home.Zip) References Sample.USZipCode(ZipIDX);

The only requirement is that Home's type class must be a serial class.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Studio
Platforms: All
DevKey: DVU850
Summary: Focus lost after closing active output window

Description:

In rare circumstances, Studio would incorrectly lose the window focus when the last active window was closed, and a user could not thereafter regain it. Studio would have to be restarted.

This condition has been addressed.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU851
Summary: Default Project

Description:

When the user does not have a Project default, one will be automatically open. It will be named Default_UserName. The main difference from a user defined project is that "Default Project" will be automatically saved without questions.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU855
Summary: Studio handling of .csp files corrected

Description:

When running Studio and attempting to open a CSP file from the command line, the Connection Manager dialog appeared. It now behaves correctly.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU858
Summary: Add match whole word to Find

Description:

The ability to constrain matches to whole words has been added to the Find capability in Studio.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: Studio
Platforms: All
DevKey: DVU862
Summary: If regeneration of class failed error message not helpful

Description:

If an attempt to regenerate class information fails, sometimes the warning of the condition failed to appear. This has been corrected.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU863
Summary: Studio does not mark document as modified after a Replace All

Description:

Studio now correctly notes that the document has changed after a "replace all" operation.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU865
Summary: Do not allow override of final members

Description:

Previously, Studio would show final methods in its list of methods that could be overridden, even though this is incorrect. Now, these are no longer displayed that way.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: OpenVMS
DevKey: DVU866
Summary: Studio Open dialog not working correctly on OpenVMS

Description:

In some instances, Studio failed to construct pathnames correctly when trying to open files on OpenVMS systems. This is changed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: DVU867
Summary: Use current connection as default

Description:

When multiple copies of Studio were running simultaneously on the same machine, they failed to keep individual copies of the "last namespace used" information. An attempt to change namespaces in one copy of Studio would then use the information from the last time either of them had selected a namespace.

This is incorrect and the behavior has been changed.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: JN129
Summary: Output more specific error messages in Studio

Description:

Add an expansion of HRESULT to the regular error message when an error HRESULT is returned from the UDL parser.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: MAK792
Summary: Error #5019 appears when try to delete CSS, JS, or XML file

Description:

If, from the Open dialog while browsing a CSP application, you right click on a non-CSP/CSR file and select 'Delete', you would get an error dialog saying you cannot delete this item. But it would in fact be deleted. Now it deletes this item without displaying the error.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: MAK807
Summary: In %AbstractDocument the AtEnd property was not delegated to the Code property

Description:

The %AbstractDocument has a property that is a stream which contains its data. However, it is also an example of a stream itself, as this is required by Studio. This works because all the stream methods delegate to the Code property.

However, the AtEnd property was originally missed so ..AtEnd was always '1'. Now it correctly calls '..Code.AtEnd' to return the true value.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: MAK808
Summary: Add a way to lock the source control class so it cannot be changed by any user of Studio

Description:

From Studio, you can modify the source control class for this namespace. However you may wish to lock this value so any developer cannot modify the source control class. This can be done by setting:

Set ^SYS("SourceControlLock")=1

in the namespace where you wish to lock the setting of the source control class. Then if someone attempts to modify the source control class from Studio they will get the error:

The source control class is locked and cannot be changed in Studio.

To allow it to be modified again either kill the SourceControlLock node or set it to 0.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: MAK811
Summary: New backup files do not overwrite previously created backups

Description:

The creation of backups of routines when you save a routine from Studio was saving the first 'x' backups correctly where 'x' is the number of backups it will keep, but then it never stores any more backups.

Now it correctly keeps the most recent specified number of backups.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Studio
Platforms: All
DevKey: MAK818
Summary: Performance statistics in CSP counted included pages incorrectly

Description:

If you have a <csp:include> in a page and then access this page once, the ^%CspPerformance counters would show two hits against this page rather than one. With this change, you will see one hit against the initial page and one hit against the included page.

In addition, the previous statistics for the included page would be inaccurate because the timers were not correctly stacked when the included page was called. This is also changed now.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: MAK820
Summary: Unable to open files in Studio with "_" in the name

Description:

From Studio, a CSP file with a filename that contained an underscore (_) character did not open when it was selected from a list in the Open dialog. This has been fixed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: MAK837
Summary: Report correct error message if we cannot load a routine

Description:

If you define a source control class such as:
Class Test.SourceError Extends %Studio.SourceControl.Base [ ProcedureBlock ]
{
     Method OnBeforeLoad(InternalName As %String) As %Status
     {
          Quit $system.Status.Error(9965,"Wrong info")
     }
}
and then attempt to load a routine you were getting the error message:
     Failure to create %RoutineMgr.
     Error 5912: CSP Page '<name_of_routine>' does not exist.
This was confusing as this was not a CSP page in the first place. It now reports the true error returned by the source control class.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: OpenVMS
DevKey: MAK839
Summary: Import local XML file fails on OpenVMS if the local filename is not a valid OpenVMS filename

Description:

An attempt to import a local XML project file having two dots in its filename (for example myproj.1.xml) into a OpenVMS machine fails with message:
ERROR #6301: SAX XML Parser Error: Line: -1 Offset: -1
An exception occurred! Type:XMLPlatformException,
Message: Could not determine base pathname of the file
at line 0 offset 0
This is now changed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: MAK841
Summary: Add LockItem method to %RoutineMgr class

Description:

Add a new method, ##class(%RoutineMgr).LockItem(item,lock), which returns a %Status code and, if lock=1, will lock the item requested (the default). If lock=0, it will unlock the item requested. This provides a single entry point to lock any of our document types.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: All
DevKey: MAK848
Summary: Address <UNDEFINED> error on RemoveFromSourceControl Studio call

Description:

When you removed an item that was under source control, Studio asked if you wanted to remove it from source control in the latest version of Studio. However, this caused an <UNDEFINED> error because it was not being passed a description argument. Now we accept a null description correctly.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Studio
Platforms: OpenVMS
DevKey: MAK857
Summary: Studio not browsing subdirectories of a CSP application on OpenVMS

Description:

On OpenVMS, the subdirectory name did not appear as part of the Open dialog and the file was not later saved to the right directory. This has been corrected.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System
Platforms: All
DevKey: CDS431
Summary: Prevent shutdown in Basic compiler

Description:

This addresses a very rare access violation when compiling a Basic routine.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes No Yes

 



Category: System
Platforms: All
DevKey: CDS435
Summary: Close objects during HALT

Description:

Objects which were left open when a process halted were not being closed. Now, as part of HALT processing, all open objects will be closed so their %OnClose method can do any necessary cleanup.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: System
Platforms: All
DevKey: JB141
Summary: Task Manager consuming 100% CPU

Description:

using a start date earlier than today's date, and an expiration date set equal to the start date caused the Task Manager to consume 100% of the CPU as in the example below. The %SYSTEM.TaskHistory will also be bombarded with entries.

The only way to resolve this is to RESJOB the TASKMGR code and address the task which is causing the issue.

Set obj=$system.Task.%New()
Set obj.StartDate=$zdh("7/14/03")
Set obj.EndDate=obj.StartDate
Set obj.Name="100% CPU"
Write obj.%Save()
The issue is the StartDate which is in the past because year is 1903 and the default on a task is to Expire this task never runs so the Reschedule never removes the scheduling date.

Previously Caché checked and rescheduled a task when it is expired until it is no longer expired. Because this task never runs, the reschedule will never remove the scheduled date. Caché now determines that the task will never run and removes the task.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: System
Platforms: All
DevKey: JB149
Summary: TASKMGR conversion creates duplicate system entries

Description:

Caché 5.0, 5.0.1, 5.0.2 system tasks were duplicated when converting to Caché there were no user tasks. This no longer happens.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System
Platforms: All
DevKey: JLC492
Summary: New pattern codes for 2nd alphabet

Description:

There are 3 new pattern codes, "R", "B" and "M", which are currently only available in the 8-bit Russian Windows locale (ruw8). They match:
   R - any Cyrillic character        (192-255)
   B - uppercase Cyrillic characters (192-223)
   M - lowercase Cyrillic characters (224-255)

Examples:

USER>f i=192:1:255 w $C(i)?1R
1111111111111111111111111111111111111111111111111111111111111111
USER>f i=192:1:255 w $C(i)?1B
1111111111111111111111111111111100000000000000000000000000000000
USER>f i=192:1:255 w $C(i)?1M
0000000000000000000000000000000011111111111111111111111111111111
In every other locale these pattern codes will fail to match any character.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes Yes No

 



Category: System
Platforms: UNIX
DevKey: JLC515
Compatibility: 8
Summary: Improve SET command speed

Description:

Some forms of the SET command for Solaris/UltraSPARC are now slightly faster.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System
Platforms: UNIX
DevKey: JLC517
Compatibility: 8
Summary: Align resources to improve cache hits

Description:

Make sure some spin locks are properly aligned on cache line boundaries and fit in a single line so as to reduce contention and avoid false sharing.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System
Platforms: All
DevKey: JLC520
Summary: Translate all outgoing strings on DTM/DCP

Description:

A Caché server now correctly translates via NLS all DTM/DCP outgoing strings.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: System
Platforms: UNIX
DevKey: JLC533
Compatibility: 10
Summary: Improve code generation options for UltraSPARC

Description:

Changes some C compiler options for building Caché for Solaris/UltraSPARC that slightly reduce object code size and make it a bit faster.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System
Platforms: All
DevKey: JO1682
Summary: Address <ACCVIO> if "CacheTemp" is dismounted

Description:

An issue has been resolved where deleting cachetemp could result in an access violation in the write daemon.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: System
Platforms: All
DevKey: JO1717
Summary: Rolling journal restores for clusters & new backup jrn restore dialogue

Description:

This change introduces a new interface for performing cluster journal restores to perform some specific operations. This interface is accessed by running CLUMENU^JRNRESTO.

The operations supported are:

  1. Run the "classic" cluster journal restore. This is the same as running ^JRNRESTO. The user specifies the information required to find the journal files for all the cluster members, the starting and ending journal file for each cluster member, the starting and ending sequence number for the restore and all the databases/globals to be processed as well as any redirection information if some/all databases are not going to be restored to the same location as is recorded in the journal. This interface assumes that the system that is running ^JRNRESTO is one of the "sources" of data for the restore.
  2. Produce a single common format output file from the cluster journal files. JCONVERT takes a journal file from a single system and writes it out in a common format which lets it be ready by %JREAD. This is useful for restoring journal files across versions of Caché where the journal files are not compatible (for example as part of an "almost rolling" upgrade) or as part of failing back to an earlier release. It can also be used to write out the journal file in a way that it can be loaded into another platform such as DSM. The user interface for this is the same as option 1 above with some additional questions related to what to include in the output file, the output file format, etc.
  3. Restore the journal files after a Caché backup restore. This is the same as the restore performed by DBREST after a cluster backup restore but there was no way to run it independently of restoring a backup (for example in case something goes wrong and you need to restart the journal restore). One difference between this option and restoring using ^DBREST is that this option does not start with the list of databases contained in the backup; the database list must be entered by the user. It will offer to include all currently cluster mounted databases in the restore but if this is really being run after restoring a backup then the databases restored by the backup are going to be privately mounted unless the mount state was changed by the user (for example the restore mounts them privately and leaves them privately mounted when its done).
The rest of the options (4 through 7) relate to a new type of operation termed a "rolling journal restore". This is an operation that is performed on a regular basis such as daily, weekly, etc... to replay the journal of the main system against another system to keep it up to date. This is similar to the functionality provided by Caché's shadowing technology. Rolling operations can either restore the journal directly to the system or they can produce a common format journal file for replaying with %JREAD. None of these operations assume that the current machine is supplying data for the operation (although it can). This means that there are no questions "about this system" and "about the other systems"; it simply asks you to describe the cluster, where to find the files, etc.

Two types of rolling operations are supported:

Part of the goal of the user interface for this functionality is to simplify the dialogue to prevent any mistakes since the operation is going to be performed on an ongoing (for example daily) basis. After going through the operation the 1st time as long as the configuration of the cluster does not change (for example where the journal files live, the number of cluster members, etc) pressing return to all the questions should perform the "next" operation. To allow this simplified interface to locate the necessary files this feature requires that each cluster member is assigned a unique journal file prefix and the prefix must not be changed "within" an operation. If the prefix must be changed then it needs to be changed at a point such that the change is at the "start" of an operation and not an end or the middle. This means that the system should be shut down during the operation prior to the change (for example prior to making the backup or before the end of the day) and then started up with the new prefix name to be included in the next operation (after the backup or so the 1st journal file created is the 1st file of the day). Additionally, the answers to the questions required to perform the next operation are stored in the ^SYS global in the CACHESYS database. Thus they are only available to the system which ran the operation last time so if the operation is run on a different cluster member all of the questions will have to be answered again (the 1st time).

A backup based rolling operation is probably the easier of the two to understand. Each backup provides the end point of one operation and the starting point of the next. It doesn't matter what kind of backup is performed. The cluster backup code puts a marker into the journal file which separates the data included in the backup from the data which follows the backup. This is where a journal restore following backup restore starts. The rolling restore by backup runs from one set of markers to the next. To support this you need to keep the backup file and the journal files that represent the end point on the system until the next operation is run. At that point the files can be removed up to the end point of that operation. In order to use backups as the basis for rolling operations you must enable the collection of some information used to locate the journal files that contain the backup markers. Option (8) enables and disables the collection of this information. The information is stored in a in ^|"^^CACHESYS"|SYS("JRNMARK") [this may move in the future] so the rolling operation must be run on the same system which performed the backups. When you disable collecting this information you are given the opportunity to delete the information collected so far. If you delete it, you will not be able to do another backup based operation until you enable it and perform a new backup.

A date based operation is not that much more complicated than a backup based operation. A date based operation works on "days" worth of journal data. The journal files have a name of the form yyyymmdd.nnn where <nnn> is a number that starts at 001 and goes up as the journal files rollover either due to manual journal switches, backups or they switch when they reach their user specified maximum size. A date based operation asks for the starting date and then the number of days to process. The number of days does not have to be the same every time so (for instance) on Monday you can include all of the weekend's work in one operation. The default number of days for an operation is the number of days since the last operation was performed (for example bring all of the available information over). The ending point of a date based operation is where it is a little more complicated than a backup based operation. The ending point of a date based operation is in the 1st journal file of the 1st day not included in the operation. So if you are processing 2 days starting on 5/13/2003 then this will include the files named: <prefix>20030513.*, <prefix>20030514.* and <prefix>20030515.001. This .001 file is also the starting point of the next operation. It is ok if a cluster member is not running and does not have a ".001" file which represents the start or end point (assuming that the file doesn't really exist somewhere). The system will warn you that the file is missing and ask if that is ok.

There are two special situations that are worth mentioning:


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes Yes

 



Category: System
Platforms: OpenVMS
DevKey: JO1735
Summary: Checkpid() for OpenVMS now only checks whether pid exists (like UNIX/Windows)

Description:

Caché for OpenVMS has been updated so that $ZU(67,1,pid), which is documented as releasing a job table slot in use by a "dead" job, will not consider a job dead as long as the process id exists on the system.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: System
Platforms: All
DevKey: LFT1113
Summary: INTEGRIT does not find a <DATABASE> error

Description:

This enhances integrity checking by checking the consistency of data blocks that have no right link.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: System
Platforms: OpenVMS
DevKey: LFT1139
Summary: Stop JOBEXAM from corrupting local variables on OpenVMS

Description:

An issue was addressed where JOBEXAM was corrupting local variables in the process being examined, if the process was reading from a Caché device. The problem can only occur if JOBEXAM is requesting the value of a variable that is not a string, for example an integer.

Previously, the problem was thought to be addressed for all platforms, but the correction was found to be incomplete on OpenVMS. It has been rectified.


Likelihood Risk Ad Hoc Enhancement Critical
Moderate High No No Yes

 



Category: System
Platforms: All
DevKey: LRS705
Summary: Avoid <ACCVIO> in $ZIO if we can't identify the principal device

Description:

This change avoids an access violation with the $ZIO special variable if, for some reason, the principal device for a process cannot be determined.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes No Yes

 



Category: System
Platforms: All
DevKey: SAP122
Summary: Halt taskmgr with other user jobs in shutdown

Description:

Fairly consistently, TASKMGR job is still active after system shutdown. This change corrects this situation.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System
Platforms: All
DevKey: SJ1410
Summary: Address issue with SET $BIT flipping a bit list and adding a segment at the same time

Description:

This addresses an issue in which the wrong bit was set when attempting to set a bit into a compressed bit list, where the bit number is greater than 65536.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System
Platforms: All
DevKey: SJ1411
Summary: Address issues with reverse $BITFIND

Description:

This addresses an issue with certain cases of reverse $BITFIND not finding bits.

Likelihood Risk Ad Hoc Enhancement Critical
Medium Low No No Yes

 



Category: System
Platforms: All
DevKey: SML377
Summary: Add $zu(189) for socket peek to check disconnection.

Description:

Add $zu(189) to check if current TCP device is disconnected from remote site. It returns zero if the remote site is disconnected, otherwise it returns one.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System
Platforms: All
DevKey: SML380
Summary: Address a lock timeout issue over network when the remote server has to return 0 for client to do short polling.

Description:

When an ECP server has a global without subscripts locked (for example L ^C), and the ECP client tried to lock the subscripted global with a timeout(for example L ^C(1,2,3):1), the timeout won't be honored correctly and will take much longer time to expire.

This has been changed.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: System
Platforms: All
DevKey: SML381
Summary: Address a possible opened transaction after an ECP server interruption.

Description:

This addressed a possible opened transaction after an ECP server crashed or was forced down and restarted, and client thought it had already rolled back.

Likelihood Risk Ad Hoc Enhancement Critical
Medium Low No No Yes

 



Category: System
Platforms: All
DevKey: SML385
Summary: Wait longer (2 minutes) for ECP client to reach the disabled state during Caché shutdown.

Description:

This addressed a possible stranded Cache.exe after Caché is shut down.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: System
Platforms: All
DevKey: SML386
Summary: Calculate correct lock table size when it is reduced.

Description:

Usually users don't reduce the lock table size. If the lock table is reduced, it just lowers the water mark, but the used memory could be greater than the newly reduced size. This sometimes caused the available space display to show a large amount of space available (in reality the unsigned form of a negative number).

The calculation was changed to use the currently used space instead of the maximum. Thus, it won't get the negative number. But user may see the free size is bigger than the new lock table size until the lock table space shrinks sufficiently to honor the new maximum.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System
Platforms: All
DevKey: SML387
Summary: Address possible stranded DELOCK_PENDING lock after lock is reset on a DCP client.

Description:

On the DCP client system, if a server tells the client to reset its locks (to the server), and if there are some locks in client system are in 'DELOCK PENDING' state, they may not be removed for the client's lock table. This condition has been corrected.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: System
Platforms: All
DevKey: STC458
Summary: Address <UNDEFINED> errors in GBLOCKCOPY when converting old ISM routines

Description:

This change eliminates <UNDEFINED> errors when doing a GBLOCKCOPY. The error originated from misspelled variable names. This only affects older ISM databases when mounted on a Caché system, and then converted.

Likelihood Risk Ad Hoc Enhancement Critical
Medium Low No No Yes

 



Category: System
Platforms: All
DevKey: STC459
Summary: GBLOCKCOPY now handles 2-KB multiple volume databases

Description:

If a 2-KB database with more than 1 volume was automatically set up to be converted to an 8-KB database, then it would always fail. This is because the re-labelling of the database was not handled correctly. When the database was later mounted, an error would occur. This no longer happens.

Likelihood Risk Ad Hoc Enhancement Critical
Medium Low No No Yes

 



Category: System
Platforms: All
DevKey: STC462
Summary: Address <PROTECT> error during rebuildindex

Description:

When performing an upgrade of a site, if the switch to disable kills of a top level global is set, then the building of the routine indexes will fail. This change will set the switch allowing kills temporarily, then reset it to its former value.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System
Platforms: All
DevKey: STC468
Summary: Ignore standalone $c(10) in base 64 decoding.

Description:

When decoding a base-64 encoded string, we now ignore (skip over) any $C(10) characters embedded in the string.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System.Backup/Restore
Platforms: All
DevKey: LRS685
Summary: Address <ACCVIO> when database size is exact multiple of block size

Description:

Previously, there was an issue in incremental backup that caused an access violation if an 8-KB database size were an exact multiple of 488 MB (62464 blocks). This has been addressed.

Likelihood Risk Ad Hoc Enhancement Critical
High Low Yes No Yes

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1724
Summary: Increase the timeout in JRNMARK for cluster operations from 10 to 30 seconds

Description:

The timeout for switching journal files and writing markers during a cluster backup has been increased to avoid <READ> errors from the JRNMARK routine.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System.Journaling
Platforms: All
DevKey: HYY774
Summary: Don't ask questions in starting journaling in QUIETLY mode

Description:

This correction addresses an issue where the user was being prompted for journaling parameters even when journaling was meant to be started non-interactively (for example, during cluster recovery).

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System.Journaling
Platforms: All
DevKey: HYY783
Summary: Address an issue that caused jobs to hang on I/O error even when journaling is disabled

Description:

This change addresses an issue where jobs, such as the write daemon might hang upon a persistent journal I/O error (for example, out of disk space for journaling) despite the "do not freeze system on journal I/O error" setting (by default).

Likelihood Risk Ad Hoc Enhancement Critical
Low Low Yes No Yes

 



Category: System.Journaling
Platforms: 1
DevKey: HYY787
Compatibility: 8
Summary: Update journal handling of certain records

Description:

Addressed a problem where certain journaling functions could return a "Record address is not valid" error.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System.Journaling
Platforms: All
DevKey: HYY790
Summary: Address validation of global names in journal restore to support dot syntax

Description:

This addresses an issue where one was unable to select global names in dot syntax to restore from a journal.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System.Journaling
Platforms: All
DevKey: JO1726
Summary: Integrate JCONVERT into journal restore utilities & support cluster "JCONVERT"

Description:

^JCONVERT, which is used to generate a common format journal file for reading with %JREAD into an older version of Caché or into another InterSystems product, has been updated so that it uses the standard ^JRNRESTO interface for selecting the journal file(s) to be processed. This means that a range of journal files can now be included in a single output file and that ^JCONVERT can be used in a cluster as well.

For customers who have used the journal conversion in CLUMENU^JRNRESTO, the functionality provided by ^JCONVERT is the same as available via CLUMENU.


Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: System.Journaling
Platforms: All
DevKey: JO1728
Summary: Add cluster wide journal marker log and use this during cluster restore by marker to display list of choices

Description:

The cluster journal restore system has been extended to allow you to start or end a restore using the journal markers placed in the journal files by a Caché backup.

This change introduces a new interface for performing cluster journal restores to perform some specific operations. This interface is accessed by running CLUMENU^JRNRESTO.

The operations supported are:

  1. Run the "classic" cluster journal restore. This is the same as running ^JRNRESTO and saying "Y" when asked if this is a cluster restore.
  2. Produce a single common format output file from the cluster journal files. This is the same as running ^JCONVERT and saying "Y" when asked if this is a cluster operation.

    JCONVERT takes a journal file, or a set of journal files from a cluster, and generates an output file which has a common format. The common format file can be read by %JREAD. This is useful for restoring journal files across versions of Caché where the journal files are not compatible (for example, as part of an "almost rolling" upgrade) or as part of failing back to an earlier release. It can also be used to write out the journal file in a way that it can be loaded into another platform such as DSM. The user interface for this is the same as option 1 above with some additional questions related to what to include in the output file, the output file format, etc.

  3. Restore the journal files after a Caché backup restore. This is the same as the restore performed by DBREST after a cluster backup restore and using option 3 in the "Cluster Journal Restore - Setup - Where to Start Restore" menu from ^JRNRESTO for clusters. One difference between this option and restoring using ^DBREST is that this option does not start with the list of databases contained in the backup; the database list must be entered by the user.
  4. Restore the journal files using a Caché backup to mark the starting point. This is similar to #3 above except that it uses backups which have been performed to designate where to start rather than backups which have been restored. Functionally they are the same; both options 3 and 4 use a marker which has been placed into the journal file by a Caché backup as the starting point. The difference is in the list of choices for where to start.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 



Category: System.Journaling
Platforms: All
DevKey: JO1730
Summary: Address SETCLUSW^JRNMARK so it doesn't leave switch set if quiesce fails

Description:

An issue has been resolved where, if the system failed to quiesce while adding a marker to the journal files to support some cluster journal operation, switch 10 could be left set resulting in a frozen system.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: System.Journaling
Platforms: All
DevKey: TCS003
Summary: Caché cluster journal files to single common file

Description:

This utility provides the ability to take a set of Caché Cluster journal files and creates a single journal file in DSM journal file format.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System.Licensing
Platforms: All
DevKey: RJW739
Summary: LdumpXXX^%LICENSE Message May Display Incorrect Number of Dumped Entries

Description:

The ldumpinuse^%LICENSE and ldumpall^%LICENSE functions responded with a confusing message if the output file was unwritable. This change reports a more correct message in this situation.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: System.StartUp
Platforms: All
DevKey: CFL951
Summary: Do not run startup code more than once

Description:

A test has been added to Caché to prevent running STU more than once.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: System.StartUp
Platforms: All
DevKey: JO1666
Summary: Don't freeze the system on journal errors during startup

Description:

Cache's startup process has been enhanced so that if the journal or transaction restore process encounters errors such as <FILEFULL> or <DATABASE> which previously might have frozen Caché, they are now logged the console log and the system is started in single-user mode.

There is a new COS utility, ^STURECOV, which can be used to retry the failed operation, bring the system up or ignore the errors and bring the system up. The journal restore phase will try to do as much work as possible before they abort. If a database triggers more than a certain number of errors, currently set at 3, recovery of that database is aborted and the database is left dismounted.

For transaction rollback, the first error in a database causes rollback to skip that database in the future. All transactions which reference that database will not be fully replayed and will be stored for rollback during the recovery process.

More details on the situation follow:

When the system runs into an issue during the dejournaling phase of startup it will generate a series of console log messages giving the details of the error. If this occurs, enter Caché with

c:\cache50\bin\cache -sc:\cache50\mgr -B
and enter the command, "Do ^STURECOV", for help recovering from the errors.

Starting with the "CACHESYS" directory for the installation set as your current working directory execute the given command to enter Caché. The above examples are for Windows. UNIX and OpenVMS have a slightly different syntax.

Take whatever corrective action is necessary to resolve the issue. This might involve using ^MSU to extend the maximum size of the database, it might require freeing space on the filesystem or it might require using ^INTEGRIT and ^REPAIR to find and correct database degradation. As you do this work you can use ^STURECOV, option 2, to retry the journal replay/transaction rollback as many times as necessary. Any errors encountered, including those from the when the system was started, can be displayed with option 1. When all the issues have been corrected, and option 2 runs without any errors, option 3 will bring the system up in "multi-user" mode.

If you find that you cannot resolve the issue and you want to bring the system up anyway, option 8 will clear out the information in the Caché image journal that triggers journal restore and transaction rollback at startup. The current information will be logged in the console log. Once this has been done you can use option 3 to start the system. This facility should be used with care as it is not reversible.

The ^STURECOV menu looks like (for Windows):

^^c:\cache50\mgr\>do ^STURECOV

Journal recovery options
--------------------------------------------------------------
1) Display the list of errors from startup
2) Run the journal restore again
3) Bring up the system in multi-user mode (includes journal restore)
4) Dismount a database
5) Mount a database
6) Database Repair Utility
7) Check Database Integrity
8) Reset system so journal is not restored at startup
--------------------------------------------------------------
H) Display Help
E) Exit this utility
--------------------------------------------------------------

Enter choice (1-8) or [E]xit/[H]elp?
If for some reason Caché was unable to store the errors during startup in the ^%SYS() global for STURECOV to display, you may get an initial screen that looks like this:
^^c:\cache42\mgr\>do ^STURECOV

There is no record of any errors during the prior startup
This could be because there was an issue writing the data
Do you want to continue ? No => yes
Enter error type (? for list) [^] => ?

Supported error types are:
     JRN - Journal and transaction rollback

Enter error type (? for list) [^] => JRN

Journal recovery options
--------------------------------------------------------------
1) Display the list of errors from startup
2) Run the journal restore again
3) Bring up the system in multi-user mode (includes journal restore)
4) Dismount a database
5) Mount a database
6) Database Repair Utility
7) Check Database Integrity
8) Reset system so journal is not restored at startup
--------------------------------------------------------------
H) Display Help
E) Exit this utility
--------------------------------------------------------------

Enter choice (1-8) or [E]xit/[H]elp?
At the moment only journaling errors from startup are handled by this routine. In the future, it may be extended to handle other sorts of issues which would have their own recovery menu.
Note that ^STURECOV is only designed for use when the system is in single-user mode following an error during startup. Using it while the system is in any other state (for example, is up running normally) may cause serious damage to your data as it will restore journal information if you ask it to. This information may NOT be the most current data. ^STURECOV will warn you that you're using it when you shouldn't be but it will let you force it to run.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No Yes

 



Category: Utilities
Platforms: All
DevKey: CFL935
Compatibility: 8
Summary: Fix runtime overflow error in Server Manager

Description:

A defect has been fixed that caused a runtime error in the Server Manager with large sized monitors.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Utilities
Platforms: All
DevKey: LFT1115
Summary: ^%SS show wrong number of user jobs.

Description:

^%SS was showing the wrong number of user jobs. This has been addressed.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Utilities
Platforms: 1
DevKey: LFT1116
Compatibility: 8
Summary: Integrity checker enhancements

Description:

This improves integrity checking in several ways, the main one being that the integrity checking function will now keep going after some errors so that more than one error can be reported.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Utilities
Platforms: All
DevKey: RJW676
Summary: Address dump functions in ^%LICENSE on big endian systems

Description:

This corrects an issue in displaying 4-byte integers on Unicode version of Caché for big endian 64-bit platforms.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No No No

 



Category: Utilities
Platforms: All
DevKey: TCS005
Summary: Prompt on next line for JRNSTART and JRNSWTCH

Description:

To improve readability, the JRNSTART and JRNSWTCH utilities now read the user input on the next line.

Likelihood Risk Ad Hoc Enhancement Critical
Low Low No Yes No

 


Changes for Caché 5.0.3
This section provides a listing of changes between Caché 5.0.2 and Caché 5.0.3.
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 problem 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:

This section contains:
Security Vulnerability Notice - 27 June 2003
Caché and write permissions on UNIX systems
Default installations of Caché for UNIX systems are configured with write permission on the Caché bin and csp directories enabled for all UNIX users. In addition, Caché can be installed in a configuration that allows UNIX users (other than "root") in a specified group to start and stop Caché. This can result in certain vulnerabilities if hostile users have access to the system. The following example assumes that Caché has been installed in /cachesys and that members of the "cachemgr" group are allowed to start and stop Caché.


Present Status

The installation defaults have been changed in Caché 4.1.16 and 5.0.3 (and subsequent versions). For more information, please contact the InterSystems Worldwide Response Center.

Workaround for earlier releases

Log on as "root", change to the directory where Caché is installed, and issue the command:

chmod go-w bin
If Caché is not being used for CSP programming, and is not running in conjunction with a local Apache web server, issue the command:
chmod -R go-w csp
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.
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: LRS697
Summary: Change permissions on csp and bin subdirectories
Description:
A new script is distributed with Caché, CSP_protect. This script, located in the <cachesys>/csp directory, allows you to disable or enable write access to the CSP directory and files after installation. For a description of the issues, please see the "Security Vulnerability Notice - 27 June 2003" that appears earlier in this document. The issues are a consequence of the permissions on directories created by the installation scripts for the Caché engine, and for the CSP network daemon, browser, and other files. Prior to this release, the installation used to create
The script does change the groupid and permissions on various scripts and executables that are intended for use only by the Caché manager, but has not previously restricted directory access. The CSP_protect script is meant to be run at any time, for any UNIX version of Caché.
If you disable write access, for security purposes, currently available CSP applications and pages may be used, but no modifications are permitted. For this to be effective, you should start Caché as a non-root user but start the CSP Network Services Daemon as root.
NOTE:
Write access to the CSP directory and files can be enabled again via dialog with the CSP_protect script. The dialog is self-explanatory.

If the CSPinstall script is rerun, or the Web Server is (re)configured for CSP during a Cache installation, CSP_protect must be rerun to again disable write access to the CSP directory and files.

It is possible that some users may find the permissions on the bin directory too restrictive, since not even the Caché manager will be able to perform maintenance on the files in it unless either the id or permissions are changed by the system administrator.

Impact:
Improved security on UNIX systems.
Likelihood Risk Ad Hoc Enhancement
High Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB178
Summary: Profiling added to the Java binding
Description:
Java Binding Profiling allows a user to count the number of calls to Caché Server and total time spent while waiting for server response.
There are 2 ways to use it:
  1. The user can always get the total number of calls to Caché Server and total time spent while waiting for server response with methods com.intersys.objects.Database.getNumberOfServerCalls() and com.intersys.objects.Database.getServerTime().
  2. It is possible use partial profiling. If the user desires to count calls and time only for particular segments of the program he should first call com.intersys.objects.Database.setProfileOn(i) method. Then, until com.intersys.objects.Database.setProfileOff(i) is called, the number of calls and time will be added to data for segment "i". At any time the user can retrieve this information by calling com.intersys.objects.Database.getNumberOfServerCalls(i) and com.intersys.objects.Database.getServerTime(i) methods.

By default there are two segments available for profiling. This number can be changed either by setting the system property com.intersys.profile.segments to the desired number. For example, the command line option -Dcom.intersys.profile.segments=5 will set this number to 5. Alternatively, the user may call the com.intersys.objects.CacheDatabase.setNumberOfProfiles(n) method before initializing the Database connection. System property value takes precedence over programmatic call.

Also, the method com.intersys.objects.DatabaseUtilities.importClass() previously loaded a file from the machine on which Caché Server was running, not the Java client. Now it is loaded from a client machine. There is another method com.intersys.objects.DatabaseUtilities.loadLocalFile() that loads file from the machine on which Caché is running. If user is certain that client and server are running on the same machine it may be preferable to use loadLocalFile() to avoid overhead of transporting file from one machine to another.

Impact:
Improved profiling and debugging information is now available.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: MAB184
Summary: Deprecate use of proprietary Java collection classes
Description:
The following classes are now deprecated:

Impact:
Applications using these classes should be re-worked to use java.Util.Map and Java.Util.List instead.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Activate
Platforms: All
DevKey: JN115
Summary: Introduce AsStream() methods on %Activate.IDispatch to cope with strings > 32KB
Description:
Additional methods have been added to the class %Activate.IDispatch to handle character strings greater than 32KB. These methods have names that end in "AsStream" and return their values as instances of %GlobalCharacterStream.

Impact:
Applications can now be extended to process more than 32KB with %activate.IDispatch.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL974
Summary: Remove "standard" classes from the generated dependencies
Description:
When the user requests generation with the "r" flag, we generate dependencies for a Class. For instance, for Sample.Person, Sample.Address is a generated dependency since Home is an attribute of Person with type Sample.Address. We generate supporting C++ or Java code for all generated dependencies. This change excludes classes whose package is "%Library" or "%XML".

Impact:
Prevents generation of superfluous client bindings for library classes.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1027
Summary: Don't project superclasses that are not registered and have all methods server-only
Description:
Here is the algorithm we use:
We have a class
     A extends B
Here is how we determine "not projected" for B. Normally we project the superclass, so this is an algorithm for not-projecting the superclass.
B is not projected if and only if all the methods and properties in "B" are marked as server-only and "B" is not a subclass of %Registered.
We are then saying that if A extends such a class B, then we only project A if all of A's methods are class methods.
We also implement the following: we return a message if a class in the class list or the dependencies has a superclass which is not a registered object and this server has all methods flagged as serveronly and the class which has this superclass has a method which is not a class method. There is a new "not projectible" error message for this case.
Here is the error message:
ERROR #6626: Class <classname> is not projectible. Projection is aborting. If the superclass of a class is not a %RegisteredObject and all the methods of the superclass are server-only and the class has some methods that are not class methods then it is not projectible. If the superclass of a class is null then the class must contain only class methods.

Impact:
Unusable superclasses will be removed from projections.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: OpenVMS
DevKey: JSL1077
Summary: Support Java generator on OpenVMS
Description:
On OpenVMS we generate files with names in OpenVMS format.
If the ROOTDIR is [MyRootDir] and the package is Sample.Person then the files generated are:

Impact:
The Java interface now works on OpenVMS.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB180
Summary: Unexpected 'ResultSet closed'
Description:
This happened when CacheQuery object was garbage collected while ResultSet was still in use. Code similar to:
ResultSet result =
	((new CacheQuery(login, "Sample.Person", "ByName")).execute());
resulted in the CacheQuery object being destroyed as soon as it was executed. This no longer occurs.

Impact:
A spurious error has been eliminated.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1099
Summary: Project methods with conflicting signatures as comments in generated code
Description:
Suppose we have a Class A extends B, C, etc.
For such a class B is the primary superclass.
Suppose there are methods in the primary superclass (B) which have a different signature than methods in the compiled methods of A (these are methods with conflicting signatures due to multiple inheritance) then for each such method <M> in class <C> with primary superclass <S> in the generated code we will issue a comment:
   // In Class <C> method <M> not generated because
   // conflict with its signature in left-most super <S>.
We will not generate further code for such a method.

Impact:
The attempt at projection will fail. The class implementor will have to re-write one or more of the classes involved to resolve the conflict.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1100
Summary: Don't allow projection when properties have conflicting declarations
Description:
If a property is defined one way in its class but another way in its primary superclass, then don't allow projection.

Impact:
The attempt at projection will fail. The class implementor will have to re-write one or more of the classes involved to resolve the conflict.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1116
Summary: Don't project certain sorts of classes
Description:
Caché will now allow projection if a class is "static" and if it contains only class methods and no properties or instance methods.
There have been deficiencies in the Language bindings where the customer has been allowed to project certain class definitions that result in code that either does not compile or does not work.
Since the Caché projection mechanism is based on deriving information about a class from its primary superclass and it is extending this superclass in Java or C++ that provides so much functionality, we have to insist that this primary superclass be a %RegisteredObject. We deny projection if the class has a primary superclass that is NOT a %RegisteredObject and it is not "static." A "static" class has only class methods and no properties or instance methods.
In other words, if A extends B,C and B is not a %RegisteredObject and A is not "static" then A is not projectible and we cannot generate code for A in Java or C++.
Also, if a class is persistent then in Java the class must extend Persistent. There is a similar rule for C++ (d_persistent). So if a class is persistent, its primary superclass must be persistent.
So if A extends B,C and A is persistent, then B must be persistent for A to be projectible. Otherwise, we will refuse to project B with an error message.

Impact:
Some prior restrictions on class projections have been lifted.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1118
Summary: Don't allow projection of not up-to-date classes
Description:
In C++, Java and EJB bindings make a class not up-to-date by editing it but not compiling it. Users should compile the class before projecting it.

Impact:
The possibility of projecting an out-of-date class definition has been closed.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Soap
Platforms: All
DevKey: MXT447
Summary: For SOAP allow types in a different namespace than methods
Description:
Add new TYPENAMESPACE class parameter for %SOAP.WebService and %SOAP.WebClient to control XML namespace of types used by SOAP Web methods. This new parameter works with the existing NAMESPACE class parameter and SoapNameSpace method keyword to determine the XML namespaces for the Web service or client.
NAMESPACE is the default XML namespace for the client or service.
SoapNameSpace is the XML namespace for the method definition in the WSDL. If SoapNameSpace is not specified for a method, then NAMESPACE is used as the method namespace.
TYPENAMESPACE is the XML namespace for the types used in the method arguments and return types in this Web client or Web service. If TYPENAMESPACE is not specified or is "", then the default namespace used for the types is from the NAMESPACE parameter.

Impact:
The handling of types and namespaces in SOAP has been improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT450
Summary: Address issues with handling of xsi:nil attribute in XML import
Description:
The following changes were made:
  1. xsi:nil on a element that maps to a property that is an object reference currently sets the property to "". This is not correct, since the XML schema standard requires that any attributes be imported. Therefore, XMLImport now creates an object with default values and sets any specified attributes.
  2. Treat xsi:nil="1" the same as xsi:nil="true" per schema standard.
  3. Support xsi:null="1" for SOAP-encoded XML documents.
  4. Add namespace test for xsi:nil to correct errors during XML import.

Impact:
XMLImport now conforms more closely to the XML Schema standard.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV1978
Summary: Address calculation of {fn WEEK(...)} function
Description:
Caché and SQL now use the same underlying algorithm to calculate WEEK. SQL was changed to use the Caché calculation.

Impact:
SQL applications using WEEK may get different (but now correct) results.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV2036
Summary: %SQL.Manager.CatalogPriv.UserNamespace query lists all namespaces instead of "<ALL NAMESPACES>"
Description:
The %SQL.Manager.CatalogPriv.UserNamespace query used to return a single row of "<ALL NAMESPACES>" if a user had access to all namespaces. Now it actually lists all the namespaces that the user has access to.

Impact:
Applications which looked for the string "<ALL NAMESPACES>" will have to be re-coded.
Likelihood Risk Ad Hoc Enhancement
Low Moderate Yes No

 



Category: SQL.DDL
Platforms: All
DevKey: DPV2016
Summary: SQL DROP TABLE referenced by Foreign Key prohibited
Description:
A change has been made to SQL DDL DROP TABLE to not allow the DROP of the table if any external (defined on another table) Foreign Key constraints are defined which reference the table being dropped. This behavior is consistent with the RESTRICT form of DROP TABLE. At this time, Caché does not support the CASCADE behavior of DROP TABLE. This change in behavior might cause some applications to return an error on a DROP TABLE where the DROP TABLE used to succeed. Applications must now DROP all referencing Foreign Key constraints before dropping the table they reference. This avoids dangling Foreign Key constraints.
There is a new SQLCODE error.
If you attempt to drop a table which has a foreign key referencing the table from another table, the following error will be returned:
SQLCODE: -320
Cannot DROP table - One or more Foreign Key constraints reference this table
Impact:
A loophole which would allow DROP TABLE to create dangling foreign key references has been closed.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.DDL
Platforms: All
DevKey: DPV2035
Summary: Drop FKey should rebuild the Primary Key Index if collation changes
Description:
Prior to this change, when a Foreign Key is added to a table through DDL and the Foreign Key constraint references a key in the referenced table which is also the IDKEY, Caché turned the field specified in the Foreign Key constraint into a reference to the referenced table. Now Caché will no longer turn the field into a reference if there is already data in the table when the foreign key is added through DDL.
Also, when a Foreign Key is dropped from a table through DDL and the Foreign Key constraint references a key in the referenced table which is also the IDKEY, Caché turned the field specified in the Foreign Key constraint into a regular field, not a reference to the referenced table. In the case where the field was a %Library.String type, this might result in the field suddenly getting a new collation. This occurred because the default collation for a string field is SQLUpper, but the collation of an IDKEY string field is always EXACT. Now, if this reference is dropped because the foreign key is dropped through DDL and there is data in the table, Caché SQL retains the EXACT collation setting for the field.

Impact:
Changes which affect index ordering now cause indexes to be rebuilt.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System.I/O
Platforms: OpenVMS
DevKey: LRS700
Summary: Address read terminator handling for OpenVMS stream mode
Description:
When reading sequential files in OpenVMS where the file open options are "WUN", Caché now correctly sets $XB with the record terminator.

Impact:
Applications reading from stream files on OpenVMS systems may experience different behavior at EOF.
Likelihood Risk Ad Hoc Enhancement
Low Low No 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: Control Panel
Platforms: All
DevKey: CFL859
Summary: List more than 1000 processes in Control Panel
Description:
Previously, the Control Panel displayed only approximately the first 1000 processes. It nows displays all of them.

Impact:
The entire list of processes is visible from the control panel.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Control Panel
Platforms: All
DevKey: CFL930
Summary: Inadvertent deletion of locks via the Control Panel is now more difficult.
Description:
Caché now prompts for when a request is made to delete a lock from the Control Panel.

Impact:
Inadvertent deletion of locks via the Control Panel is a little harder.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: CSP
Platforms: All
DevKey: MAK738
Summary: Error in CSP if attribute name is very long
Description:
If you pass in a URL with an attribute name that is very long, then it would cause an error in CSP. We do not support attributes longer than 254 characters, so now it ignores this request to set a long attribute name.

Impact:
Error checking on attribute names in CSP is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: CSP.Compiler
Platforms: All
DevKey: MXT452
Summary: Address issue in usage of #()# in href attribute of <a> tag
Description:
Correct a deficiency introduced in 5.0.1 where usage of #()# in href attribute of <a> tag no longer generates ..Link as needed. The ..Link is now produced as in 5.0 release version for #()# in href.

Impact:
The use of #()# in href attribute of <a> tag now works again.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: CSP.Net
Platforms: All
DevKey: MXT451
Summary: Change %Net.POP3 and %Net.SMTP to handle non-ASCII mail attachment filename
Description:
Address issue where attachment names which are not ASCII are being improperly decoded when downloaded using %Net.POP3, even though content-disposition properly returns the filename, that is msg.Filename was not converted correctly and now is.
Also change %Net.SMTP to properly encode non-ASCII filename.

Impact:
Non-ASCII filenames in attachments are now handled correctly.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: CSP.Web Server
Platforms: All
DevKey: MAK768
Summary: Built in Web server returns text fields incorrectly
Description:
An <input type=text name="txtName"> field in a form with ENCTYPE="multipart/form-data" is returned by the built in Web server in %request.MimeData("txtName",1) stream. It should be return in %request.Data("txtName",1) which is the way CSP Gateway works.

Impact:
Web server now returns proper datatype.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Explorer
Platforms: All
DevKey: CFL927
Summary: Prevent endless loop in Explorer (rtn compare)
Description:
An issue has been addressed that caused an endless loop in Explorer when comparing a routine from a sequential file with the one in the database.

Impact:
Explorer now operates properly.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Installation
Platforms: All
DevKey: ALE210
Summary: Load Caché Basic Tutorial into SAMPLES database
Description:
Bastutorial.xml is now loaded into SAMPLES database so users don't need to import this XML file to run the tutorial.

Impact:
No special action is needed by users to run the Caché Basic tutorial.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Installation.UNIX
Platforms: AIX
DevKey: ALE195
Summary: Address platform detection issue on ppc systems that have CPU names different from proc[0-3]
Description:
We now obtain correctly identify the platform type as a PPC when processor names are not of the form, "proc0" to "proc3".

Impact:
Caché correctly identifies multiCPU systems.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Installation.Upgrade
Platforms: All
DevKey: LRS683
Summary: Address issue with merging old .def files into a new .cpf file
Description:
Caché sometimes failed to recognize old platform names when using the configuration file converter utility. This would only affect upgrades from Caché 2.1.9 or earlier versions. This now works properly.

Impact:
Upgrades from older versions are easier.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: Installation.VMS
Platforms: OpenVMS
DevKey: ALE212
Summary: Check if CSP is already configured for Caché and allow users to reconfigure it for new Caché installation
Description:
CSP install script now checks if Apache configuration files have a CSP section and, if so, asks if the user wants to update it for new Caché installation.

Impact:
Upgrades to Apache CSP on OpenVMS are now automatic.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE194
Summary: Japanese error messages are now available on localized systems
Description:
There are 2 things you need to do in order to see the Japanese error message:
  1. Load the Japanese error messages. The command is:

    Do Import^%occMessages("c:\cachesys\bin\errors_ja.xml")

  2. Set the default locale of the server to be Japanese. The command is:

    Set ^%SYS("LANGUAGE","CURRENT")="ja"

After these 2 steps, you will be able to see error messages in Japanese.

Impact:
Users of Japanese systems now can see error messages in that language.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE196
Summary: Localize CSP Gateway upon installation
Description:
Perviously, the CSP Gateway was not localized by default on non-English locale systems. In order to localize it, for example for Japanese, a user needed to perform manual operations.
This process is now done automatically upon installation.

Impact:
CSP recognizes locales and configures itself accordingly.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE198
Summary: Do not try to register ODBC driver when it is not selected to be installed
Description:
When any component under SQL Tools was selected, install erroneously detected ODBC components as selected (even if it was not).

Impact:
Install now checks only for conflicts with the software to be installed.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE199
Summary: Update description for ODBC component
Description:
Description for ODBC driver component was incorrect, there is actually no dependency on Caché Direct.

Impact:
An erroneous conflict message has been corrected.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE207
Summary: Address an issue with install not detecting IIS Scripts directory
Description:
Address an issue with install not detecting IIS Scripts directory which resulted in WebLink IIS module not being installed.

Impact:
Install properly handles IIS detection.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE211
Summary: Install all files required for ActiveX connectivity when it is selected to be installed
Description:
Some files required for ActiveX connectivity were not installed when this component was selected to be installed and Cache Tools was not selected. Also addressed another issue - shortcut to SQL Manager was not created when it was installed without Cache Tools.

Impact:
Improved install selection of components.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Languages
Platforms: All
DevKey: CDS422
Summary: <NOLINE> compile error will not overlay previous error
Description:
An issue in the ObjectScript compiler could prevent the proper splitting of large object routines into proper-sized smaller routines. This has been corrected.

Impact:
Some large routines that failed to compile now do so.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: Languages
Platforms: All
DevKey: CDS432
Summary: Support Caché Basic Copy/Merge for multidimensional properties
Description:
The Caché Basic COPY and MERGE commands now take multidimensional property references as operands.

Impact:
Caché Basic now works better with multidimensional data.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Languages.Cache Basic
Platforms: All
DevKey: CDS433
Summary: Support Caché Basic Erase of multidimensional properties
Description:
The Caché Basic ERASE commands now take a multidimensional property reference as an operand.

Impact:
Caché Basic now works better with multidimensional data.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Languages.Cache Basic
Platforms: All
DevKey: CDS434
Summary: Allow Caché Basic label and code on same line
Description:
A restriction in the Caché Basic compiler prevented a label and executable code from appearing on the same line. This has been removed.

Impact:
Caché Basic syntax processing for labels is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: DAS439
Summary: Generate debug map for Caché Basic in debug mode
Description:
When Caché Basic code was generated and compiled in debug/line mode a debug map was not being generated. If an error occurred when executing a line of Caché Basic code in debug mode, then the caret pointer would just point to the beginning of the line and not the command which caused the error. This is changed.

Impact:
Debugging Caché Basic programs is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: DAS456
Summary: Address Caché Basic compilation errors with labels on IF
Description:
Previously, if the program had a label and then the next line was an IF block, the compiler would give an error. This has been changed.

Impact:
Easier compilation of Caché Basic programs.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: JN111
Summary: Disallow bad assignment syntax
Description:
This syntax was currently allowed by the Caché Basic parser:
   #classcontext a
   call ME.PROPERTY = a
   #endclasscontext a
which is obviously incorrect. This syntax is now reported as an appropriate syntax error.

Impact:
Better syntax checking for Caché Basic.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: JN121
Summary: Caché Basic allows external procedures to be called even though label is a Caché Basic reserved word
Description:
In code such as this:
   ...
   target="Demo.DTL.ExampleOutput".%New()
   If target="" Then
      tSC=Error@%apiOBJ(5761,"Demo.DTL.ExampleOutput")
   Exit Do
   End If
   ...
The call to Error@%apiOBJ() was flagged as invalid use of a reserved word. The Caché Basic compiler/syntax checker now checks to see if the token following the presumed reserved word is an @sign. If so it goes on to validate an external call rather than just raising an invalid use of reserved word exception.

Impact:
Improved syntax checking in Caché Basic.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Networking
Platforms: All
DevKey: GK220
Summary: Big Unicode strings over ECP cause access violation
Description:
64KB uncompressed Unicode big-string may cause a SEGV ECP in the client job. The string length was not maintained properly. This has been corrected.

Impact:
More reliable operation in the presence of long Unicode string usage.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK221
Summary: Addressed ECP transaction bitmap array size.
Description:
The initial ECP pending transaction bitmap length wasn't calculated correctly. It corrupted data causing an error in the ECP client read daemon. In rare cases, ECP would fail. This has been corrected.

Impact:
Improved ECP reliability.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK224
Summary: Sometimes, rollback over ECP would cause ECP activity to hang.
Description:
This change addresses an issue with ECP server hanging. There was an ordering issue with rollback across the network and ECP server pre-fetching. The ordering has been corrected.

Impact:
Improved ECP reliability.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Networking
Platforms: Linux
DevKey: GK227
Summary: Linux write daemon attaches network SHM at the wrong address
Description:
The write daemon method for allocating shared memory has been changed so it now works the same on Linux and other UNIX systems.

Impact:
improved reliability on Linux.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK228
Summary: Added multiple NIC support for clusters using DCP
Description:
This changes solves two issues with multiple NICs.
  1. A cluster member may not register a proper IP and port in the PIJ file, and slaves cannot locate/ communicate with the master.
  2. Slaves may not locate a correct net port to communicate with the master, and may not join the cluster.
It is recommended to define and use this when the cluster node has multiple/ambiguous local addresses.

Impact:
Improved reliability of cluster failover with multiple NICs.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Networking
Platforms: All
DevKey: PWC745
Summary: Replication over DCP with Caching turned off now really turns off caching
Description:
Corrected an issue with DCP that prevented the EnableCaching=0 operation from working properly on SET command references.

Impact:
DCP caching now performs as specified.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: PWC748
Summary: Address "If $D(^gvn)" when mapped via subscript-level mapping to legacy DCP server such as DSM
Description:
Corrected an issue that could cause incorrect results for $DATA in the case where the data is accessed over DCP through a namespace that makes use of subscript-level mapping and the destination of the reference is a DSM system or other kind of older system using the backwards compatibility features of DCP.
Specifically, when the data server is a DSM system, and ^Global uses subscript-level mapping, and $Data(^Global(1)) would return 10 (children but no data node), then:
   If $Data(^Global(1)) DO STUFF
would skip doing the STUFF that follows the "if", even though it should succeed.

Impact:
Improved reliability using DCP.
Likelihood Risk Ad Hoc Enhancement
Low High Yes No

 



Category: Object
Platforms: All
DevKey: MAK682
Summary: Do not export time modified or checksum in XML format
Description:
When exporting classes to XML format no longer put the checksum in the file to detect when the file is modified by an external editor. Now the checksum is put in the class definition inside Cache. This also allows us to remove the time modified field from the XML export format. The logic is

If the checksum does not match then this is a different version so the modified date in the class is updated.

Impact:
Improved detection of class modification.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object
Platforms: All
DevKey: MAK737
Summary: $SYSTEM.OBJ.Export returns error if item not found
Description:
When exporting items with $system.OBJ.Export, if an item was not found it would report this to the terminal, but it would not return an error code. Now it returns a suitable error code you can detect if the export worked correctly.

Impact:
Improved error reporting.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object
Platforms: All
DevKey: MAK749
Summary: $system.OBJ.Export of global modifying CR/LF characters
Description:
The export and subsequent import of a global via the $system.OBJ.Export function would change CR/LF into just LF and CR into LF. This is caused by SAX normalizing CR/LF and CR to LF as it should. To avoid changing the structure of the global we now base64 encode any global that contains CR characters ($char(13)).

Impact:
Correct handling of special characters in GLOBAL export / import.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object
Platforms: All
DevKey: MC369
Summary: Prevent unexpected Studio shutdown when there are circular dependencies
Description:
A Studio issue when there are circular dependencies, such as two classes extending each other, has been addressed.

Impact:
Studio no longer fails in the presence of this situation.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object
Platforms: All
DevKey: MC414
Summary: Correct %ClassDefinition to not lose Storage definitions
Description:
When using %ClassDefinition to edit storage, some parts of the storage definition were lost. This change addresses that.

Impact:
Improved reliability for application development.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object
Platforms: All
DevKey: TAP007
Summary: Support more than three status parameters in DecomposeStatus
Description:
Currently the $$$ERROR() macro and the method it resolves to, $$Error^%apiOBJ(), only support 3 arguments. This has been extended.

Impact:
Improved application error reporting.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Activate
Platforms: All
DevKey: JN116
Summary: Detect when an WSDL message definition has an empty complex type
Description:
WSDL containing a snippet such as
   <s:element name="About">
        <s:complexType />
    </s:element>
was not handled correctly. The assumption was that a complex type would always have children. This is not the case so the code now guards against this condition.

Impact:
Improved WSDL reliability
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Activate
Platforms: All
DevKey: JN119
Summary: Support Streams for Method Arguments/Properties > 32KB
Description:
Previously, streams could not be passed to Activate Methods or Set as Activate properties. This new functionality provides the ability to pass a character stream to an ActiveX object via the %Activate.GenericObject existing methods. The implementation detects if a Caché character-stream object has been passed and informs the underlying Activate DLL that it should treat the parameter as a stream rather than a string. At that point the DLL calls back to read the entire stream into a string before passing it to the ActiveX object. In this way strings of any size can be passed to ActiveX objects.
Passing these streams BY REFERENCE is NOT supported at this time.

Impact:
Improved stream handling as arguments to ActiveX
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1004
Summary: Change property superclass order
Description:
Properties have a superclass of the property class, %CacheProperty. By default, this is the type class, if it is a datatype. The order in which these classes are specified causes like-named parameters and methods in the type class to be overridden by the property class. Users cannot change property class behavior easily so that means no property class methods or parameters can be easily changed.
The order of the superclasses has been changed so the type class is second in the list which causes type class parameters and methods to override their property class counterpart.

Impact:
Improved flexibility and ease in class hierarchy design.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK639
Summary: Support list of items to import as subscripted array
Description:
In the XML, the import function accepts the list of items to import as a subscripted array as well as a comma-separated list. This allows the list to be over 32KB in size.
Also modify the CDL load to support subscripted array and the Load^%apiOBJ function as well.

Impact:
Improved handling of class imports.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK701
Summary: Report all signature errors at once
Description:
When checking the class signature against the superclass to make sure it matches, if an error was found it would report that error and stop checking at that point. This meant that if a subclass had multiple signature errors then you would only see one at a time. This would slow down the process of addressing these. Now we report all the signature errors in one go, so they can be addressed at once.

Impact:
Improved error analysis in class inheritance.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK719
Summary: Do not count errors in class projection compiles
Description:
When compiling a class, we count the number of errors generated so we can give a summary of how many errors occurred when the compile finishes. If a projection calls $$$ERROR a lot but does not report any errors, these were being reported as errors by the class compiler. Now we do not count any errors that occur inside the projection, but if the projection returns a status code indicating an error condition, then this just counts as one error in the final summary.

Impact:
Improved error handling during class compilation.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK720
Summary: Add %Extends to %RegisteredObject
Description:
Add %Extends method that takes a classname and returns true if the current object extends this class as either a primary superclass or a secondary superclass.

Impact:
New functionality has been added to the class "reflective" methods.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK721
Summary: Only allow subclasses of %RegisteredObject to be instantiated
Description:
Due to the way system OREF works it lead to a change that any class that was not explicitly marked as abstract could be instantiated with a
Set oref=##class(classname).%New()
Previously (in Caché 4.x and earlier), you could call %New on a class even though the class itself did not have such a method explicitly or derived from its superclasses. We do not support any type of objects other than ones derived from %RegisteredObject and so this left a potential hole which is now closed by this change.
This change prevents these other sorts of classes from being instantiated.

Impact:
Improved error detection in class compilation.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK750
Summary: Method and property of the same name causes compiler to generate wrong syntax
Description:
If you have a class method called 'Test' and a property called 'Test' then in a method you write:
   Write ..Test
The compiler thought it was referring to the class method and called this, whereas it should detect there are no parentheses and so know that this is a property reference.
Note that:
   Write ..Test(1)
Is still ambiguous, however, as there could be a multidimensional property called 'Test' and a method called 'Test' and so in this case we call the method.

Impact:
Improved error detection in class compilation.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK765
Summary: Allow language of code generated code to be specified
Description:
Add a property to the method object generator '%code' object called 'Language'. This can be set in the generator to a different language mode than that of the language of the generator itself, so you can generate Caché Basic code with a Caché ObjectScript generator. For example, the follow ObjectScript method generator will generate Caché Basic output.
   Method Test() [ CodeMode = objectgenerator ]
   {
    Write %code.WriteLine("print 1")
    Set %code.Language="basic"
   }
Note the default language for the generated code is the same as the language specified for the generator itself.

Impact:
Improved flexibility in application development.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK778
Summary: Allow some huge classes to compile
Description:
If a class has a very large number of properties, then the generated methods %NormalizeObject and %ValidateObject can become very large. If these methods get to more than 32KB of compiled code, we were not able to compile the class because these methods use procedureblock and so the code splitter could not split them into smaller chunks.
Now these two methods do not use procedureblock so the code splitter can split them. This will allow some classes with large numbers of properties to compile.

Impact:
Improved handling of compilation of large classes.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK779
Summary: Swizzling an object in a collection would set parent as modified erroneously
Description:
If you had a collection of objects (either a list or an array collection), then on an object in the database calling:
   Set oref=##class(MyClass).%OpenId(1)
   Write oref.Collection.GetAt(1)
   Write oref.%IsModified()
would say that this object was modified when it had not been. This was because the swizzle logic for the collection should not be setting the modified bit in the object.

Impact:
Improved performance due to not saving objects which have not been modified.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK781
Summary: Address issue with parsing instance variables with '%' in their name
Description:
The parsing of instance variables with '%' in their name, for example, i%%test was not working in some cases, which would result <SUBSCRIPT> errors during compilation.

Impact:
Improved syntax processing during compilation.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.C++
Platforms: All
DevKey: JSL1046
Summary: Generate code for a dynamic C++ binding
Description:
We now support generating C++ code in a dynamic mode.

Impact:
New functionality has been added.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.C++
Platforms: All
DevKey: JSL1048
Summary: In dynamic C++ binding generate code for %Oid and %Save
Description:
If the compiled class contains %Oid or %Save methods, they become part of the dynamically generated object binding.

Impact:
Better representation of the class functionality in dynamically bound C++ classes.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1053
Summary: Enhance dynamic C++ support
Description:
Exportdyncpplist now can contain a comma-separated list of query names.
   ExportDynCPPList(classes,dir,proplist,methodlist,querylist,qspec,
   		errorlog,usename)
The meaning of the comma-separated lists - proplist, methodlist, querylist has changed.
These lists can now be "*" which means generate all support for them. For example a proplist of "*" means generate support for all properties.
If the list is specific, for instance, the proplist is "Name,Age" then only support for the properties in the list will be generated: that is, only the support for Name and Age.
If the list is "" then no support will be generated. The default is "".
Here is an example where we generate support for the Mode property and the NormalizeDirectory method and don't generate any support for queries:

     Write $system.OBJ.ExportDynCPP("%Library.File","c:\temp","Mode",
     	"NormalizeDirectory")

Impact:
Improved functionality.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: MAB156
Summary: Addressed issues in SysList
Description:
Addressed several issues in SysList.toString() method. In particular, printing of empty lists and lists embedded in another list has been changed.
SysList.setParameter() has been changed to accept a SysList object.
The SysListProxy.setUndefined() method was added.

Impact:
Removed an unneeded restriction.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB158
Summary: Bulk load and create in Java Binding
Description:
Added several methods to com.intersys.objects.Database:
To load all objects satisfying given condition into Java client:
To save a collection of objects:

Impact:
Improved functionality.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: MAB182
Summary: SList#clear() and #remove() implemented
Description:
Added method clear() to com.intersys.objects.SList. Method remove() retains default implementation, that is throws UnsupportedOperationException, because the underlying SysList does not support removing elements.

Impact:
Enhanced functionality.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: MAB183
Summary: Correct Java projection generation on the client side in 5.0
Description:
Two changes:

Impact:
Makes it possible to generate Java code on the developer's system (if connected to a different server system).
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB189
Summary: generateClassLocal() and generateClassRemote() behavior is opposite to expected
Description:
generateClassRemote is now generateClassLocal and vice versa.

Impact:
Prevent confusion by naming these new methods correctly.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL957
Summary: Support queries and stored procedures in Java binding
Description:
This change enables support for generated queries and stored procedures. For each method that is also an SQL stored procedure, a method of type java.sql.CallableStatement with a name of prepare_<SqlName> will be generated.
For each query with the name <QueryName>, a corresponding stored procedure with type java.sql.CallableStatement and name <SqlName> will be generated.

Impact:
Lets the Java binding make use of storedprocedures and class queries.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL988
Summary: Make classLoader variable local to routine
Description:
When more than one relationship is defined, the code we generate in bean fails to compile because classLoader is used more than once. This change makes the reference to classLoader local to each routine.

Impact:
Improves Java binding for certain classes.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1039
Summary: Add Stream interface to ExportJava
Description:
One can have the Java generator write code to streams where it can later be retrieved from Caché.
The following illustrates this new interface:
   Set coln=##class(%Compiler.LG.JavaCodeStreamColn).%New()
   Set coln.dir="c:\personjava"
   Zn "SAMPLES"
   Set Status=##class(%Compiler.LG.LGCPP).ExportJava("Sample.Person",coln)
   If 'Status Do DecomposeStatus^%occSystem(Status,.Err)
   {
       Write !,Err(Err)
   }
   Write !,Status

Impact:
Internal mechanism needed for remote generation of Java binding code.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1049
Summary: Don't automatically project new collection types that appear in properties
Description:
In the dependency calculator for the Language Generators, we walk the types of properties and generate class support for those types unless they are filtered out. The filter is now changed so that if the types are the new collection types we don't attempt to generate code for these new types.

Impact:
Projection of collections is improved for bindings.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1065
Summary: New Java Generator collection support
Description:
This change implements the following:
  1. If a property is collection, it has no set method. This is true even if the JAVATYPE is overridden.
  2. A property with collection type list has a return type of java.util.List, unless another return type is specified by JAVATYPE.
  3. A property with a collection type array has a return type of java.util.Map, unless another return type is specified by JAVATYPE.
  4. If a user creates a custom collection class by extending library collection classes, the projection of the used class behaves as it does now. This will involve a new algorithm for calculating superclass, for instance, if A extends %ListOfDataTypes in Caché ObjectScript, then A should extend SysListOfDataTypes in Java. If B extends %Collection.ListOfDT in ObjectScript, then B should extend SysListOfDataTypes in Java too. If C extends D and D extends %Compiler.AbstractListOfDataTypes in ObjectScript, then C should extend SysListOfDataTypes in Java again.

Impact:
Projection of collections is improved for bindings.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1082
Summary: Export Stub Methods of the form <XXX>Open and <XXX>Exists
Description:
If a stub method is of form <XXX>Open or <XXX>Exists we export it to the Java and C++ Language Bindings.

Impact:
Some additional methods are available to Java/C++ clients.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1090
Summary: Don't generate get method or set method for property if private
Description:
A property may have its set or get methods overridden and though it is public, it may be the case that these overridden methods are private. If the Get method is private, we don't generate a Get method. If the Set method is private we don't generate a Set Method.

Impact:
Improved generation of Java/C++ clients.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1093
Summary: Package of classname is used for classes in CLASSLIST In EJB projection
Description:
If a class in the CLASSLIST does not have a specified package name, for instance,
     CLASSLIST="C1,C2"
then the package name is derived from the package name of the class in which the projection resides.

Impact:
Simplifies EJB projection.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1095
Summary: Produce clearer error message when APPSERVERHOME is not specified
Description:
Appserverhome must be specified. When it is not, the error message says "App Server" is required. This isn't clear.
Also clarify error message which says that you need at least one persistent class that is not a session bean.

Impact:
Improved rollout of EJB applications
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1097
Summary: Allow sqlproc to compile even if method does not return a value
Description:
Only generate SQLException catch if there are output arguments.

Impact:
Relaxes some restrictions on Stored Procedure methods.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1101
Summary: Address calculation of principal and index fields in EJB when dealing with child tables
Description:
The issue was that set and get accessors were not properly generated when a class contains arrays of datatypes. This happened for all child tables when the principal field was not in column 3 and the index field in column 4. This can easily happen, for instance, when the property name of the array begins in lower case.

Impact:
Improved generation of EJB code.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1102
Summary: Create right serial constructor when serial only appears in child tables
Description:
Constructor was missing loading of serial field:
     public EJBSerial5(Object list, QuickStatement qs,
     			boolean isLoadedFromChildTable)
     throws SQLException
        {
          m_s1 = qs.getString(list); <-- was missing
         }
For class,
 Class User.EJB5 Extends %Persistent [ ProcedureBlock ]
  {
   Projection EJB As %Projection.EJB(
                                   APPLICATIONDIR = "appDir",
                                   APPSERVERHOME = "ASH",
                                   BEANNAME = "Bean",
                                   JAVAHOME = "javaHome",
                                   ROOTDIR = "c:\19");

   Projection EJBJBoss3 As %Projection.EJB(
                                APPSERVERHOME = "c:\jboss-3.0.6_tomcat-4.1.18",
                                BEANNAME = "EJB5",
                                CLASSLIST = "User.EJB5",
                                JAVAHOME = "c:\jdk1.3.1_01",
                                ROOTDIR = "l:\EJB5",
                                SERVERTYPE = "JBOSS3",
                                USEPRIMARYKEYS = 1,
                                PERSISTENCETYPE="BMP",
                                APPSERVERCONTROLSCONCURRENCY=1);

   Property pc1 As %String [ Collection = array ];

   //Property s As User.Serial5;

   Property a1 As User.Serial5 [ Collection = array ];

   Property pc2 As %String [ Collection = list ];

   ClassMethod MyPopulate()
    {
     #define RUN(%c) Set Status=(%c) If $$$ISERR(Status) Do $SYSTEM.OBJ.DisplayError( %objlasterror) ZTimeStamp

     $$$RUN(##class(User.EJB5).%KillExtent())
     Set o=##class(User.EJB5).%New()
     If o="" d $SYSTEM.OBJ.DisplayError( %objlasterror) zt
     $$$RUN(o.pc1.SetAt("hello",1))
     $$$RUN(o.pc1.SetAt("goodbye",2))
     Set a=##class(User.Serial5).%New()
     Set a.s1="my favorite serial"
     $$$RUN(o.a1.SetAt(a,1))
     $$$RUN(o.%Save())
    }
  }

Impact:
Improved generation of EJB code when using serial objects.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1104
Summary: Let DATASOURCENAME override res-ref-name
Description:
Res-ref-name was set to <NAMESPACE>Database. However DATASOURCENAME should override res-ref-name.

Impact:
Improved generation of EJB code.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1105
Summary: Don't generate import of the superclass since the superclass is fully qualified
Description:
If a class called NewISC.Person extends ISC.Person, then the generated class does not compile because of the import of ISC.Person. However, not importing this class addresses the issue, so we now don't import superclasses.
The superclass is fully qualified in the Extends so it does not need to be imported.

Impact:
Corrects client binding for classes with the same name and different package.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1106
Summary: Allow CMP projection to happen even if superclass does not have primary key
Description:
If a superclass did not have a primary key then the CMP projection failed, with the error message "primary key required." This change allows CMP projection to succeed even though the superclass lacks a primary key.

Impact:
EJB CMP mode now works for classes without a designated Primary Key.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1107
Summary: Address <METHOD DOES NOT EXIST> error when a class was not %RegisteredObject
Description:
Previously, it was acceptable to call %New() on a class that was not a %RegisteredObject. Because this is no longer true, we have to ensure a class inherits from %RegisteredObject before calling %New on it.

Impact:
Prevents non-instantiable objects from being instantiated.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1109
Summary: Correct Java code generation for method with output parameter type
Description:
Java code generation was incorrect for a method with an output parameter type.
We didn't properly calculate number of references when output parameters were involved. This is now changed.

Impact:
Corrects handling of output parameters for methods in client bindings.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1111
Summary: Change how getClassProperties and getClassMethods are called in Java binding
Description:
GetClassProperties and getClassMethods have changed their signatures. This needs to be reflected in JDBCAdapter.java.
This issue arose because of changes added for the C++ binding.

Impact:
Internal change needed by code generator.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1113
Summary: If a property is not "insertable", it should not be present in CMP create
Description:
In the ejbCreate and ejbPostCreate we generate for CMP, there should not be present non-insertable properties. This is now true.

Impact:
EJB CMP no longer project fields that cannot be inserted.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1114
Summary: Add "public" to list of Java reserved words used by the Java generator
Description:
A user was unable to name a class "public". This corrects that oversight.

Impact:
You can now create a Java class named "public".
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1119
Summary: Don't project "set" methods for read only properties
Description:
We did not recognize read-only properties as a special case in the Language Generator, where "set" methods should not be generated. Now we do. These will no longer be generated for read-only properties.

Impact:
Better support for read-only properties in client binding.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1120
Summary: Don't allow property name case to affect CMP compilation adversely
Description:
There is an issue where a serial object being named could cause the accessors for the serial object to not compile. This was only for CMP generation.

Impact:
EJB CMP works better with serial objects.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1122
Summary: Restore old-style Java collection projection in 5.0.3
Description:
Collections will project in the previous way. A list is projected as ListOfDataTypes or ListOfObjects. An array is projected as ArrayOfDataTypes or ArrayOfObjects.

Impact:
Older Java applications can continue to use old collection API.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1123
Summary: Allow exists(...oid...) method to generate in 5.0.3
Description:
We put a guard around "exists", so that it would only be projected if the primary superclass were %Persistent. In this release, the %Persistent class is not itself persistent.
The code now looks for equality with %Library.Persistent.

Impact:
Correct projection of Exists method to Java client.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1124
Summary: Protect conflicting signature test against a null superclass
Description:
There was an issue where the conflicting signature test should not have been performed if the superclass was null. This is corrected.

Impact:
Improved code generation for client bindings.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1125
Summary: Set appropriate package for superclass
Description:
The superclass was miscalculated. If the superclass in the superclasses list did not have a package, package was incorrectly set to "User".

Impact:
Improved code generation for client bindings.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1126
Summary: Do not allow projection to EJB when child tables are invalid
Description:
We now validate the child tables since the child tables are used in the EJB projection.
If the child table is not valid we produce an error message for instance:

ERROR #6633: Class <Class> is not projectible to EJB. Projection is aborting. For a class to be projectible all its child tables must be valid. Child table <Childtable> is not valid.

Impact:
Gives an error message if classes cannot be projected to EJB.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1127
Summary: Allow pathological case of serial with no properties to project in EJB
Description:
A customer may define a serial class with no properties. An array of these projects as a child table with no properties from the serial projection. Allow these to project to EJB.
In this pathological case, we generate an EJB dependent object to represent the serial object that is essentially empty. Since the Caché serial object has no fields, the dependent object representation has no Caché fields.

Impact:
EJB projection now supports empty serial objects.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1128
Summary: Don't add classes in methods to dependencies in EJB projection
Description:
EJB projection used to add to "import" list all classes used by methods in persistent classes. This was incorrect. Now we don't import such classes.

Impact:
Improved code generation for EJB binding.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Library
Platforms: All
DevKey: MAK652
Summary: Prevent infinite loop in %ClassDefinition:SubclassOf query
Description:
The %ClassDefinition:SubclassOf query returns a list of all classes that are subclasses from a particular class. However if there was a loop because class A was a subclass of class B and class B was a subclass of class A, this would cause this query to go into an infinite loop. This is now detected — if a loop is found, then one class is not reported as a subclass of the other.

Impact:
SubclassOf query is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Library
Platforms: All
DevKey: MAK716
Summary: Change error message if a class lock in %Routine fails.
Description:
Change the error message when the Lock method on a %Routine class fails because the item is locked by another user so it does not say 'Item is locked by another user, it will be opened read only' as the 'read only' part only applies to Studio and not to use of this class directly.

Impact:
Message displayed by Studio is now clearer.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Library
Platforms: All
DevKey: MAK725
Summary: Prevent potential looping in MSM-Activate server when socket closes executing a command
Description:
In the MSM-Activate server if the client requests the server to execute a command and, while this is executing, the socket is closed it was possible that this would cause the server to start looping trying to write the error back to the client. Now it will trap out and close the process gracefully.

Impact:
Corrects a problem in the MSM-Activate server.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Library
Platforms: All
DevKey: MAK764
Summary: %Dictionary.PackageDefinitionQuery:SubPackage query not working correctly
Description:
The query in PackageDefinitionQuery:SubPackage when you called the FetchRows entry point would return hundreds of rows when there were only a few package definitions.

Impact:
SubPackage query is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Relationships
Platforms: All
DevKey: BJB266
Summary: %IsModifed is set because of Relate code
Description:
A rare issue with %IsModified has been corrected. If you had a class that had an independent pointer to a parent class and a child class of the parent and you swizzled in both, then the child would think some values had changed and it would call the %Save code.

Impact:
%IsModified behavior improved in certain cases.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Soap
Platforms: All
DevKey: MXT446
Summary: Properly report unable to create stream error in SOAP Web client
Description:
Caché now passes back an error return from stream.Write for a temporary stream. Previously this error was being ignored.

Impact:
SOAP client gives a better error message.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.XML
Platforms: All
DevKey: MAK616
Summary: Schema change for CSP file exported as XML
Description:
The schema we use to validate XML files that contain CSP data did not have the application and default attributes defined and so would refuse to load an exported CSP file. This has been corrected.

Impact:
XML Schema for class definitions is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.XML
Platforms: All
DevKey: MAK740
Summary: XML export of a class definition must export all defined items
Description:
When exporting a class to XML format, if a keyword was the default value, we were not exporting this item. However, this has the potential to cause issues with inheritance. If an item is defined to be the default value and then this class is exported and imported, then the class definition node for this value will not be set.
If you subclass from another class that has a non-default value for this node and include this class as a secondary superclass, the default value will not override the primary superclass' value because it is not set in the class definition node.
So Caché always exports all defined values even if they match the default value when XML exporting a class.

Impact:
Exported class definitions will not lose overridden default values when re-imported.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.XML
Platforms: All
DevKey: MXT448
Summary: Address XML import issues
Description:
This change makes four corrections:
  1. Web Service should specify charset as utf-8 in HTTP headers.
  2. String of white space should be imported unchanged. The issue was that it was always changed to $c(0) on import.
  3. Ignore SAXMask property of %XML.Reader, since SAXMask is computed by the %XML.SAX.Parser.
  4. Remove duplicated location information in fatal import errors.

Impact:
XML Import is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.XML
Platforms: All
DevKey: MXT449
Summary: XMLExport all keys for a relationship
Description:
Use $ORDER to loop over elements of a list or relationship to make sure to get all elements of a relationship. This is needed because relationships have an array interface, but Caché exports them to XML as lists.

Impact:
XML Export of relationships is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV1982
Summary: Prevent $system.SQL.TuneTable() from failing with <NOROUTINE> error
Description:
Consider the following simple class:
   Class User.NewClass1 Extends %Persistent [ ClassType = persistent ]
    {
      Property pad As %Library.String;
    }
The 'pad' property compiles successfully by setting 'support delimited identifiers' in Configuration Manager. But the TuneTable fails on this class.
     -----
      USER>d $system.SQL.TuneTable("NewClass1",1,1,.err)

      TABLE: SQLUser.NewClass1
           An error occurred processing the table:
           		<NOROUTINE>CalculateSelectivity+61
      ^%qarTune
      USER>w err
      qaqperr
      -----
A correction was made for the condition where TuneTable was run on a table with a column that had a non-Exact collation and the column name required a delimited identifier be used when specified in an SQL statement.

Impact:
TuneTable utility no longer gives an error.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV1994
Summary: Add ROWID_FIELD column to %Library.SQLCatalog.SQLFields query
Description:
The description for %Library.SQLCatalog.SQLFields query has been changed. Refer to the class documentation for the new format.

Impact:
Additional information is available in SQL Catalog tables.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: SQL
Platforms: All
DevKey: DPV2001
Summary: Add support for ODBC Scalar functions {fn USER()} and {fn DATABASE()}
Description:
Support has been added for the following two ODBC Scalar functions:

Impact:
SQL supports additional scalar functions.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: SQL
Platforms: All
DevKey: DPV2003
Summary: Don't output error message in Query Processor if displaylog is disabled
Description:
Caché has been changed to avoid attempts to output error messages from the Query Processor when such attempts will fail.

Impact:
Error message not displayed is error display is turned off.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV2005
Summary: DDL API: Return error properly if BuildExtRoutine fails
Description:
Previously, there was an issue where a very large stored procedure statement failed to compile, but did not report an error.
When a CREATE PROC results in a method of > 32KB of code, we put the code in an external routine and create a procedure which simply calls this routine. The code in BuildExtRoutine^%apiDDL is responsible for building and compiling this routine. It sets SQL code to -400 if the compilation of the external routine fails.
The error return was being checked improperly, but now this test is correct.

Impact:
An error message is returned if a stored procedure is too big to compile.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV2021
Summary: SQL Enhancement - Add support for {fn CONVERT(value, SQL_DOUBLE) }
Description:
Caché SQL now supports the following datatype conversion when using the ODBC explicit datatype conversion function CONVERT:
{fn CONVERT(value, SQL_DOUBLE)}  => Converts to ODBC type DOUBLE
Impact:
SQL CONVERT now converts to DOUBLE.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: SQL
Platforms: All
DevKey: MIT249
Summary: UPDATE with unbalanced quotes not rejected
Description:
Previously, an UPDATE with unbalanced quotes would update the selected fields with a text string containing the remainder of the SQL statement. This no longer happens.

Impact:
JDBC/ODBC queries with unbalanced quotation marks are now handled correctly.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT250
Summary: Only try DSNConnect if user and password are empty
Description:
A number of issues were reported when DSNConnect was attempted for a DBMS which do not support it. Now Caché skips an attempt to run DSNConnect if the user or password are not empty.

Impact:
Improvement to SQL Gateway connection logic so that requests to foreign databases no longer fail.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND335
Summary: JDBC: Remove support for get/setUnicodeStream
Description:
The ResultSet.getUnicodeStream and PreparedStatement.setUnicodeStream APIs have been deprecated for years. They are now removed.

Impact:
Deprecated API calls removed from JDBC.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND338
Summary: XDBC: Use ^CacheTemp instead of local variables for bulk operations
Description:
In some JDBC benchmarks, we noticed a performance degradation when a number of bulk inserts/updates became very large. When making a bulk insert/update of around 100 rows, performance was much better than 100 individual inserts/updates. However, as the number grew, performance was getting worse and worse.
This turned out to be due to the use of a large number of local variables. These were changed to use ^CacheTemp, and performance significantly improved.

Impact:
Improve performance of JDBC bulk operations.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: SQL.JDBC
Platforms: All
DevKey: DPV2012
Summary: Address <UNDEFINED>SPFetch2+1^%qserver> error
Description:
The calling of a procedure through ODBC or JDBC which was a Class Query projected as Stored Procedure caused an error when the Class Query was an SQL statement which contained an SQL User Defined Function. The calling of this Procedure would fail with an <UNDEFINED> error in the %qserver process. This issue existed in Caché versions 5.0 through 5.0.2.

Impact:
Correct xDBC errors related to user-defined SQL functions.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB173
Summary: Leading zero in ResultSet.getString() with DOUBLE
Description:
CacheResultSet.getString(int) returns
     .9800000190734863
while Double.valueOf(".9800000190734863").toString() returns
     0.9800000190734863

CacheResultSet.getString() should return the leading zero so that ResultSet.getString(int) and ResultSet.getDouble(int).toString() agree.

Impact:
Corrects an inconsistency in JDBC numeric conversion.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN397
Summary: Changes for WTS (Windows Terminal Server) licensing in ODBC
Description:
WTS license was using too many slots because there is no IP address for the client to match up with. This has been corrected.

Impact:
Better license detection for Windows Terminal Server and ODBC.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN402
Summary: Use input buffer length when calculating number of Unicode characters
Description:
Caché did not use the input length of the multibyte string to calculate the converted Unicode character length. If the length given fell in the middle of a multibyte character, that partial character would not be added to the length of the calculated Unicode characters. This no longer happens.

Impact:
Better UNICODE support for ODBC.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.Query Processing
Platforms: All
DevKey: MIT251
Summary: An IN clause with one parameter causes multiple CachedQuery entries
Description:
In case of: ... IN (<const>), processing of this construct was changed to replace the constant with a "?" even though normally a constant in parentheses prevents this. If the user really doesn't want to replace this constant with "?", then the user needs to use one additional pair of parentheses, as in: ... IN ((<const>))

Impact:
Improved query parsing in ODBC client.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK571
Summary: Push conditions into UNION subqueries
Description:
WHERE conditions on a FROM-subquery (for example with UNION) are now moved inside the sub-clauses of the query to apply them at an earlier point in processing. In the case of UNION, it is moved into each of the UNION's subqueries. This optimization could save significant amount of processing time by testing conditions earlier, and also by reducing the size of temp-files for virtual streams.
The exceptions to this are:
In the subquery(ies), the conditions are added to the WHERE or to the HAVING clause, as follows:

Impact:
Most subqueries with UNION now run faster
Likelihood Risk Ad Hoc Enhancement
Moderate Moderate Yes Yes

 



Category: Studio
Platforms: All
DevKey: DVU683
Summary: File -> Open URL gets "Unable to connect" message
Description:
Previously, selecting File followed by Open URL reported an error in trying to connect as cn_iptcp:127.0.0.1[1972]:csp. Once you canceled the message, the page opened via URL. This now works properly.

Impact:
Studio is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: DVU685
Summary: Initialize document if default is missing
Description:
Prior to this, if the default document was missing, Studio failed to correctly initialize the editor. This has been addressed.

Impact:
Studio is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: DVU687
Summary: Support for XML, JS and CCS files
Description:
This change allows JavaScript editing in Studio.

Impact:
Studio now supports editing of XML, JavaScript, and CSS files.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Studio
Platforms: All
DevKey: DVU688
Summary: Do not lock class if user clicks on inspector's left column
Description:
If the user clicks on left (name) column in inspector, the class will not be locked. A click on the right column is considered to be editing and the class will be locked.

Impact:
Studio is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: DVU689
Summary: Make connection string compliance case insensitive
Description:
Studio now checks for previously known connections in a case-insensitive manner.

Impact:
Studio is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Studio
Platforms: All
DevKey: DVU717
Summary: Issues with 'Windows' window in Studio
Description:
A number of minor changes were made to the handling of the "Windows" window to improve usability, file selection, document switching and so on.

Impact:
Studio is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: DVU735
Summary: Rename "Project" window to "Workspace"
Description:
The window title has been renamed and the View-> menu selection has also been changed accordingly.

Impact:
Studio is improved.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: CDS392
Summary: HALT command within $ZTRAP will execute $HALT routine
Description:
Prior to this change, the $ZTRAP frame unwinding code incorrectly stopped before discovering the $HALT frame. Now the $HALT code is executed.

Impact:
Improved handling of shutdown when errors occur.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: CDS403
Summary: Address issues with auto recompile
Description:
Under some circumstances, running a set of routines from an older version of Caché that require automatic recompilation will result in a <SYSTEM> error. This change corrects the error and allows the routines to run normally after they are automatically recompiled.

Impact:
Removed an unnecessary upgrade error.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: CDS415
Summary: Prevent <SYNTAX> error in $TEXT()
Description:
$TEXT(label^routine) could give a <SYNTAX> error in a system with too few routine buffers, or when it appeared in a routine in an older database that is using the auto-recompile feature to upgrade the old object code at the time the routine is executed. With this change, the error no longer happens.

Impact:
Improved reliability when using $TEXT().
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: CDS418
Summary: Avoid invalid NEW frame following a <STORE> error
Description:
If a <STORE> error happened while executing a NEW command, an access violation could happen during the subsequent error processing. This no longer occurs in this situation.

Impact:
Improved reliability.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: JO1705
Summary: Ignore partial Write Image Journal (SFFORCEIMJ flag) and always use "full" mode
Description:
The setting of the Write Image Journal Mode parameter in the Configuration Manager's Advanced tab, Journal section, is now ignored. Partial Write Image Journal mode is no longer supported. All systems run as if this were set to "All". This was the default so this should not be a change for most, if not all, systems.
The issue with "Partial" mode is that while a failed write will not cause database degradation, we cannot guarantee that all of a block (such as all 8192 or 2048 bytes) will be written to disk if the system fails while the write is in progress. If only part of the block is written to disk then there will be degradation when the system is restarted.

Impact:
Improved availability and integrity following a crisis.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: JO1706
Summary: Caché generates a console log entry with an error when it sets wdstop
Description:
If Caché freezes because some process encounters an error (such as a <FILEFULL>) in the middle of a multiblock global operation, a console log message will be generated that looks like:

Suspending system due to <FILEFULL> error.

Impact:
Improved error detection and logging.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: JO1708
Summary: Automatically raise maximum database size to prevent a <FILEFULL> from hanging the system
Description:
Caché will no longer freeze the system due to a <FILEFULL> error when the error occurs because a database has reached its maximum size.
There are three situations in which case a <FILEFULL> can still result in freezing the system:
  1. The filesystem is full and the database cannot be expanded
  2. There is a special situation involving 2-KB databases where there are insufficient incremental backup bitmap blocks to support a larger maximum size. The maximum size of a database can be increased by a minimum of 128MB and a maximum of 255MB without requiring additional bitmap blocks so in practice this should not be an issue. If the system cannot automatically raise the maximum size this may result in a <FILEFULL> suspending the system.
  3. The database has reaches its maximum allowed size. For an 8-KB database this is 32TB and for a 2-KB database this is 16GB.

Once a database has been marked as FULL it remains marked full until either the maximum size is modified with MSU or a significant number of blocks are freed by killing globals. A significant number is defined as 12% of the total size of the database or 10MB, whichever is smaller.

Adding an additional volume set member "counts" as modifying the maximum size of the database. Restarting the system, dismounting and remounting a database and restoring an incremental backup to the database will also remove the indication that it is full.
Certain Caché systems such as journal restore during startup and transaction rollback make use of this facility to prevent <FILEFULL> errors while they are running. This means that these systems are allowed to expand a database by as much as is needed to complete their work. In the past if a <FILEFULL> in a database which was being journaled froze the system, it would be very hard to bring the system back up as the startup code would often freeze the system again when it attempted to restore the pending journal entries. This will no longer occur.

Impact:
Improved reliability and recovery.
Likelihood Risk Ad Hoc Enhancement
Moderate Moderate No Yes

 



Category: System
Platforms: All
DevKey: JO1713
Summary: Update Caché to add to (not replace) the existing write daemon queue
Description:
An issue has been resolved where if cachetemp is deleted while the system is active, buffers from other databases queued to be written can be dropped from the write queue. The result of this is that the system will not quiesce which means that BACKUPs and SHUTDOWN will not complete. Additionally when the system is restarted, there will be database degradation because the blocks which were dropped from the write queue were never written to disk.

Impact:
The (possibly tragic) consequences of removing CACHETEMP from a live running system are slightly lessened.
Likelihood Risk Ad Hoc Enhancement
Moderate Moderate Yes No

 



Category: System
Platforms: All
DevKey: JO1719
Summary: Address display for 4 digit years in showdata and test for starting journal file in findfiles
Description:
The display of the journal files which will be restored for a cluster journal restore has been changed to prevent lines from wrapping with 4 digit years. The code that finds the starting place during a cluster journal restore following a cluster backup restore has been corrected to work in the case where the journal files are not in the same place as when the backup was performed.

Impact:
Journal restore is more tolerant of operational changes.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes Yes

 



Category: System
Platforms: OpenVMS
DevKey: JO1720
Summary: Add access mode so Caché can use the correct exit handler
Description:
The OpenVMS exit handler code has been changed to avoid logging system service exceptions in certain circumstances when a Caché process exits on systems running OpenVMS 7.3-1.

Impact:
Caché can now use the correct exit handler.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System
Platforms: OpenVMS
DevKey: JO1721
Summary: Add code to exit handler to shut down process when its invoked
Description:
The Caché exit handler on OpenVMS has been updated to simulate a RESJOB if the exit handler decides not to exit. This generally relates only to batch jobs which are terminated with delete/entry.

Impact:
Improved control over process shutdown.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: System
Platforms: All
DevKey: JO1722
Summary: Correct string stack discipline in Caché
Description:
An issue with transaction rollback has been resolved. This involved kills when the old data was a large string (such as 32KB). Previously, this could generate a <STRINGSTACK> error which could result in a system freeze. This was most often seen rolling back a transaction which involved saving a binary stream in a Caché object.

Impact:
Avoids a system hang.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System
Platforms: All
DevKey: RFD078
Summary: Address system interruption from starting PATROL after %MONLBL is started/stopped
Description:
This change addresses a process interruption which can occur if the Patrol server is started after starting and stopping the ^%MONLBL monitor.

Impact:
Improve reliability with BMC Patrol
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: RFD079
Summary: Add performance warning to ^%MONLBL
Description:
This change adds warning text to the beginning of ^%MONLBL to notify users of the impact its use will have on system performance.

Impact:
Improved message reliability.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: System
Platforms: All
DevKey: RFD080
Summary: Address possible access violations from interaction of ^%MONLBL and ^PERFMON
Description:
This change addresses a potential access violation which can occur when the performance monitor (^PERFMON or $SYSTEM.Monitor) is used after the line-by-line monitor (^%MONLBL).

Impact:
Resolved a system hang.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: SJ1412
Summary: Address issue with journaling $BIT sets
Description:
This change addresses some cases where a $BIT set might not get journaled correctly.

Impact:
Improved journaling accuracy.
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: System
Platforms: All
DevKey: SML368
Summary: Pass smaller convert count to client if necessary to improve network lock fairness.
Description:
This optimizes the lock conversion algorithm to favor the parent locks over child locks.

Impact:
Improved lock performance and decreased contention.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes Yes

 



Category: System
Platforms: All
DevKey: SML369
Summary: Prevent cluster slave job's $INCR blocking ENQ10 or ENQ13 on backup operation.
Description:
Without this change, when users do backups on a Caché Cluster environment, it may not get the system to be quiesce if there is job on slave nodes waiting for a $INCR answer from master node.

Impact:
Eliminates delays when attempting backups.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System
Platforms: All
DevKey: SML370
Summary: Prevent DDP Daemon crash over DCP cluster connection when the cluster DCP connection is down.
Description:
This addressed an issue for DCP clusters. When a DSM/MSM system locked a global in clustered database on a slave node, and when the DCP connection to the master was down, then the DDP daemon on the slave node could get an access violation interruption.

Impact:
Improved system reliability in the presence of network errors.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: SML374
Summary: Journal $INCR on ECP server if in transaction.
Description:
For $INCR on ECP, without this change the $INCR won't be journaled on ECP server when it is in a transaction. It now works as DCP did.

Impact:
Resolved residual journal omission.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: SML376
Summary: Address possible stranded lock in DELOCK_NEED state.
Description:
This addressed a possible stranded lock in DELOCK_NEED state on DCP client after a DCP connection is re-established.

Impact:
Improved recoverability.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1703
Summary: Track which system set a switch in a cluster so we can clear it during failover
Description:
The Caché cluster code contains a facility to set a switch (such as the switches manipulated by the SWSET utility) cluster wide. In the past the cluster members did not track which of the other members asked it to set a switch so that if the cluster member which set the switch failed, the cluster would end up with the switch set until it was cleared manually. Now the cluster tracks which member told it to set a particular switch and if those switches are automatically cleared during cluster failover. This is mostly of interest when a cluster member running BACKUP failed as this could result in switch 13 being left set after cluster failover completed.

Impact:
Improved recoverability.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: System.I/O
Platforms: All
DevKey: NGA108
Summary: Allow entry into environment when terminal is held by an abnormally terminated process.
Description:
An issue where processes that terminate abnormally leave their terminal in the ttyhash table preventing subsequent login on that terminal device has been corrected. Subsequent jobs will now successfully login. When this occurs a message will be logged in the cconsole.log file.

Impact:
Improved resiliency.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: System.Journaling
Platforms: All
DevKey: HYY770
Summary: Address an issue with clustered journal sequence numbers version network server and client
Description:
Addressed a potential issue in a cluster environment in 5.0. The scenario leading to the issue involves mixing SETs and $INCR on the same global on a slave node of the cluster. For example,
   Lock +^x
   Set ^x=0
   If $i(^x)
   Set ^x=2
   Lock -^x
The issue occurs when you cluster restore the entries from journal files — the resulting value of ^x from the restore may be incorrect.
Note: Only applications that mix SETs and $INCR on the same global are affected by the issue.

Impact:
Improved reliability of clustered databases.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System.Licensing
Platforms: All
DevKey: RJW747
Summary: Un-deprecate $$inquire^LMFCLI
Description:
$$inquire^LMFCLI(server) is restored. The argument if present is ignored. It returns lu1;lu2;lu3, where lu1 is purchased license units in the active key, lu2 is the currently available license units, and lu3 is the lowest level of available license units.

Impact:
$$inquire^LMFCLI functionality is restored.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System.Shutdown
Platforms: All
DevKey: RJW692
Summary: Cstop.exe on windows encounters Run-time error '62' with UNIX format key
Description:
This change allows start and stop to recognize keys in either format.

Impact:
Improved reliability of system shutdown.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Utilities
Platforms: All
DevKey: PWC746
Summary: GBLOCKCOPY translates collation into an subscript-level-mapped destination (such as ROUTINE global)
Description:
An issue was corrected that caused GBLOCKCOPY to corrupt a global. For the issue to occur,
  1. the GBLOCKCOPY must be translating the global from one collation to another, and
  2. the destination of the GBLOCKCOPY must be a namespace where the global uses subscript-level mapping.
In particular, this addresses an issue with copying the ^ROUTINE global from an ISM system to a Caché namespace.

Impact:
A possibility for data corruption has been eliminated.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: Utilities
Platforms: All
DevKey: JLC510
Summary: Create /raw mnemonic for %CHARWIN
Description:
/RAW(str) allows %CHARWIN to send arbitrary character sequences to the terminal, where "str" is an arbitrary string which may contain control characters and escape sequences. It will be sent directly to the terminal and will not be retained in the internal buffers. This mnemonic can potentially change the screen in ways that %CHARWIN will not detect and this may result in undesirable effects. Therefore it's the user's responsibility to make sure that its use will not change the screen.
This mnemonic is intended for special purposes only, like sending printer information to a terminal emulator.

Impact:
Add "raw" capability to %CHARWIN
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 




Changes for Caché 5.0.2
This section provides a listing of changes between Caché 5.0.1 and Caché 5.0.2.
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.
If you need assistance in deciding whether any of these changes affect your application, please contact the InterSystems Worldwide Response Center for assistance.



Category: Object.Sys
Platforms: All
DevKey: CDS407
Summary: Fix object reference counting for properties
Description:
This fixes a problem with object reference counting which allowed an object to stay active even though its system reference count was zero. This condition happened when the object reference was stored in an object property that was declared as a non-object data type, such as %String or %Integer.

Impact:
Application error

Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Relationships
Platforms: All
DevKey: DLP1018
Summary: Do not add disconnected objects to SaveSet if they don't exist in extent
Description:
Previously, if two objects contained a relationship to each other, and one of the objects was subsequently changed to delete its side of the relationship, that deletion may have failed to propagate to disk. This resulted in the referenced object still being present in the relationship.
This has been fixed for "cardinality = many" and "cardinality = children". The possibility of error still exists for 1:1 and M:N relationships.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System
Platforms: OpenVMS
DevKey: JO1699
Summary: Changed the generation of the network shared memory section name on OpenVMS
Description:
The method for generating the shared memory section names on OpenVMS has been changed to avoid problems when OpenVMS allows multiple processes to have the same process name. The prior method used the conflict in process names to detect that another instance of Caché was running. A limitation which arises from this change is that the name of the device which Caché is installed on (for example, where the manager directory resides) cannot be longer than 16 bytes (excluding the trailing ":" but including a leading "_"). This should not pose a problem for any sites, but Caché will refuse to start up after displaying an error message if this is the case.

Impact:
Production hang
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System.Backup/Restore
Platforms: All
DevKey: LRS675
Summary: Improve mag tape backup performance under NT
Description:
This Caché maintenance kit includes a revision in the backup utility that significantly improves performance for certain tape devices on Windows platforms. This may, however, render Caché unable to read backups from previous maintenance kits and versions.
For tape drives such as a DLT4, the backup block was being written out as a series of much smaller blocks. This revision significantly improves performance by ensuring that a single contiguous block is written, but it also means that a backup generated on the same hardware before this fix cannot be restored by a version of Caché with this fix.
Caution:
Backups made on certain kinds of tape drives on previous versions under Windows might not be able to be restored by a version with this revision. Customers should make a new backup immediately after upgrading and/or retain a Caché instance of the prior production version.

Impact:
Backup runs slowly
Likelihood Risk Ad Hoc Enhancement
Moderate Moderate Yes Yes

 



Category: System
Platforms: All
DevKey: LRS678
Summary: Fix $ZHOROLOG calculation on fast Windows machines
Description:
A bug that caused the $ZHorolog special variable to return negative values on a Windows machine with a 2.1GHz processor or faster has been fixed.

Impact:
$ZHOROLOG is generally used in internal application timing. It is unlikely this will affect a production application.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK568
Summary: Generate instance methods of an abstract class
Description:
If you define a class as abstract, Caché now generates all instance methods as well as class methods. Previously it only generated class methods. The instance methods are needed so Caché can call these via ##super from a subclass.

Impact:
##super now works with abstract superclasses
Likelihood Risk Ad Hoc Enhancement
High Moderate No Yes

 



Category: Object.CDL
Platforms: All
DevKey: DPV1993
Summary: Generated sqlcomputecode from Release 4.1 is not compiled correctly
Description:
Certain CDL files that loaded and compiled correctly in Cache 4.1.9 failed to compile in Cache 5.0.1. This is due to the table compiler adding an "=" at the end of a line. This has been fixed.

Impact:
CDL files that did not compile now will.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK702
Summary: Allow class methods of data type classes to be called
Description:
In Caché 4.x, it was valid to call the class methods of a data type class using the syntax:
   Write ##class(=datatype).Method(args)
In Caché 5.0, this results in a class not found error. This is because we support this syntax at the system level now and the class descriptor that allows the system code to find where to call was not generated for data type classes. We now generate the class descriptor for data type classes so you can call these class methods.
Note that calling a class method of a data type class is different from calling the generated method when you use this data type as the type of a property because this has a different set of parameters. For instance, as a property of a class you can specify that a string has a maximum length of 50 characters but in the data type class itself it may default to 100 characters. When you call this data type class directly you need to be aware that this is a different context.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1043
Summary: Hide nested serial columns in SQL projection
Description:
Nested serial columns should be hidden if their properties are also projected to SQL. This logic existed in the serial property projector but was setting the 'hidden' flag too late in the process. It now determines correctly when the projection of serial columns should be avoided.

Impact:
Little; projection of nested serial objects is a new feature.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT428
Summary: Store XML for empty character streams as "" instead of $c(0)
Description:
When saving an empty element value (<tag />) to a character stream property, we now store "" in the stream object rather than $c(0). When no element is present, we still store no stream element.

Impact:
Empty streams are now exported to XML in a better way.
Likelihood Risk Ad Hoc Enhancement
Moderate Low No Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT433
Summary: XMLExport treats serial references with no data as null (no tag)
Description:
XMLExport was changed to treat references to serial objects as null if all values in the serial object are "". A serial object with no value set will now export without any tags. This uses the SQL test for NULL object.

Impact:
Serial (embedded) object are not included within an XML projection if the object is NULL (i.e., all of its fields are missing).
Likelihood Risk Ad Hoc Enhancement
High Moderate Yes Yes

 



Category: System
Platforms: OpenVMS and Tru64 UNIX
DevKey: SML364
Summary: Improve cluster $INCR performance
Description:
The performance of $INCREMENT in a cluster-mounted database from a machine other than the cluster master has been dramatically improved. This is for ECP cluster configurations.
Note: although the risk of this happening as noted below is high, this is not a compatibility issue. It is a performance one.

Impact:
Customers are unlikely to see any impact, because $INCREMENT on clusters was fast enough to support thousands of users already.
Likelihood Risk Ad Hoc Enhancement
High Low No Yes

 



Other Changes to Caché
The following list of references summarizes changes in this version of Caché which are upwardly compatible corrections and enhancements since the prior version. InterSystems does not expect that these will affect the normal operation of your existing applications. For ease in searching, they are grouped according to the area of the system they modify.
If you need assistance in understanding the nature of the change, or guidance in making use of an enhancement, please contact the InterSystems Worldwide Response Center for assistance.
If the affected platform is not listed specifically with the change summary, the change is effective for all supported platforms.

Category: CSP.Tags
Platforms: All
DevKey: MXT399
Summary: Fix compile error for page in Basic that contains csp:search tag
Description:
Code generated by csp:search CSP tag included a ..QuoteJS(...) method call for pages written in basic. This is a syntax error. The generated code for a basic page now generates me.QuoteJS(...).

Impact:
Previously, CSP applications developed using BASIC would have failed during compilation.
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: CSP.Tags
Platforms: All
DevKey: MXT407
Summary: Improve csp:search sorting
Description:
Add support for ascending (ASC) or descending (DESC) sort to the csp:search tag as follows:

The format of ORDER attribute is now comma separated list of fields of the format

   propname | direction
where propname is the name of the property and direction is optionally ASC or DESC. If direction is not specified then the default from the SELECT or WHERE attribute is used.

The format of the WHERE and SELECT attributes is now a comma separated list of fields of the format

   propname alias | direction
where propname is the name of the property, alias is the optional SQL alias to be used and direction is the default direction (ASC or DESC) to be used for this property in the ORDER attribute if not specified there.

Impact:
Improved performance
Likelihood Risk Ad Hoc Enhancement
Low Moderate No Yes

 



Category: CSP.Tags
Platforms: All
DevKey: MXT442
Summary: Fix CSP:SEARCH tag problems with aliases
Description:
The following fixes related to the use of alias in the SELECT and WHERE lists were made:
  1. For each of the comma separated properties, treat everything following the first space after the property name as the alias. Ignore the optional "AS" separator between the property name and the alias. "name alias" is equivalent to "name As alias".
  2. No longer use the alias in the generated SQL statement, since it is not needed. This change removes any problems with the use of delimited identifiers in an alias. Delimited identifiers in the field name already work.
  3. Change to passing the order property using the property name rather than the alias. This change fixes the problem with highlighting of the sort column and removes the only use of the alias in the SQL statement.

Impact:
The CSP Search page now uses column aliases correctly.
Likelihood Risk Ad Hoc Enhancement
Moderate Moderate No Yes

 



Category: CSP
Platforms: All
DevKey: MAK637
Summary: When importing CSP files if no /csp/namespace pick first application that is defined in this namespace
Description:
When importing CSP files, if the application does not match because it came from another namespace but there was a '/csp/namespace' application defined for the current namespace, it was imported there.
This is now extended so even if there is no '/csp/namespace' it will pick the first alphabetically collating application that maps to this namespace.

Impact:
Import of CSP files is improved when importing into a different namespace.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: CSP
Platforms: All
DevKey: MAK688
Summary: Licensing bug with preserve mode and %session.Login
Description:
If a Preserve=1 process terminated unexpectedly, the license that it owned would never be released because there was no record of the license number that it obtained.
This has been corrected.

Impact:
Gradual reduction of license capacity
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: CSP
Platforms: All
DevKey: MAK709
Summary: Long URLs could cause SUBSCRIPT error in CSP engine
Description:
A page with a long URL could cause a <SUBSCRIPT> error in the CSP engine at GetCSPClassName+3^%cspServer when it was attempting to look this page up in a cache of page-to-class translations. This was due to faulty logic in detecting when the subscript was too long to use this global cache lookup.

Impact:
CSP application users would receive an error.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: CSP
Platforms: All
DevKey: MXT443
Summary: Netscape/Java version 1.4.0_03 returns [object] instead of [string] for csp method
Description:
Netscape 7.0.2 with Java plug-in 1.4.0_03 treats the return of a Java method (that was called using LiveConnect) as an object rather than as a string. JavaScript for #server is modified to concatenate "" to the return value (which converts it to a string) in case of object return from a Java method.

Impact:
CSP #server calls now work better with NetScape v7.0.2.
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: Config Mgr
Platforms: All
DevKey: CFL923
Summary: The 5.0 Configuration Manager was localizing the Yes/No strings in 4.1 configuration files
Description:
A bug has been fixed where a 5.0 or later Configuration Manager was localizing the Yes/No strings when editing a 4.1 configuration file. Such unwanted localization prevented recognizing the expected Yes/No attributes.

Impact:
The Configuration Manager user interface would display inappropriate characters in non-English locales. There was no risk to production.
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: Control Panel
Platforms: All
DevKey: CFL919
Summary: Fix namespace name truncation
Description:
This fix corrects the display of long namespace names which were previously truncated.

Impact:
Cosmetic improvement
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Documentation.DocBook Application
Platforms: All
DevKey: GAB007
Summary: Add search paths to DocBook application
Description:
The undocumented global, ^%SYS("DOCBOOK","SOURCE"), previously held the default location where the documentation sources could be found. This has been generalized to include a list of such directories. Its use in loading documentation is also now described.

Impact:
Users who are loading their own content into the DOCBOOK namespace will see load failures until they re-arrange their global structures describing the source directories.
Likelihood Risk Ad Hoc Enhancement
Moderate Low No Yes

 



Category: Documentation.DocBook Application
Platforms: All
DevKey: GAB008
Summary: Correct errors in DocBook.Utils.XMLExport facility
Description:
This corrects two errors found while attempting to use the XMLExport method of DocBook.Utils.
First, an incorrect reference to a property in one of the DocBook classes (refentry) was corrected. Prior to this, attempts to export reference material as XML would result in a <PROPERTY DOES NOT EXIST> error.
Second, XMLExport used to generate a reference to the XML stylesheet provided by SoftQuad for DocBook. This is vestigial since the application no longer uses this facility. It has been removed.

Impact:
Attempts to export documentation as XML files will now worked where previously they had failed.
Likelihood Risk Ad Hoc Enhancement
High Low No Yes

 



Category: Explorer
Platforms: All
DevKey: CFL921
Summary: Fix crash in class import
Description:
A problem involving the import and compile of a large number of classes has been fixed. Previously, this could result in the error
   Run-time error '91':  Object variable or With block variable is not set

Impact:
Developers importing XML might receive an error.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE206
Summary: Improve consistency checking among install options
Description:
This change corrects a situation involving resetting of certain component selections during installation. This affected Pentium 4 specific components as well as CSP and WebLink Web server specific modules. Prior to this change, the installation program ignored the user's choice to install or not install web server specific modules. It allowed a user to select or deselect these modules, but it installed modules for all detected Web servers regardless of the user's selection. Furthermore, when the Web server was not detected, install didn't try to install these components even when they were selected by the user.
This change does not allow users to select components for web server modules if the corresponding web server is not detected. Users still can deselect a particular CSP/Weblink module, which can be useful if there are two or more web servers installed and users don't want to install CSP/Weblink for all of them.

Impact:
Install now honors the users wishes more closely.
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: Installation.Windows
Platforms: All
DevKey: ALE188
Summary: Explorer and Control Panel now work properly from Start menu in download kits
Description:
The default configuration name for kits downloaded from our Web site is CACHEWEB, but the shortcuts created referred to CacheWeb instead. Caché Control Panel and Explorer could not be started because the Windows Start menu is case-sensitive in this area.
This is fixed.

Impact:
Minimal: The Cube still works in the presence of this fault.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes Yes

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE202
Summary: Client-only installation on Pentium4 system installs server components too
Description:
When proceeding with a client-only installation of Cache 5.0.1 on Windows 2000, the server side components were also installed. This has been fixed.

Impact:
Increased disk usage and access on a client PC, as well as possibly having unauthorized Caché servers deployed.
Likelihood Risk Ad Hoc Enhancement
High Low Yes No

 



Category: Installation
Platforms: All
DevKey: ALE191
Summary: Load and execute cbootuser.rsa routine if it is present on installation media
Description:
Install now checks for presence of file "cbootuser.rsa" on the installation media in the same directory as cboot (NT\Install in case of Windows). If this file exists, install loads it and executes routine "cbootuser". This allows customers to execute code for such things as creating databases, loading globals/routines, and so on every time Caché is installed from this media.
Please note that at the time this routine is executed no namespaces are defined yet and no object code can be used. $zutil(5) can be used to switch between implied namespaces.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Misc
Platforms: All
DevKey: TR960
Summary: Correct reverse $Order with ECP
Description:
Reverse $order over ECP could return a <DATABASE> error.

Impact:
An application user may receive a false <DATABASE> error.
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: Networking
Platforms: UNIX, OpenVMS
DevKey: DAS449
Summary: Change Default Packet Size to Avoid Fragmentation of UDP Packets
Description:
Previously, the default packet size on OpenVMS and UNIX systems was set to 3600 to improve performance. Because some networks do not perform fragmentation and re-assembly of packets, this causes DCP clients to timeout and display the <Server... is down...> message. The fragmentation problem may be due to an operating system or router setting.
To correct this problem, the default maxudppktsiz parameter on all platforms is now 1468, which is the maximum packet size sent by Caché. This obviates the previous need to fragment packets. Note that the Caché Configuration Manager allows you to increase the maxudppktsiz to a maximum of 3600, which provides a small performance improvement on networks which know how to perform fragmentation properly.

Impact:
The application user may see an annoying, yet benign, message <Server is Down>.
Likelihood Risk Ad Hoc Enhancement
Moderate Low No Yes

 



Category: Networking
Platforms: All
DevKey: GK199
Summary: Modify ECP client read daemon.
Description:
This change prevents a possible race condition in between DB state changes (such as dismount) and client cache cleanup.

Impact:
ECP may fail.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK201
Summary: Fixed ECP array handling
Description:
In certain rare circumstances, ECP referenced an array out of bounds. On all platforms this array is padded by the platform compiler, and the problem wasn't exposed unless things were relocated in memory.
Now if things are relocated in memory this will not cause a problem.

Impact:
ECP may fail.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK209
Summary: Enable Caché to start even if network initialization fails
Description:
When the network takes too long to initialize, the write daemon could fail to start on a system with a lot of buffers configured. This has been corrected.

Impact:
Caché may fail to start.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP983
Summary: EXTERNALSQLNAME was not properly referenced for embedded objects
Description:
This change corrects the spelling of EXTERNALSQLNAME everywhere it is used. This property parameter is used to define the name of a column projected to an external SQL DB.

Impact:
An ODBC query may fail.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP984
Summary: Project multiple levels of embedded object properties to SQL
Description:
When a persistent class contains a property whose type class is a serial class (embedded object), the properties of the property's type class are projected to SQL as columns. The name of the projected column is the <container column>_<serial column>.
In versions prior to 5.0.1 this projection is restricted to one level of embedding. In 5.0.1 multiple levels of embedding are projected to SQL. The name of the projected column follows the same form as before but the <container column> can also be a column projected from a serial class.
For example, Class City is serial with properties City, State, Country, and PostalCode. Class Address is serial with properties Street (type %String) and City (type City). Class Person has a property, Home as Address.
Prior to this change, only Home_Street and Home_City would be projected as columns to SQL. Now Home_Street, Home_City (hidden), Home_City_City, Home_City_State, Home_City_Country and Home_City_PostalCode are projected.

Impact:
Enhance the projection of multi-level embedded object properties.
Likelihood Risk Ad Hoc Enhancement
High Medium No Yes

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK640
Summary: Remove bad formal spec from CDL load
Description:
Old CDL files may have an extra '()' around the formal specification of methods due to an error in a previous version of Caché. These CDLs were not compiling because of the extra '()' in the formal spec. We now strip the extra '()' when the CDL is loaded to avoid this issue.

Impact:
Impedes a developer from loading certain CDL files
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK664
Summary: %SQLQuery methods retaining SQL as comments
Description:
This change makes the class compiler use the same flag to decide if it wants to retain SQL source in the INT code as the standard MAC compiler.

Impact:
Debugging object applications which use Query methods would be a bit more difficult
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK665
Summary: Optimize pass of class compiler produces wrong code
Description:
If you create a class with the following properties:
   Property Array As %String [ Collection = array ];

   Property Index As %Integer;
Then create a method:
Method Test()
 {
   Write ..Array.GetAt(..Index)
 }
If you compile this with full optimizations on, then the code generated from this Test method will be incorrect. The generated code attempts to find the '..Index' inside the '..Array' object rather than in the current object. Now Caché inserts the optimization correctly.

Impact:
Class compiler optimizer now generates correct code for collections.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK697
Summary: Expression method bracketing problem
Description:
If an expression method looked like '(a=1)||(a=2)' then the class compiler would substitute it without adding any additional brackets, so if the code was:
   Write '..Expr(var)
It ended up looking like:
   Write '(var=1)||(var=2)

It was not detecting that even though this expression starts and ends with a bracket. It needs an additional bracket so now it will substitute the expression:

   Write '((var=1)||(var=2))

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK717
Summary: Correct ##super for generator methods
Description:
When you use '##super' the first thing it does is find where this method was originally implemented and looks for the superclass to this class. However, if the method is a generator method then the class is 'implemented' at every level so just look for the superclass to the current class.

Impact:
##super directive now works with method generator methods.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.EJB
Platforms: All
DevKey: JSL1076
Summary: Allow CMP deployment to follow BMP deployment
Description:
We deleted the jar from the JBoss deployment directory. This allows CMP deployment to follow BMP deployment.

Impact:
You can now use CMP EJB deployment after using BMP deployment.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL1066
Summary: For CMP generation, fix JNDI name in reference accessor in serial classes
Description:
When CMP generation generates support for a Caché serial class, if the serial class has a "persistent" (a reference), the JNDI name of that reference is generated incorrectly. This changes the generation of the JNDI name to prefix BEANNAME before it.

Impact:
EJB CMP generation is improved for serial classes.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB170
Summary: Memory leak in Caché / Java object connection
Description:
Opening and closing Java Binding connection using method CacheDatabase.getDatabase(java.sql.Connection) caused memory leaks. This is fixed now.

Impact:
Java-based applications may crash due to insufficient memory.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1084
Summary: Support nested serials in EJB projection
Description:
We now support nested serials.
Suppose we have P (persistent) containing S1 (serial) containing S2 (serial). Let's suppose they are all in package Pack1. You might think that you access S2 from S1 but you access it from P. For instance, you will have a dependent object Pack1.EJBS2. The values in this dependent object for remote EJB object p that is a proxy for Pack1.EJBP can be obtained and modified through:
P.get_S1_S2()

P1.set_S1_S2(s2)
in the above s2 is a dependent object instantiating Pack1.EJBS2.
You can also use the following:
P.get_S1().get_S2()

and

s1 =P.get_S1();
s1.set_S2(s2); // change is only in memory
P.set_S1(s1); // change is now in the database
Remember, you must always go through proxy for a persistent (projection of a persistent) to actually set value on Caché. Just working with serials alone is just an in memory operation.

Impact:
EJB projection now works with nested serial objects.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1087
Summary: Corrected errors in EJB Wizard nested serial support
Description:
Nested serials need to be loaded in serial constructor even though they may be marked as "hidden". Also the logic for projecting fields does not properly set the fields of a serial set accessor.
Users should take note of the fact that changing a field from hidden to non-hidden or vice-versa requires the EBJ code to be regenerated and recompiled. In general, if you change any characteristics of your classes you should regenerate EJB support. Though it seems as if changing a field from hidden to non-hidden, or vice-versa, will have no affect on your EJB code working, Caché relies on the fact that changes in the description of the class require it to be fully regenerated.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Library
Platforms: All
DevKey: MAK714
Summary: %Net.FTPSession doesn't go back to use $IO in one case
Description:
In %Net.FTPSession in the method readResponse(), if an error condition occurred, then the current device was not reset. This left it as the TCP/IP device to the ftp server.

Impact:
Application error.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Library
Platforms: All
DevKey: MAK715
Summary: "-d" flag do not work for %Routine.Compile on error
Description:
Calling the Compile method on %Routine class with the '-d' flag to prevent anything from being displayed to the current device was not working. If there were errors with the routine it was still displaying them. This change now honors the '-d' flag.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Library
Platforms: All
DevKey: MAK729
Summary: Add extract of directory name from path
Description:
This change adds two class methods to %File: For example, using the 'c:\temp\mysub' example it will return:
 Piece Return FullPath       IsDirectory
 1     c:     c:             1
 2     temp   c:\temp\       0
 3     mysub  c:\temp\mysub  0

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Soap
Platforms: All
DevKey: JN107
Summary: %SOAP.WSDL.Reader Should Generate ClassMethods
Description:
A restriction on the use of Webmethod as a keyword of a class method only has been introduced, but the Reader had not been updated to reflect this change. The reader now generates class methods instead of instance methods properly.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Soap
Platforms: All
DevKey: MXT432
Summary: Support WebMethod keyword for queries in a Web service class
Description:
The keyword WebMethod is now supported in queries specified in a subclass of %SOAP.WebService.
A Web method, callable via SOAP, will be created that has the same input arguments as the query that returns the typed dataset associated with the query.
In addition, if the Web service is pkg.class and the query is named QueryName, then the class pkg.class.QueryName is created as a subclass of %XML.DataSet that is typed and represents the query.
An example of the use of WebMethod for a query has been added to the SOAP.Demo Web service sample.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Soap
Platforms: All
DevKey: MXT435
Summary: Support property parameters for queries with WebMethod
Description:
The SoapBindingStyle and SoapBodyUse property keywords are now supported. They will work just like these keywords for methods with WebMethod keyword.
The SoapNameSpace property parameter may only be used for Web clients.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Soap
Platforms: All
DevKey: MXT438
Summary: Improve error messages for Soap method keywords.
Description:
This change improves error messages for SoapBodyUse, SoapBindingStyle and SoapNameSpace method/query keywords by adding the method or query name to message.

Impact:
Cosmetic change
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Soap
Platforms: All
DevKey: MXT444
Summary: Allow LOCATION in %SOAP.WebClient
Description:
Now we give an error if LOCATION does not begin with http:// or https://. Note that the use of https still requires an external tunnel.

Impact:
Debugging becomes easier with the added information.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.Soap
Platforms: All
DevKey: MXT445
Summary: Clean up variables that are left defined by %XML.Adaptor
Description:
An attempt to compile a subclass of %XML.Adaptor was leaving defined variables behind. Appropriate New commands were added to the method generator code so that variables are cleaned up properly.

Impact:
Extra variable are no longer left after XML export.
Likelihood Risk Ad Hoc Enhancement
High Moderate No No

 



Category: Object.Storage
Platforms: All
DevKey: DLP1027
Summary: Fix the name of the virtual class generated when projecting a collection as a child table
Description:
Previously, under rare circumstances, compiling an internal "virtual" class could cause a child table to be projected to SQL. This has been corrected.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object.Storage
Platforms: All
DevKey: DLP1028
Summary: BitMap Extent Index not built on Create Index
Description:
When a bitmap index is added to a table, the results of subsequent queries would often be incorrect. The bitmap extent index is not automatically built when the first bitmap index is added to a table.
%BuildIndices has been updated so that anytime a bitmap index is built and no data exists in the bitmap extent index then the bitmap extent index for that class is automatically built along with the bitmap extent index for each subclass.

Impact:
The SQL query may return incorrect results.
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: Object.Storage
Platforms: All
DevKey: DLP1031
Summary: Fix nested serial mapping when serial stored in node
Description:
This corrects a problem that occurs when a property is stored by itself in a global node ('node' structure). This commonly occurs when a collection is stored in a subnode structure and the resulting structure is projected to SQL as a child table. The error reported is
   ERROR #5502: Error compiling SQL Table ...

Impact:
The application will not compile.
Likelihood Risk Ad Hoc Enhancement
Moderate Low Yes No

 



Category: Object.XML
Platforms: OpenVMS
DevKey: JCN401
Summary: Always open XML files as Stream regardless of default file settings on OpenVMS
Description:
On OpenVMS, remotely exporting XML files via Caché Studio and reimporting them caused routines to be stored all on one line, and then fail to compile. This is corrected.

Impact:
Annoys developers
Likelihood Risk Ad Hoc Enhancement
High Low No No

 



Category: Object.XML
Platforms: All
DevKey: MAK698
Summary: $SYSTEM.OBJ.Load for Globals get MAXSTRING
Description:
If you exported a global using the $system.OBJ.Export entry point that was 32767 characters in size or near to this limit, and then you subsequently imported it you may get the error message:
   <MAXSTRING>characters^%occSAX in c:\test.xml at line 581 offset 1
This was because a variable was not cleared correctly after a global node was imported. This is now fixed.

Impact:
Annoys developers
Likelihood Risk Ad Hoc Enhancement
High Low No No

 



Category: Object.XML
Platforms: All
DevKey: MAK704
Summary: XML Import/Export incompatibility
Description:
When exporting an expression method, export-to-XML formats it on a single line rather than inserting a Cr/Lf after the start of the CDATA for the method body code before the first line of code. This is so classes exported on Caché 5.0.1 will import correctly on Caché 5.0.0.

Impact:
Class definitions exported from v5.0.1 can be loaded onto v5.0
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: Object.XML
Platforms: All
DevKey: MXT431
Summary: Extend %XML.DataSet to support .Net typed datasets
Description:
When a %XML.DataSet is returned from a Web service, it projects as a Microsoft .Net dataset. Previously, only untyped datasets were supported. This change adds support for .Net typed datasets which include type information in the WSDL file for a Web service. This additional information allows Visual Studio .Net to create a typed dataset that supports IntelliSense.
A subclass of %XML.DataSet will produce a typed dataset if the NAMESPACE parameter is specified, and the CLASS and QUERY parameters are overridden to specify the query underlying the dataset.
An example of the return of a typed dataset was added to SOAP.Demo sample.

Impact:
Allows Visual Studio .Net to create a typed dataset that supports IntelliSense
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT434
Summary: Improve runtime message if referenced class is not XML enabled.
Description:
A class that is referenced by a property in an XML enabled class must be XML enabled. Previously, if the referenced class was not XML enabled, then an unclear <METHOD NOT FOUND> error was given. This was replaced by an error message stating the problem more clearly.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Moderate Low No Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT436
Summary: Support the enumeration facet for schema defined simple types
Description:
When mapping Caché simple types to XML schema types in "literal", use the enumeration facet to represent the Caché VALUELIST datatype parameter. XMLImport already supports type checking based on the VALUELIST. This change modifies XMLSchema to output the enumeration facet to represent the VALUELIST.
Enumerations are not supported in schemas that are in "encoded" format, since Microsoft Web services do not support enumerations for BodyUse="encoded".

Impact:
Classes now produce XML Schemas containing more information.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT437
Summary: Support optional indentation of XMLExport output
Description:
Support optional indentation of XMLExport output as determined by the format argument of the XMLExport call. The default indentation behavior is the current behavior of outputting the XML as one line with no added whitespace.
Adding "indent" to the format argument causes the XMLExport output to be indented. "indent" should be separated by a comma from literal/encoded part of the format. The indentation characters to be used can be specified by enclosing the indentation string to be used in parentheses following the "indent" in the format argument. If not specified, the default indentation characters string is two spaces.
Examples: To output the object referenced by oref with the default two space indentation:
   set sc=oref.XMLExport(,",indent")
To output the object referenced by oref with three space indentation:
   set sc=oref.XMLExport(,",indent($c(32))")
Note that passing the space ($c(32)) as the argument increments the size of the indentation; it does not specify the size of the indentation.
To output the object referenced by oref with tab indentation:
   set sc=oref.XMLExport(,",indent("_$c(9)_")")

Impact:
Cosmetic improvement to generated XML.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object.XML
Platforms: All
DevKey: MXT441
Summary: Add Rewind method to %XML.Reader
Description:
Add a Rewind method to %XML.Reader that when called will clear correlates and restart reading from the beginning of the XML document. Correlate must be called again after the Rewind.

Impact:
%XML.Reader is easier to use.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: Object
Platforms: All
DevKey: MAK718
Summary: $system.OBJ.Load for XML file always writes to principal device
Description:
When you load an XML file, the current device was changed to the $PRINCIPAL device rather than keeping the device that the user specified. This now remembers the correct device.

Impact:
Class import restores the principal device correctly.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Object
Platforms: All
DevKey: MC410
Summary: add SOAP keywords to query
Description:
Class Query definitions now have the same SOAP-related keywords as do methods. This allows you to control the SOAP-binding of class queries.

Impact:
Class queries support more SOAP options.
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: SQL.DDL
Platforms: All
DevKey: DPV1934
Summary: Drop Foreign Key Fails when PKEY=IDKEY
Description:
Dropping a Foreign Key that points to a mapped table failed with following error message:
[SQLCODE: <-400>:<Fatal error occurred>]
[Cache Error: <<LIST>AlterColumn+66^%apiDDL>]
[Details: <Serverr>]
This has been corrected.

Impact:
DROP FKEY now works correctly with SQL tables mapped to legacy structures.
Likelihood Risk Ad Hoc Enhancement
Low Moderate No No

 



Category: SQL.DDL
Platforms: All
DevKey: DPV1976
Summary: DDL: Fix ALTER TABLE Create Foreign Key does not check existing rows
Description:
The sequence:
   create table P(a integer primary key, b varchar(20))
   create table F(one integer primary key, two integer)

   insert into F(one,two) values (1,1)
   alter table F add constraint toP foreign key(two) references P(a)
works up to Caché 4.1.6, but fails to properly return an error in Caché 4.1.9 as well as in Caché 5.0.1. This now returns an error -127 <FOREIGN KEY Constraint failed referential check upon creation of the constraint>.

Impact:
No constraint check performed
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT239
Summary: Introduce logging and SQLCODE in the SQLGatewayConnection class
Description:
This change make it possible to log all the calls to SQLGateway in ^%SYSLOG global. It was done earlier for external tables. Now it works for the SQLGatewayConnection class as well.

Impact:
Debugging was more tedious
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB176
Summary: Fix "*=" syntax not being parsed correctly in JDBC
Description:
The JDBC parser was incorrectly reporting the operator "*=" as an error. This has been fixed.

Impact:
The JDBC driver correctly recognizes legacy JOIN syntax.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB167
Summary: Bug fixes in JDBC
Description:
This change corrects several defects involving getting data values back from ResultSets. These include:

Impact:
In certain cases JDBC did not return data correctly.
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB168
Summary: Preparsing of schema _SYSTEM fails
Description:
JDBC preparser did not recognize names, starting with '_'. This has been fixed.

Impact:
Impeded developers
Likelihood Risk Ad Hoc Enhancement
Moderate Low No Yes

 



Category: SQL.ODBC
Platforms: OpenVMS
DevKey: JCN385
Summary: Finish CacheODBC port and build IODBC on OpenVMS
Description:
This change ports CacheODBC to OpenVMS and provides a working IODBC.exe driver manager for shipping with our ODBC driver.

Impact:
No ODBC access from OpenVMS client
Likelihood Risk Ad Hoc Enhancement
Low Moderate No Yes

 



Category: SQL.ODBC
Platforms: OpenVMS
DevKey: JCN386
Summary: Port SQLGateway to OpenVMS, Rebuild IODBC with 3.0 ODBC API
Description:
Ported SQLGateway for OpenVMS platform. Rebuilt IODBC to include 3.0 ODBC API.

Impact:
No ODBC access from an OpenVMS client
Likelihood Risk Ad Hoc Enhancement
Low Moderate No Yes

 



Category: SQL.ODBC
Platforms: Windows
DevKey: JCN389
Summary: Fix for #Deleted problem in Access when using numeric column as primary key
Description:
Microsoft Access does not handle numeric primary keys in a consistent way when comparing their values. Normally Access will perform an internal comparison on the first ten primary keys..If it does not match their internal representation, it returns a #Deleted value for a given row.
Our ODBC driver consistently formats Numeric data converted to SQL_C_CHAR or SQL_C_WCHAR as 0.00 if the scale is 2, whereas SQLServer returns the same data as .00. While returning .00 will fix the Access #deleted issue, but it should only be done for the value 0. Since SQLServer does not handle negative numbers in Access, our convention of returning a leading zero before the decimal place works in Access.
Why Access considers 0.00 to be different than 0 or .00 appears to be a bug unique to Access. The driver will provide a work around by returning ".00" rather than "0.00". While this is a slight formatting change only for the 0 value, it seems a better alternative which allows the use of numeric primary keys in Access.

Impact:
Incomplete query results
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN390
Summary: Add correct names for driver/logs on UNIX and OpenVMS platforms
Description:
Driver names reported in the log and to SQLGetInfo were correct for Windows, but did not reflect the correct executable name on OpenVMS and UNIX platforms.

Impact:
Impeded developers
Likelihood Risk Ad Hoc Enhancement
High Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN391
Summary: Poor error message if ODBC DSN contains invalid namespace
Description:
Added "Invalid Namespace" message for to handle the case where you try to connect to an ODBC DSN (on Windows) that contains an invalid namespace.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Moderate Low No Yes

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN393
Summary: memory leak with streams and ADO
Description:
When ADO is used to insert streams into Caché, there was a memory leak that was corrected by this fix.

Impact:
Gradual loss of available memory on Windows client
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN394
Summary: Select statement with Stream field fails
Description:
Characters stream fields return a default display size of "2147483647" which causes the following printf formatting commands to core dump and fail:
   printf("%-*s", (int)display_size, pcolname);
Since it does not hurt printf to format these with a smaller value for display_size, Caché uses the MAX_DATA (1000) in the code to prevent this condition from happening.
Since this is sample code only, and users must be careful when working with character and binary streams as their default display size is huge, and they will have to customize applications to read this type of data in chunks.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN396
Summary: Allow passing of Username with no password
Description:
When a user was created in SQL with no password, there was no way for that person to log in via the ODBC driver.

Impact:
Impeded development
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN399
Summary: Fix PutParameter used in Access with SQL_C_WCHAR data
Description:
This corrects a problem with a "string" field that has maximum length 32000.
Inserting a new row inserts null characters in the field after each character when stored in the Caché global. For example "ABC" becomes:
    A_$C(0)_B_$C(0)_C_$C(0)

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK560
Summary: Use temp-file for correlated subqueries
Description:
We now optimize correlated subqueries by saving the subquery result. If the same correlated field values come up again, the subquery result can be retrieved without having to run it again.

Impact:
Query may use excessive amounts of cpu time
Likelihood Risk Ad Hoc Enhancement
Low Moderate Yes No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK562
Summary: Apply correct processing to IN parameters
Description:
Applied to IN the same logic used for binary operators such as '=', regarding when one argument is a field and the other is a constant/ host-variable. This normally applied only to fields of type %Date/%Time, but resulted in string operations sometimes giving incorrect results when attempting to find substrings.

Impact:
Substring processing is now more accurate
Likelihood Risk Ad Hoc Enhancement
Low Moderate No No

 



Category: SQL.Query Processing
Platforms: All
DevKey: PVA051
Summary: Queries can give the wrong answer for certain OR conditions when multiple index strategy used
Description:
In certain cases, if multiple indexes are used to satisfy an OR condition, the wrong answer could be returned.
In addition, Caché now optimizes the application of IS NULL conditions to indexes in the case when multiple indexes are used.

Impact:
WHERE clauses involving complex conditions may give different results depending on whether an index exists.
Likelihood Risk Ad Hoc Enhancement
Low High No No

 



Category: SQL
Platforms: All
DevKey: DPV1977
Summary: Add SERIAL_FIELD column to %Library.SQLCatalog.SQLFields catalog query
Description:
A SERIAL_FIELD column has been added to the %Library.SQLCatalog.SQLFields(...) catalog query. This column contains "Yes" of the field is serial type, otherwise it is "No". Please refer to the class documentation for an updated description.

Impact:
The SQLFields query in %Library.SQLCatalog now has an additional column
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: SQL
Platforms: All
DevKey: BJB262
Summary: Fix typo in backport of AK501
Description:
This fix corrects a problem where Joins could fail at runtime with an undefined error.
In this particular case, there was incorrect code generated for an uncollated field retrieved before a collated field resulting in an <UNDEFINED> error at run-time.
This occurred with conditions such as <const>=*<field> when the field has a collation, and the outer join cannot be satisfied by an index.

Impact:
Query compilation may fail
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1894
Summary: New some variables in SQL Utilities/APIs
Description:
This corrects a problem where variables which had been new'ed were not removed after their use was over.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV1900
Summary: Fix copy (type 2) in copy^%qaqcpr to get offset from proper table
Description:
This corrects an error which occurred when the parent reference field is specified in a position other than first in the IDKEY index of a child table.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV1969
Summary: Fix count(*) issue
Description:
Fixed a problem where the addition of a count(*) column to a query resulted in the returned ResultSet ignoring an "ORDER BY" clause.

Impact:
Queries may run slower
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV1973
Summary: SQL Maps: Fix use of {<n>D} in NEXT code and {Field}_{Field2} in Subscript expression
Description:
Two bugs have been fixed in %CacheSQLStorage:

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: PYD094
Summary: Return column datatype instead of VARCHAR for IFNULL
Description:
The result of {fn IFNULL(<column>,val)} always was of datatype SQL_VARCHAR. Now, Caché returns the datatype of <column> correctly.

Impact:
Impedes developer
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: SQLManager
Platforms: All
DevKey: PYD093
Summary: SQLMigration, INFORMIX not null columns
Description:
When Importing table definitions from Informix, all the columns were marked as NOT NULL (data for these columns was required).

Impact:
Impedes developer
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: SQLManager
Platforms: All
DevKey: YSD576
Summary: SQLManager: Change the Owner of a view in SQLManager.
Description:
SQL Manager has been changed to allow changing the ownership of a view.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: SQLManager
Platforms: All
DevKey: YSD583
Summary: SQL Manager: Link table name with space or other characters in it
Description:
In Link Table wizard, if the user enters a new table name that contains spaces or other characters, then the wizard gave an "Invalid table name" error message. This is fixed.

Impact:
Impedes developer
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: SQLManager
Platforms: All
DevKey: YSD584
Summary: SQL Manager: Japanese characters garbled when printing to a printer
Description:
SQL Manager now sends Japanese characters to the printer properly.

Impact:
Annoys SQL Manager users
Likelihood Risk Ad Hoc Enhancement
High Low Yes No

 



Category: Studio
Platforms: All
DevKey: AGC214
Summary: Caché Studio XML parser - don't loop on "<!"
Description:
This corrects a problem in Caché Studio where the XML parser would loop upon finding a "<!" sequence.

Impact:
Annoys developer
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: DVU673
Summary: Saving Color Table
Description:
This corrects a problem in Caché Studio where Studio failed to remember the color table. However, if studio A edits the table and studio B is already open, studio B will continue to use the old table, because the table is saved in the registry and there are no notifications between them of the change.

Impact:
Annoys developer
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: DVU679
Summary: Correct tab order in File Open Dialog
Description:
This fixes problems in Caché Studio involving losing focus on dialog boxes and buttons in various dialogs.

Impact:
Annoys developer
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: MAK662
Summary: Caché Studio becomes confused by 3rd line of an INT file
Description:
This change improves detection of an INT routine that is generated by a class compile. The change prevents a case where the compiler determined an INT was created by a class when it was not, and it attempted to recreate the class descriptor which lead to an error message that the class was not valid.

Impact:
Impedes developer
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: MAK690
Summary: For export and import, directory names are concatenated on OpenVMS
Description:
On OpenVMS, the directories appear as 'ABC.DIR;1' files and so were not being displayed in the %File class correctly. In addition, they were not reporting themselves as directories in the ##class(%File).DirectoryExists(dir) method. Also the parsing of the filename did not add '.' between the pieces of the name. This has been fixed.

Impact:
Impedes developer
Likelihood Risk Ad Hoc Enhancement
High Low No No

 



Category: Studio
Platforms: All
DevKey: MAK713
Summary: Reduce the number of round trips to the server when loading classes
Description:
When opening a class, Caché Studio used to make a large number of extraneous requests to the server. For example, opening %ResultSet would make 277 request when only 7 were required. These unrequired request are now avoided, which in the case of %ResultSet means it only makes 7 requests.

Impact:
Annoys developer
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: Studio
Platforms: All
DevKey: MAK732
Summary: Variable was not new'ed in %RoutineMgr class
Description:
Calling the genPattern class method of the %RoutineMgr class left variable 'tN' after the method completed because it was not new'ed.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: RAW346
Summary: Caché Studio editor: fix handling of Ctrl/+, Ctrl/-
Description:
There were two problems fixed:

Impact:
Annoys developer
Likelihood Risk Ad Hoc Enhancement
High Low No No

 



Category: Studio.Editor
Platforms: All
DevKey: RAW352
Summary: Fixed an error in editing nested XML text
Description:
When the nesting level in some XML text exceeded eight levels deep, the lines in question were shifted to the far right in the window and you couldn't edit them due to a bug in the nesting limit check.

This has been fixed and the nesting level maximum has been increased to 32.

Impact:
Impedes developers
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System.Cluster Specific
Platforms: OpenVMS and Tru64 UNIX
DevKey: JO1693
Summary: Treat a cluster member as a remote system in dispatch_method_or_property
Description:
In a cluster, if one cluster member recompiles a class then the other cluster members need to invalidate the class if it is loaded so that they can reload the (new) class descriptor.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Moderate Low Yes No

 



Category: System.Cluster Specific
Platforms: OpenVMS and Tru64 UNIX
DevKey: JO1696
Summary: Possible hang if there are no buffers available
Description:
Previously, there was a problem which, under particular and unusual circumstances, could cause a system hang on a Caché cluster. This occurred when the write daemon entered panic mode because there were zero free buffers. This has been resolved.

Impact:
Production application hang
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System.Journaling
Platforms: All
DevKey: JO1692
Summary: Improve synchronization between journal daemon and jobs waiting for journal buffers to be committed to disk
Description:
The journaling daemon was changed to avoid an unneeded sleep/wakeup when we add things to the journal queue.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Moderate No No

 



Category: System.Licensing
Platforms: All
DevKey: RJW704
Summary: Fix license CPU count on Hyperthreaded Intel/Windows platforms.
Description:
When HyperThreading is active, Windows reports the number of threads instead of the number of physical CPUs. This causes incorrect restrictions on the number of authorized CPUs permitted for systems not using Enterprise licenses. This change corrects this problem so the number of physical CPUs is checked against license capacity.

Impact:
Reduced license capacity
Likelihood Risk Ad Hoc Enhancement
High Low No Yes

 



Category: System.Licensing
Platforms: All
DevKey: RJW740
Summary: Provide user oriented documentation for the Caché 5 license system.
Description:
The $System.License class is extended with additional methods to provide information about license use.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: System.StartUp
Platforms: OpenVMS
DevKey: SAP101
Summary: After startup failure due to no memory, subsequent starts fail
Description:
After a startup fails due to memory requirements too high, subsequent efforts to start that Caché (with any config file) result in message:
   "A global section with the name "_CACHE__[etc]" already exists"
and Caché halts. This condition cannot be cleared until system is rebooted, regardless of config used.

Impact:
Impedes restarting production
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System.StartUp
Platforms: OpenVMS
DevKey: SAP102
Summary: On failure to allocate memory, Caché crashes
Description:
On failure to allocate full memory, Caché gets an access violation on OpenVMS. This has been fixed.

Impact:
Impedes starting production
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: CDS389
Summary: Fix $QUERY on unsubscripted multidimensional property
Description:
This corrects $QUERY so that a reference to an unsubscripted global or array produces the same result as a reference using the null string as a subscript.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: CDS402
Summary: Fix <EDITED> error when switching namespace
Description:
This corrects an error where identically named routines in two different namespaces which call each other would fail to re-establish the proper routine references upon returning to the caller. This resulted in an <EDITED> error.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: CDS406
Summary: Some $LIST constants were not compiled correctly
Description:
When some negative floating point numbers were used as a constant value in the $LISTBUILD function, the Caché ObjectScript compiler would generate invalid object code. This invalid code would cause the process to halt when that line of code was executed. The constants that caused the problem were -.1, -.01, -.001, etc. Only the use of constants provokes this issue. The object code is correct if the numbers were generated by arithmetic operations or were previously stored in a variable.

Impact:
Application abort
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: HYY766
Summary: Address issues with large numbers of databases
Description:
We have corrected various problems that might occur when the number of databases exceeds 255.

Impact:
Some operations in the database would fail. The exact nature of the failures cannot be categorized.
Likelihood Risk Ad Hoc Enhancement
Low Moderate No No

 



Category: System
Platforms: All
DevKey: JLC484
Summary: Correct problem with global buffer pools bigger than 4GB
Description:
This corrects a problem with buffer pools larger than 4GB where offsets into the pool would be truncated by storing them in 32-bit cells.

Impact:
Application failure
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System
Platforms: AIX
DevKey: JLC491
Summary: Fix updating resource statistics for PowerPC systems
Description:
Resource statistics counters were modified to work properly on 64-bit PowerPC systems. Certain internal statistics were being zeroed on AIX platforms.

Impact:
Statistics are kept accurately on PowerPC systems.
Likelihood Risk Ad Hoc Enhancement
High Low No No

 



Category: System
Platforms: All
DevKey: JLC493
Summary: Address internal error logging bug
Description:
This corrects an internal problem in error logging which could result in bus errors during shutdown.

Impact:
Production failure during shutdown
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: OpenVMS, Tru64
DevKey: JLC496
Summary: Correct an object destructor problem on Alpha machines
Description:
This corrects an internal error that caused a delay in running the object destructor when the variable that had its oref was assigned a new value.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: UNIX
DevKey: JO1685
Summary: Correct potential expansion problem for CACHETEMP on UNIX systems
Description:
On UNIX systems, CACHETEMP is structured as a "sparse database". This means that when it expands, Caché does not write all of the new blocks to the file which is required to force them to be allocated. This facility has been updated so that Caché does write the last block of the new space to the file. This forces the file size to be updated.
This is important to prevent processes from getting unexpected end of file errors reading or writing this new space as the code that deals with detecting that the end of the file has moved is organized around the file expansion process.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: JO1694
Summary: Count of available buffers could get out of sync in panic mode
Description:
In the unlikely event that a system runs out of global buffers and enters panic mode, it was possible for the count of available buffers to get out of sync. In even rarer circumstances, this could possibly lead to a system hang but most likely would go unnoticed. A notation is made in the console log file each time a system enters panic mode.

Impact:
Production application hang
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: JO1695
Summary: GCOMPACT changes to try to avoid panic mode
Description:
The database compaction code (GCOMPACT and the global compaction option in the Caché Control Panel) have been updated to try and avoid using all of the free buffers because doing so triggers a write daemon panic state.


Impact:
GCOMPACT could impede application response time
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: System
Platforms: OpenVMS
DevKey: JO1698
Summary: Correct intermittent database expansion problem
Description:
An expansion problem which affected OpenVMS systems and 8KB databases which were set to expand by more than 64MB at a time has been resolved. This was an intermittent problem which when it occurred, would result in the database being only partially expanded; one or more 64MB chunks of space would be added but not all of the requested space. When the expansion failed an error code of 99524 would be recorded in the SYSLOG table.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: OpenVMS
DevKey: JO1700
Summary: Correct multiple installation problem
Description:
A problem has been resolved on OpenVMS systems which install multiple copies of Caché where each copy of Caché starts up under a different UIC group and both installations have networking configured or attempt to use a performance monitoring facility such as ^PERFMON.
Previously the second installation to start up would not detect that the first installation was running and there would be confusion about the name of the network shared memory section. The result would be that the second installation would not start up properly and would delete the network shared memory section of the first installation upon shutdown.


Impact:
Production hang
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System
Platforms: All
DevKey: JO1701
Summary: Fix problems creating a database that had been dismounted & then deleted
Description:
A problem has been resolved on UNIX and Windows system where if a dismounted database was deleted by deleting the CACHE.DAT file, MSU would get errors trying to re-create it.

Impact:
Impedes system operator
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: System
Platforms: All
DevKey: LFT1084
Summary: Avoid halt while owning a block or resource
Description:
This change skips a call to halt if the process owns a block or a resource.

Impact:
Production hang
Likelihood Risk Ad Hoc Enhancement
Low Moderate No No

 



Category: System
Platforms: All
DevKey: LRS671
Summary: Implement $System.Util.GetEnviron class method
Description:
A new $System class method has been implemented to obtain the value of an environment variable from the host system.
   Set value=$System.Util.GetEnviron(VariableName)
This call returns the value associated with "VariableName", if one is defined. Otherwise it returns an empty string. Under UNIX and Windows systems, the variable is a command shell variable. Under OpenVMS, it is a DCL symbol, rather than a logical.
Under OpenVMS, you can obtain the translation for a logical using $ZU(12,logicalname,4) or $ZF("TRNLNM",logicalname,...). If you want to access the value of one using $System.Util.GetEnviron(), you can use it in a DCL expression involving F$TRNLNM(logicalname), the simplest of which is a mere attribution such as:
   SYS$LOGIN = F$TRNLNM("SYS$LOGIN")

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: System
Platforms: All
DevKey: NGA109
Summary: Avoid possible hang with JOB command
Description:
A possible hang caused by a job holding a global buffer while trying to job off another process has been fixed.

Impact:
Production hang
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System
Platforms: All
DevKey: SAP094
Summary: Allow user to set other process' priority
Description:
$system.Util.SetPrio(prio[, pid]) sets either the caller's process priority, or the priority of another process whose process id is pid.

On Windows and OpenVMS, callers have unlimited access to other processes priority. On UNIX, the priority of other processes can only be reduced, unless the calling process is running as root (not the default for Caché terminal processes).

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No Yes

 



Category: System
Platforms: OpenVMS
DevKey: SAP097
Summary: Fetch base priority, not priority, on OpenVMS getprio
Description:
This corrects a long standing discrepancy in $zu(60) that displayed the wrong priority for OpenVMS processes.

Impact:
Slight performance penalty for some processes
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: System
Platforms: OpenVMS
DevKey: SAP098
Summary: Change OpenVMS priority handling to match Windows and UNIX
Description:
OpenVMS job priorities will match Windows and UNIX.

Jobbed processes run at parent current base priority plus the system defined job priority modifier. Job priority modifier can be set via $system.Util.JobPrio().

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Moderate No Yes

 



Category: System
Platforms: OpenVMS and Tru64 UNIX
DevKey: SML356
Summary: Correct journal recovery for cluster master on dedicated ECP connections.
Description:
When cluster master dies, the new master performs journal rollforward and rollback from the dying master's journal files. But it does not need to reestablish transaction state or pending ECP messages from the failed master.
The prior behavior has been fixed.

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: SML359
Summary: Correct problem with multiple DCP connections
Description:
When there is more than one DCP connection configured on the client system and there are transaction operations on each remote server, a problem could occur since the locations of the transaction file count array are overlapped on each DCP connection. Under certain circumstances the TROLLBACK or TCOMMIT over DCP may not completed.

Impact:
Loss of data
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System
Platforms: All
DevKey: SML360
Summary: Fix zero time out on locking parent node while child node is locked.
Description:
This change fixed a problem:
Process A:
   LOCK ^x(1,2,3)
succeeds

Process B:

   LOCK ^x(1,2,3)
hangs waiting for process A

Process A:

   LOCK +^x(1,2):0 w:$t   // $T is zero
and the lock is not granted.
The correct behavior for Process A to lock ^x(1,2):0 should be able to grant the lock and $T is 1.
The fix also applies for an ECP/DCP network when Process A is a client job and Process B is a server job.

Impact:
Application error
Likelihood Risk Ad Hoc Enhancement
Low Low Yes No

 



Category: System
Platforms: All
DevKey: SML361
Summary: Fix a Read Daemon timing problem which can cause a crash.
Description:
There is a potential system interruption condition on ECP client's Read daemon when a job request a remote lock and cancels it after timed out. When it requests another remote lock, the job may be returned without really granting the lock on server. If the job releases the second lock before the granted answer from server arrived, the ECP daemon will abort.
This is fixed.

Impact:
Production failure
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: OpenVMS, Tru64, AIX
DevKey: SML362
Summary: Fix possible hang with long strings and DCP on 64-bit platforms.
Description:
For 5.0 on OpenVMS platform, this fixed a problem for DCP networks. When the client job tries to access long string globals (for example compiled routine's OBJ code), it could hang.
This problem only occurred on Cache 5.0 OpenVMS platform; for other 64 bit platform it is not likely to happen unless large buffer pool is configured, and it only failed on DCP network. The DCP client job fetching a global with big string will hang, though the Control-C could interrupt the hang.

Impact:
Application user would be suspended until typing CTRL-C
Likelihood Risk Ad Hoc Enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: SML363
Summary: Display number of usable lock table size in ^LOCKTAB.
Description:
Now the ^LOCKTAB will display two lock table sizes, 'available' and 'usable' size. The 'available' size is the one that was previously displayed; it is the total lock memory minus the memory used for lock entries.
The 'usable' size is the 'available' size minus the cached memory in each partition (job) and some of the LHB block in free queue. The formulas are:
   free size = 'available' size
             - total cached size
             - total free LHB pool size.

   'usable' size = free size
             + (2/3 of free size or total free LHB size which ever is smaller).

Impact:
None
Likelihood Risk Ad Hoc Enhancement
Low Low Yes Yes

 



Category: System
Platforms: All
DevKey: STC450
Summary: Enforce one compaction process per database
Description:
Database compaction was allowed to run multiple iterations at the same time on the same database. This is now prevented by the use of a lock.

Impact:
Database degradation
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: System
Platforms: All
DevKey: STC451
Summary: GBLOCKCOPY allows conversion of collation 0 globals
Description:
Previously, globals with a collation type of 0 could not be selected by GBLOCKCOPY for a conversion to standard type 5. This is now allowed.

Impact:
Impeded migration from MSM
Likelihood Risk Ad Hoc Enhancement
Moderate Low No No

 



Category: System
Platforms: All
DevKey: STC454
Summary: Fix erroneous blocks copied field in GBLOCKCOPY
Description:
When using GBLOCKCOPY to copy data from a database to another database or namespace, sometimes an error would be reported that the number of blocks copied did not match the calculated number of blocks to copy. However, the data was actually completely copied. This has been fixed.

Impact:
Annoys operator
Likelihood Risk Ad Hoc Enhancement
Moderate Low Yes No

 








Changes for Caché 5.0.1
This section provides a listing of changes between Caché 5.0.0 and Caché 5.0.1.
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. To help you assess the impact of these changes on your applications, each change description contains a more detailed explanation of the modification. It also includes a table giving pertinent information on the problem likelihood, impact of the change, and whether this has already been used successfully in production by other customers.
If you need assistance in deciding whether any of these changes affect your application, please contact the InterSystems Worldwide Response Center for assistance.
If the affected platform is not listed specifically with the change summary, the change is effective for all supported platforms.
  1. Relational Gateway —  Relational Gateway use problematic on Tru64
  2. System —  Fix MD5 hash for big endian platforms
  3. Networking —  Accommodate largest possible size of UNICODE strings over ECP
  4. Object.Java —  Fix problem in creating and using finder extensions in EJB
  5. Object.Java —  Eliminate duplicate entries from remote interface
  6. CSP —  ..Link() not working as designed
  7. Object.Class Compiler —  Do not add transient streams to save set in a deep save
  8. Object.Java —  Return early from errors
  9. Object.Soap —  Initial fix for non-ASCII characters in SOAP response
  10. Object.XML —  Order inherited properties to match XML schema extension ordering
  11. Object.XML —  Store XML for empty character streams as "" instead of $c(0)
  12. Object.XML —  XMLExport serial references with no data as null (no tag)
  13. SQL —  Change datepart("week",date) to match SQL server behavior
  14. SQL.JDBC —  The same SQL normalization for JDBC and ODBC preparser
  15. SQL.JDBC —  Conversion of pseudo-ASCII bytes in setAsciiStream according to default locale
  16. System —  Process priorities not set right for background jobs.
    Platforms: OpenVMS, Windows, HP-UX
  17. System.I/O —  Modify "U" mode RMS files to read formatted files correctly
    Platforms: OpenVMS

Other Changes to Caché
The following list of references summarizes changes in this version of Caché which are upwardly compatible corrections and enhancements since the prior version. InterSystems does not expect that these will affect the normal operation of your existing applications. For ease in searching, they are grouped according to the area of the system they modify.
If you need assistance in understanding the nature of the change, of guidance in making use of an enhancement, please contact the InterSystems Worldwide Response Center for assistance.
If the affected platform is not listed specifically with the change summary, the change is effective for all supported platforms.

Caché Direct
  1. Fix Caché Direct registry key names


Config Mgr
  1. Fix config file corruption when the file size > 64KB
  2. Correct handling of null passwords for SQL Gateway
  3. Fix the ability to map all routine types
  4. Disallow setting user process priorities
  5. Fields of License wizard are empty when Caché (NT) uses UNIX style cache.key
  6. Preserve restart condition across multiple configuration manager edits
  7. Eliminate length limit on ECP server add/edit


Control Panel
  1. Fix Max %Full column in Control Panel | Local Databases
  2. Background integrity check on OpenVMS produced two files, the log file and an empty file
    Platforms: OpenVMS
  3. Fix namespace name truncation
  4. Remove "Switch Journal File after Backup" checkbox


CSP
  1. Fix/enhance UNIX and OpenVMS file renaming using $zu(140,6)
    Platforms: UNIX, OpenVMS
  2. When importing CSP files if no /csp/namespace pick first app that is defined in this namespace
  3. OnTimeout trigger is not called for state-aware sessions
  4. Anchors don't work on #url()
  5. Prevent SUBSCRIPT errors in CSPNormalizeURL^%cspServer


CSP.Gateway
  1. Resolve issues whereby hyperevent calls would fail, seemingly at random, within applications operating for extended periods of time in state-aware mode (preserve mode 1)
  2. Emergency fix for a potential issue in the Gateway's garbage collector that could lead to an accumulation of 'defunct' connections
    Platforms: OpenVMS
  3. Resolve an issue whereby a thread within the NSD would spin and consume excess CPU time under Tru64 UNIX
    Platforms: Tru64
  4. Improve the mechanisms within the NSD for detecting, and responding to, an interrupt from the browser
  5. Resolve an issue in the page output caching mechanism that could result in a thread spinning (and using much CPU time) under Tru64 UNIX
    Platforms: Tru64
  6. Resolve further issues with the UNIX implementation of change CMT071 (Manifested as the NSD aborting on Tru64 UNIX)
    Platforms: Tru64
  7. Introduce a better filter for malformed URLs (and incorrectly specified components within otherwise valid URLs)


CSP.Net
  1. Backport SMTP Authentication to 5.0.1
  2. Function errors using %Net.HttpRequest in a job process


CSP.Samples
  1. In web service, allow LOCATION to be a relative path or unspecified
  2. ClassLogo.jpg not shown in StreamServe.csp on HP
    Platforms: HP
  3. Soap.Demo.cls has incorrect parameter: SoapBodyUse = encoded


Cube
  1. The Caché service on Windows no longer wakes up to gather statistics
    Platforms: Windows


Explorer
  1. Fix Find/Replace on unsubscripted nodes
  2. Fix Selecting in Explorer with Multiple Wildcards
  3. Fix <MAXSTRING> error when exporting thousands of classes
  4. Fix import from a file with thousands of classes
  5. EXPLORER now allows half-width Katakana symbols in its global mask
  6. Explorer gets errors when editing globals with digits in their name


Installation
  1. Install all localized resource files when in non-English locale
  2. CSP Autocompile setting is preserved on upgrade installations
  3. Structure of /doc directory changed
    Platforms: UNIX, OpenVMS
  4. Fix installation recompile hang


Installation.OpenVMS
  1. Set ownership of target root directory (and all subdirs) to value of CACHE$MGRUIC
    Platforms: OpenVMS
  2. VMS installs SAX
    Platforms: OpenVMS


Installation.Windows
  1. On machines which can run the Pentium4 optimized executable, give users the option, during install, of P4 distribution (default) or regular
    Platforms: Windows
  2. Upgrade installations of CSP gateway on VMS failed to correctly modify httpd.conf
    Platforms: Windows


Languages.Caché Basic
  1. Backport Critical bug fixes for CachéBasic on usparc platform
  2. Fix typo in calling CanUnloadNow function in COM modules on UNIX and OpenVMS
    Platforms: OpenVMS
  3. Fixed <BREAK> processing error
  4. Fix CachéBasic DatePart() and DateDiff() with week parameter
  5. On all platforms, make max udp packet size for DCP be 1468


Misc
  1. This fixes a problem of cache coherency in the handling of modified 2k blocks over ECP


Networking
  1. Add process ID of client process to journal record
  2. Fix occasional segmentation violation when doing reverse $ORDER over ECP on BIG-ENDIAN systems
  3. ECP answer buffer overrun
  4. Improve the handling of asynchronous messages queued from the server
  5. On recovery failure acquire ECP client resource
  6. When running ECP over old format databases (2Kb), optimization information was sometimes (rarely) overwritten
  7. Ensure correct concurrent synchronization in ECP when allocating space for a request entry
  8. Correct rare ECP synchronization of the application server cache (old format (2K) databases)
  9. Fix handling of TCP write errors
    Platforms: Linux, HP
  10. ECP client didn't maintain server unique ID
  11. Added $System.Server HostName and IPAddresses
  12. Slowdown ECP worker dmn creation
  13. Increased ECP cluster master connection timeout
  14. On cluster reconnect, exit the old ECP connection gracefully
  15. ECP server to keep cluster slave session forever
  16. TCP-send interrupted system call handling
  17. Properly handle modifying ECP server (via control panel or config manager) when already up and running
  18. Correct problem with ECP application server restart


NLS
  1. Fix a NLS data calculations


Object
  1. Deal with network directory name correctly in %File:CreateDirectoryChain()


Object.ActiveX
  1. Don't ask password for Namespace list in connection manager
  2. Fix for CachéObject: ERROR #5802: Datatype validation failed when value < 0.1
  3. Objects deleted prematurely when ResultSet used with .NET
  4. Make Factory.SetOutput() work with .Net


Object.Class Compiler
  1. Qualify StorageToLogical call with property name
  2. Check actual number of parameters against formal spec
  3. Count only actual parameters in a dynamic query
  4. Fix bug in check for Class compiler interrupt
  5. Support object generators for datatype methods
  6. Invalid code generated if last line of procedure block method is a #define
  7. Problem with XML schema validation on class import on OpenVMS
    Platforms: OpenVMS


Object.Java
  1. Fixed bug with Iterator.remove() in Caché Array
  2. constructClone failing
  3. Incorrect Java binding for Lists containing Japanese characters
  4. Allow DATASOURCENAME to override data source name in bean implementation
  5. Fix dataSource name
  6. Produce code that compiles even when ROWID renamed
  7. Allow Session Bean generation when PERSISTENCETYPE="CMP"
  8. Correct JBoss connection leak
  9. Allow Caché' host and port to be configurable in EJB configuration
  10. Fix calculation of supers in Java binding
  11. Make generation of special method exists(db,oid) depend on persistency of super not persistency of class
  12. When invalid SERVERTYPE display invalid server message
  13. Get accessors are not const when they are overridden
  14. Don't allow CMP generation unless primary key
  15. Fix potential problem in constraint names in EJB binding
  16. Remove <distributable> from web.xml and make test servlet work with JBoss and Jetty
  17. Remove debug statements from EJB Wizard
  18. Close quick statement in EJB callbacks
  19. Let the App Server control concurrency
  20. Added Support in the CLASSPATH Variable for JBoss 3.0.6
  21. Add TransactionIsolation parameter to EJB projection
  22. Removed TRANSACTION_NONE from Supported Transaction Types
  23. Addressed Various Issues with the Java Projection
  24. Improve error message when Class in ClassList is not persistent
  25. Project stored procedure methods in Language bindings
  26. Fix Java binding file names
  27. Process Output parameters properly
  28. getConnection needs to be protected not private
  29. Allow datasource to be looked up from environment
  30. Support generating of extensions that are used for things like finders
  31. Call methods in property accessors when overridden set or get
  32. Fix JSL992 handling of calculated properties in the C++ binding
  33. Check if property exists before checking if calculated
  34. Guard against null DefaultArgs
  35. Support for projection of queries in generated Java classes
  36. Added SQLProcContext class to Java Binding client
  37. Enhancement for building Java client Documentation
  38. Added ability to initialize Java Binding using wrapper connection from App Server
  39. Improvements in LightDatabase
  40. Fix for empty array not listening to server updates
  41. %TimeStamp with milliseconds throws Exception
  42. Java ArrayOfDataTypes etc iterator.remove()
  43. Saving Non-ASCII Characters Using Light Java Binding


Object.Java, EJB
  1. Guard EJB projection against invalid parameters


Object.Library
  1. %Net.HttpRequest object now reads in correct charset
  2. %Net.HttpRequest object not encoding form data in correct charset


Object.Soap
  1. Improve SOAP client response validation
  2. Handle OUT parameters in SOAP web client
  3. Improve SOAP interoperability with XMLSPY SOAP request
  4. Reorganize the XMLPROJECTION parameter
  5. Fix parseFormal^%occName not initializing return argument
  6. Resolve short class names in web method arguments
  7. Show use of base class for error handling in SOAP.Demo sample
  8. SOAP web client gives error if return value not expected


Object.Stream
  1. %Delete leaves open transaction


Object.XML
  1. Map class inheritance to XML using schema choice group
  2. XMLImport loses attributes in case of id="" for tag
  3. %XML.Adaptor error handling improvements
  4. Allow runtime specification of %XML.Adaptor parameter XMLIGNORENULL
  5. <NOTOPEN> second call to XMLExportToStream with same stream
  6. In XML projection, support summary representation of referenced classes
  7. In XMLImport, long attribute value causes SUBSCRIPT error
  8. Add limited XMLImport method for %XML.DataSet
  9. Support RuntimeMode property of %XML.DataSet
  10. Optionally enforce ordering of properties on XML import
  11. Allow skipping of element tags on import and export
  12. Generate correct schema for Caché array for choice group
  13. Add new support for hexBinary schema type
  14. Create %xsd package for Caché datatypes that map to XML schema types
  15. XML representation of persistent objects using object id
  16. Ignore IsValidDT whose value is always 1 for XMLImport
  17. Extend %XML.DataSet to Support .Net Typed Datasets


SQL
  1. Add Message property to %SQLProcContext
  2. Fix return type for some ODBC Scalar functions
  3. Check %ALTER privilege on the view definition when ALTER VIEW is executed
  4. Properly generate include files in 2nd through Nth T# routine
  5. Don't include fields from parent table in conditional map condition when turning nonnull index into conditional index
  6. Rebuild indices are after datatype has changed to/from a string via DDL
  7. Support use of Map Variables in Data Access and Full Row Reference expressions
  8. Add support for MS SQL Server style CONVERT function
  9. Add checks to make sure string fields don't contain map piece delimiter characters
  10. Fix query generated %QuickLoad function to not scan entire table
  11. Fix DATEPART("wk",...) calculation
  12. Fix code generation problem with large indices
  13. Fix QuickLoad problem involving primary keys and SQL queries
  14. Fix insert select of stream field
  15. Store empty LONGVARCHAR streams with "" instead of $c(0)
  16. Correct TuneTable selectivity calculation for tables with UNIQUE fields
  17. Support global reference with vertical-bar syntax in mappings
  18. Add CONSTRAINT_OBJECT_NAME to %Library.SQLCatalog.SQLConstraints procedure
  19. Field-specific UPDATE triggers execute too often
  20. Support Quick %nolock=2 which simply means behave as if standard SQL statement
  21. Ensured Proper Operations of Descending-Order Sorts


SQL.DDL
  1. CREATE PROCEDURE argument length omitted in Studio


SQL.GateWay
  1. Do not close cursor if an error occurred
  2. Selecting on generated Caché ID field fails when it is a complex key in SQL Server
  3. Fixed <INVALID OREF> error for complicated dynamic query
  4. Fix parameter setting
  5. Select count not working
  6. "Undefined list element " error when linking a table


SQL.JDBC
  1. Fix JDBC reporting of foreign keys
  2. Correct JDBC reporting of parent reference field
  3. Correct transformation from LONGVARCHAR with getString()
  4. Fixed counting characters/bytes when using getUnicodeStream from JDBC
  5. PreparedStatement.setAsciiStream() does not convert chars to Unicode
  6. Tighten JDBC Call Syntax
  7. Add (optional) NODELAY flag at the end of JDBC URL string
  8. Fix potential <FRAMESTACK> error
  9. Add support for get/setXXX(String parameterName,...) JDBC 3.0 APIs
  10. Keep references to currently used statements in the statement pool
  11. Add closed flag to Stream classes
  12. Shut down the connection after receiving message sequencing error
  13. Change Statement.executeBatch error reporting behavior
  14. Enhance client cache management for stored procedures
  15. Use a trick to make CachéConnection object available
  16. Introduce new Stream Error Code 411
  17. Allow calls to getUpdateCount after executeUpdate


SQL.ODBC
  1. Fix calculation for ODBC precision
  2. wrong default setting for "Unicode SQLTypes"
  3. UNIX ODBC: SQLError returns some garbage..
  4. Fix for #Deleted problem in Access when using numeric column as primary key
  5. Poor error message if ODBC DSN contains invalid namespace
  6. Eliminated Memory Leak with Streams and ADO
  7. Allow programmatic (on-the-fly) DSN setup
  8. Return length in number of bytes for RetrieveStream
  9. Reintroduce QuickStatment.close; Change in empty stream retrieval
  10. Force dialogs to use narrow API when Unicode is defined, fix for Win9x
  11. Prevent possible access violation on logging buffer overrun


SQL.Query Processing
  1. Query optimization gives <UNDEFINED>error
  2. Fix JOIN optimization bug
  3. Improve OR optimization
  4. Fix Subscript error on UNION with many blank fields


SQL.Server
  1. Add check for <DSCON> in DieError to avoid looping
  2. Fix Addqout^%qserver with > 32000 characters of data


SQL.Syntax
  1. Fix <UNDEFINED> in parsing string function


SQLManager
  1. Corrected several issues with SQLMigration
  2. Change the Owner of a view in SQLManager
  3. Show plan fails when default SQL schema name is user defined
  4. Link table name with space or other characters in it
  5. Japanese characters garbled when printing to a printer


Studio
  1. Multiple improvements to Studio
  2. Importing a CSP page fails
  3. Unselected classes deleted in open dialog
  4. Exporting a class behaves differently when done remote vs local
  5. Get Error #5019 when deleting CSP page
    Platforms: OpenVMS
  6. Addressed Issue in which Studio Would Hang or Loop When Searching for Matching Text That Was in Contracted Code
  7. Studio editor: copy Unicode to clipboard on Win9x systems
  8. Find in Files does not find items in CSR files
  9. Fix problem sorting classes by size in Studio
  10. Studio imported class when told not to
  11. SourceControl: Trigger OnAfterSave not fired sometimes
  12. Studio becomes confused by 3rd line of INT
  13. In the example source control class allow people to create new items


System
  1. Encryption functions - rename from Rijndael to AES
  2. Fix Callin/Callout interfaces for 32-bit pointers on OpenVMS
    Platforms: OpenVMS
  3. Allow ECP client send 'get file' request on ECP recovery when server is not re-started
  4. The error trap, %ETN, now stores the values of formal parameters
  5. Fix ZQUIT not popping enough frames
  6. Addressed Issue with Task Not Rescheduling Properly
  7. Use correct error macros on Windows
    Platforms: Windows
  8. Correct overflow in handling OS files limits on 64 bit AIX
    Platforms: AIX
  9. Startup code could fail in rare circumstances when over 4 GB of global buffers were configured
    Platforms: Windows, Tru64
  10. On OpenVMS, when we cannot allocate as much memory as initially requested but are successful allocating a smaller number, the system still reports the initial value
    Platforms: OpenVMS
  11. Change code that sets jobtype not to use OR except for APPMODE flag & don't set APPMODE for ENQDMN
    Platforms: Tru64, OpenVMS
  12. COM port reads can fail on Windows if data arrives before the read
  13. Make DEFNETDIRSIZ 64 KB
  14. ECP server should never wait and retry on lock table full
  15. Fix lock_c_cleanup for ECP server dismounts DB
  16. Fix DCP lock race condition
  17. Display correct message for cluster ECP connection
  18. Fix un-removable lock when lock table is reset
  19. Change for better network lock fairness on server
  20. Fix telnet disconnection will leave an open transaction on OpenVMS and Linux
    Platforms: Linux, OpenVMS
  21. Display lock entry in pending state
  22. Fix multi-entry lock command over ECP problem
  23. Fix a problem when Lock and ZA on the same global by the same job
  24. DTM lock error fix
  25. Let network daemon keep list of locks granted by it so it could handle some deadlock issue
  26. Fix a rare problem where a stranded lock was left in the lock table
  27. Don't let network daemon call SWCHECKSET in waitupd(), so it won't block the cluster failover
  28. Display correct cluster error message for ECP
  29. Fix bad lock encoding (for example ^a("10.41"))
  30. Fix multi-entry lock command live lock problem
  31. Start Cluster ECP connection for slave when startup
  32. $ZTIMEZONE failed unpredictably on AIX
    Platforms: AIX
  33. Disable Nagle Algorithm by default on TELNET devices
  34. Fix short timeout problem on ECP
  35. Fix possible lock memory lost when lock table full
  36. Limit # of Caché job to access DSM through DDP to 1544
  37. Fix potential TRANSCB LRB list corruption
  38. Fix hang on multi-entry lock with same global nodes over network
  39. Fix ECP timing hole
    Platforms:
  40. Don't flush ECP journal records to disk when ECP is only being used as a lock transport for Caché clusters
  41. Fix cluster failover potential hang
  42. Fix collation detection in IF/ELSE clause
  43. Fix ability to map routine types
  44. Fix memory leak in Job Servers
  45. Fix a DTM network emulation bug in $DATA
  46. Correct handling of file sizes in a certain narrow range on OpenVMS
    Platforms: OpenVMS
  47. Correct a situation where very short waits (less than 100 mSec) could sometimes result in no wait at all (platform dependent)
  48. Fix big buffer pool allocation on OpenVMS & test global buffer allocation in mcominit
    Platforms: OpenVMS
  49. Update # of global buffers when we reduce resident memory allocation
    Platforms: OpenVMS
  50. Change reserved block alloc/dealloc code to skip bad maps, not abort
  51. Don't skip processes that return SS$_SUSPENDED in $GETJPI from cforce on OpenVMS
    Platforms: OpenVMS
  52. Set wdstop when any write daemon exits
  53. Use NANOSLEEP instead of select() for timed sleeps on HP-UX
    Platforms: Tru64
  54. Adjust spinloop counters on HP-UX
    Platforms: HP-UX
  55. Fix exception allocating more than 2^31 bytes of global bdb's
  56. $ZU(158) function call failing on Caché 5 Unicode
  57. Corrected JOBEXAM / Control Panel TCP read data corruption
  58. Create list file for loading Caché KM in BMC Patrol
  59. Save/Restore the process priority of the control process during job startup on UNIX and Windows
  60. On VMS display the correct process priority when examining processes
    Platforms: OpenVMS
  61. Fix problem with 3 or more argument $BITLOGIC
  62. TASKMANAGER - set start date properly, improve queries, add simple menu to drive
  63. Fix output file error in GBLOCKCOPY
  64. Lock out other gcompact on same database
  65. GBLOCKCOPY allows conversion of collation 0 globals


System.Backup/Restore
  1. Correct a problem whereby a user would sometimes be forced to do a full backup when an incremental backup should have been an option


System.Cluster Specific
  1. preserve wij info of the old master for failover
  2. Fix a race condition on Caché clusters
  3. Fix false <FILEFULL> in cluster mounted 2kb database
  4. Fix expansion daemon so it runs if another process needs it during cluster failover
  5. Correct problem with cluster failover when switch 13 or 14 was set


System.I/O
  1. Fix rare access violations when using |TNT| devices on Windows
  2. Fix timeout bug in LAT device open (ttyopenlat)


System.Journaling
  1. address an issue of journal daemon hanging
  2. During cluster failover/recovery, transaction rollback would fail if the new master had more than 254 databases mounted
  3. fix a bug that caused journal daemon to skip writing some journal buffers and result in system hang
    Platforms: OpenVMS
  4. Address a deadlock situation between journal daemon and write daemon during jrnswitch
  5. Correct race condition on journal switching on OpenVMS
    Platforms: OpenVMS
  6. Changed journaling to avoid incorrect exits


System.Licensing
  1. Ensure that Caché can run from directories with spaces in the names


System.Shadowing
  1. address a performance problem with shadowing
  2. correct a potential problem in fast-mode shadowing


System.Shutdown
  1. Create a CACCVIO-PID.LOG file for PAGRDERR and PAGRDERRXM errors
  2. No error capture on calls dealloc_resident_mem()


System.StartUp
  1. Increase SZGVXTAB to 32K
  2. Compiler error detail for missing */
  3. Fix Customer Name in restart splash screen


System.TCP Devices
  1. Increase the size of the ctelnetd listen queue
    Platforms: Windows


Utilities
  1. Config Manager uses same definition of remote servers as other desktop utilities
  2. when we import .OBJ code we don't update the ^rINDEX("routine_name") node
  3. Adjust fields for non-English texts
  4. MSM-Activate did not work against Unicode Caché server

Change Details
The remainder of this document gives the details for each of the earlier change summary references.

Category: SQL.Query Processing
Platforms: All
DevKey: AK553
Summary: Query optimization gives <UNDEFINED>error
Description:
Corrected a somewhat exotic query optimization problem which could result in an <UNDEFINED> error at runtime. For example, this occurred in some cases when a ROWID was used in the WHERE clause of a subquery.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Relational Gateway
Platforms: Tru64
DevKey: <none>
Summary: Relational Gateway use problematic on Tru64
Description:
The operational state of the Caché Relational Gateway on the Tru64 platform is problematic. Attempts to use it will most likely result in inconsistent results. Contact the InterSystems WorldWide Response Center for additional details.

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK553
Summary: Query optimization gives <UNDEFINED> error
Description:
Corrected a somewhat exotic query optimization problem which could result in an <UNDEFINED> error at runtime. For example, this occurred in some cases when a ROWID was used in the WHERE clause of a subquery.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK554
Summary: Fix JOIN optimization bug
Description:
Corrects a SQL join optimization problem which was introduced in Caché 5.0.0 and may result in incomplete result set.
Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: SQL.Query Processing
Platforms: All
DevKey: AK556
Summary: Improve OR optimization
Description:
Take advantage of index maps while avoiding the generation of virtual fields and conditions. This is an optimization to OR expressions in SQL.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium Yes No

 



Category: Installation
Platforms: All
DevKey: ALE159
Summary: Install all localized resource files when in non-English locale
Description:
This allows changing Caché localization without having to re-run install.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Installation.VMS
Platforms: OpenVMS
DevKey: ALE169
Summary: VMS installs SAX
Description:
Package and install VMS executables needed for CacheSAX.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE176
Summary: On machines which can run the Pentium4 optimized executable, give users the option, during install, of P4 distribution (default) or regular
Description:
Previously the P4 executables were always installed on machines which could run them

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Installation.Windows
Platforms: Windows
DevKey: ALE177
Summary: Upgrade installations of CSP gateway on VMS failed to correctly modify httpd.conf
Description:
Previously, we incorrectly edited Apache configuration files in csp-bin directory section.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Installation
Platforms: UNIX, OpenVMS
DevKey: ALE186
Summary: Structure of /doc directory changed
Description:
It now has the same structure as on Windows platforms.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: SQL.JDBC
Platforms: All
DevKey: AND269
Summary: Tighten JDBC Call Syntax
Description:
While stored procedures through both ODBC and JDBC were generally in a fairly good shape, there were some complaints about poor error reporting in cases where the CALL syntax was not used in a standard way. The CALL syntax checking has been improved by providing better error reporting.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND270
Summary: Allow calls to getUpdateCount after executeUpdate
Description:
According to the JDBC spec, getUpdateCount should be called only after a call to execute (or getMoreResults), but not afterexecuteUpdate (or executeQuery). However, this behavior is not only strange, but also not supported by other vendors. The driver is now changed so that one can call getUpdateCount after executeUpdate.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: SQL.ODBC
Platforms: All
DevKey: AND273
Summary: Allow programmatic (on-the-fly) DSN setup
Description:
Caché ODBC driver now allows programmatic DSN definitions via the SQLConfigDataSource API. Here's a list of key-value keywords that we support:
  • DSN
  • SERVER
  • PORT
  • DATABASE
  • UID
  • PWD
For example, a DSN setup string should look like:
  "DSN=Test\0SERVER=127.0.0.1\0DATABASE=USER\0PWD=sys\0PORT=1972\0UID=_system\0"
Any other key-value pairs will be discarded.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium No Yes

 



Category: SQL.JDBC
Platforms: All
DevKey: AND274
Summary: Add (optional) NODELAY flag at the end of JDBC URL string
Description:
There is now parsing logic that recognizes optional :nodelay flag (where nodelay = {true,false}) at the end of the URL string. Here's the updated Caché JDBC URL format:\
jdbc:Caché://localhost:port/namespace[/logfile:eventclass:nodelay]
where [/logfile:eventclass:nodelay] part is optional. Here are some examples:
jdbc:Caché://127.0.0.1:1972/USER
jdbc:Caché://127.0.0.1:1972/USER/jdbc.log
jdbc:Caché://127.0.0.1:1972/USER/jdbc.log:event16:false
jdbc:Caché://127.0.0.1:1972/USER/jdbc.log::false
jdbc:Caché://127.0.0.1:1972/USER/::false
We have also added the following two Caché JDBC specific APIs to CachéDataSource:
public void setNodelay(boolean nodelay);
public boolean getNodelay();
that can be also used to set nodelay flag if connecting via DataSource object. We have still left the ability to set this flag via Properties connect parameter. That means that if nodelay was set by specifying the flag in the URL string (or via DataSource object), one can still override this by supplying TCP_NODELAY property. In other words, here is how the setting of this flag is determined. It defaults to 'true'. If supplied in URL, or by setting it through the DataSource object, that value will be used, UNLESS TCP_NODELAY property is set.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: SQL.JDBC
Platforms: All
DevKey: AND276
Summary: Fix potential <FRAMESTACK> error
Description:
Two instances of a potential FRAMESTACK error were discovered by code inspection and fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND277
Summary: Add support for get/setXXX(String parameterName,...) JDBC 3.0 APIs
Description:
With the addition of parameter name to the parameter meta data returned by the server, it was easy to add a number of CallableStatement.setXXX and getXXX APIs that take parameter name (as opposed to the parameter index) as an argument. Note: we still officially support JDBC 2.x only. Therefore, for now, the APIs added by this change are merely an extended functionality.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: SQL.JDBC
Platforms: All
DevKey: AND281
Summary: Keep references to currently used statements in the statement pool
Description:
CachéStatement.finalize() called from a finalizer thread unconditionally cleans up. That sometimes interferes with application threads that reuse the same object. We now keep references to all currently used statements in the statement pool to keep this from occurring.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND282
Summary: Add closed flag to Stream classes
Description:
We added a closed flag to the Stream class and it's subclasses, and added checks to prevent exceptions when stream is closed twice.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND284
Summary: Shut down the connection after receiving message sequencing error
Description:
After receiving error 452 (message sequencing error) the connection is unusable. We have now added code that closes a connection (that includes sending a disconnect message to %qserver) once it receives error 452.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND285
Summary: Change Statement.executeBatch error reporting behavior
Description:
When executing an INSERT statement via Statement.addBatch()/executeBatch(), if the target table does not exist the int[] returned by atchUpdateException.getUpdateCounts() should expose the failed statement. Instead int[] {0} is returned.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND286
Summary: Enhance client cache management for stored procedures
Description:
Upon seeing a DDL statement, we clean up the client side cache. After that, any active statements need to be reprepared. Formerly, this applied only to regular SQL; stored procedures were not reprepared, and that was the problem. Now all statements are reprepared.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: SQL.JDBC
Platforms: All
DevKey: AND288
Summary: Use a trick to make CachéConnection object available
Description:
Most App Servers wrap native JDBC Connection objects so that they are not available to the end user. However we need CachéConnection object for use in Java Binding. With this change, we have added some code to obtain a QuickStatement object.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: SQL.ODBC
Platforms: All
DevKey: AND292
Summary: Return length in number of bytes for RetrieveStream
Description:
We added logic that computed and returned number of bytes instead of number of characters in %qserver.ReadStream. This fixed a problem in JDBC; however, ODBC uses RetrieveStream instead of ReadStream. We have now added the same logic to RetrieveStream.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: AND306
Summary: Introduce new Stream Error Code 411
Description:
Improved error reporting of Stream errors. More specifically, "General Stream Error (412)" is now reported as "No stream object defined for field (411)".

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: AND309
Summary: Reintroduce QuickStatment.close; Change in empty stream retrieval
Description:
We have changed how we store empty character streams and now made a corresponding change in %qserver to handle empty character stream retrieval. We have reintroduced close in QuickStatement. It needs to be invoked in order to prevent %qserver memory leaks.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.Query Processing
Platforms: All
DevKey: BJB250
Summary: Fix Subscript error on UNION with many blank fields
Description:
AK492 made some changes to avoid subscript errors on UNION by restricting the length of subscript to 151 char. This was not small enough. Because the subscript was a LIST when it got encoded it could double in size. Worst case would be a list of NULLs, 151 control characters that would need to be quoted by the encoding, doubling the length and pushing it over the 255 char limit for a single subscript of a global. To stay under the 255 limit the length must be reduced from 151 to 125 in distinct^%qaqcpr.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium Yes No

 



Category: SQL.Server
Platforms: All
DevKey: BJB252
Summary: Add check for <DSCON> in DieError to avoid looping
Description:
In Caché 5.0.0 if an ODBC server got a <DSCON> error the server would go into a loop and start to eat up the CPU. If this happens now the server will HALT

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low Yes No

 



Category: SQL.ODBC
Platforms: All
DevKey: BJB253
Summary: Fix calculation for ODBC precision
Description:
If you had a numeric field with a negative MinVal it is possible we would compute the precision incorrectly.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: SQL
Platforms: All
DevKey: BJB257
Summary: change datepart("week",date) to match SQL server behavior
Description:
DatePart("wk",date) was returning the number of the week the date fell in based on multiples of 7 days from January 1. If now returns weeks based on rows in the calendar, so the first Sunday of the year marks the changing from Week one to week 2. This means week one most of the time will have less than 7 days in it. With this change the range of values returned by this function change from 53 to 54.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium Yes No

 



Category: Languages.Caché Basic
Platforms: All
DevKey: CDS363
Summary: Fixed <BREAK> processing error
Description:
This fixes a problem where a direct command in Caché Basic throwing an error at a <BREAK> prompt would cause the process to crash.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System.StartUp
Platforms: All
DevKey: CDS374
Summary: Compiler error detail for missing */
Description:
Fixed an error where a /* comment without a closing */ in ObjectScript gives an "Invalid command" error.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: CDS381
Summary: The error trap, %ETN, now stores the values of formal parameters
Description:
%ER would incorrectly identify <UNDEFINED> variables as having a value after an error. %ER would not display formal parameters.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low Yes No

 



Category: System
Platforms: All
DevKey: CDS382
Summary: Fix ZQUIT not popping enough frames
Description:
A ZQUIT in an error trap did not pop a frame level. The GOTO @$ZTRAP went back to the same error trap. For example, ZQUIT 1 should pop one execution level. This now works properly.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Explorer
Platforms: All
DevKey: CFL861
Summary: EXPLORER now allows half-width Katakana symbols in its global mask
Description:
We now allow half-width Katakana characters in global subscripts. Previously, Explorer would report an invalid subscript.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No Yes

 



Category: Installation
Platforms: All
DevKey: CFL867
Summary: CSP Autocompile setting is preserved on upgrade installations
Description:
The CSP autocompile setting is preserved upon upgrade.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
High Low Yes No

 



Category: Utilities
Platforms: All
DevKey: CFL868, CFL871
Summary: Adjust fields for non-English texts
Description:
Widen various fields to accommodate truncated non-English captions.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
High Low No No

 



Category: Control Panel
Platforms: All
DevKey: CFL869
Summary: Fix Max %Full column in Control Panel | Local Databases
Description:
Correct Max %Full column display in Control Panel | Local Databases.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Config Mgr
Platforms: All
DevKey: CFL875
Summary: Fix config file corruption when the file size > 64KB
Description:
Configuration Manager no longer corrupts the cache.cpf file when it's larger than 64K.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low Yes No

 



Category: Config Mgr
Platforms: All
DevKey: CFL885
Summary: Correct handling of null passwords for SQL Gateway
Description:
Null passwords were modified whenever other edits were made to the configuration file.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Explorer
Platforms: All
DevKey: CFL887
Summary: Fix Find/Replace on unsubscripted nodes
Description:
Using Explore, Replace Every now correctly works on unsubscripted global references such as "^GLOBAL=string".

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Config Mgr
Platforms: All
DevKey: CFL890
Summary: Preserve restart condition across multiple configuration manager edits
Description:
If multiple edits were made and the last one did not require a restart but others did, the config manager would inconsistently apply the changes.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: Config Mgr
Platforms: All
DevKey: CFL891
Summary: Fix the ability to map all routine types
Description:
The configuration manager now knows how to map all routine types.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: Explorer
Platforms: All
DevKey: CFL892
Summary: Fix Selecting in Explorer with Multiple Wildcards
Description:
Explorer handles wildcard usage with Routines better.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Utilities
Platforms: All
DevKey: CFL894
Summary: Config Manager uses same definition of remote servers as other desktop utilities
Description:
The Config Manager was changed to search for remote servers in the same manner as other utilities.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Config Mgr
Platforms: All
DevKey: CFL896
Summary: Eliminate length limit on ECP server add/edit
Description:
We have removed the 15-character limit on host names for ECP.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: System.StartUp
Platforms: All
DevKey: CFL897
Summary: Fix Customer Name in restart splash screen
Description:
If the Customer Name in the .key file contained a comma, the start and restart splash screen displayed only the first comma-delimited piece of the name. This is now fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Explorer
Platforms: All
DevKey: CFL901
Summary: Fix <MAXSTRING> error when exporting thousands of classes
Description:
Corrected a problem when exporting a lot of classes from Explorer. Previously, you might experience a MAXSTRING error at cexport+15^%Wprog.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Utilities
Platforms: All
DevKey: CFL902
Summary: when we import .OBJ code we don't update the ^rINDEX("routine_name") node
Description:
Importing routines in object mode did not update the appropriate indices. So the routines did not seem to be present after import.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Control Panel
Platforms: OpenVMS
DevKey: CFL903
Summary: Background integrity check on OpenVMS produced two files, the log file and an empty file
Description:
Empty files were produced IN ADDITION TO the expected log file.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Explorer
Platforms: All
DevKey: CFL905
Summary: Explorer gets errors when editing globals with digits in their name
Description:
This could be very serious. Digits in the global name were dropped when EXPLORER set the new values. So unintended data loss could occur.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: Explorer
Platforms: All
DevKey: CFL908
Summary: Fix import from a file with thousands of classes
Description:
Importing thousands of classes using Explorer, you may encounter a <MAXSTRING> error.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Config Mgr
Platforms: All
DevKey: CFL910
Summary: Disallow setting user process priorities
Description:
The config manager no longer offers the choice of setting operating system priorities for user processes. The niceval parameter is deprecated in the Configuration Manager and ignored when included in the cache.cpf configuration file.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Control Panel
Platforms: All
DevKey: CFL912
Summary: Remove "Switch Journal File after Backup" checkbox
Description:
We have removed the "Switch Journal File after Backup" checkbox from Control Panel|Backup|Tasks|<TASK>|Edit. The journal file is always switched in the beginning of the task, no matter that option is marked or not. No journal switch occurs in the end of the task.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Control Panel
Platforms: All
DevKey: CFL919
Summary: Fix namespace name truncation
Description:
Correct display of long namespace names which were previously truncated.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT071
Summary: Resolve issues whereby hyperevent calls would fail, seemingly at random, within applications operating for extended periods of time in state-aware mode (preserve mode 1)
Description:
Resolve issues whereby hyperevent calls would fail, seemingly at random, within applications operating for extended periods of time in state-aware mode (preserve mode 1).

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: CSP.Gateway
Platforms: OpenVMS
DevKey: CMT075
Summary: Emergency fix for a potential issue in the Gateway's garbage collector that could lead to an accumulation of 'defunct' connections
Description:
This build represents an emergency fix for a potential issue in the Gateway's garbage collector that could result in the garbage collector becoming temporarily suspended, which, in turn, would lead to an accumulation of 'defunct' connections over a short period of time. The Windows and UNIX builds will automatically recover from this issue. The OpenVMS NSD may throw a fatal 'access violation'.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: CSP.Gateway
Platforms: Tru64
DevKey: CMT078
Summary: Resolve an issue whereby a thread within the NSD would spin and consume excess CPU time under Tru64 UNIX
Description:
Resolve an issue whereby a thread within the NSD would spin and consume excess CPU time under Tru64 UNIX.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT079
Summary: Improve the mechanisms within the NSD for detecting, and responding to, an interrupt from the browser
Description:
Improve the mechanisms within the NSD for detecting, and responding to, an interrupt from the browser.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: CSP.Gateway
Platforms: Tru64
DevKey: CMT080
Summary: Resolve an issue in the page output caching mechanism that could result in a thread spinning (and using much CPU time) under Tru64 UNIX
Description:
Resolve an issue in the page output caching mechanism that could result in a thread spinning (and using much CPU time) under Tru64 UNIX.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: CSP.Gateway
Platforms: Tru64
DevKey: CMT082
Summary: Resolve further issues with the UNIX implementation of change CMT071 (Manifested as the NSD aborting on Tru64 UNIX)
Description:
A fault was found in the mechanism for automatically recovering state-aware sessions after the user-driven interrupt of a request. This error would particularly occur for requests taking a number of seconds to service. This problem may manifest itself as an occasional SIGSEGV fault (code 11) which would often be followed by the OS issuing an abort signal (code 6) to the NSD.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low Yes No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT083
Summary: Introduce a better filter for malformed URLs (and incorrectly specified components within otherwise valid URLs)
Description:
Introduce a better filter for malformed URLs (and incorrectly specified components within otherwise valid URLs). The specific examples are:
http://127.0.0.1/csp/samples/menu.csp?&"

http://127.0.0.1/csp/samples/menu.csp?&=

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes Yes

 



Category: System
Platforms: All
DevKey: DAS445
Summary: Fix memory leak in Job Servers
Description:
Each time a Job Server restarted the virtual memory count would increase. This memory leak has been corrected.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Languages.Caché Basic
Platforms: All
DevKey: DAS446
Summary: Fix CachéBasic DatePart() and DateDiff() with week parameter
Description:
The "ww" option for DateDiff() and DatePart() is now working correctly.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Languages.Cache Basic
Platforms: All
DevKey: DAS449
Summary: On all platforms, make max udp packet size for DCP be 1468
Description:
The default size had been 3600 on VMS. On some VMS versions, this resulted in fragmentation which in turn caused occasional DCP hangs.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: SQL.GateWay
Platforms: All
DevKey: DLP1002
Summary: <INVALID OREF>zSQLGWExecute+5^%ooLibrary.DynamicQueryGW.1
Description:
Fixed the following sequence
temp	;
	Set conn=##class(%SQLGatewayConnection).%New()
	Set res=##class(%ResultSet).%New("%DynamicQuery:SQL")
	Write conn.Connect("CACHE5B476 Samples","_system","")
	Set res=##class(%ResultSet).%New("%DynamicQueryGW:SQLGW")
	Write res.Prepare("select * from Sample.Company",,conn)
	Write res.Execute()
q
which generated a <INVALID OREF>zSQLGWExecute+5^%ooLibrary.DynamicQueryGW.1 error in 5.0. This error is caused by an oref in a $list structure. The structure of qHandle was changed from a $list() to a local array.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Stream
Platforms: All
DevKey: DLP1007
Summary: %Delete leaves open transaction
Description:
%Delete in a class with a character stream leaves a transaction open if you try to delete a non-existing id.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP986
Summary: Fix bug in check for Class compiler interrupt
Description:
Prior to this change an attempt to compile a large number of classes which generated long error messages would generate a <LIST> error and classes which do not have errors will not be runnable. After this change the correct error message (not a <LIST> error) will be reported and other classes which successfully compile in the same compile cycle should be runnable.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP992
Summary: Qualify StorageToLogical call with property name
Description:
Corrected a problem in exporting Caché classes which have been converted from release 4.x to 5.0.0 and subsequently exported to Java.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP993
Summary: Check actual number of parameters against formal spec
Description:
Dynamic queries are preparsed and literals are replaced with '?'. The preparsed query is used to lookup a cached query. If a suitable cached query is found it is used otherwise a new query is constructed and cached. The preparser recognizes '?' and reports their location. The location and value of substituted literals is also reported. The dynamic query as implemented in %DynamicQuery::SQL only supports 16 formal arguments. The dynamic query compiler was incorrectly including substituted literals when checking to see if more than 16 '?' are specified in the query. If >16 an error 'Too many parameters' is returned.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DLP996
Summary: Add Message property to %SQLProcContext
Description:
Additional error detail is often provided to xDBC clients from the %msg local variable. SQL places additional information in that variable. Stored procedures report SQL error information and rows processed in the %sqlcontext object. However, this object did not provide a property in which to place additional error information.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP998
Summary: Count only actual parameters in a dynamic query
Description:
When a dynamic query is initially cached all literals are replaced with parameters. Then all parameters are reported by GetInfo. It is not valid that a replaced literal be reported as a parameter. GetInfo() now constructs parameter information from the query as submitted. Only parameters actually contained in that query will be reported by GetInfo().

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Medium No Yes

 



Category: System.I/O
Platforms: All
DevKey: DMD032
Summary: Fix rare access violations when using |TNT| devices on Windows
Description:
This fix corrects an error when using |TNT| devices that manifested itself as access violation errors on Windows.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: System.TCP Devices
Platforms: Windows
DevKey: DMD035
Summary: Increase the size of the ctelnetd listen queue
Description:
Increased the size of the telnet daemon's listen queue to prevent failed connection attempts if many users are connecting at approximately the same time.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: System.Shutdown
Platforms: All
DevKey: DMD038
Summary: Create a CACCVIO-PID.LOG file for PAGRDERR and PAGRDERRXM errors
Description:
If there is a hardware problem that leads to a SS$_PAGRDERR or SS$_PAGRDERRXM error, this will be logged in a CACCVIO-PID.LOG file.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV1895
Summary: Fix return type for some ODBC Scalar functions
Description:
Some date- and time-related functions previously reported their results using the wrong ODBC datatype. Specifically, they returned a DOUBLE when they should have returned an INTEGER. The functions are:
  • second
  • minute
  • hour
  • week
  • month
  • year
  • dayofweek
  • dayofmonth
  • dayofyear
The following functions previously reported DOUBLE and now report VARCHAR:
  • dayname
  • monthname

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1899
Summary: Check %ALTER privilege on the view definition when ALTER VIEW is executed
Description:
A bug has been fixed where an ALTER VIEW statement could be executed by a user even if the user did not have %ALTER privilege on the view definition. Now the privilege is properly checked before the ALTER VIEW statement is executed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1903
Summary: Properly generate include files in 2nd through Nth T# routine
Description:
There were actually two issues: 1) The #include <INCLUDE file> was missing from the 2nd through Nth T# routines. This was because of a simple problem in create^%qaccpq2 where the number of lines in the ^rMAC() entry was set to one less than the actual number after the include files were added. 2) The second issue is the create^%qaccpq2 function was not handling the case where an include file contained code. It put the include file in the MAC routine, but it was never expanded in the INT routine, which is built alongside the MAC routine. I added code to call LINES^%qarmac with the shell of the 2nd through Nth routines in create^%qaccpq2. Then put the results into the ^ROUTINE global. This means any code in the include files will be present in these routines. This was never an issue with the first routine because it is built slightly different in %qadctab.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1910
Summary: Don't include fields from parent table in conditional map condition when turning nonnull index into conditional index
Description:
If you have a child of a child table, and set up a nonnull index, the following occurs. The subscripts of the index corresponding to parentref list, which are not fields of the current child table, end up generating not null conditions for these fields. Therefore, they will not be satisfied by any query conditions because they aren't even fields of the child table.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1917
Summary: Rebuild indices are after datatype has changed to/from a string via DDL
Description:
When a DDL ALTER TABLE <table name> ALTER COLUMN statement is used to change the type of a column to or from a STRING datatype, any indices on that column are rebuilt. This ensures that each index reflects the correct collation.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1918
Summary: Support use of Map Variables in Data Access and Full Row Reference expressions
Description:
Caché SQL now support references to map variables (such as (1D1(, (1D2), (3D1), and so on) in %CacheSQLStorage RoReference and DataAccess expressions.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: SQL
Platforms: All
DevKey: DPV1920
Summary: Add support for MS SQL Server style CONVERT function
Description:
Caché SQL now supports the CONVERT() function for ease of migrating from MS SQL Server applications. The syntax for the function is:
  CONVERT ( data_type , expression [ , style ] )

Arguments:
data_type - Any datatype supported in Caché SQL. This is the datatype that the expression will be converted to. The datatype specified here will use the DDL Datatype Definition Table to determine the Caché datatype to convert it to. The only meaningful datatype parameter used is the length (VARCHAR(20)) which is translated to the MAXLEN datatype parameter (%Library.String(MAXLEN=20)).

expression - Any valid Caché SQL expression.

style - Is the style of date format used to convert DATE, TIME, or TIMESTAMP data to character data (VARCHAR). In the table, the two columns on the left represent the style values for DATE, TIME, or TIMESTAMP conversion to character data. Add 100 to a style value to get a four-place year that includes the century (yyyy).

Without century  With century (yyyy)   Input/Output**
   (yy)              (yyyy)
    -                0 or 100 (*)      mon dd yyyy hh:miAM (or PM)
    1                101               mm/dd/yy
    2                102               yy.mm.dd
    3                103               dd/mm/yy
    4                104               dd.mm.yy
    5                105               dd-mm-yy
    6                106               dd mon yy
    7                107               Mon dd, yy
    8                108               hh:mm:ss
    -                9 or 109 (*)      mon dd yyyy hh:mi:ss:mmmAM (or PM)
    10               110               mm-dd-yy
    11               111               yy/mm/dd
    12               112               yymmdd
    -                13 or 113 (*)     dd mon yyyy hh:mm:ss:mmm(24h)
    14               114               hh:mi:ss:mmm(24h)
    -                20 or 120 (*)     yyyy-mm-dd hh:mi:ss(24h)
    -                21 or 121 (*)     yyyy-mm-dd hh:mi:ss.mmm(24h)
    -                126(***)          yyyy-mm-ddThh:mm:ss:mmm(no spaces)
    -                130*              dd mon yyyy hh:mi:ss:mmmAM
    -                131*              dd/mm/yy hh:mi:ss:mmmAM
* The default values (style 0 or 100, 9 or 109, 13 or 113, 20 or 120, and 21 or 121) always return the century (yyyy).
** Input when converting to DATE, TIME, or TIMESTAMP; output when converting to character data.
*** Designed for XML use.
For conversion from DATE, TIME, or TIMESTAMP to character data, the output format is as described in the table. Caché supports the following type conversions using the CONVERT function:
        From DATE to VARCHAR
           Example:  CONVERT(VARCHAR(20),CURRENT_DATE,100)
                     Returns:  'Jan 28 2003 03:00PM'
        From TIME to VARCHAR
           Example:  CONVERT(VARCHAR(20),CURRENT_TIME,8)
                     Returns:  '15:23:14'
        From TIMESTAMP to VARCHAR
           Example:  CONVERT(VARCHAR(20),CURRENT_TIMESTAMP,0)
                     Returns:  'Jan 28 2003 03:00PM'
        From INTEGER, SMALLINT, or TINYINT to VARCHAR
           Example:  CONVERT(VARCHAR(20),Age)
                     Returns:  '47'
        From DOUBLE or NUMERIC to VARCHAR
           Example:  CONVERT(VARCHAR(20),Total_Cost)
                     Returns:  '197.21'
        From VARCHAR to VARCHAR (used for truncation)
           Example:  CONVERT(VARCHAR(20),Description)
                     Returns:  'Weight measurement o'
        From VARCHAR to DATE
           Example:  CONVERT(DATE,'28 Jan 2003 15:12:13:436',113)
                     Returns:  59197
        From TIMESTAMP to DATE
           Example:  CONVERT(DATE,CURRENT_TIMESTAMP)
                     Returns:  59197
        From VARCHAR to TIME
           Example:  CONVERT(TIME,'28 Jan 2003 15:12:13:436',113)
                     Returns:  54733
        From TIMESTAMP to TIME
           Example:  CONVERT(TIME,CURRENT_TIMESTAMP)
                     Returns:  56508
        From VARCHAR to TIMESTAMP
           Example:  CONVERT(TIMESTAMP,'28 Jan 2003 08:13:04:443AM',130)
                     Returns:  '2003-28-01 08:13:04.443'
        From DATE to TIMESTAMP
           Example:  CONVERT(TIMESTAMP,CURRENT_DATE)
                     Returns:  '2003-28-01 00:00:00'
              Note:  When converting to a TIMESTAMP value, if the source
                     value is missing the Time component, the converted time
                     is 12:00:00AM
        From TIME to TIMESTAMP
           Example:  CONVERT(TIMESTAMP,CURRENT_TIME)
                     Returns:  '2003-28-01 15:23:34'
              Note:  When converting to a TIMESTAMP value, if the source
                     value is missing the Date component, the converted date
                     is the current day.
        From <ANY type> to INTEGER, SMALLINT, or TINYINT
           Example:  CONVERT(INTEGER,CURRENT_DATE)
                     Returns:  59197
        From <ANY type> to NUMERIC or DECIMAL
           Example:  CONVERT(NUMERIC,CURRENT_DATE)
                     Returns:  59197
Be very careful not to confuse the CONVERT(datatype, expression [,style]) function with the {fn CONVERT(expression, datatype)} ODBC Scalar function, they are different. If an invalid value is passed to the CONVERT function, an SQLCODE=-141 error will be returned at run-time. This is a new error code:
SQLCODE = -141
Invalid input value passed to the CONVERT function

For example:

  CONVERT(TimeStamp,'abc',131)
Will throw an SQLCODE=-141 error.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: SQL.JDBC
Platforms: All
DevKey: DPV1921
Summary: Fix JDBC reporting of foreign keys
Description:
Using the JDBC getExportKeys() function, Caché did not correctly report foreign keys when a table contained multiple foreign key references to another table.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: DPV1922
Summary: Correct JDBC reporting of parent reference field
Description:
When using the JDBC getExportedKeys() function, Caché did not correctly report the name of the parent reference field.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV1924
Summary: Add checks to make sure string fields don't contain map piece delimiter characters
Description:
Caché SQL has been enhanced to automatically detect field values that contain characters used as delimiters in the associated global node where the field is stored. This validation, which is OFF by default, is controlled by a new class parameter, STORAGEDELIMITERCHECK.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes Yes

 



Category: SQL
Platforms: All
DevKey: DPV1927
Summary: Fix query generated %QuickLoad function to not scan entire table
Description:
We previously changed the Quick* functions so we treat all ID's and references as Logical values. As part of this change I used some WHERE conditions in an SQL statement of the form:
   WHERE %INTERNAL(%ID) = :value
This caused the query to loop over all the records instead of fetching just the record we are looking for. I'm not sure why %INTERNAL(%ID) isn't treated the same internally as %ID, but I guess the query processor is not optimized for it. It has been changed to just use a query of the form %ID = :value for QuickLoad and the other instances where this code generation might occur.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV1935
Summary: Fix DATEPART("wk",...) calculation
Description:
The calculation of week numbers carried out by the DATEPART function returned an incorrect value. For example,
   DATEPART("wk","2003-02-10")
returns 6 instead of the correct result, 7. This function is included for Sybase SQLServer compatibility.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1940
Summary: Fix code generation problem with large indices
Description:
Corrected a problem where the code generator was erroneously splitting lines when they were longer than 200 characters. This specific case was a long index name with 8 or more fields in the index.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1941
Summary: Fix QuickLoad problem involving primary keys and SQL queries
Description:
Corrected a code generation problem with QuickLoad when there was a Primary Key index that was also the IDKey and the loading of a row required an SQL query instead of direct global access.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium Yes No

 



Category: SQL.Syntax
Platforms: All
DevKey: DPV1942
Summary: Fix <UNDEFINED> in parsing string function
Description:
Corrected an <UNDEFINED> error in the SQL scalar function, STRING.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL
Platforms: All
DevKey: DPV1943
Summary: Fix insert select of stream field
Description:
Corrected a problem with INSERT ... SELECT commands involving stream data that could result in incorrect values being inserted.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1944
Summary: Store empty LONGVARCHAR streams with "" instead of $c(0)
Description:
When saving a literal value of '' (SQL Empty String) in a LONGVARCHAR field (GlobalCharacterStream), we now store a zero-length string ("") in the stream object rather than $c(0).

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1945
Summary: Correct TuneTable selectivity calculation for tables with UNIQUE fields
Description:
TuneTable may incorrectly calculate the Selectivity for a table with UNIUQUE fields.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1946
Summary: Support global reference with vertical-bar syntax in mappings
Description:
Using vertical bars in global mapping references now works as expected without compilation errors. That is:
   ^[$get(^nsp)]a  -> always worked
   ^|$get(^nsp)|a  -> now works

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes Yes

 



Category: SQL
Platforms: All
DevKey: DPV1947
Summary: Add CONSTRAINT_OBJECT_NAME to %Library.SQLCatalog.SQLConstraints procedure
Description:
A column CONSTRAINT_OBJECT_NAME has been added to the %Library.SQLCatalog_SQLConstraints stored procedure. This column contains the Object name of the foreign key or index which projected the constraint. The full rowspec of the SQLConstraints procedure is now:
SQLConstraints Procedure
  %SQLCatalog_SQLConstraints('tablename')
  Takes 1 %String/VARCHAR type parameter which is the name of a BaseTable.
  Returns all fields in the table:
  ROWSPEC = CONSTRAINT_NAME:%String        - Name of the constraint
            TYPE:%String                   - Type of constraint
            CONSTRAINT_DATE:%String        - Constraint info depends on type
            CONSTRAINT_OBJECT_NAME:%String - Object name of the constraint
Rows are returned in no particular order

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.Server
Platforms: All
DevKey: DPV1954
Summary: Fix Addqout^%qserver with > 32000 characters of data
Description:
Addqout, in xDBC server, did not handle more than 32000 characters.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium No Yes

 



Category: SQL
Platforms: All
DevKey: DPV1962
Summary: Field-specific UPDATE triggers execute too often
Description:
Corrected a problem that could cause an update trigger, which should be executed only when the values of specific fields have changed, to be executed when any field's value changed. Here's a specific example:
Create Trigger LogArt AFTER UPDATE OF Price on pl31607 REFERENCING NEW ROW as NR
        INSERT INTO pl31607Log(LogDate,ARTID, Price)
        			values ( CURRENT_TIMESTAMP, NR.ARTID, NR.PRICE)
was getting executed for every update, not just updates of the Price field.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: SQL
Platforms: All
DevKey: DPV1968
Summary: Support Quick %nolock=2 which simply means behave as if standard SQL statement
Description:
Honor current transaction isolation in Quick* API.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium No Yes

 



Category: SQL
Platforms: All
DevKey: DPV1969
Summary: Ensured Proper Operations of Descending-Order Sorts
Description:
Previously, a descending-order sort in certain queries (for example, those containing "COUNT(*)") resulted in data sorted in ascending order when it should have been descending. This has been addressed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: Studio
Platforms: All
DevKey: (See below)
Summary: Multiple improvements to Studio
Description:
The following improvements were made to Studio:
  • AGC185: Studio COS parser - improve handing of unclosed /*
  • AGC204: Studio SQ parser - accept CONVERT scalar function
  • DVU623: Allow 5 decimal points for selectivity
  • DVU625: Cancel Debugger if user select Cancel in "SetDebug Target" dialog
  • DVU626: Open Routine doesn't use Correct SourceControl
  • DVU627: Added source control support for project and access to source control from project tree.
  • DVU628: No longer open added to project items automatically.
  • DVU629: Generate valid Basic method in override Get/Set for Properties
  • DVU632: No longer update the source code when copying a class
  • DVU634: Change behavior of Delete Item in Studio
  • DVU635: Make autocomplete in "GoTo" combo Case Sensitive
  • DVU638: Template URL now have a parameter &DocumentNamespace in addition to &Namespace.
  • DVU640: The right-click menu has a trailing section-separator with no following item, unless invoked on a package. This is fixed.
  • DVU641: Remember the state of "Include System Items" in Open Dialogue
  • DVU642: Change menu item 'Recent Files' to 'Recent Routines'
  • DVU643: Added Message Box on Find Next before wrapping
  • DVU644: Support Ctrl-Tab and Shift -Tab in Find/Replace dialog
  • DVU645: Reset the STORAGESTRATEGY to "" if it was Deleted
  • DVU648: Check inspector changes before closing studio.
  • DVU650: 'Delete' button deletes only first element of multiple select
  • DVU652: New Index Wizard. Disable Bitmap option for IDKEY, Unique and Primary keys.
  • DVU653: Eliminate error when Deleting new class
  • DVU654: Address problem when creating a COS routine and then using Save As .BAS
  • DVU655: Fix Race Condition in Studio Display
  • DVU656: Correct Ctrl/A behavior in output box
  • DVU657: Loading class on Win XP cause multiple Inspector repaint.
  • DVU658: It was possible that routine will exists without a timestamp. We now check if it really exists before deciding that it was deleted.
  • DVU659: export showed duplicate entries
  • DVU660: Import dialog in Studio should have mask for *.csp,*.csr
  • DVU661: If Registry is empty Connection Manager was showing "File not find". We will not display this error any more.
  • DVU673: Save color table after editing.
  • DVU675: Changes to a newly created class are not saved upon exiting Studio.
  • DVU679: Correct tab order in File Open Dialog
  • DVU687: Allow JavaScript editing in Studio.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.ActiveX
Platforms: All
DevKey: DVU630
Summary: Don't ask password for Namespace list in connection manager
Description:
If you have Caché Direct security turned on and you try to use the SQL Manger you have to enter the Caché Direct User name and Password several times. The error message for this has been fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: EKP009
Summary: Fix a DTM network emulation bug in $DATA
Description:
A bug in the DTM network emulation function zu107fun() which would sometimes cause error code 258 has been corrected.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Networking
Platforms: All
DevKey: GK169
Summary: Fix occasional segmentation violation when doing reverse $ORDER over ECP on BIG-ENDIAN systems
Description:
Big endian gorder didn't check the returned value before fetching on ECP systems. It was modified to check if there is a valid value before de-referencing it.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK170
Summary: ECP answer buffer overrun
Description:
This fixed a bug which caused answer buffer overruns in ECP.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK171
Summary: Improve the handling of asynchronous messages queued from the server
Description:
This flag is set when the ECP read daemon is in the middle of answering a request. If the flag is set then various requests may produce asynchronous answer messages which could be inserted in the answer buffer, otherwise asynchronous messages will be queued to be sent later.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: Networking
Platforms: All
DevKey: GK173
Summary: On recovery failure acquire ECP client resource
Description:
On recovery failure, ECP released the exclusive ownership of the client request buffer without owning the client resource. It has been changed to (re)acquire the resource (if didn't own), before releasing the exclusive ownership.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK174
Summary: Accommodate largest possible size of UNICODE strings over ECP
Description:
5.0.0 client will hang if a 32K char uncompressed Unicode string is set over ECP. If 5.0.1 client is connected to a 5.0.0 ECP server, a 32 char uncompressed Unicode string set will drop the ECP connection with ERSYSTM error, and "bignet_net_read: Invalid pkt len - len.." msg in the server cconsole.log. 5.0.1 ECP client and server is required to resolve this problem..

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: Networking
Platforms: All
DevKey: GK175
Summary: When running ECP over old format databases (2Kb), optimization information was sometimes (rarely) overwritten
Description:
If the block had optimization info, and the following global reference ccc(common char count) is > optimization, then the delta was left with a garbage value.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK176
Summary: Ensure correct concurrent synchronization in ECP when allocating space for a request entry
Description:
Code review uncovered a missing MEMBAR request which could cause ECP client hangs or request corruptions. It could cause a hang or data corruption. This has been fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK177
Summary: Correct rare ECP synchronization of the application server cache (old format (2K) databases)
Description:
On rare occasions, if both a set AND a subsequent kill affecting the same node in a 2Kb database had not been transmitted to the ECP database server, the application server may misapply a delete node request.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: Linux, HP
DevKey: GK178
Summary: Fix handling of TCP write errors
Description:
Caché/Linux network connection doesn't detect network disconnection.. Redhat 7.3 and 8.0 have a TCP bug: If you overflow the outQ, then drop the server connection, the client doesn't detect that the connection is gone/dead. There is no error from the platform when you write, and hangs forever if the server is windows. MS resets the peer connection (it works fine with windows), but other UNIXes i.e. Sparc or HPux don't. Worst of all, it leaves the system buffers allocated for a very long time. We modified nettcp to wakeup every 5 seconds to check for halt request.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK179
Summary: ECP client didn't maintain server unique ID
Description:
We modified the system to remember the server GUID after connection/session initialization. It was getting zeroed when session recovery was denied. Then later the session wasn't recoverable because the server didn't accept the GUID, and complained with session out of date message.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK181
Summary: Added $System.Server HostName and IPAddresses
Description:
Added:
$system.Server.HostName()
     ; Returns current host name

$system.Server.IPAddresses(<OPTIONAL name host>)
     ;Returns specified host IPs (comma separated)
     ;If host name is not specified returns current host IPs.
     ;Note: it returns configured IPs not necessarily the actual NIC IPs

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Networking
Platforms: All
DevKey: GK182
Summary: Slowdown ECP worker dmn creation
Description:
Pause very very briefly to allow ECP worker daemons to start after launching.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK184
Summary: Add process ID of client process to journal record
Description:
Modified ECP server to store the client sys number and pid in the journal.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Medium No Yes

 



Category: Networking
Platforms: All
DevKey: GK185
Summary: Increased ECP cluster master connection timeout
Description:
When running ECP as a lock transport for Caché clusters, the timeout had been set too low to accommodate cluster failover.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: Networking
Platforms: All
DevKey: GK186
Summary: On cluster reconnect, exit the old ECP connection gracefully
Description:
When an application server establishes an ECP connection to a node that happens to be the master of a cluster and that node is forced down in the narrow window when the connection is still starting up, cluster recovery will now succeed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK194
Summary: ECP server to keep cluster slave session forever
Description:
If a slave node of cluster (running ECP for lock transport) is disconnected from the network, it can cleanly reconnect later on. Previously cleanup was incomplete so that reconnect attempts were unsuccessful.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK195
Summary: TCP-send interrupted system call handling
Description:
We modified the system to ignore the exceptions bit on select, if select says the call was interrupted.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: GK197
Summary: Properly handle modifying ECP server (via control panel or config manager) when already up and running
Description:
The ECP client structure is not initialized properly by ECP reinit. This corrects the issue.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System.Cluster Specific
Platforms: All
DevKey: HYY732
Summary: preserve wij info of the old master for failover
Description:
Fixes a problem that could cause cluster journal recovery to fail if the previous master died nicely.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low Yes No

 



Category: System.Journaling
Platforms: All
DevKey: HYY733
Summary: address an issue of journal daemon hanging
Description:
Corrected a problem where in rare occasions journal daemon might skip writing some journal buffers to disk, causing the system to hang eventually.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: System.Journaling
Platforms: All
DevKey: HYY734
Summary: During cluster failover/recovery, transaction rollback would fail if the new master had more than 254 databases mounted
Description:
Now the recovery code properly handles the maximum number of databases permitted

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: System.Journaling
Platforms: OpenVMS
DevKey: HYY741
Summary: fix a bug that caused journal daemon to skip writing some journal buffers and result in system hang
Description:
Addressed a problem where journal daemon might skip writing certain journal buffers after journal file has switched, resulting in corrupted journal file and system hang. The circumstance that caused it to happen is present on Windows and OpenVMS platforms in 4.1 or Windows platforms in 4.0 and earlier. This problem is much less likely to occur in Caché than in earlier releases. It is fixed in this release. The primary conditions for the problem to occur are:
  1. "free system on journal I/O error", and
  2. there is no space in either primary or alternate directory at one point and then
  3. some space is freed up in the alternate journal directory. The last one, freeing up some space in the alternate directory, is not a necessary condition, but it makes the problem much more likely to happen.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: System.Journaling
Platforms: All
DevKey: HYY742, JO1689
Summary: Address a deadlock situation between journal daemon and write daemon during jrnswitch
Description:
Addressed a problem on non-cluster platforms (Windows and UNIXes) where journal daemon might hang at switching journal file.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: System.Journaling
Platforms: OpenVMS
DevKey: HYY743
Summary: Correct race condition on journal switching on OpenVMS
Description:
Addressed a theoretical journal corruption problem caused by the journal switch not waiting for journal asynchronous I/O to complete. This has never been encountered in the field and effort to demonstrate this potential problem were unsuccessful. This problem was identified during code review related to other changes in journaling.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY750
Summary: address a performance problem with shadowing
Description:
Correct a performance problem with fast-mode (or block-mode) shadowing where the shadow may consume significant CPU locating the end of journal (GEND^SHDWCBLK). The problem is present in Caché 4.1 and earlier.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low Yes No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY751
Summary: correct a potential problem in fast-mode shadowing
Description:
We found a problem during code review and we believe clients have never experienced it. Potentially, the end of the journal could be marked incorrectly on the shadow server which would preclude further journal restoration on the shadow.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: System
Platforms: All
DevKey: JB106
Summary: Addressed Issue with Task Not Rescheduling Properly
Description:
Fixed scheduling problem and extra GetDay label. Previously, a task which was scheduled multiple times per day could not be rescheduled for more than one day. On the last occurrence of the schedule, the task should have been rescheduled but was not. This has been corrected.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN339
Summary: Force dialogs to use narrow API when Unicode is defined, fix for Win9x
Description:
Several dialogs do not appear on Windows 9x platforms, because when building the Unicode version of the driver, the Unicode version of several dialogs were being called which is a noop on Win9x platforms. This occurred when asking for a password or username by the driver. This has been fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Languages.Caché Basic
Platforms: All
DevKey: JCN344
Summary: Backport Critical bug fixes for CachéBasic on usparc platform
Description:
Compiling the following .bas file using %RCOMPIL would crash prior to this correction.
#classcontext csp.basic

	Sub zOnPageBODY()
        count = request.Get("COUNT",0)
	end sub
#endclasscontext csp.basic

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN365
Summary: wrong default setting for "Unicode SQLTypes"
Description:
"Unicode SQLTypes" should be off by default for a previously installed DSN. Previously it was set to on, if the Registry Key is not present.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: Languages.Caché Basic
Platforms: OpenVMS
DevKey: JCN377
Summary: Fix typo in calling CanUnloadNow function in COM modules on UNIX and OpenVMS
Description:
The CanUnloadNow function is exported in CachéBasic, CachéCOM, CachéPM, and CachéScanner. A typo in the call on OpenVMS and UNIX was calling CanUnLoadNow with a capital "L" causing it to never be run during the unloading of these modules by CachéCOM.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN379
Summary: UNIX ODBC: SQLError returns some garbage..
Description:
A buffer created by an application is passed to ODBC to have the error filled in. The SQLError function in CachéODBC tried for this particular error to pass back a new pointer to a string, but UNIX iODBC headers only allow a Const pointer in the SQLError prototype, and the new string is not returned. This applies only to this particular type of error, as other errors copy string to the application buffer properly.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN381
Summary: Prevent possible access violation on logging buffer overrun
Description:
Logging could encounter a buffer overrun when appending on the null character for the end of a string. This has been corrected.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN389
Summary: Fix for #Deleted problem in Access when using numeric column as primary key
Description:
Access does not handle numeric primary keys in a consistent way when comparing their values. Normally Access will perform an internal comparison on the first ten primary keys and if it does not match their internal representation they return a #Deleted for a given row. Our driver consistently formats Numeric data converted to SQL_C_CHAR or SQL_C_WCHAR as 0.00 if the scale is 2, whereas SQLServer returns the same data as .00. While returning .00 will fix the Access #deleted issue, it should only be done for the value 0, as SQLServer does not handle negative numbers in Access, but our convention of returning a leading zero before the decimal place works in Access. Why Access considers 0.00 to be different than 0 or .00 appears to be a bug unique to Access. The driver will provide a work around by returning ".00" rather than "0.00". While this is a slight formatting change only for the 0 value, it seems a better alternative which allows the use of numeric primary keys in Access.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN391
Summary: Poor error message if ODBC DSN contains invalid namespace
Description:
Added "Invalid Namespace" message for 410 errors.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN393
Summary: Eliminated Memory Leak with Streams and ADO
Description:
Previously, inserting streams into Caché caused a memory leak. This change corrects it.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: Windows
DevKey: JLC464
Summary: Use correct error macros on Windows
Description:
On very rare circumstances, the wrong OS-level error code may have been logged on Windows platforms when a system error occurred.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: AIX
DevKey: JLC467
Summary: Correct overflow in handling OS files limits on 64 bit AIX
Description:
Make the file limits check work appropriately on 64-bit AIX.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: OpenVMS
DevKey: JLC468
Summary: Correct handling of file sizes in a certain narrow range on OpenVMS
Description:
A problem involving files size calculation with inadequate precision has been corrected.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: Windows, Tru64
DevKey: JLC484
Summary: Startup code could fail in rare circumstances when over 4 GB of global buffers were configured
Description:
Corrected a problem with offsets into a 4GB+ buffer pool being truncated to 32 bits.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: OpenVMS
DevKey: JLC485
Summary: On OpenVMS, when we cannot allocate as much memory as initially requested but are successful allocating a smaller number, the system still reports the initial value
Description:
For OpenVMS when we fail to get the requested amount of resident memory there's a loop that reduces the allocation request and retries until we hit some minimum. This loop works fine but it never recalculates the # of global buffers we actually have. This has been fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: Object.ActiveX
Platforms: All
DevKey: JN088
Summary: Objects deleted prematurely when ResultSet used with .NET
Description:
Customer was experiencing null object exceptions with .Net. The problem was due to our implementation of ResultSet deleting an object rather than decrementing a reference count. This has been fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Object.ActiveX
Platforms: All
DevKey: JN089
Summary: Make Factory.SetOutput() work with .Net
Description:
The Factory.SetOutput() method would not work with .Net. Output from Caché would not be sent to the TextBox or other UI Control. This now works for .Net Factory.SetOutput(TextBox1)

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.DDL
Platforms: All
DevKey: JN090
Summary: CREATE PROCEDURE argument length omitted in Studio
Description:
There was a typo, introduced a while back when a compiler optimization bug was fixed preventing correct parsing of parameterized types in query and method arguments. This has been fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Cube
Platforms: Windows
DevKey: JO1654
Summary: The Caché service on Windows no longer wakes up to gather statistics
Description:
Since the system viewer is no longer available, there is no reason for the system service to wake up to gather these.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: System.Backup/Restore
Platforms: All
DevKey: JO1661
Summary: Correct a problem whereby a user would sometimes be forced to do a full backup when an incremental backup should have been an option
Description:
There were occasions where internal flags that controlled whether the next backup would be incremental we incorrectly so. This meant that the next backup HAD TO BE a full backup. No data could be lost but operations may have been adversely affected (since full backups require more time than incremental).

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: System
Platforms: All
DevKey: JO1662
Summary: Correct a situation where very short waits (less than 100 mSec) could sometimes result in no wait at all (platform dependent)
Description:
This is mostly an internal change but the effects may have been seen in a number of places.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1665
Summary: Fix a race condition on Caché clusters
Description:
This fixes a race condition on Caché clusters between updating the available block information on disk and in memory when doing a database expansion.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1668
Summary: Fix false <FILEFULL> in cluster mounted 2kb database
Description:
This resolves a rare case in which a false <FILEFULL> error could occur in a 2-KB formatted cluster-mounted database. This is difficult to reproduce and requires extremely high rates of database updates across multiple cluster nodes. The expansion now waits for updates from other nodes and retries the expansion many times before reporting <FILEFULL>.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: System
Platforms: OpenVMS
DevKey: JO1671
Summary: Fix big buffer pool allocation on OpenVMS & test global buffer allocation in mcominit
Description:
The calculations for the # of bytes in the buffer pool on OpenVMS were incorrect. This has been fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: OpenVMS
DevKey: JO1672
Summary: Update # of global buffers when we reduce resident memory allocation
Description:
For OpenVMS, when we fail to get the requested amount of resident memory there's a loop that reduces the allocation request and retries until we hit some minimum. This now correctly recalculates the # of global buffers we actually have.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: JO1673
Summary: Change reserved block alloc/dealloc code to skip bad maps, not abort
Description:
The code which reserves blocks in the database now skips erroneous map entries rather than aborting.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1674
Summary: Fix expansion daemon so it runs if another process needs it during cluster failover
Description:
This improves the expansion daemon operation by allowing it to run during cluster failover if it is needed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: System
Platforms: OpenVMS
DevKey: JO1675
Summary: Don't skip processes that return SS$_SUSPENDED in $GETJPI from cforce on OpenVMS
Description:
We changed the logic of forcing jobs to terminate to include those jobs that are suspended or unresponsive. Previously, forcing CACHE down may have skipped certain processes. This would mean that not all shared memory was freed which would lead to problems on restart, requiring a second force.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: JO1676
Summary: Set wdstop when any write daemon exits
Description:
If a write daemon exits databases modifications will be suspended. CFORCE will have to be used to shut down the system in this situation. Note that certain circumstances cannot be caught for example KILL -9 on UNIX.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: Tru64
DevKey: JO1680
Summary: Use NANOSLEEP instead of select() for timed sleeps on HP-UX
Description:
This is a performance improvement on very, very busy systems.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: System
Platforms: HP-UX
DevKey: JO1681
Summary: Adjust spinloop counters on HP-UX
Description:
This is a performance improvement on very, very busy systems.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: System
Platforms: All
DevKey: JO1683
Summary: Fix exception allocating more than 2^31 bytes of global bdb's
Description:
A problem has been resolved which caused exceptions during startup trying to allocate a global buffer pool larger than approximately 32GB.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: Tru64, OpenVMS
DevKey: JO1688
Summary: Change code that sets jobtype not to use OR except for APPMODE flag & don't set APPMODE for ENQDMN
Description:
The ENQDMN processes, on OpenVMS and Tru64 clusters, were categorized with the job type of Application Mode rather than System Process. This led to confusing display in JOBEXAM.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: System.Journaling
Platforms: All
DevKey: JO1689
Summary: Changed journaling to avoid incorrect exits
Description:
Journaling was changed to eliminate a situation where it could erroneously exit while in the middle of global operations leaving systems resources locked.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Networking
Platforms: All
DevKey: JO1690
Summary: Correct problem with ECP application server restart
Description:
In certain circumstances, the connection could not be reestablished or other errors may be reported.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1691
Summary: Correct problem with cluster failover when switch 13 or 14 was set
Description:
A problem where cluster failover would be blocked if a process had set switch 13 or 14 on the cluster master has been resolved. Previously cluster failover would get "stuck" during the journal recovery phases and the cluster would need to be forced down and restarted.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1003
Summary: Return early from errors
Description:
If generating file (in a multi-file generate) had errors, we continued to generate code for other files. We returned the bad generation in a status. Now we will cease generation. Error will be returned immediately. There is a trade-off here. In some ways continuing to generate code for files was desirable. Now customer must fix all errors before he gets generated code.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
No No Low Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL1013
Summary: Allow DATASOURCENAME to override data source name in bean implementation
Description:
There is a class parameter DATASOURCENAME. DATASOURCENAME can be used to override the data source name in the bean implementation. For instance, Parameter DATASOURCENAME="jdbc/common"; in the class results in the following line being generated in bean implementation: String dataSource = "java:/comp/env/jdbc/common";

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL1015
Summary: Fix problem in creating and using finder extensions in EJB
Description:
To support programming finders and other extensions to our generated EJB interface, this change form introduces the notion of extensions. The basic idea is the following approach to adding a finder.
  1. Extend the generated bean implementation. ejb-jar.xml will point to this extension as the bean implementation and the extended home and home local interfaces. The extension will have the implementation of the finder.
  2. Have an extended home interface (and home local interfaces) that extends the normal home interface. The extended home interface will contain the finder prototype.
In this DevChange we augment the EJB Wizard to allow it to automatically generate support for such extensions. We introduce a new class parameter:
   EXTENSIONPREFIX
When this is set we change the generated code in the following way. For the discussion, let's say the name of the persistent class from which the entity bean is being generated is Package.Class. Let's say the EXTENSIONPREFIX is Ext. In ejb-jar.xml, the <EJB-CLASS> is pointed to the extension. The name of the extension is Package.EJBExt_Class_Bean. For example, for Sample.Person the name of the normally generated bean implementation is Sample.EJBPerson_Bean and the name of the extension (to which ejb-class refers) is Sample.EJBExt_Person_Bean. In ejb-jar.xml, <LOCAL-HOME> points to ISC.EJBExt_Class_Home_Local. In ejb-jar.xml <LOCAL> points to ISC.EJBRegression_Local. Into these extensions one can put one's finder. We generate extensions Package.EJBExt_Class_Home.java and PackageEJBExt_Home_Local.java. Into these extensions one can put the prototype for one's finder. We also automatically generate "stubs" for these extensions if one sets the following class parameter
   EXTENSIONGENON
In this case we automatically generate stubs for Package.EJBExt_Class_Bean.java, Package.EJBExt_Class.java and PackageExt_Class_Home.java. In development, one would first turn EXTENSIONGEN on and then turn it off once one has stubs to use. Here is an example of defining these parameters in a class.
Class ISC.Regression Extends %Persistent [ ClassType = persistent ]
{


    Parameter EXTENSIONPREFIX = "Ext";
    Parameter EXTENSIONGENON=1;

    etc.,

}
Here is an example of the generated home interface:
public interface EJBRegression_Home
     extends javax.ejb.EJBHome,ISC.EJBExt_Regression_Home
With EXTENSIONGENON set to a non-zero value, we generate a stub for the ISC.EJBExt_Regression_Home interface. After this stub is generated one can place one's finder there and then turn off EXTENSIONGENON. Now one can regenerate EJB code and one's extension will still be there and be operative, so one's finder can accessed by EJB even after code regeneration. Note that the extension to our generated bean can call getConnection in the bean implementation to get the data source that can be passed to JDBC function calls.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL1016
Summary: Fix dataSource name
Description:
The dataSource name in EJB has been corrected. There shouldn't be a slash after the colon.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL1017
Summary: Produce code that compiles even when ROWID renamed
Description:
We generate value.getID() for ROWID accessor but this may not be correct if ROWID has been defined to have a different name. This is now fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1018
Summary: Allow Session Bean generation when PERSISTENCETYPE="CMP"
Description:
When PERSISTENCETYPE="CMP", a <PROPERTY DOES NOT EXIST> error occurs. This has been corrected.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1021
Summary: Eliminate duplicate entries from remote interface
Description:
For primitives we used to export to the remote interface get_XXX and getXXX and set_XXX and getXXX which did the same thing. Now we only export get_XXX and set_XXX.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL1023
Summary: Correct JBoss connection leak
Description:
Previously, we consumed connections in the JBoss connection pool every time we got the children of a many-one relationship. This turns out to be an adverse interaction with JBoss. Our work-around is to close the connection (used for the select) before doing a find of entity beans.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Object.Java
Platforms: All
DevKey: JSL1024
Summary: Allow Caché' host and port to be configurable in EJB configuration
Description:
We introduced new projection parameters CACHEHOST and CACHEPORT which allow the host and port of the EJB projection to be configured. The host and port are used by the JDBC driver configuration to connect to Caché. Host is a standard host name: it can be a DNS name like foobar.mydomain.com or it can be a dotted decimal name like 192.168.1.105. The default is host of 127.0.0.1 and port of 1972.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL1025
Summary: Fix calculation of supers in Java binding
Description:
We have fixed the calculation of superclass names so that it functions correctly.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1028
Summary: Make generation of special method exists(db,oid) depend on persistency of super not persistency of class
Description:
We generate a special methods exists(db,oid) when a class is persistent. However, a class can be persistent either because its super is persistent or because classes to the right of left-most super are persistent. In latter case, this special method won't compile because it invokes methods on the persistent class which the class does not extend. We changed this to look at left-most superclass. The only special method affected in this case is exists(db,oid)
   public static boolean exists (Database db, Oid oid)
      throws CachéException {
This does not affect any existing customer code. Customers who had generated code that had this happen and met these special conditions would be generating Java code that does not compile. So this change does not affect any Java code that currently compiles.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1030
Summary: When invalid SERVERTYPE display invalid server message
Description:
In EJBFlags.Validate, if the SERVERTYPE value is invalid, an invalid server message is generated.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1032
Summary: Get accessors are not const when they are overridden
Description:
When a get method is overridden, the C++ generator generates code that does not compile because the methods called are not const and cannot be called from const method.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1034
Summary: Don't allow CMP generation unless primary key
Description:
If there are no primary keys on a class, quit with an error when doing CMP generation.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1042
Summary: Fix potential problem in constraint names in EJB binding
Description:
We named the finder findBy<CONSTRAINT_NAME> but Constraint_Name is the SQL name and can contain non-Java acceptable characters. We now use Constraint_Object_Name which is Java compatible.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1043
Summary: Remove <distributable> from web.xml and make test servlet work with JBoss and Jetty
Description:
We used to generate the <DISTRIBUTABLE> element.
   <DISTRIBUTABLE></DISTRIBUTABLE>
The distributable element, by its presence in a web application deployment descriptor, indicates that this web application is programmed appropriately to be deployed into a distributed servlet container. We removed this since it causes problems with JBoss and Jetty. The book Professional Java Server Programming J2EE Edition by Wrox Press has a discussions on pages 406 and 472 of "Distributable Applications" regarding the requirements of writing a distributable application. The requirement is that all attributes we set in HttpSession are serializable. In the case of our generated Sample servlet, all session attributes are strings, in fact a single string containing the id. Strings are serializable so we meet the requirement to be distributable. Even though we are distributable we take out the generation of this attribute and the customer can add it to web.xml.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1044
Summary: Remove debug statements from EJB Wizard
Description:
This changes removes debugging code that was inadvertently left in the released version.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1045
Summary: Close quick statement in EJB callbacks
Description:
QuickStatement uses resources on the server side that must be released. The JDBC driver frees these resources when close is called. The EJB Wizard now generates code that calls close in the EJB callbacks when they are through using QuickStatement.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1054
Summary: Let the App Server control concurrency
Description:
We introduce a new projection parameter APPSERVERCONTROLSCONCURRENCY. The default is zero. When it is set to 1 the App Server controls concurrency and QuickLoads act like SELECTS and QuickStores acts like UPDATES. When it is off (0 the default) QuickLoad acts like a "SELECT FOR UPDATE." If one wants the JDBC isolation levels to be honored one must set APPSERVERCONTROLSCONCURRENCY to 1. Otherwise, ejbLoad does a QuickLoad which acts like a "SELECT FOR UPDATE" and does row level locking.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL1055
Summary: Added Support in the CLASSPATH Variable for JBoss 3.0.6
Description:
Previously, compiling with JBoss failed, due to a new version of that product having moved a .jar file. The CLASSPATH variable now accounts for this change.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1056
Summary: Add TransactionIsolation parameter to EJB projection
Description:
This change allows an answer to the question: should the App Server or Database control concurrency? 0 - an ejbLoad acts like a SELECT FOR UPDATE and Database controls concurrency 1 - an ejbLoad acts like a SELECT and App Server Controls concurrency and you use TRANSACTIONCONTROL parameter to set isolation level
     Parameter APPSERVERCONTROLSCONCURRENCY = 0;
Transaction isolationlevel TRANSACTION_READ_COMMITTED (default) or TRANSACTION_READ_UNCOMMITTED (dirty read) or TRANSACTION_NONE
     Parameter TRANSACTIONISOLATION = "TRANSACTION_READ_COMMITTED";
Transaction isolation is still a meaningful parameter when APPSERVERCONTROLSCONCURRENCY is 0 and it interacts in some ways with ejbLoad acting like a SELECT FOR UPDATE. IMPORTANT NOTE: This parameter is not supported in Pramati.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL1057
Summary: Removed TRANSACTION_NONE from Supported Transaction Types
Description:
Previously, we used TRANSACTIONCONTROL when it meant TRANSACTIONISOLATION in projection parameter documentation for APPSERVERCONTROLSCONCURRENCY. Also, TRANSACTION_NONE is not a valid value for our JDBC driver transaction isolation.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1060
Summary: Addressed Various Issues with the Java Projection
Description:
We now use REFERENCE which might be SQLUser.Osoba instead of REFERENCE_CLASS which is User.Osoba.

We now project a class name rather than a table name.

We now load children of one-many or one-one relationships does not compile.

Qs is now closed before loading related data to get around JBoss bug.

An error message generated from bad transaction isolation has been eliminated.


Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java, EJB
Platforms: All
DevKey: JSL1062
Summary: Guard EJB projection against invalid parameters
Description:
When projections are defined on top of EJB projections using inheritance they can work incorrectly. The problem happens when a projection and a class that uses the projection is in the same project. The parameters array passed to the projection ends up having bad values.
This change guards against that.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL1064
Summary: Improve error message when Class in ClassList is not persistent
Description:
An ambiguous error is reported when an EJB projection with a relationship is generated:
   ERROR #6609: ClassList must contain only Persistent classes
This has been corrected by improving the Caché ObjectScript compiler to handle this situation properly.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL962
Summary: Project stored procedure methods in Language bindings
Description:
When a method is marked as a sqlproc we now project it. We used to exclude its projection.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL969
Summary: Fix Java binding file names
Description:
For package names that began with % the wrong file name would be generated unless the class name was of the form %Library.ClassName.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL970
Summary: Process Output parameters properly
Description:
If a parameter was marked as output it was not processed properly. For instance, Output Arg As %String Or *arg:%String &arg is processed properly.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL985
Summary: getConnection needs to be protected not private
Description:
Having getConnection be protected not private allows the entity bean we generate to be extended to provide things like finder methods.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL986
Summary: Allow datasource to be looked up from environment
Description:
Currently we directly point at JNDI name of datasource. With this change we go through environment for datasource which allows application programmer to employ indirection. If The Namespace name is <NS> the entity bean will use java:/comp/env/<NS>Database for the JNDI lookup of datasource.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL989
Summary: Support generating of extensions that are used for things like finders
Description:
To support programming finders and other extensions to our generated EJB interface, this change form introduces the notion of extensions. The basic idea is the following approach to adding a finder.
  1. Extend the generated bean implementation. ejb-jar.xml will point to this extension as the bean implementation. The extension will have the implementation of the finder.
  2. Have the home interface extend an interface that contains the finder. Since an interface can extend multiple interfaces, this allows the home interface of the bean to have the finder prototype and announce to EJB that the finder is defined.
In this DevChange we augment the EJB Wizard to allow it to automatically generate support for such extensions. We introduce a new class parameter:
EXTENSIONPREFIX
When this is set we change the generated code in the following way: In the discussion, let's say the name of the persistent class from which the entity bean is being generated is Package.Class. Let's say the EXTENSIONPREFIX is Ext.
  1. In ejb-jar.xml, the <EJB-CLASS> is pointed to the extension. The name of the extension is Package.EJBExt_Class_Bean. For example, for Sample.Person the name of the normally generated bean implementation is Sample.EJBPerson_Bean and the name of the extension (to which ejb-class refers) is Sample.EJBExt_Person_Bean.
    Into this extension one can put one's finder
  2. The generated remote, local, home, and local_home interfaces all extend
    1. Package.EJBExt_Class, and
    2. Package.EJBExt_Class_Home respectively
Into these extensions one can put the prototype for one's finder. We also automatically generate "stubs" for these extensions if one sets the following class parameter
     EXTENSIONGENON
In this case we automatically generate stubs for Package.EJBExt_Class_Bean.java, Package.EJBExt_Class.java and PackageExt_Class_Home.java. In development, one would first turn EXTENSIONGEN on and then turn it off once one has stubs to use. Here is an example of defining these parameters in a class.
Class ISC.Regression Extends %Persistent [ ClassType = persistent ]
{

    Parameter EXTENSIONPREFIX = "Ext";
    Parameter EXTENSIONGENON=1;

    etc.,

}
Here is an example of the generated home interface:
public interface EJBRegression_Home extends javax.ejb.EJBHome,ISC.EJBExt_Regression_Home
With EXTENSIONGENON set to a non-zero value, we generate a stub for the ISC.EJBExt_Regression_Home interface. After this stub is generated one can place one's finder there and then turn off EXTENSIONGENON. Now one can regenerate EJB code and one's extension will still be there and be operative, so one's finder can accessed by EJB even after code regeneration.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Java
Platforms: All
DevKey: JSL992
Summary: Call methods in property accessors when overridden set or get
Description:
If the programmer/user overrides the set or get method of a property that is a collection, serial or reference we do NOT generate the correct code for Java or C++. At this point we can't because the class compiler has ambiguous information about the situation. The problem is that the class compiler generates a special stub method for such setters. The generator sees the stub but that is the wrong stub to project to Java; projecting that stub leads to nonsense. With this change we support in 5.1 and 5.0.1, the projection of the overridden get/set methods for datatypes. This does not work for non-datatypes such as reference, serial or collection.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL994
Summary: Fix JSL992 handling of calculated properties in the C++ binding
Description:
Calculated properties don't go through generated user method in the C++ binding, C++ has special processing for them. In the Java binding, they do go through generated user method.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL995
Summary: Check if property exists before checking if calculated
Description:
We noticed a situation in which getClassMethods failed. The problem was that in certain circumstances it returned a <SUBSCRIPT> error because we checked to see if a property is calculated when the property did not exist. This happens because in C++ we don't generate a method if it is method that corresponds to calculated Get. We now guard against several cases: 1) don't run check if method name is less than 4 characters 2) don't run check unless method is of form XXXGet 3) don't run check if inferred property name XXX is name of non-existent property

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: JSL996
Summary: Guard against null DefaultArgs
Description:
getClassMethods will fail if DefaultArgs is null. Here is an example of the error:
USER>s res=##class(%CPPStoredProc).getClassMethods(1,"ISC.Override")

 . . s DefaultArg=$LI(DefaultArgs,i)
     ^
<NULL VALUE>zgetClassMethods2+42^%ooLibrary.CPPStoredProc.1
U
Previously, the C++ binding would simply fail with "method not found" errors.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: All
DevKey: LFT1073
Summary: $ZU(158) function call failing on Caché 5 Unicode
Description:
On Unicode systems enumerating Windows printers would show only the first letter of the name. This is now fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: System
Platforms: All
DevKey: LFT1076
Summary: Corrected JOBEXAM / Control Panel TCP read data corruption
Description:
JOBEXAM (or %SS or Control Panel process view) could corrupt local variables of processes doing a TCP read. This is fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low Yes No

 



Category: CSP
Platforms: UNIX, OpenVMS
DevKey: LRS648
Summary: Fix/enhance UNIX and OpenVMS file renaming using $zu(140,6)
Description:
Copying or renaming files in the operating system, using %Library.File.CopyFile for example, now works correctly.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: NLS
Platforms: All
DevKey: LRS649
Summary: Fix a NLS data calculations
Description:
On systems with very large buffer pools, certain offsets were not computed correctly in the NLS utilities.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Installation
Platforms: All
DevKey: LRS657
Summary: Fix installation recompile hang
Description:
During install, recompilation of routines in a database containing no routines may hang.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: System
Platforms: OpenVMS
DevKey: LRS666
Summary: Fix Callin/Callout interfaces for 32-bit pointers on OpenVMS
Description:
Ensure callin-callout on VMS conforms to 32 bit calling standards, even though internally Caché on VMS now uses 64 bit addressing.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No Yes

 



Category: System.I/O
Platforms: All
DevKey: LRS669
Summary: Fix timeout bug in LAT device open (ttyopenlat)
Description:
This fixes a problem where an oOpen of reverse |LAT| does not time out when lat.exe is not running.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Object.Java
Platforms: All
DevKey: MAB112
Summary: Support for projection of queries in generated Java classes
Description:
Added a constructor to com.intersys.objects.CachéQuery class, which is intended to be used from generated classes.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB118
Summary: Added SQLProcContext class to Java Binding client
Description:
Added SQLProcContext class to Java Binding client, so sql stored procedures which use it can be projected.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB119
Summary: The same SQL normalization for JDBC and ODBC preparser
Description:
Changed JDBC preparser to use the same normalization as ODBC preparser.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB120
Summary: Conversion of pseudo-ASCII bytes in setAsciiStream according to default locale
Description:
If bytes higher than 127 are encountered in the stream used in setAsciiStream, they are converted to characters using default locale and to UTF-8 after that.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB124
Summary: Enhancement for building Java client Documentation
Description:
Removed non-public methods from JavaDoc documentation; added window title to all JavaDoc windows; and added Document Header to Overview.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB126
Summary: Correct transformation from LONGVARCHAR with getString()
Description:
CachéResultSet and CachéCallableStatement incorrectly transformed LONGVARCHAR columns when used with getString if the value was undefined in the default locale. This should be now fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB134
Summary: Fixed bug with Iterator.remove() in Caché Array
Description:
Fixed bug that Iterator.remove() method for Caché Arrays removed the next element instead of current.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low Yes No

 



Category: Object.Java
Platforms: All
DevKey: MAB135
Summary: Added ability to initialize Java Binding using wrapper connection from App Server
Description:
Before this change java.sql.Connection object passed com.intersys.objects.CachéDatabase.getDatabase(Connection) method had to be instance of com.intersys.jdbc.CachéConnection. Now it can be a wrapper object obtained from an Application Server, provided it wraps com.intersys.jdbc.CachéConnection.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB142
Summary: Improvements in LightDatabase
Description:
We fixed a few issues with LightDatabase:
  1. Now collections of serial objects should work read/write regardless of their storage.
  2. If an object to be opened has a different class than the one that called open we instantiate a Java object of the right class.
Also fixed a bug with setting null as a collection property. Backported Stream generation in quick to 5.0.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB143
Summary: Fix for empty array not listening to server updates
Description:
There was a bug that an empty array did not listen to server updates. For example adding an element to an empty array on server side was not reflected on the client. This change fixes the issue.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB145
Summary: Fixed counting characters/bytes when using getUnicodeStream from JDBC
Description:
This includes changes to jdbc.CachéInputStream/CachéReader to repeat fetch until either end of stream is reached or requested number of units is received. It also fixed counting characters/bytes when using getUnicodeStream.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB146
Summary: %TimeStamp with milliseconds throws Exception
Description:
If a java class with a %TIMESTAMP property is generated with Projection, and it uses the method getPropertyName to get the value of the field, this works only if no milliseconds are saved in Caché. If the Property has milliseconds the exception java.lang.numberFormatException: For input string: "1.0000000" occurs.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: SQL.JDBC
Platforms: All
DevKey: MAB151
Summary: PreparedStatement.setAsciiStream() does not convert chars to Unicode
Description:
In case when Caché server is 8-bit and it's encoding does not match client encoding and client attempts to send a character, that is not supported by server encoding, the exception is raised now. Previously client would hang.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB160
Summary: constructClone failing
Description:
%ConstructClone is now instance method, not a class method, and has been deprecated. The new instance method is called constructClone() without underscore.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB161
Summary: Incorrect Java binding for Lists containing Japanese characters
Description:
In the Java binding, when a string property of List type includes Japanese characters, the value is sent erroneously to Java client. The Japanese characters are being translated incorrectly. This has been fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low Yes No

 



Category: Object.Java
Platforms: All
DevKey: MAB162
Summary: Java ArrayOfDataTypes etc iterator.remove()
Description:
There was an error deleting the last element of Array using method Iterator.remove(). The issue is fixed now.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Java
Platforms: All
DevKey: MAB163
Summary: Saving Non-ASCII Characters Using Light Java Binding
Description:
An error that caused losing Unicode information when saving non-ASCII strings using Light java Binding is now fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Library
Platforms: All
DevKey: MAK600
Summary: %Net.HttpRequest object now reads in correct charset
Description:
The %Net.HttpRequest class when reading from the web server would read in as much data as it could in one go. This meant that if the headers told it to switch charset to say iso-8859-1 then it had already read on most of the body of the message in utf-8 (as this is the charset is reads the headers in) and so even though it switched charset tables this did not effect data already read into the buffer. Now it reads the headers line by line and switches charset when it gets to the body of the message so it will use the proper charset. In addition we have added a ReadRawMode property to the HttpRequest object which if true will force the read of the body of the response in RAW or untranslated mode rather than using the charset specified in the headers. There is also a property ResponseStream which if set to a stream object will use this stream to store the body of the response rather than constructing a stream itself. This can be used to make the HttpRequest enter the response into a file stream rather than a global stream for example.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: MAK615
Summary: Find in Files does not find items in CSR files
Description:
Searching for *.csr in the FindInFiles item in Studio was not finding any hits because it failed to open the CSR files to look for possible matches. It now does.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Library
Platforms: All
DevKey: MAK618
Summary: %Net.HttpRequest object not encoding form data in correct charset
Description:
Form data inserted into the %Net.HttpRequest it URL encoded when it is sent to the server. However if the page it is posted to is encoded in say utf-8 then once it has URL decoded these values it also converts it from utf-8 into the internal format. The %Net.HttpRequest class was not encoding the value in the correct charset before URL encoding the data and so posting non ASCII characters did not work correctly. This is fixed now. Also issuing a Get/Post/Head would had the side effect of changing the charset of the current device to RAW mode. It now leaves the charset of the current device unchanged.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Utilities
Platforms: All
DevKey: MAK620
Summary: MSM-Activate did not work against Unicode Caché server
Description:
MSM-Activate did not allow Unicode data to be passed to a Unicode Caché server. It worked fine with 8bit data, but although this was supported by the Unicode MSM server this code was never ported to the Caché MSM-Activate server code. Now it correctly utf-8 encodes the data being sent as it does against a Unicode MSM server.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Medium Low No No

 



Category: Studio
Platforms: All
DevKey: MAK625
Summary: Importing a CSP page fails
Description:
If you ask to load a CSP page from a file the load functions in Caché now handle this case properly. Before loading a CSP page from a file was never supported and only loading a CSP page from another local URL was allowed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK626
Summary: Support object generators for datatype methods
Description:
Methods of a class can be object generators which is an object oriented way to create the method code on the fly. However you could not write a datatype method as an object generator method because this was not implemented, it is now fully supported.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Studio
Platforms: All
DevKey: MAK627
Summary: Fix problem sorting classes by size in Studio
Description:
Sorting classes by size in Studio reported an UNDEFINED error at zgetClassList+45^%ooLibrary.RoutineMgr.1

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: Studio
Platforms: All
DevKey: MAK630
Summary: Unselected classes deleted in open dialog
Description:
If in Studio you right click on a package and select Delete and there was a class with the same name as the package then this class would be deleted as well as the classes inside the package. This was caused by GetPackageList returning this class in addition to the classes inside the package. This class is not inside this package and so is returned in error. Now the GetPackageList does not return this class which fixes the Delete package problem.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: CSP.Samples
Platforms: HP
DevKey: MAK631
Summary: ClassLogo.jpg not shown in StreamServe.csp on HP
Description:
The encryption function in CSP could return a value with a space in which it should not do. This prevented the decryption from working which is the reason the stream server example page does not work on this platform. This is fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: CSP
Platforms: All
DevKey: MAK637
Summary: When importing CSP files if no /csp/namespace pick first app that is defined in this namespace
Description:
When importing CSP files if the application does not match because it came from another namespace but there was a '/csp/namespace' application defined for the current namespace it was imported there. This is now extended so even if there is no '/csp/namespace' it will pick the first alphabetically collating application that maps to this namespace.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: CSP
Platforms: All
DevKey: MAK638
Summary: Prevent SUBSCRIPT errors in CSPNormalizeURL^%cspServer
Description:
The function that normalizes a URL did not take into account that the string it is normalizing could be very large and so when it attempts to create a cache of these values by setting this URL into a subscript of a global it may get a SUBSCIPRT error because the string is too big. To avoid this we altered the cache so it is only set and checked if the string is small enough.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: CSP
Platforms: All
DevKey: MAK643
Summary: OnTimeout trigger is not called for state-aware sessions
Description:
When a Preserve=1 session times out in CSP the session event class OnTimeout method was not being called. It was only called for Preserve=0 sessions, this fix makes it behave consistently for both Preserve=0 and Preserve=1 sessions. Note that the OnEndSession method was being called correctly in both cases.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No No

 



Category: CSP
Platforms: All
DevKey: MAK645
Summary: ..Link() not working as designed
Description:
When you include another page with the <CSP:INCLUDE> tag or the ..Include method the %request.URL and %request.PageName in the included page were set to the name of the included page. However they should be kept at the name of the calling page otherwise ..Link calls will not work because they will not pick up the correct page name. Also by keeping the %request.URL the calling page the include page can find out who is calling it.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
Low Low No Yes

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK646
Summary: Invalid code generated if last line of procedure block method is a #define
Description:
If you define a method in Studio:
  	method Test()
	{
		#define A 1
	}
When this is compiled it was generating the code:
zTest(%this) public {
And it never closed this procedure block. This is because the macro processor did not detect the end of the procedure block on the line that was passed to it, '#define A 1 }' and it swallowed the entire line. Now we put the '}' on a separate line in this case to avoid this problem.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Studio
Platforms: All
DevKey: MAK647
Summary: Studio imported class when told not to
Description:
The Load function has a flag that tells it to just find a list of the items in the file but not load anything. However if you loaded a class from an XML file and passed this flag it would still alter the sequence numbers stored in the class definition, this is now fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK648
Summary: Do not add transient streams to save set in a deep save
Description:
If you have a persistent object which has a property that is transient and points to another persistent object and you start a deep save on the main object then even though the property is marked as transient and so it is not saved as part of the main objects saved data it still adds the related object to the save set. This can cause the related object to serialize itself to disk which may be unexpected. This is particularly an issue when the property is a stream as the stream should be treated like a literal value and so if a stream property is marked as transient then the stream object should not be added to the save set. Caché now does this so transient streams are not added to the save set in a deep save.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Studio
Platforms: All
DevKey: MAK651
Summary: SourceControl: Trigger OnAfterSave not fired sometimes
Description:
The detection of when a class was modified was not correct in the backup logic. This prevented the OnAfterSave method from being fired when the name of an element was changed such as the name of a method. If the method body was changed then it was fired correctly. Now we always fire the OnAfterSave method when saving a class from Studio.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.Class Compiler
Platforms: OpenVMS
DevKey: MAK660
Summary: Problem with XML schema validation on class import on OpenVMS
Description:
You could not import a XML version of a class on OpenVMS and validate it against the schema because the directory to the schema was not calculated correctly on this platform. This is fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Studio
Platforms: All
DevKey: MAK662
Summary: Studio becomes confused by 3rd line of INT
Description:
Make detections of an INT routine that is generated by a class compile smarter to prevent a case where it thought an INT was created by a class when it was not and it attempted to recreate the class descriptor which lead to an error message that was not valid.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Studio
Platforms: All
DevKey: MAK666
Summary: Exporting a class behaves differently when done remote vs local
Description:
Exporting a class as a CDL file on the remote machine also exports related classes but exporting it on the local machine does not. Now both only export the class you ask for.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: CSP.Net
Platforms: All
DevKey: MAK672
Summary: Function errors using %Net.HttpRequest in a job process
Description:
If you jobbed off a process so the current device was the null device and then it issues an %Net.HttpRequest, it would fail with a FUNCTION error because it is attempting to obtain the translation mode on the current device. But this is the null device.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Studio
Platforms: All
DevKey: MAK676
Summary: In the example source control class allow people to create new items
Description:
The example source control class was not allowing people to create a new routine/class as it claimed they were locked. This is fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Studio
Platforms: OpenVMS
DevKey: MAK692
Summary: Get Error #5019 when deleting CSP page
Description:
The ##class(%File).Delete(filename) command would not work on OpenVMS unless you specified a version to delete. This now adds ';*' to delete all versions if there is no version explicitly defined in the filename.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object
Platforms: All
DevKey: MC347
Summary: Deal with network directory name correctly in %File:CreateDirectoryChain()
Description:
%File:CreateDirectoryChain("\\mymachine\dir1\dir2\")
now works properly.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT218
Summary: Fix parameter setting
Description:
In some cases there was memory corruption because parameter length was interpreted as negative (signed/unsigned discrepancy). This is now fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT229
Summary: Select count not working
Description:
The problem was that count ( * ) was for some reason unsupported in MySQL. It was changed to count(*).

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT231
Summary: Do not close cursor if an error occurred
Description:
The cursor for external queries (SQL gateway) does not get closed if a fetch returns non-zero in SQLCODE.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT234
Summary: Selecting on generated Caché ID field fails when it is a complex key in SQL Server
Description:
When we issue a select statement that contains the generated Caché ID field, the ID field is just replaced by the primary key. In the case of a simple primary key, this is just simple replacement, however in the case of a complex key, this is expressed as a concatenation of the properties that make up the primary key. This is done by using the SQL concatenation operator (||). So, in the case of a LOOKUP table, when you issue a statement:
Select ID from LOOKUP
in Caché, we must translate that to:
Select LK_TYPE||LK_Code from Lookup
to be sent to the MS Access database via ODBC. The problem is that MSAcess does not support the standard SQL concatenation operator. If you were to try the statement in MS Access (i tried this) you would get an error detailed by an unsupported use of '||'. The way to work-around this while still maintaining a standard call is to utilize the SQL concat function.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT236
Summary: "Undefined list element " error when linking a table
Description:
When testing Link table with Oracle and MySQL tables that have no schemas, you can not link those tables. You can see a list of tables in the Table window, but moving to the next window, Properties, results in an Undefined list element error. Link table now works again with tables with empty schemas.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.XML
Platforms: All
DevKey: MXT373
Summary: Add limited XMLImport method for %XML.DataSet
Description:
Implement XMLImport method of %XML.DataSet. Support for this is still limited, however. See the XMLImport method description for usage and example.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.XML
Platforms: All
DevKey: MXT376
Summary: Support RuntimeMode property of %XML.DataSet
Description:
%XML.DataSet support the RuntimeMode property that is inherited from %ResultSet. The default is 1 for ODBC. RuntimeMode = 0 is LOGICAL mode and = 2 is DISPLAY.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.Soap
Platforms: All
DevKey: MXT378
Summary: Initial fix for non-ASCII characters in SOAP response
Description:
Fix Xerces parser error when SOAP response contains non-ASCII characters.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowMediumNoYes

 



Category: Object.Soap
Platforms: All
DevKey: MXT379
Summary: Fix parseFormal^%occName not initializing return argument
Description:
Need to initialize each node of return argument from parseFormal. Otherwise, byref flag may be reused from previous argument.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.Soap
Platforms: All
DevKey: MXT381
Summary: Resolve short class names in web method arguments
Description:
This fixes a bug where class names without packages in web method argument lists caused compile errors for Web Service or Web Client. We now generate the needed import statements in the method classes.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.Soap
Platforms: All
DevKey: MXT383
Summary: Improve SOAP client response validation
Description:
Improve SOAP web client validation of response message:
  1. As specified by SOAP 1.1 specification section 1.1, ignore element name of response element.
  2. Always assume that the first element within the response is the return value and do not check it's element name.
  3. Allow override of the expected response namespace using the SoapNameSpace method keyword.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.Soap
Platforms: All
DevKey: MXT384
Summary: Show use of base class for error handling in SOAP.Demo sample
Description:
Add SOAP.BaseService class to do error handling for SOAP.Demo. Error handling is done using new OnInternalError callback for SOAP web services that allows application to modify the fault created for Caché trapped errors. The error may not be ignored, only the contents of SOAP fault may be modified.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.XML
Platforms: All
DevKey: MXT385
Summary: Optionally enforce ordering of properties on XML import
Description:
If the XMLSEQUENCE class parameter = 1, then the order of the XML elements must match the order of the class properties. This allows us to deal with XML where the same field appears multiple times and is distinguished by the order. The default is XMLSEQUENCE = 0. If XMLSEQUENCE = 1, then the XMLIGNOREINVALIDTAG parameter is ignored and all tags must be represented as properties.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.XML
Platforms: All
DevKey: MXT386
Summary: Allow skipping of element tags on import and export
Description:
We introduced new a new value, XMLIO="SKIP", which will ignore the XML element on import and skip outputting the element on export. This allows an easy way to setup a class that is a subset of an XML Schema.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.XML
Platforms: All
DevKey: MXT388
Summary: Map class inheritance to XML using schema choice group
Description:
The XML choice schema tag is used to allow the interchangeable use any of a group of related elements. All elements in the group must have a type which is an extension or restriction of the base type. The XML schema choice group will map to a group of Caché classes which must all be subclasses of the property type. This subclass restriction is not needed for the XML schema and is not enforced, but is needed for the Caché property to work properly in most situations.
To indicate that a Caché class reference property may reference a choice of one a a group of classes, use the property parameter XMLPROJECTION=CHOICE. The type specified for the property is the base class and the classes referenced may be the base class and all or a subset of its subclasses.
The classes in the group may be explicitly specified in the XMLCHOICELIST property parameter as a comma separated list of classes. If XMLCHOICELIST is not specified, the subclasses of the property type that are included in the group are controlled by the XMLINCLUDEINGROUP class parameter. If XMLINCLUDEINGROUP=1, then the subclass is included. The default value set in %XML.Adaptor is 1, but may be overridden to 0 to exclude classes from the group. The default will result in all subclasses of the base class being in the group. Abstract classes will not be made part of the choice group, thus allowing the use of an abstract base class to be the head class for a choice group of subclasses.
Three additional values of XMLPROJECTION are supported for choice groups:
Since the reference value may refer to one of a collection of classes, the type must be specified in the XML. If format="literal" (the default), the element name will be the xsdtype of the referenced class. If the format="encoded", then the element name must specify the property. Therefore the xsi:type attribute is used to specify the type.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.XML
Platforms: All
DevKey: MXT389
Summary: Generate correct schema for Caché array for choice group
Description:
Fix up pair types used for Caché arrays in schema to correctly handle choice groups. This allows SOAP support with SoapBodyUse="literal" for choice groups.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: CSP
Platforms: All
DevKey: MXT391
Summary: Anchors don't work on #url()
Description:
The problem was that the anchor was not being correctly separated from the URL. This applied to any use of #anchor in CSP URL, not just #url()#.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: Object.XML
Platforms: All
DevKey: MXT395
Summary: Add new support for hexBinary schema type
Description:
Add to the support for binary XML schema types:
Encoding only applies to binary streams with values ENCODING="base64" (for base64Binary schema type) and ENCODING="hex" (for hexBinary schema type).

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.XML
Platforms: All
DevKey: MXT396
Summary: Create %xsd package for Caché datatypes that map to XML schema types
Description:
Add XML schema types that map naturally to Caché types to %xsd package. See %xsd package for details. Datatypes added: %xsd.string, %xsd.date, %xsd.time, %xsd.dateTime, %xsd.boolean, %xsd.double, %xsd.decimal, %xsd.integer and types that correspond to type inheriting from schema integer type.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.Soap
Platforms: All
DevKey: MXT403
Summary: Handle OUT parameters in SOAP web client
Description:
Some web services have output-only parameters for some web methods. This situation was not previously handled correctly. This bug fix correctly does not expect the value of the OUT parameter in the request and returns the value of the OUT parameter in the response.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.Soap
Platforms: All
DevKey: MXT404
Summary: SOAP web client gives error if return value not expected
Description:
The SOAP web client now supports web client method corresponding to a web server method with no return value.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.XML
Platforms: All
DevKey: MXT409
Summary: XML representation of persistent objects using object id
Description:
XMLREFERENCE=ID will project a reference to a persistent object as it's ID rather than as the object itself. XMLREFERENCE=OID will project a reference to a persistent object as it's OID rather than as the object itself. The OID contains the classname as well as the ID. This feature is not at all equivalent to the XML use of IDREF and is meant to support export of an object using SOAP without it's referenced objects in a way that allows the later loading of the referenced objects. XMLREFERENCE-"ID" or "OID" work with XMLPROJECTION = "attribute", "element", "wrapped" or not specified.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.XML
Platforms: All
DevKey: MXT412
Summary: XMLImport loses attributes in case of id="" for tag
Description:
When reading XML data using %XML.Reader with literal format (the default), an id attribute of the form <TAG id=""> caused all attributes of a tag to be skipped. This bug is now fixed and the "" value of the id attribute is imported correctly along with other attributes.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: CSP.Net
Platforms: All
DevKey: MXT413
Summary: Backport SMTP Authentication to 5.0.1
Description:
SMTP authentication with the SMTP server (as defined by RFC 2554), is now supported using the LOGIN, PLAIN and CRAM-MD5 authentication mechanisms. Additional authentication mechanisms will be added as needed.
In order to use SMTP authentication, instantiate a %Net.Authemticator object, set UserName and Password properties of the authenticator and assign it to this property.
In addition an authorized sender may be specified for an authenticated message. The AuthFrom specifies the address to be used for the AUTH parameter of the MAIL FROM SMTP command for SMTP authenticated session. If specified, this property will be the argument of the AUTH= extension to the MAIL FROM command. This property may be specified as "<>" to indicate that the original submitter of the message is not known.
An example of the use of authenticator follows.
#include %occOptions
#include %occStatus

authtestmailsend ;
    ;  Replace information marked with [[ ]]
    new auth,m,s,status
    set s=##class(%Net.SMTP).%New()
    ; use default authentication list
    set auth=##class(%Net.Authenticator).%New()
    set auth.UserName=[["myUser"]]
    set auth.Password=[["myPassword"]]
    set s.authenticator=auth
    ; Optional AUTH parameter to MAIL FROM.
    set s.AuthFrom=[["AuthUser"]]
    set s.smtpserver=[["SMTP server name"]]
    set s.timezone=[["-0400"]]  may remove this line to get Universal Time
    set m=##class(%Net.MailMessage).%New()
    set m.From=[["test@company.com"]]
    do m.To.Insert([["receiver@another.com"]])
    do m.To.Insert([["Joe Smith <JSMITH@ANOTHER.COM>"]])
    set m.Subject="Sent by Caché mail"
    set m.Charset="iso-8859-1"
    do m.TextData.Write(
       "This message has been sent using an SMTP server with Authentication.")
    set status=s.Send(m)
    if $$$ISERR(status) do $system.OBJ.DisplayError(status)
    quit

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.XML
Platforms: All
DevKey: MXT415
Summary: %XML.Adaptor error handling improvements
Description:
Use $ztrap to trap XMLExport Caché errors and return the error as a %Status. Report data type validation errors correctly for attributes in XMLImport.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: Object.XML
Platforms: All
DevKey: MXT416
Summary: Allow runtime specification of %XML.Adaptor parameter XMLIGNORENULL
Description:
Add new value RUNTIME for class parameter XMLIGNORENULL.
When XMLIGNORENULL = 1, then both missing tags (NULL) and empty tag (<TAG /> are stored in Caché %String property as "" and both $c(0) and "" are exported as empty tag (<TAG />).
In the default case of XMLIGNORENULL = 0, make character streams work like %String. no tag becomes zero length stream and empty tag becomes $c(0).
If XMLIGNORENULL = "runtime" (runtime is not case sensitive), then the behavior of XMLIGNORENULL is determined by the format parameter of XMLExport and the IgnoreNull property of %XML.Reader. The default behavior for XMLIGNORENULL="runtime is the same as XMLIGNORENULL=0. Adding "ignorenull" to the format argument changes the behavior to that of XMLIGNORENULL=1. "ignorenull" should be separated by a comma from literal/encoded part of the format. Valid values for format are "", ",ignorenull", "literal", "literal,ignorenull", "encoded" and "encoded,ignorenull".
In addition the XMLIGNORENULL parameter is supported for web services. XMLIGNORENULL may not be specified as runtime for web services.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesYes

 



Category: Object.XML
Platforms: All
DevKey: MXT417
Summary: Ignore IsValidDT whose value is always 1 for XMLImport
Description:
If IsValidDT returns a value of 1, then ignore the IsValidDT method.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Object.XML
Platforms: All
DevKey: MXT418
Summary: <NOTOPEN> second call to XMLExportToStream with same stream
Description:
XMLExportToStream should leave stream open after writing XML to stream to allow additional XML to be appended.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.Soap
Platforms: All
DevKey: MXT419
Summary: Improve SOAP interoperability with XMLSPY SOAP request
Description:
Add required
  <S:IMPORT namespace="http://www.w3.org/2001/XMLSchema" />
to WSDL files with methods that return a %XML.DataSet.
Support XMLSPY SOAP request format that uses <PARAMETERS> element as containing element instead of <METHODNAME> element.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.Soap
Platforms: All
DevKey: MXT420
Summary: Reorganize the XMLPROJECTION parameter
Description:
We overloaded the XMLPROJECTION parameter with too many complex options. XMLPROJECTION is now broken into 3 property parameters:
XMLPROJECTION = "element", "wrapped", "content", "attribute" or "collection". "collection" is a deprecated synonym for "wrapped"
XMLTYPECONSTRAINT = "choice", "substitutionGroup" or "explicit". XMLTYPECONSTRAINT may be specified only for properties whose type is an object reference. "explicit is the default and means only the specified type is allowed. "choice" and "substitutionGreoup" are as defined in DevChanges MXT377 and MXT388.
XMLREFERENCE = "id" or "oid". XMLREFERENCE may be specified only for properties whose type is an object reference. "id" and "oid" are as specified in Devchange MXT409. If XMLREFERENCE is not specified the referenced object is mapped to the entire object.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowMediumYesYes

 



Category: Object.XML
Platforms: All
DevKey: MXT421
Summary: Order inherited properties to match XML schema extension ordering
Description:
Order projection of class properties to XML so that the properties of the current class are last following the properties inherited from the super class. This ordering corresponds to the ordering of XML elements for types derived by extension in the XML schema.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.XML
Platforms: All
DevKey: MXT422
Summary: In XML projection, support summary representation of referenced classes
Description:
Add new XMLREFERENCE values "complete" and "summary". XMLREFERENCE may be specified only for properties whose type is an object reference. XMLREFERENCE = "summary" is new and means to include only the properties of the referenced object that are listed as the summary.
The XMLDEFAULTREFERENCE class parameter specifies the default value of XMLREFERENCE if it is not specified. The default for XMLDEFAULTREFERENCE is "summary" for XML enabled classes.
If XMLDEFAULTREFERENCE may be used to specify the default XMLREFERENCE for the arguments and return value of a web service or web client. The default in this case is complete.
The summary fields to be used when an object is referenced are specified by the object's XMLSUMMARY class parameter. XMLSUMMARY is a comma separated, unordered list of properties to include in the object summary. Properties are mapped to the XML in the order that the properties appear in the class not in the list order. If XMLSUMMARY is not specified then all properties are included in the summary.
In addition XML for only the summary fields may be imported into or exported from an object. Adding "summary" to the format argument of XMLExport, XMLSchema, or XMLDTD changes the behavior to only use the summary properties. "summary" should be separated by a comma from the literal/encoded part of the format. Valid values for format are "", ",summary", "literal", "literal,summary", "encoded" and "encoded,summary". If "ignorenull" is also used in the format it must be separated from "summary" by a comma. Setting the Summary property of %XML.reader to 1, also changes its behavior to only import the summary properties.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: CSP.Samples
Platforms: All
DevKey: MXT423
Summary: Soap.Demo.cls has incorrect parameter: SoapBodyUse = encoded
Description:
Soap.Demo.cls has incorrect parameter set: SoapBodyUse = encoded
This parameter setting causes the GetByName Web Method to return the following error: ERROR #6258: Invalid ENCODING parameter 'encoded' for property ''
This is fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.XML
Platforms: All
DevKey: MXT425
Summary: In XMLImport, long attribute value causes SUBSCRIPT error
Description:
The prefix part of attribute value of colonized name (i.e. prefix:name) must be less than or equal to 255 characters in length.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.XML
Platforms: All
DevKey: MXT428
Summary: Store XML for empty character streams as "" instead of $c(0)
Description:
When saving an empty element value (<TAG />) to a character stream property, we now store "" in the stream object rather than $c(0). No element present still stores no stream.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: CSP.Samples
Platforms: All
DevKey: MXT430
Summary: In web service, allow LOCATION to be a relative path or unspecified
Description:
It is inconvenient to always need to specify full URL in LOCATION parameter. Change to allow LOCATION to be based on request URL for WSDL file.
If LOCATION is not specified, then the same path as the WSDL path is used. This is the most natural way to get the location.
If LOCATION is a relative path or absolute path without server name, then the WSDL request path is used as the base of the location URL.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.XML
Platforms: All
DevKey: MXT431
Summary: Extend %XML.DataSet to Support .Net Typed Datasets
Description:
When %XML.DataSet is returned from a Web service, it projects as a Microsoft .Net dataset. Previously, only untyped datasets were supported.

.Net-typed datasets (which include type information in the WSDL file for a Web service) are now supported. This additional information allows Visual Studio .Net to create a typed dataset that supports IntelliSense.

A subclass of %XML.DataSet now produces a typed dataset if the NAMESPACE parameter is specified, and the CLASS and QUERY parameters are overridden to specify the query underlying the dataset.

An example of the return of a typed dataset is now part of the SOAP.Demo sample.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumLowNoYes

 



Category: Object.XML
Platforms: All
DevKey: MXT433
Summary: XMLExport serial references with no data as null (no tag)
Description:
Change XMLExport to treat references to serial objects as null if all values in the serial object are "". A serial object with no value set will now export without any tags. This uses the SQL test for NULL object.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System.StartUp
Platforms: All
DevKey: NGA107
Summary: Increase SZGVXTAB to 32K
Description:
A limitation on the number of volumes that can be mounted has been increased.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: SQLManager
Platforms: All
DevKey: PYD092
Summary: Corrected several issues with SQLMigration
Description:
  • When copying column definitions, the buffer size was used as the length instead of the column precision. As a consequence, for SQL Server NCHAR, NVARCHAR, SQL_WCHAR and SQL_WVARCHAR datatypes, the column created in Caché was twice the size of the original column.
  • Binary data was not copied correctly.
  • Some indices were copied incorrectly or missing entirely

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Caché Direct
Platforms: All
DevKey: RAW330
Summary: Fix Caché Direct registry key names
Description:
The names of the registry keys to be used by Caché Direct were changed from MServer and FormalNamespace to MServers and FormalNamespaces. The names used in CMVISM32.DLL were not changed. The proper registry names are now used.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: Studio
Platforms: All
DevKey: RAW339
Summary: Addressed Issue in which Studio Would Hang or Loop When Searching for Matching Text That Was in Contracted Code
Description:
In some circumstances, when the string being searched for was not visible because of being in a contracted block, doc -> GetDisplayLine was returning the wrong result. This has been addressed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Studio
Platforms: All
DevKey: RAW340
Summary: Studio editor: copy Unicode to clipboard on Win9x systems
Description:
On Win9x systems, an attempt to copy text to the clipboard that had characters not in the current keyboard locale converted the characters to '?'s. This is expected behavior, but not necessary in all circumstances.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System.I/O
Platforms: OpenVMS
DevKey: RFD073
Summary: Modify "U" mode RMS files to read formatted files correctly
Description:
This change allows the "U" mode for sequential RMS files on OpenVMS to correctly read an exact byte stream from files of other formats (for example "S"tream or "V"ariable). This matches the behavior of "U" mode on Windows and UNIX.
Previously, reading a formatted RMS file in "U" mode would strip out any record indicators (i.e. CR/LF in "S"tream files and length header in "V"ariable files).
Note that this does change the previous behavior of "U" in a slightly incompatible way, but only for reading other file formats.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumMediumYesYes

 



Category: System
Platforms: All
DevKey: RFD076
Summary: Create list file for loading Caché KM in BMC Patrol
Description:
Add a .KML "list" file to make it easier to load the Caché Knowledge Module in BMC Patrol. Loading the ISC_CACHE.kml file automatically loads all the other .KM files necessary for Caché.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Config Mgr
Platforms: All
DevKey: RJW693
Summary: Fields of License wizard are empty when Caché (NT) uses UNIX style cache.key
Description:
This fix corrects a problem when customers copy a cache.key file from a UNIX system to a Windows system using binary ftp, the file will contain the UNIX <LF> end of line indicator instead of the DOS <CR> <LF> end of line indicator. This causes the cache.key file to be interpreted incorrectly by the Configuration Manager License Wizard, so the old values are not displayed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: RJW709
Summary: COM port reads can fail on Windows if data arrives before the read
Description:
If data is written to a COM port from the remote side of the connection before a read is issued to the port, then some data may not be read from the COM port buffer. This could cause a read to continue until the timeout and return less data than expected. It could also cause an untimed read to never terminate even though there is data available in the com port buffer. This has been corrected.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: System.Shutdown
Platforms: All
DevKey: SAP078
Summary: No error capture on calls dealloc_resident_mem()
Description:
This assures all error returns from all shared memory deallocations are logged to cconsole.log.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: OpenVMS, Windows, HP-UX
DevKey: SAP083, SAP090, SAP098
Summary: Process priorities not set right for background jobs.
Description:
The priority handling has been unified for Win/UX/OpenVMS.
All system process priorities are set internally by the system and cannot be changed by users. References to priorities are removed from the Configuration Manager and cache.cpf files.
%SS shows the system-dependent priorities for the various Caché system processes. For OpenVMS, these range between 0 and 15 (4 is normal priority). For Windows, these range between 1 and 31 (7 is normal priority). For HP-UX, these range between -20 and 20 (0 is normal priority). Priorities on NT systems (Windows 98, Win200, NT) now range between 0 and 31. 7 is normal priority, 15 and above are realtime priorities. Refer to the documentation on priority handling in 5.0.
By default, jobbed processes have priority equal to the current base priority at which the parent process is running. A system service is provided to increase/decrease the priority at which jobbed processes are started. See below.
There are 3 services provided to set and get priorities, and alter the priority of subsequent background (jobbed) processes:
$system.Util.SetPrio(n[,pid])
Raise/lower the priority of the currently executing process (or the process specified to process id "pid") by n steps from its current priority. A positive value raises the priority, a negative value lowers the priority. The ability to raise one's priority is dependent on the system. On UX, attempts to raise a process priority fail. However, all systems allow lowering priority. Attempts to raise/lower beyond the system imposed limits (see above) leave the priority at the highest/lowest priority. The function returns the resulting process priority.
$system.Util.GetPrio([pid])
Returns the current priority for this process, or for the process given by "pid".
$system.Util.JobPrio(n)
Raise/lower the priority of subsequent jobbed processes by n steps from that of its parent priority. A positive value raises the priority, a negative value lowers the priority. If the addition of the job priority increment value to the parent priority results in a priority below/above system limits, the jobbed process executes at the system limit (lowest or highest). The function returns the current job modification value.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: System
Platforms: All
DevKey: SAP088, SAP091, SAP092
Summary: Save/Restore the process priority of the control process during job startup on UNIX and Windows
Description:
Previously the variable maintaining it was overwritten while executing JOB and so would be incorrectly reported (the priority itself was unaffected)

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumLowNoNo

 



Category: System
Platforms: OpenVMS
DevKey: SAP097
Summary: On VMS display the correct process priority when examining processes
Description:
This fixes a reporting issue.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
HighLowNoNo

 



Category: System
Platforms: All
DevKey: SJ1403
Summary: Fix problem with 3 or more argument $BITLOGIC
Description:
This fixes problems with using the $BITLOGIC function with 3 or more arguments.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML310
Summary: Make DEFNETDIRSIZ 64 KB
Description:
The network directory table size has been increased to 64K to allow support for up to 30 networked databases.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML312
Summary: ECP server should never wait and retry on lock table full
Description:
ECP Server retry logic has been corrected so it will not repeatedly wait and retry when the lock table is full.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML313
Summary: Fix lock_c_cleanup for ECP server dismounts DB
Description:
This fix corrects a race condition where a lock request can be sent from a client to a server at the same time the server is sending a dismount message about the same database to a client.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML316
Summary: Fix DCP lock race condition
Description:
Fixes a race condition in the lock module which could result in failure of cluster recovery when using DCP for lock transport.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML317
Summary: Display correct message for cluster ECP connection
Description:
This change causes ECP network connections to be properly identified and displayed as such.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML318
Summary: Fix un-removable lock when lock table is reset
Description:
Pending DELOCKs are now properly handled on remote servers if the lock table on that server is reset.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML320
Summary: Change for better network lock fairness on server
Description:
This improves fairness of lock promotion when more than one process has a lock pending until the release of a higher level lock. This only affects applications which promote locks and have high contention on specific lock references. Also, this is only relevant for configurations which serve locks over DCP.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowMediumYesNo

 



Category: System
Platforms: Linux, OpenVMS
DevKey: SML321
Summary: Fix telnet disconnection will leave an open transaction on OpenVMS and Linux
Description:
On Linux and OpenVMS platforms, when we disconnect the telnet session while the job still has a open transaction, the transaction won't be rolled back after the job exits. This is now fixed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumLowNoNo

 



Category: System
Platforms: All
DevKey: SML322
Summary: Display lock entry in pending state
Description:
The LOCKTAB utility did not display pending state of a lock entry to remote server. So the user could get confused and think the lock is granted already (on both client and server). But it could be that the lock is granted by another job on server and it is waiting on server for the lock to be granted.
This change will display a 'P' along with '*' to indicate the lock is queued on server and waiting for it to be granted. A 'D' along with '*' to indicated the lock is waiting for server to release the lock. If neither 'p' nor 'D' is displayed it indicates the remote lock is granted.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML323
Summary: Allow ECP client send 'get file' request on ECP recovery when server is not re-started
Description:
Sometimes the ECP client would fail to re-fetch modified routines after re-connecting.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumMediumNoNo

 



Category: System
Platforms: All
DevKey: SML325
Summary: Fix multi-entry lock command over ECP problem
Description:
When a job requests multiple locks on a remote ECP server, and the request is blocked because one of the locks is held by another process, the request will hang because the server does not recognize when the single lock is unlocked that there are remote clients waiting to acquire it.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML329
Summary: Fix a problem when Lock and ZA on the same global by the same job
Description:
When a job uses DSM style ZA and ZD ($zu(68,8) turned on), and it uses LOCK commands and ZA commands to lock the same node without unlocking it first, it will generate null lock nodes in lock table. Eventually, this will exhaust the lock table.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: System
Platforms: All
DevKey: SML330
Summary: DTM lock error fix
Description:
Fix DTM server process "L " with more than one subscript.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumLowYesNo

 



Category: System
Platforms: All
DevKey: SML331
Summary: Let network daemon keep list of locks granted by it so it could handle some deadlock issue
Description:
The network daemons (ECP, DCP, DDP and DTM) now keep the list of locks granted by the daemon for the remote client system. This improves overall lock management.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML332
Summary: Fix a rare problem where a stranded lock was left in the lock table
Description:
This happened on multi-entry lock command and it has (parent node, childnode) sequence when one of the requested locks was already held by another process.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: System
Platforms: All
DevKey: SML334
Summary: Don't let network daemon call SWCHECKSET in waitupd(), so it won't block the cluster failover
Description:
This correction fixes a problem that could cause a client daemon job to block the progress of the recovery daemon.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumLowYesNo

 



Category: System
Platforms: All
DevKey: SML335
Summary: Display correct cluster error message for ECP
Description:
If, during remount of databases, the ECP connection failed to start, the error message displayed would indicate a DCP network instead of an ECP network.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML336
Summary: Fix bad lock encoding (for example ^a("10.41"))
Description:
The following lock node will generate bad lock encoded string.
     L +^a("10.41").
It failed when the decimal value is teens (for example 10 to 19) and there is fraction value without trailing zero. And the number has to be a string data type. The following examples failed:
"10.11", "12.388" and  "19.2334".
Though the following won't fail.
"10.40", "011.34" and "19.23340"

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: System
Platforms: All
DevKey: SML338
Summary: Fix multi-entry lock command live lock problem
Description:
This reduces the likelihood of an application deadly embrace between processes if the application uses the multi-entry Lock command (expressing several lock references within parentheses).
It also fixed a potential problem for ECP multi-entry lock problem where the client re-sends the lock list to lock and when it conflicts on another node it won't release the previous granted node.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumLowNoNo

 



Category: System
Platforms: All
DevKey: SML339
Summary: Start Cluster ECP connection for slave when startup
Description:
This change is to start the cluster ECP connection when a slave node join the cluster. If we don't do this, a job could gets <NETWORK> error if it tries to initiate the very first request to the cluster master while cluster failover on other nodes. The cluster failover may take longer than 20 seconds. And the very first ECP connection could wait on 20 seconds to see if the connection is set up. After 20 seconds without success the job will get <NETWORK> error.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: AIX
DevKey: SML341
Summary: $ZTIMEZONE failed unpredictably on AIX
Description:
This corrects a problem with $ZTIMEZONE failing to return the correct time zone.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumLowYesNo

 



Category: System
Platforms: All
DevKey: SML344
Summary: Disable Nagle Algorithm by default on TELNET devices
Description:
This reverses a correction added in 4.1 (by default) while keeping the option of Nagel available for those who have very lossy connections.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumLowYesNo

 



Category: System
Platforms: All
DevKey: SML346
Summary: Fix short timeout problem on ECP
Description:
This corrects a problem in 5.0 that sometimes a lock with 1 second timeout over ECP could not grant the lock even though the node is not locked on server side.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML350
Summary: Fix possible lock memory lost when lock table full
Description:
This corrects a problem where lock memory may be lost when an attempt to lock a lock fails because the lock table is full.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: System
Platforms: All
DevKey: SML351
Summary: Limit # of Caché job to access DSM through DDP to 1544
Description:
When a Caché job's internal job number is greater than 1544, and it tried to access a DSM server DB through DDP then it will get <DDP OVERFLOW JOB> error.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML352
Summary: Fix potential TRANSCB LRB list corruption
Description:
For DCP, in most cases when a job need to send unlock request to server it removes the lock entry in local lock table right after the request is queued in network buffer. But there is a rare case that the lock entry will stay in lock table until the unlock answer is arrived. Then, the DMNNET daemon will remove this lock entry when it processes the server's answer. The problem is that the DMNNET daemon did not hold a resource for the action. So when it removes the lock from the list, it may interfere with another job working in the table.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: System
Platforms: All
DevKey: SML353
Summary: Fix hang on multi-entry lock with same global nodes over network
Description:
This corrects a problem where multiple clients attempting to lock the same global nodes over a network may experience a hang.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: System
Platforms:
DevKey: SML355
Summary: Fix ECP timing hole
Description:
This fixes a potential timing hole on new cluster master during failover.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML356
Summary: Don't flush ECP journal records to disk when ECP is only being used as a lock transport for Caché clusters
Description:
The cluster mechanisms take care of recovery. Not having to create these journal records and flush them to disk improves cluster performance

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: SML357
Summary: Fix cluster failover potential hang
Description:
When jobs are issuing delock requests during cluster failover, there was a slight possibility of a hang after the failover was complete.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: System
Platforms: All
DevKey: STC404
Summary: TASKMANAGER - set start date properly, improve queries, add simple menu to drive
Description:
Without this fix, the first run of the task would have been skipped.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
HighLowNoNo

 



Category: System
Platforms: All
DevKey: STC414
Summary: Encryption functions - rename from Rijndael to AES
Description:
The encryption methods $SYSTEM.Rijndael.Encode and $SYSTEM.Rijndael.Decode have been deprecated. Customers should now use $SYSTEM.AESEncode and $SYSTEM.AESDecode which better reflects the meaning of the encryption functions. Old names remain but will be removed in a future version. Support for $SYSTEM.Rijndael.Encode and $SYSTEM.Rijndael.Decode will be removed in a future version. Users should migrate to the new names.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: System
Platforms: All
DevKey: STC417
Summary: Fix collation detection in IF/ELSE clause
Description:
This fixes a potential bug for selecting collations for globals when selecting individual globals to copy.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: System
Platforms: All
DevKey: STC421
Summary: Fix ability to map routine types
Description:
This change adds a new algorithm for the rINDEX mapping for each specified routine type: rMAC, rINT, ROUTINE, and rOBJ.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesNo

 



Category: System
Platforms: All
DevKey: STC423
Summary: Fix MD5 hash for big endian platforms
Description:
The MDS hash of a string should be the same on all platforms. On big endian Unicode platforms we convert the string to be hashed to little endian, and then hash it. After the hash, we incorrectly converted the resulting string back to big endian, when it should have been left in little endian format as to be compatible with other Caché systems.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
MediumMediumNoNo

 



Category: System
Platforms: All
DevKey: STC444
Summary: Fix output file error in GBLOCKCOPY
Description:
This fixes the problem where, if you choose to look at a report from GBLOCKCOPY and for your device you enter a file name, the file will contain the report and some errors. It looks as if choosing a file to output the report ends your session in GBLOCKCOPY, instead of just sending the report off and returning control to the user.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: STC450
Summary: Lock out other gcompact on same database
Description:
Database compaction was allowed to run multiple iterations at the same time on the same database. This is now prevented by the use of a lock.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: System
Platforms: All
DevKey: STC451
Summary: GBLOCKCOPY allows conversion of collation 0 globals
Description:
Previously, globals with a collation type of 0 could not be selected by GBLOCKCOPY for a conversion to standard type 5. This is now allowed.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoYes

 



Category: Misc
Platforms: All
DevKey: TR959
Summary: This fixes a problem of cache coherency in the handling of modified 2k blocks over ECP
Description:
Assume we have two linked 2 KB data blocks A and B, and only block A is in the client cache. If a new global is added at the end of block A (by the same client), the set does not modify and invalidate block A in the client cache, and the server also does not invalidate the client cache (as expected). If the client fetches block B (after completing the set request), then block A in the client cache is linked to B missing the new global.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: Object.ActiveX
Platforms: All
DevKey: TTS042
Summary: Fix for CachéObject: ERROR #5802: Datatype validation failed when value < 0.1
Description:
ERROR #5802 may occur while saving an object from VB when the float datatype validation encounters a value < 0.1.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowMediumYesNo

 



Category: Installation.OpenVMS
Platforms: OpenVMS
DevKey: WDS005
Summary: Set ownership of target root directory (and all subdirs) to value of CACHE$MGRUIC
Description:
This is new functionality in response to a specific customer request. If the logical name CACHE$MGRUIC is defined during a new configuration installation, cinstall.com will set the owner UIC of the target directory to the value of that logical. Subdirectories and files will inherit that UIC.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesYes

 



Category: SQLManager
Platforms: All
DevKey: YSD576
Summary: Change the Owner of a view in SQLManager
Description:
SQL Manager has been changed to allow changing the ownership of a view.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowYesYes

 



Category: SQLManager
Platforms: All
DevKey: YSD581
Summary: Show plan fails when default SQL schema name is user defined
Description:
Show plan fails when default SQL schema name is user defined.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: SQLManager
Platforms: All
DevKey: YSD583
Summary: Link table name with space or other characters in it
Description:
In Link Table wizard, if user enters a new table name that contains space or other characters then it gave "Invalid table name" error message.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo

 



Category: SQLManager
Platforms: All
DevKey: YSD584
Summary: Japanese characters garbled when printing to a printer
Description:
SQL Manager now sends Japanese characters to the printer properly.

Likelihood
of happening
Risk this change
introduces new problems
Distributed in ad hoc release
and installed in production
This change is an
enhancement
LowLowNoNo