Welcome and thank you for using Caché, the post-relational database. This document has two sections: the first lists the changes between Caché 5.0.1 and Caché 5.0.2 and the second lists the changes between Caché 5.0.0 and Caché 5.0.1.
Changes between Caché 5.0.1 and Caché 5.0.2
This section provides a listing of changes between Caché 5.0.1 and Caché 5.0.2.
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:
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 (e.g. 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 between Caché 5.0.0 and 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 (e.g. ^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 Nagel 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:
The following functions previously reported DOUBLE and now report VARCHAR:

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:

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 e.g. 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:

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 (e.g. "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 (e.g. ^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 (e.g. 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 Nagel 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