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:
- Likelihood - The probability that a user on the affected
platform will encounter this issue.
- Risks - An assessment of how likely this change is to
introduce additional issues into the application environment.
- Ad Hoc - This item indicates whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - This notes whether this change provides new
features or capabilities.
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.
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 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
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:
- 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".
- 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.
- 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.
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.
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:
It ended up looking like:
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:
- GetDirectoryLength(dirname), which returns
the number of pieces in this directory name, for example
'c:\temp\mysub' has three pieces on a Windows environment.
- GetDirectoryPiece(dirname,piece,.fullpath,.isdirectory), which returns the
asked for piece from the directory name.
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: