Caché 4.1.1 -> 4.1.15 Change Summary

This document is the Caché 4.1.1 -> 4.1.15 cumulative change summary. The Caché 4.1 Release Notes provide detailed information on how to get started and the new features in the 4.1 general release.

Changes to Caché 4.1.15

Special Note Regarding Clustered Databases on OpenVMS

Category: Clusters

Platform(s): OpenVMS

Description: In OpenVMS cluster configurations, 8-KB formatted databases are preferred to 2-KB formatted databases. 8-KB formatted databases have additional recoverability in the event of a cluster node crash while multiple nodes are updating the same block simultaneously.



Special Note Regarding Linux ODBC

Category: ODBC

Platform(s): Linux

Description: The Caché ODBC client driver for Linux is not automatically installed. For detailed instructions on how to install the client ODBC component on Linux, see the provided ODBC Configuration document (odbcconf.txt, which is located on the installation media for Linux in the /dist/ODBC/ directory). This does not affect configurations in which Caché on Linux is serving ODBC requests from other clients.


Special Note Regarding Mag Tape Backup Performance Upgrade for Windows [LRS675] 

Category: System.Backup/Restore

Platform(s): Windows

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.

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 Yes Yes




Fixed Field List for Outer Join [AK501] 

Category: SQL.Query Processing

Platform(s): All

Description: Previously, certain kinds of outer joins could cause incorrect code generation resulting in <UNDEFINED> errors at runtime. 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


Addressed LOCKTAB Display of DTM Locks [DAS453] 

Category: System

Platform(s): All

Description: Previously, LOCKTAB was not displaying locks from DTM clients properly. 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 Yes No


Fixed %GSIZE Use of Alternate Device [LFT974] 

Category: Utilities

Platform(s): All

Description: Previously, if you specified an alternate device for the %GSIZE report but got an error message because the global had no data, then the output would not display correctly on the alternate device, but instead would switch to the console. 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


Fixed Cluster Failover Potential Hang [SML357] 

Category: System

Platform(s): All

Description: When jobs were issuing delock requests during cluster failover, there was a slight possibility of processes hanging 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
Low Low Yes No


Fixed Erroneous Blocks Copied Field in GBLOCKCOPY [STC454] 

Category: System

Platform(s): All

Description: When using GBLOCKCOPY to copy data from one database to another database or namespace, an error might have been reported that the number of blocks copied did not match the calculated number of blocks to copy. This false error report was incorrect. The data was fully copied. This error 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

Changes to Caché 4.1.14

Special Note Regarding Clustered Databases on OpenVMS

Category: Clusters

Platform(s): OpenVMS

Description: In OpenVMS cluster configurations, it is highly recommended to use 8-KB formatted databases, rather than 2-KB formatted databases. Recoverability, in the event of a cluster node failure, is far superior with 8-KB formatted databases.



Special Note Regarding Linux ODBC

Category: ODBC

Platform(s): Linux

Description: Caché 4.1 provides Linux ODBC support through a Caché 5.0-based client. See the provided ODBC Configuration document (odbcconf.txt) for information on how to use this client. The odbcconf.txt file refers to an automatic installation of the ODBC driver that is only part of the Caché 5.0 installation; this driver is not automatically installed as part of the Caché 4.1 installation.




Addressed Runtime Error in View Integrity Log (Control Panel) [CFL516] 

Category: Control Panel

Platform(s): All

Description: Previously, if you clicked View Integrity File for a remote system (from the Caché Control Panel's Local Databases folder), did not select a log file to be displayed, and then closed the Display File dialog, this would cause the Control Panel to generate a runtime error. 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



Increased Capacity for Multiple Multivolume Databases [NGA107] 

Category: System

Platform(s): All

Description: Previously, when a Caché environment using 2-KB databases was configured to mount multiple multivolume databases, then some of those databases could fail to mount. Caché has been changed to accommodate a far greater number of multivolume databases. Before it was corrected, this issue would appear during database setup.

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



Addressed Issue with Local Variable Corruption When Reading From a Caché Device [LFT1076] 

Category: System

Platform(s): All

Description: An issue was addressed where reading from a Caché device could corrupt local variables under two conditions:



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



CACHETEMP Size Characteristics Now Preserved Across Caché Restarts [JO1591] 

Category: System

Platform(s): All

Description: The expansion and maximum size characteristics of CACHETEMP are now preserved across Caché restarts. Additionally, after restarting Caché the current size of CACHETEMP is either the current actual size of the database or 240MB, whichever is smaller. The purpose of limiting the initial size of CACHETEMP to something smaller than the actual size is to minimize the delay in starting Caché.

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 Yes



CACCVIO-PID.LOG File Now Created for PAGRDERR and PAGRDERRXM Errors [DMD038] 

Category: System

Platform(s): OpenVMS

Description: Caché logs information for certain access violations on OpenVMS hardware that it has not caused but that are relevant to it. Previously, information related to the SS$_PAGRDERR or SS$_PAGRDERRXM errors were not logged; these have been added. The addition of logging for these errors should aid in debugging OpenVMS problems which have been limiting Caché performance.

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



Ensured Proper Purging of Journal Files [HYY566] 

Category: Journaling

Platform(s): All

Description: Addressed a problem where a purged journal file erroneously appeared in JRNDUMP or the Caché Control Panel.

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



Corrected Potential Journal Corruption Issue [HYY743] 

Category: Journaling

Platform(s): 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 fields and efforts 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 No No



Corrected False <FILEFULL> in Cluster-Mounted 2-KB Databases [JO1668] 

Category: Clusters

Platform(s): OpenVMS

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



Increased Robustness of Expansion Daemon [JO1674] 

Category: Clusters

Platform(s): OpenVMS

Description: The expansion daemon now runs if another process needs it during cluster failover. Previously, the cluster would hang under these conditions.

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



Fixes to rtnpurge() and clurtnpurge() for Unicode Systems [SML169] 

Category: Clusters

Platform(s): All

Description: An issue was addressed related to purging routines on cluster nodes for Unicode installations. If encountered, this issue caused performance degradation.

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



Lock Handling on the Server Made More Uniform [SML320] 

Category: Locking

Platform(s): All

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
Low Medium No No



Lock Table Now Displays Lock Entries in a Pending State [SML322] 

Category: Locking

Platform(s): All

Description: The lock table now displays a "P" flag for a lock entry when it is waiting for the server to grant the lock (that is, when the lock is Pending). This makes clear that the locks granted in the lock table may not yet have been granted on server.

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



Addressed Multi-Entry Lock Command Live Lock Problem [SML338] 

Category: Locking

Platform(s): All

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). For example, if five jobs were running the following line:


Kill ^q For Quit:$Data(^q) Lock +(^a(1),^b(1),^c(1,$Job)) Quit:$Data(^q) Lock

Then one process did the following:


For Lock +^a(1) Lock -^a(1)

And then that process generated a Control-C code to interrupt the loop, those five processes would be in deadlock. 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



Improved Memory Handling with Lock Tables [SML350] 

Category: Locking

Platform(s): All

Description: An issue has been addressed to prevent possible memory loss when trying to add a lock to a full lock table. If this condition continued unabated, the system would eventually get a constant "Lock table full" event. 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 Yes No



Addressed Potential TRANSCB LRB List Corruption [SML352] 

Category: Locking, DCP

Platform(s): All

Description: For DCP, in most cases when a job needed to send an unlock request to the server, it removed the lock entry in the local lock table right after the request was queued in network buffer. However, there was a rare case in which the lock entry would stay in the lock table until the unlock answer arrived.  At that point , the DMNNET daemon would remove this lock entry when it processed the server's answer.

The problem was that the DMNNET daemon did not hold a resource for the action. So when it removed the lock from the list, it sometimes interfered with another job working in the table. 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



Fixed Hang on Multi-Entry Lock with Same Global Nodes Over Network [SML353] 

Category: Locking, DCP

Platform(s): All

Description: Previously, on DCP, when the multi-entry lock command had the same nodes in the lock list and they were to the same remote system (that is, "Lock +(^a(1), ^b(1), ^a(1))"), the Lock command would hang. 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



Changed Default maxudppktsize Parameter to Avoid Fragmentation of UDP Packets [DAS449] 

Category: Networking, DCP

Platform(s): UNIX, OpenVMS

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.

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



Addressed an Issue Where telnet Disconnection Left an Open Transaction [SML321] 

Category: Transaction Processing

Platform(s): Linux, OpenVMS

Description: Previously, disconnecting a telnet session while a job had a open transaction resulted in the transaction not being rolled back after the job exited.  This issue 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



Changes to GCOMPACT [STC450] 

Category: Utilities

Platform(s): All

Description: On a single database, only one GCOMPACT program can now run at a 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 No No



Changed GBLOCKCOPY to Allow Conversion of Collation for ISM pre-6.2 Globals [STC451] 

Category: Utilities

Platform(s): All

Description: Previously, when converting or copying an older ISM database (pre-version 6.2), GBLOCKCOPY would not ask if you wanted to change the collation of its globals to the Caché standard collation and would not change the collation. Not changing the collation of the global had a slight effect on performance. GBLOCKCOPY now asks if you wish to change the collation. InterSystems advises that you should convert older collations to Caché standard ones.

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 Yes



Datatype Validation Now Works Properly for Values Less Than 0.1 [TTS042] 

Category: Objects, ActiveX

Platform(s): Windows

Description: Previously, if a property had a %Float value less than 0.1, the object save failed with the error:


ERROR #5802: Datatype validation failed
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 Medium No Yes



Correct Handling of FOR QUIT Nested in WHILE [CDS200] 

Category: Caché ObjectScript, Compiler

Platform(s): All

Description: Previously, a Quit command associated with a For loop was not compiled correctly under certain conditions. The conditions are:

The symptom is that the Quit command transfers control to the next command after the For loop, but the For loop remains active. Thus, the next Quit statement executed outside of the outer loop is applied to the For loop and transfers control again to the command after the For loop. An example is:


 Set i=0 While i<3 {
     For j=1:1:3 {
         If j=2 { Quit }
     }
     Write i Set i=i+1
 }
 Quit

Note that in order to benefit from this correction, you must recompile existing routines after the upgrade is installed.

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



Fixed SQL Filer Referential Action Calls [DPV1967] 

Category: SQL

Platform(s): All

Description: An issue has been addressed which caused an <UNDEFINED> error when some Foreign Key referential actions were supposed to be performed upon UPDATE or DELETE. The bug only existing in versions 4.1.9 through 4.1.13 of Caché.

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



Ensured Proper Value Checking for SQL Gateway [MIT228] 

Category: SQL Gateway

Platform(s): All

Description: Previously, the SQL Gateway maintained certain internal variables as integers; it now uses binary values for these. This change addresses a particular place where a test had not been updated. Applications encountering this issue could have had failed connections or generated excessive connections.

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



Improved Error Handling for ctrldemo Sample Program [RJW725] 

Category: Samples

Platform(s): All

Description: The ctrldemo sample program now has error handling that prevents certain exceptions.

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

 

Changes for Caché 4.1.13

SQL Client Installation Available [ALE108] 

Category: SQL

Platform(s): Windows

Description: Caché now supports an SQL client installation, which includes only SQL Tools: the SQL Manager, the ODBC driver, and the JDBC driver. The footprint for this installation is about 3MB, and includes only these components and their required libraries.

Probability of running into this issue: N/A (enhancement).

Probability of issue affecting a production system if encountered: None.

Risk that installing the change introduces incompatibilities or new problems: None.

This change has been delivered as an ad hoc kit to other customers and they have installed it in production.

This is an enhancement.


Control Panel's "Background Integrity Check" No Longer Produces Empty Log File [CFL903] 

Category: Utilities

Platform(s): OpenVMS

Description: Previously, running the background integrity check from the Caché Control Panel produced an empty log file in addition to the output file. This is now fixed.

Probability of running into this issue: 100%

Probability of issue affecting a production system if encountered: None.

Risk that installing the change introduces incompatibilities or new problems: Low.

This change has been delivered as an ad hoc kit to other customers and they have installed it in production.


Shadowing Performance Improvements [HYY750] 

Category: Shadowing

Platform(s): All

Description: This addressed a performance problem with fast-mode shadowing where the shadow may have consumed significant CPU locating the end of journal (GEND^SHDWCBLK). The problem is present in Cache 4.1 and earlier.

Probability of running into this issue: Low.

Probability of issue affecting a production system if encountered: High.

Risk that installing the change introduces incompatibilities or new problems: Low.

This change has been delivered as an ad hoc kit to other customers and they have installed it in production.


Enhancements to shutdown and cforce [JO1675] 

Category: System

Platform(s): OpenVMS

Description: Under very heavy loads, Caché shutdown, in rare circumstances, failed to shut down one or more of its processes. This prevented a clean restart and required running cforce. This condition has been corrected.

Probability of running into this issue: Low.

Probability of issue affecting a production system if encountered: Low.

Risk that installing the change introduces incompatibilities or new problems: None.

This change has been delivered as an ad hoc kit to other customers and they have installed it in production.


Addressed Issues in Lock Encoding [SML336] 

Category: System

Platform(s): All

Description: A lock with a subscript that contained a non-zero fractional part in the teens, such as 4.14 or 886.17, may have been encoded incorrectly. The improperly encoded value appears in the LOCKTAB-generated lock table.

This problem had no practical effect on the use of locks.  Though the representation was erroneous, the lock functioned as expected.  That is, each incorrect value was always encoded the same way.  The fix corrects the representation; the locking behavior before and after the fix is the same.

Probability of running into this issue: Low.

Probability of issue affecting a production system if encountered: None.

Risk that installing the change introduces incompatibilities or new problems: None.

This change has been delivered as an ad hoc kit to other customers and they have installed it in production.


Addresses Issues Related to SELECT Statements in Subqueries [AK517] 

Category: SQL

Platform(s): All

Description: An issue has been addressed in SQL compilation related to nested SELECT statements not returning appropriate values. The type of code that could trigger this was a SELECT query with SELECT subqueries in the SELECT list, such as:

	SELECT(SELECT(SELECT fDECIMAL1 from A.View1) FROM Table1) FROM Table2
where A.View1 is a streamed view defined as

	CREATE VIEW A.View1 as
		SELECT DISTINCT TestID, X.fVARCHAR1, fCHAR1,
				X.fDECIMAL1, fSMALLINT1, fTINYINT1, fINT1,
				X.fFLOAT1, fDOUBLE1, fTIMESTAMP1
		from A.Table1 as X
	
In these cases, the statement would never be executed, since the attempt to prepare the statement failed with the error:

	<SUBSCRIPT>finfo+1^%qaqpif2
      
This has now been corrected.

Probability of running into this issue: Low.

Probability of issue affecting a production system if encountered: Low.

Risk that installing the change introduces incompatibilities or new problems: Low.


Improvements to Handling of READ-COMMITTED Locks [AK536] 

Category: SQL

Platform(s): All

Description: There have been improvements made in the handling of READ-COMMITTED locks, so as to avoid setting them unnecessarily.

Probability of running into this issue: Very low.

Probability of issue affecting a production system if encountered: Low.

Risk that installing the change introduces incompatibilities or new problems: Low.

This change has been delivered as an ad hoc kit to other customers and they have installed it in production.

Changes for Caché 4.1.11 and 4.1.12

This release includes the following fixes and changes:


Changes for Caché 4.1.10

This release includes the following changes and fixes:


Changes Affecting OpenVMS Cluster Configurations


Changes for Caché 4.1.7 - 4.1.9

Caché 4.1.9 is most relevant for large-scale production database servers and deployment of web based applications. This release has been tested extensively for several months and has met release requirements which include running several applications and customer test plans. Although the number of corrections is large, almost all of the individual changes have been installed at a customer site in a Ad Hoc (patch) release.

The most important areas addressed by 4.1.9 are:

The detailed list of changes follows. Please contact InterSystems Worldwide Response Center (support@InterSystems.com) if you would like to know more about any of these items.