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:
[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:
- You cannot use ResultSet.getTimeStamp(int) to read DATE.
- ResultSet.getBytes() fails when an integer is stored.
- ResultSet.getAsciiStream().read() returns negative values for Russian characters.
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:
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:
- The {<n>D} (for example {2D}) reference was not recognized properly as a access level
when used in Over-ride NEXT subscript code. This has been fixed.
- A subscript expression like {table.field}_{table.field2}
incorrectly gave an error saying the field did not exist. This has
been fixed.
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:
- Ctrl/keypad+ and Ctrl/keypad- were not honored for ExpandAll and ContractAll.
- Ctrl/+ did not work on German keyboards, where + is not a shifted character.
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:
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.
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 the affected platform is not listed specifically with the change summary,
the change is effective for all supported platforms.
- Relational Gateway —
Relational Gateway use problematic on Tru64
- System —
Fix MD5 hash for big endian platforms
- Networking —
Accommodate largest possible size of UNICODE strings over ECP
- Object.Java —
Fix problem in creating and using finder extensions in EJB
- Object.Java —
Eliminate duplicate entries from remote interface
- CSP —
..Link() not working as designed
- Object.Class
Compiler — Do not add transient streams to save set in a deep
save
- Object.Java —
Return early from errors
- Object.Soap —
Initial fix for non-ASCII characters in SOAP response
- Object.XML —
Order inherited properties to match XML schema extension ordering
- Object.XML —
Store XML for empty character streams as "" instead of $c(0)
- Object.XML —
XMLExport serial references with no data as null (no tag)
- SQL —
Change datepart("week",date) to match SQL server behavior
- SQL.JDBC — The
same SQL normalization for JDBC and ODBC preparser
- SQL.JDBC —
Conversion of pseudo-ASCII bytes in setAsciiStream according to default
locale
- System —
Process priorities not set right for background jobs.
Platforms: OpenVMS,
Windows, HP-UX
- 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 the affected platform is not listed specifically with the change summary,
the change is effective for all supported platforms.
Caché Direct
- Fix Caché Direct
registry key names
Config Mgr
- Fix config file
corruption when the file size > 64KB
- Correct handling of
null passwords for SQL Gateway
- Fix the ability to
map all routine types
- Disallow setting user
process priorities
- Fields of License
wizard are empty when Caché (NT) uses UNIX style cache.key
- Preserve restart
condition across multiple configuration manager edits
- Eliminate length
limit on ECP server add/edit
Control Panel
- Fix Max %Full column
in Control Panel | Local Databases
- Background integrity
check on OpenVMS produced two files, the log file and an empty
file
Platforms: OpenVMS
- Fix namespace name
truncation
- Remove "Switch
Journal File after Backup" checkbox
CSP
- Fix/enhance UNIX and
OpenVMS file renaming using $zu(140,6)
Platforms: UNIX, OpenVMS
- When importing CSP
files if no /csp/namespace pick first app that is defined in this
namespace
- OnTimeout trigger is
not called for state-aware sessions
- Anchors don't work on
#url()
- Prevent SUBSCRIPT
errors in CSPNormalizeURL^%cspServer
CSP.Gateway
- 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)
- Emergency fix for a
potential issue in the Gateway's garbage collector that could lead to an
accumulation of 'defunct' connections
Platforms: OpenVMS
- Resolve an issue
whereby a thread within the NSD would spin and consume excess CPU time under
Tru64 UNIX
Platforms: Tru64
- Improve the
mechanisms within the NSD for detecting, and responding to, an interrupt from
the browser
- 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
- Resolve further
issues with the UNIX implementation of change CMT071 (Manifested as the NSD
aborting on Tru64 UNIX)
Platforms: Tru64
- Introduce a better
filter for malformed URLs (and incorrectly specified components within
otherwise valid URLs)
CSP.Net
- Backport SMTP
Authentication to 5.0.1
- Function errors using
%Net.HttpRequest in a job process
CSP.Samples
- In web service, allow
LOCATION to be a relative path or unspecified
- ClassLogo.jpg not
shown in StreamServe.csp on HP
Platforms: HP
- Soap.Demo.cls has
incorrect parameter: SoapBodyUse = encoded
Cube
- The Caché service on
Windows no longer wakes up to gather statistics
Platforms: Windows
Explorer
- Fix Find/Replace on
unsubscripted nodes
- Fix Selecting in
Explorer with Multiple Wildcards
- Fix <MAXSTRING>
error when exporting thousands of classes
- Fix import from a
file with thousands of classes
- EXPLORER now allows
half-width Katakana symbols in its global mask
- Explorer gets errors
when editing globals with digits in their name
Installation
- Install all localized
resource files when in non-English locale
- CSP Autocompile
setting is preserved on upgrade installations
- Structure of /doc
directory changed
Platforms: UNIX, OpenVMS
- Fix installation
recompile hang
Installation.OpenVMS
- Set ownership of
target root directory (and all subdirs) to value of CACHE$MGRUIC
Platforms:
OpenVMS
- VMS installs
SAX
Platforms: OpenVMS
Installation.Windows
- On machines which can
run the Pentium4 optimized executable, give users the option, during install,
of P4 distribution (default) or regular
Platforms: Windows
- Upgrade installations
of CSP gateway on VMS failed to correctly modify httpd.conf
Platforms:
Windows
Languages.Caché Basic
- Backport Critical bug
fixes for CachéBasic on usparc platform
- Fix typo in calling
CanUnloadNow function in COM modules on UNIX and OpenVMS
Platforms:
OpenVMS
- Fixed <BREAK>
processing error
- Fix CachéBasic
DatePart() and DateDiff() with week parameter
- On all platforms,
make max udp packet size for DCP be 1468
Misc
- This fixes a problem
of cache coherency in the handling of modified 2k blocks over ECP
Networking
- Add process ID of
client process to journal record
- Fix occasional
segmentation violation when doing reverse $ORDER over ECP on BIG-ENDIAN
systems
- ECP answer buffer
overrun
- Improve the handling
of asynchronous messages queued from the server
- On recovery failure
acquire ECP client resource
- When running ECP over
old format databases (2Kb), optimization information was sometimes (rarely)
overwritten
- Ensure correct
concurrent synchronization in ECP when allocating space for a request
entry
- Correct rare ECP
synchronization of the application server cache (old format (2K)
databases)
- Fix handling of TCP
write errors
Platforms: Linux, HP
- ECP client didn't
maintain server unique ID
- Added $System.Server
HostName and IPAddresses
- Slowdown ECP worker
dmn creation
- Increased ECP cluster
master connection timeout
- On cluster reconnect,
exit the old ECP connection gracefully
- ECP server to keep
cluster slave session forever
- TCP-send interrupted
system call handling
- Properly handle
modifying ECP server (via control panel or config manager) when already up and
running
- Correct problem with
ECP application server restart
NLS
- Fix a NLS data
calculations
Object
- Deal with network
directory name correctly in %File:CreateDirectoryChain()
Object.ActiveX
- Don't ask password
for Namespace list in connection manager
- Fix for CachéObject:
ERROR #5802: Datatype validation failed when value < 0.1
- Objects deleted
prematurely when ResultSet used with .NET
- Make
Factory.SetOutput() work with .Net
Object.Class Compiler
- Qualify
StorageToLogical call with property name
- Check actual number
of parameters against formal spec
- Count only actual
parameters in a dynamic query
- Fix bug in check for
Class compiler interrupt
- Support object
generators for datatype methods
- Invalid code
generated if last line of procedure block method is a #define
- Problem with XML
schema validation on class import on OpenVMS
Platforms: OpenVMS
Object.Java
- Fixed bug with
Iterator.remove() in Caché Array
- constructClone
failing
- Incorrect Java
binding for Lists containing Japanese characters
- Allow DATASOURCENAME
to override data source name in bean implementation
- Fix dataSource
name
- Produce code that
compiles even when ROWID renamed
- Allow Session Bean
generation when PERSISTENCETYPE="CMP"
- Correct JBoss
connection leak
- Allow Caché' host
and port to be configurable in EJB configuration
- Fix calculation of
supers in Java binding
- Make generation of
special method exists(db,oid) depend on persistency of super not persistency
of class
- When invalid
SERVERTYPE display invalid server message
- Get accessors are
not const when they are overridden
- Don't allow CMP
generation unless primary key
- Fix potential
problem in constraint names in EJB binding
- Remove
<distributable> from web.xml and make test servlet work with JBoss and
Jetty
- Remove debug
statements from EJB Wizard
- Close quick
statement in EJB callbacks
- Let the App Server
control concurrency
- Added Support in the
CLASSPATH Variable for JBoss 3.0.6
- Add
TransactionIsolation parameter to EJB projection
- Removed
TRANSACTION_NONE from Supported Transaction Types
- Addressed Various
Issues with the Java Projection
- Improve error
message when Class in ClassList is not persistent
- Project stored
procedure methods in Language bindings
- Fix Java binding
file names
- Process Output
parameters properly
- getConnection needs
to be protected not private
- Allow datasource to
be looked up from environment
- Support generating of
extensions that are used for things like finders
- Call methods in
property accessors when overridden set or get
- Fix JSL992 handling
of calculated properties in the C++ binding
- Check if property
exists before checking if calculated
- Guard against null
DefaultArgs
- Support for
projection of queries in generated Java classes
- Added SQLProcContext
class to Java Binding client
- Enhancement for
building Java client Documentation
- Added ability to
initialize Java Binding using wrapper connection from App Server
- Improvements in
LightDatabase
- Fix for empty array
not listening to server updates
- %TimeStamp with
milliseconds throws Exception
- Java ArrayOfDataTypes
etc iterator.remove()
- Saving Non-ASCII
Characters Using Light Java Binding
Object.Java, EJB
- Guard EJB projection
against invalid parameters
Object.Library
- %Net.HttpRequest
object now reads in correct charset
- %Net.HttpRequest
object not encoding form data in correct charset
Object.Soap
- Improve SOAP client
response validation
- Handle OUT parameters
in SOAP web client
- Improve SOAP
interoperability with XMLSPY SOAP request
- Reorganize the
XMLPROJECTION parameter
- Fix
parseFormal^%occName not initializing return argument
- Resolve short class
names in web method arguments
- Show use of base
class for error handling in SOAP.Demo sample
- SOAP web client gives
error if return value not expected
Object.Stream
- %Delete leaves open
transaction
Object.XML
- Map class inheritance
to XML using schema choice group
- XMLImport loses
attributes in case of id="" for tag
- %XML.Adaptor error
handling improvements
- Allow runtime
specification of %XML.Adaptor parameter XMLIGNORENULL
- <NOTOPEN>
second call to XMLExportToStream with same stream
- In XML projection,
support summary representation of referenced classes
- In XMLImport, long
attribute value causes SUBSCRIPT error
- Add limited XMLImport
method for %XML.DataSet
- Support RuntimeMode
property of %XML.DataSet
- Optionally enforce
ordering of properties on XML import
- Allow skipping of
element tags on import and export
- Generate correct
schema for Caché array for choice group
- Add new support for
hexBinary schema type
- Create %xsd package
for Caché datatypes that map to XML schema types
- XML representation of
persistent objects using object id
- Ignore IsValidDT
whose value is always 1 for XMLImport
- Extend %XML.DataSet
to Support .Net Typed Datasets
SQL
- Add Message property
to %SQLProcContext
- Fix return type for
some ODBC Scalar functions
- Check %ALTER
privilege on the view definition when ALTER VIEW is executed
- Properly generate
include files in 2nd through Nth T# routine
- Don't include fields
from parent table in conditional map condition when turning nonnull index into
conditional index
- Rebuild indices are
after datatype has changed to/from a string via DDL
- Support use of Map
Variables in Data Access and Full Row Reference expressions
- Add support for MS
SQL Server style CONVERT function
- Add checks to make
sure string fields don't contain map piece delimiter characters
- Fix query generated
%QuickLoad function to not scan entire table
- Fix
DATEPART("wk",...) calculation
- Fix code generation
problem with large indices
- Fix QuickLoad
problem involving primary keys and SQL queries
- Fix insert select of
stream field
- Store empty
LONGVARCHAR streams with "" instead of $c(0)
- Correct TuneTable
selectivity calculation for tables with UNIQUE fields
- Support global
reference with vertical-bar syntax in mappings
- Add
CONSTRAINT_OBJECT_NAME to %Library.SQLCatalog.SQLConstraints procedure
- Field-specific
UPDATE triggers execute too often
- Support Quick
%nolock=2 which simply means behave as if standard SQL statement
- Ensured Proper
Operations of Descending-Order Sorts
SQL.DDL
- CREATE PROCEDURE
argument length omitted in Studio
SQL.GateWay
- Do not close cursor
if an error occurred
- Selecting on
generated Caché ID field fails when it is a complex key in SQL Server
- Fixed <INVALID OREF> error for
complicated dynamic query
- Fix parameter
setting
- Select count not
working
- "Undefined list
element " error when linking a table
SQL.JDBC
- Fix JDBC reporting
of foreign keys
- Correct JDBC
reporting of parent reference field
- Correct
transformation from LONGVARCHAR with getString()
- Fixed counting
characters/bytes when using getUnicodeStream from JDBC
- PreparedStatement.setAsciiStream()
does not convert chars to Unicode
- Tighten JDBC Call
Syntax
- Add (optional)
NODELAY flag at the end of JDBC URL string
- Fix potential
<FRAMESTACK> error
- Add support for
get/setXXX(String parameterName,...) JDBC 3.0 APIs
- Keep references to
currently used statements in the statement pool
- Add closed flag to
Stream classes
- Shut down the
connection after receiving message sequencing error
- Change
Statement.executeBatch error reporting behavior
- Enhance client cache
management for stored procedures
- Use a trick to make
CachéConnection object available
- Introduce new Stream
Error Code 411
- Allow calls to
getUpdateCount after executeUpdate
SQL.ODBC
- Fix calculation for
ODBC precision
- wrong default setting
for "Unicode SQLTypes"
- UNIX ODBC: SQLError
returns some garbage..
- Fix for #Deleted
problem in Access when using numeric column as primary key
- Poor error message if
ODBC DSN contains invalid namespace
- Eliminated Memory
Leak with Streams and ADO
- Allow programmatic
(on-the-fly) DSN setup
- Return length in
number of bytes for RetrieveStream
- Reintroduce
QuickStatment.close; Change in empty stream retrieval
- Force dialogs to use
narrow API when Unicode is defined, fix for Win9x
- Prevent possible
access violation on logging buffer overrun
SQL.Query Processing
- Query optimization
gives <UNDEFINED>error
- Fix JOIN optimization
bug
- Improve OR
optimization
- Fix Subscript error
on UNION with many blank fields
SQL.Server
- Add check for
<DSCON> in DieError to avoid looping
- Fix Addqout^%qserver
with > 32000 characters of data
SQL.Syntax
- Fix
<UNDEFINED> in parsing string function
SQLManager
- Corrected several
issues with SQLMigration
- Change the Owner of a
view in SQLManager
- Show plan fails when
default SQL schema name is user defined
- Link table name with
space or other characters in it
- Japanese characters
garbled when printing to a printer
Studio
- Multiple improvements
to Studio
- Importing a CSP page
fails
- Unselected classes
deleted in open dialog
- Exporting a class
behaves differently when done remote vs local
- Get Error #5019 when
deleting CSP page
Platforms: OpenVMS
- Addressed Issue in
which Studio Would Hang or Loop When Searching for Matching Text That Was in
Contracted Code
- Studio editor: copy
Unicode to clipboard on Win9x systems
- Find in Files does
not find items in CSR files
- Fix problem sorting
classes by size in Studio
- Studio imported class
when told not to
- SourceControl:
Trigger OnAfterSave not fired sometimes
- Studio becomes
confused by 3rd line of INT
- In the example source
control class allow people to create new items
System
- Encryption functions
- rename from Rijndael to AES
- Fix Callin/Callout
interfaces for 32-bit pointers on OpenVMS
Platforms: OpenVMS
- Allow ECP client send
'get file' request on ECP recovery when server is not re-started
- The error trap, %ETN,
now stores the values of formal parameters
- Fix ZQUIT not popping
enough frames
- Addressed Issue with
Task Not Rescheduling Properly
- Use correct error
macros on Windows
Platforms: Windows
- Correct overflow in
handling OS files limits on 64 bit AIX
Platforms: AIX
- Startup code could
fail in rare circumstances when over 4 GB of global buffers were
configured
Platforms: Windows, Tru64
- 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
- Change code that sets
jobtype not to use OR except for APPMODE flag & don't set APPMODE for
ENQDMN
Platforms: Tru64, OpenVMS
- COM port reads can
fail on Windows if data arrives before the read
- Make DEFNETDIRSIZ 64
KB
- ECP server should
never wait and retry on lock table full
- Fix lock_c_cleanup
for ECP server dismounts DB
- Fix DCP lock race
condition
- Display correct
message for cluster ECP connection
- Fix un-removable lock
when lock table is reset
- Change for better
network lock fairness on server
- Fix telnet
disconnection will leave an open transaction on OpenVMS and
Linux
Platforms: Linux, OpenVMS
- Display lock entry in
pending state
- Fix multi-entry lock
command over ECP problem
- Fix a problem when
Lock and ZA on the same global by the same job
- DTM lock error
fix
- Let network daemon
keep list of locks granted by it so it could handle some deadlock issue
- Fix a rare problem
where a stranded lock was left in the lock table
- Don't let network
daemon call SWCHECKSET in waitupd(), so it won't block the cluster
failover
- Display correct
cluster error message for ECP
- Fix bad lock encoding
(e.g. ^a("10.41"))
- Fix multi-entry lock
command live lock problem
- Start Cluster ECP
connection for slave when startup
- $ZTIMEZONE failed
unpredictably on AIX
Platforms: AIX
- Disable Nagel
Algorithm by default on TELNET devices
- Fix short timeout
problem on ECP
- Fix possible lock
memory lost when lock table full
- Limit # of Caché job
to access DSM through DDP to 1544
- Fix potential TRANSCB
LRB list corruption
- Fix hang on
multi-entry lock with same global nodes over network
- Fix ECP timing
hole
Platforms:
- Don't flush ECP
journal records to disk when ECP is only being used as a lock transport for
Caché clusters
- Fix cluster failover
potential hang
- Fix collation
detection in IF/ELSE clause
- Fix ability to map
routine types
- Fix memory leak in
Job Servers
- Fix a DTM network
emulation bug in $DATA
- Correct handling of
file sizes in a certain narrow range on OpenVMS
Platforms: OpenVMS
- Correct a situation
where very short waits (less than 100 mSec) could sometimes result in no wait
at all (platform dependent)
- Fix big buffer pool
allocation on OpenVMS & test global buffer allocation in
mcominit
Platforms: OpenVMS
- Update # of global
buffers when we reduce resident memory allocation
Platforms: OpenVMS
- Change reserved block
alloc/dealloc code to skip bad maps, not abort
- Don't skip processes
that return SS$_SUSPENDED in $GETJPI from cforce on OpenVMS
Platforms:
OpenVMS
- Set wdstop when any
write daemon exits
- Use NANOSLEEP instead
of select() for timed sleeps on HP-UX
Platforms: Tru64
- Adjust spinloop
counters on HP-UX
Platforms: HP-UX
- Fix exception
allocating more than 2^31 bytes of global bdb's
- $ZU(158) function
call failing on Caché 5 Unicode
- Corrected JOBEXAM /
Control Panel TCP read data corruption
- Create list file for
loading Caché KM in BMC Patrol
- Save/Restore the
process priority of the control process during job startup on UNIX and
Windows
- On VMS display the
correct process priority when examining processes
Platforms: OpenVMS
- Fix problem with 3 or
more argument $BITLOGIC
- TASKMANAGER - set
start date properly, improve queries, add simple menu to drive
- Fix output file error
in GBLOCKCOPY
- Lock out other
gcompact on same database
- GBLOCKCOPY allows
conversion of collation 0 globals
System.Backup/Restore
- 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
- preserve wij info of
the old master for failover
- Fix a race condition
on Caché clusters
- Fix false
<FILEFULL> in cluster mounted 2kb database
- Fix expansion daemon
so it runs if another process needs it during cluster failover
- Correct problem with
cluster failover when switch 13 or 14 was set
System.I/O
- Fix rare access
violations when using |TNT| devices on Windows
- Fix timeout bug in
LAT device open (ttyopenlat)
System.Journaling
- address an issue of
journal daemon hanging
- During cluster
failover/recovery, transaction rollback would fail if the new master had more
than 254 databases mounted
- fix a bug that caused
journal daemon to skip writing some journal buffers and result in system
hang
Platforms: OpenVMS
- Address a deadlock
situation between journal daemon and write daemon during jrnswitch
- Correct race
condition on journal switching on OpenVMS
Platforms: OpenVMS
- Changed journaling to
avoid incorrect exits
System.Licensing
- Ensure that Caché can
run from directories with spaces in the names
System.Shadowing
- address a performance
problem with shadowing
- correct a potential
problem in fast-mode shadowing
System.Shutdown
- Create a
CACCVIO-PID.LOG file for PAGRDERR and PAGRDERRXM errors
- No error capture on
calls dealloc_resident_mem()
System.StartUp
- Increase SZGVXTAB to
32K
- Compiler error detail
for missing */
- Fix Customer Name in
restart splash screen
System.TCP Devices
- Increase the size of
the ctelnetd listen queue
Platforms: Windows
Utilities
- Config Manager uses
same definition of remote servers as other desktop utilities
- when we import .OBJ
code we don't update the ^rINDEX("routine_name") node
- Adjust fields for
non-English texts
- MSM-Activate did not
work against Unicode Caché server
Change Details
The remainder of this document gives the details for each
of the earlier change summary references.
Category: SQL.Query Processing
Platforms: All
DevKey: AK553
Summary: Query optimization gives <UNDEFINED>error
Description:
Corrected a somewhat exotic query optimization problem
which could result in an <UNDEFINED> error at runtime. For example, this
occurred in some cases when a ROWID was used in the WHERE clause of a subquery.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: Relational Gateway
Platforms: Tru64
DevKey: <none>
Summary: Relational Gateway use problematic on Tru64
Description:
The operational state of the Caché Relational Gateway on the Tru64 platform is
problematic. Attempts to use it will most likely result in
inconsistent results. Contact the InterSystems WorldWide Response
Center for additional details.
Category: SQL.Query Processing
Platforms: All
DevKey: AK553
Summary: Query optimization gives <UNDEFINED> error
Description:
Corrected a somewhat exotic query optimization problem
which could result in an <UNDEFINED> error at runtime. For example, this
occurred in some cases when a ROWID was used in the WHERE clause of a subquery.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK554
Summary: Fix JOIN optimization bug
Description:
Corrects a SQL join optimization problem which was
introduced in Caché 5.0.0 and may result in incomplete result set.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK556
Summary: Improve OR optimization
Description:
Take advantage of index maps while avoiding the generation
of virtual fields and conditions. This is an optimization to OR expressions in
SQL.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
Yes |
No |
Category: Installation
Platforms: All
DevKey: ALE159
Summary: Install all localized resource files when in non-English
locale
Description:
This allows changing Caché localization without having to
re-run install.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Installation.VMS
Platforms: OpenVMS
DevKey: ALE169
Summary: VMS installs SAX
Description:
Package and install VMS executables needed for CacheSAX.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Installation.Windows
Platforms: Windows
DevKey: ALE176
Summary: On machines which can run the Pentium4 optimized executable, give
users the option, during install, of P4 distribution (default) or regular
Description:
Previously the P4 executables were always installed on
machines which could run them
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: Installation.Windows
Platforms: Windows
DevKey: ALE177
Summary: Upgrade installations of CSP gateway on VMS failed to correctly
modify httpd.conf
Description:
Previously, we incorrectly edited Apache configuration
files in csp-bin directory section.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Installation
Platforms: UNIX, OpenVMS
DevKey: ALE186
Summary: Structure of /doc directory changed
Description:
It now has the same structure as on Windows platforms.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: SQL.JDBC
Platforms: All
DevKey: AND269
Summary: Tighten JDBC Call Syntax
Description:
While stored procedures through both ODBC and JDBC were
generally in a fairly good shape, there were some complaints about poor error
reporting in cases where the CALL syntax was not used in a standard way. The
CALL syntax checking has been improved by providing better error reporting.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.JDBC
Platforms: All
DevKey: AND270
Summary: Allow calls to getUpdateCount after executeUpdate
Description:
According to the JDBC spec, getUpdateCount should be called
only after a call to execute (or getMoreResults), but not afterexecuteUpdate (or
executeQuery). However, this behavior is not only strange, but also not
supported by other vendors. The driver is now changed so that one can call
getUpdateCount after executeUpdate.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: SQL.ODBC
Platforms: All
DevKey: AND273
Summary: Allow programmatic (on-the-fly) DSN setup
Description:
Caché ODBC driver now allows programmatic DSN definitions
via the SQLConfigDataSource API. Here's a list of key-value keywords that we
support:
- DSN
- SERVER
- PORT
- DATABASE
- UID
- PWD
For example, a DSN setup string should look like:
"DSN=Test\0SERVER=127.0.0.1\0DATABASE=USER\0PWD=sys\0PORT=1972\0UID=_system\0"
Any other key-value pairs will be discarded.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
No |
Yes |
Category: SQL.JDBC
Platforms: All
DevKey: AND274
Summary: Add (optional) NODELAY flag at the end of JDBC URL string
Description:
There is now
parsing logic that recognizes
optional :nodelay flag (where nodelay = {true,false}) at the end of the URL
string. Here's the updated Caché JDBC URL format:\
jdbc:Caché://localhost:port/namespace[/logfile:eventclass:nodelay]
where [/logfile:eventclass:nodelay] part is optional. Here are some
examples:
jdbc:Caché://127.0.0.1:1972/USER
jdbc:Caché://127.0.0.1:1972/USER/jdbc.log
jdbc:Caché://127.0.0.1:1972/USER/jdbc.log:event16:false
jdbc:Caché://127.0.0.1:1972/USER/jdbc.log::false
jdbc:Caché://127.0.0.1:1972/USER/::false
We have also added the following two Caché JDBC specific APIs to
CachéDataSource:
public void setNodelay(boolean nodelay);
public boolean getNodelay();
that can be also used to set nodelay flag if connecting via DataSource
object. We have still left the ability to set this flag via Properties connect
parameter. That means that if nodelay was set by specifying the flag in the URL
string (or via DataSource object), one can still override this by supplying
TCP_NODELAY property. In other words, here is how the setting of this flag is
determined. It defaults to 'true'. If supplied in URL, or by setting it through
the DataSource object, that value will be used, UNLESS TCP_NODELAY property is
set.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: SQL.JDBC
Platforms: All
DevKey: AND276
Summary: Fix potential <FRAMESTACK> error
Description:
Two instances of a potential FRAMESTACK error were
discovered by code inspection and fixed.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.JDBC
Platforms: All
DevKey: AND277
Summary: Add support for get/setXXX(String parameterName,...) JDBC 3.0
APIs
Description:
With the addition of parameter name to the parameter meta
data returned by the server, it was easy to add a number of
CallableStatement.setXXX and getXXX APIs that take parameter name (as opposed to
the parameter index) as an argument. Note: we still officially support JDBC 2.x
only. Therefore, for now, the APIs added by this change are merely an extended
functionality.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: SQL.JDBC
Platforms: All
DevKey: AND281
Summary: Keep references to currently used statements in the statement
pool
Description:
CachéStatement.finalize() called from a finalizer thread
unconditionally cleans up. That sometimes interferes with application threads
that reuse the same object. We now keep references to all currently used
statements in the statement pool to keep this from occurring.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.JDBC
Platforms: All
DevKey: AND282
Summary: Add closed flag to Stream classes
Description:
We added a closed flag to the Stream class and it's
subclasses, and added checks to prevent exceptions when stream is closed twice.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.JDBC
Platforms: All
DevKey: AND284
Summary: Shut down the connection after receiving message sequencing
error
Description:
After receiving error 452 (message sequencing error) the
connection is unusable. We have now added code that closes a connection (that
includes sending a disconnect message to %qserver) once it receives error 452.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.JDBC
Platforms: All
DevKey: AND285
Summary: Change Statement.executeBatch error reporting behavior
Description:
When executing an INSERT statement via
Statement.addBatch()/executeBatch(), if the target table does not exist the
int[] returned by atchUpdateException.getUpdateCounts() should expose the failed
statement. Instead int[] {0} is returned.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.JDBC
Platforms: All
DevKey: AND286
Summary: Enhance client cache management for stored procedures
Description:
Upon seeing a DDL statement, we clean up the client side
cache. After that, any active statements need to be reprepared. Formerly, this
applied only to regular SQL; stored procedures were not reprepared, and that was
the problem. Now all statements are reprepared.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: SQL.JDBC
Platforms: All
DevKey: AND288
Summary: Use a trick to make CachéConnection object available
Description:
Most App Servers wrap native JDBC Connection objects so
that they are not available to the end user. However we need CachéConnection
object for use in Java Binding. With this change, we have added some code to
obtain a QuickStatement object.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: SQL.ODBC
Platforms: All
DevKey: AND292
Summary: Return length in number of bytes for RetrieveStream
Description:
We added logic that computed and returned number of bytes
instead of number of characters in %qserver.ReadStream. This fixed a problem in
JDBC; however, ODBC uses RetrieveStream instead of ReadStream. We have now added
the same logic to RetrieveStream.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.JDBC
Platforms: All
DevKey: AND306
Summary: Introduce new Stream Error Code 411
Description:
Improved error reporting of Stream errors. More
specifically, "General Stream Error (412)" is now reported as "No stream object
defined for field (411)".
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.ODBC
Platforms: All
DevKey: AND309
Summary: Reintroduce QuickStatment.close; Change in empty stream
retrieval
Description:
We have changed how we store empty character streams and
now made a corresponding change in %qserver to handle empty character stream
retrieval. We have reintroduced close in QuickStatement. It needs to be invoked
in order to prevent %qserver memory leaks.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: BJB250
Summary: Fix Subscript error on UNION with many blank fields
Description:
AK492 made some changes to avoid subscript errors on UNION
by restricting the length of subscript to 151 char. This was not small enough.
Because the subscript was a LIST when it got encoded it could double in size.
Worst case would be a list of NULLs, 151 control characters that would need to
be quoted by the encoding, doubling the length and pushing it over the 255 char
limit for a single subscript of a global. To stay under the 255 limit the length
must be reduced from 151 to 125 in distinct^%qaqcpr.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
Yes |
No |
Category: SQL.Server
Platforms: All
DevKey: BJB252
Summary: Add check for <DSCON> in DieError to avoid looping
Description:
In Caché5.0.0 if an ODBC server got a <DSCON> error the
server would go into a loop and start to eat up the CPU. If this happens now the
server will HALT
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
Yes |
No |
Category: SQL.ODBC
Platforms: All
DevKey: BJB253
Summary: Fix calculation for ODBC precision
Description:
If you had a numeric field with a negative MinVal it is
possible we would compute the precision incorrectly.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: SQL
Platforms: All
DevKey: BJB257
Summary: change datepart("week",date) to match SQL server behavior
Description:
DatePart("wk",date) was returning the number of the week
the date fell in based on multiples of 7 days from January 1. If now returns
weeks based on rows in the calendar, so the first Sunday of the year marks the
changing from Week one to week 2. This means week one most of the time will have
less than 7 days in it. With this change the range of values returned by this
function change from 53 to 54.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
Yes |
No |
Category: Languages.Caché Basic
Platforms: All
DevKey: CDS363
Summary: Fixed <BREAK> processing error
Description:
This fixes a problem where a direct command in Caché Basic
throwing an error at a <BREAK> prompt would cause the process to crash.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: System.StartUp
Platforms: All
DevKey: CDS374
Summary: Compiler error detail for missing */
Description:
Fixed an error where a /* comment without a closing */ in
ObjectScript gives an "Invalid command" error.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: System
Platforms: All
DevKey: CDS381
Summary: The error trap, %ETN, now stores the values of formal
parameters
Description:
%ER would incorrectly identify <UNDEFINED> variables
as having a value after an error. %ER would not display formal parameters.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
Yes |
No |
Category: System
Platforms: All
DevKey: CDS382
Summary: Fix ZQUIT not popping enough frames
Description:
A ZQUIT in an error trap did not pop a frame level. The
GOTO @$ZTRAP went back to the same error trap. For example, ZQUIT 1 should pop
one execution level. This now works properly.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Explorer
Platforms: All
DevKey: CFL861
Summary: EXPLORER now allows half-width Katakana symbols in its global
mask
Description:
We now allow half-width Katakana characters in global
subscripts. Previously, Explorer would report an invalid subscript.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
No |
Yes |
Category: Installation
Platforms: All
DevKey: CFL867
Summary: CSP Autocompile setting is preserved on upgrade installations
Description:
The CSP autocompile setting is preserved upon upgrade.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| High |
Low |
Yes |
No |
Category: Utilities
Platforms: All
DevKey: CFL868, CFL871
Summary: Adjust fields for non-English texts
Description:
Widen various fields to accommodate truncated non-English
captions.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| High |
Low |
No |
No |
Category: Control Panel
Platforms: All
DevKey: CFL869
Summary: Fix Max %Full column in Control Panel | Local Databases
Description:
Correct Max %Full column display in Control Panel | Local
Databases.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL875
Summary: Fix config file corruption when the file size > 64KB
Description:
Configuration Manager no longer corrupts the cache.cpf file
when it's larger than 64K.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
Yes |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL885
Summary: Correct handling of null passwords for SQL Gateway
Description:
Null passwords were modified whenever other edits were made
to the configuration file.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: Explorer
Platforms: All
DevKey: CFL887
Summary: Fix Find/Replace on unsubscripted nodes
Description:
Using Explore, Replace Every now correctly works on
unsubscripted global references such as "^GLOBAL=string".
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL890
Summary: Preserve restart condition across multiple configuration manager
edits
Description:
If multiple edits were made and the last one did not
require a restart but others did, the config manager would inconsistently apply
the changes.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
No |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL891
Summary: Fix the ability to map all routine types
Description:
The configuration manager now knows how to map all routine
types.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
No |
No |
Category: Explorer
Platforms: All
DevKey: CFL892
Summary: Fix Selecting in Explorer with Multiple Wildcards
Description:
Explorer handles wildcard usage with Routines better.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: Utilities
Platforms: All
DevKey: CFL894
Summary: Config Manager uses same definition of remote servers as other
desktop utilities
Description:
The Config Manager was changed to search for remote servers
in the same manner as other utilities.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL896
Summary: Eliminate length limit on ECP server add/edit
Description:
We have removed the 15-character limit on host names for
ECP.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: System.StartUp
Platforms: All
DevKey: CFL897
Summary: Fix Customer Name in restart splash screen
Description:
If the Customer Name in the .key file contained a comma,
the start and restart splash screen displayed only the first comma-delimited
piece of the name. This is now fixed.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: Explorer
Platforms: All
DevKey: CFL901
Summary: Fix <MAXSTRING> error when exporting thousands of
classes
Description:
Corrected a problem when exporting a lot of classes from
Explorer. Previously, you might experience a MAXSTRING error at
cexport+15^%Wprog.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: Utilities
Platforms: All
DevKey: CFL902
Summary: when we import .OBJ code we don't update the
^rINDEX("routine_name") node
Description:
Importing routines in object mode did not update the
appropriate indices. So the routines did not seem to be present after import.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: Control Panel
Platforms: OpenVMS
DevKey: CFL903
Summary: Background integrity check on OpenVMS produced two files, the log
file and an empty file
Description:
Empty files were produced IN ADDITION TO the expected log
file.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: Explorer
Platforms: All
DevKey: CFL905
Summary: Explorer gets errors when editing globals with digits in their
name
Description:
This could be very serious. Digits in the global name were
dropped when EXPLORER set the new values. So unintended data loss could occur.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
No |
No |
Category: Explorer
Platforms: All
DevKey: CFL908
Summary: Fix import from a file with thousands of classes
Description:
Importing thousands of classes using Explorer, you may
encounter a <MAXSTRING> error.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL910
Summary: Disallow setting user process priorities
Description:
The config manager no longer offers the choice of setting
operating system priorities for user processes. The niceval parameter is
deprecated in the Configuration Manager and ignored when included in the
cache.cpf configuration file.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Control Panel
Platforms: All
DevKey: CFL912
Summary: Remove "Switch Journal File after Backup" checkbox
Description:
We have removed the "Switch Journal File after Backup"
checkbox from Control Panel|Backup|Tasks|<TASK>|Edit. The journal file is always
switched in the beginning of the task, no matter that option is marked or not.
No journal switch occurs in the end of the task.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: Control Panel
Platforms: All
DevKey: CFL919
Summary: Fix namespace name truncation
Description:
Correct display of long namespace names which were
previously truncated.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT071
Summary: Resolve issues whereby hyperevent calls would fail, seemingly at
random, within applications operating for extended periods of time in
state-aware mode (preserve mode 1)
Description:
Resolve issues whereby hyperevent calls would fail,
seemingly at random, within applications operating for extended periods of time
in state-aware mode (preserve mode 1).
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: CSP.Gateway
Platforms: OpenVMS
DevKey: CMT075
Summary: Emergency fix for a potential issue in the Gateway's garbage
collector that could lead to an accumulation of 'defunct' connections
Description:
This build represents an emergency fix for a potential
issue in the Gateway's garbage collector that could result in the garbage
collector becoming temporarily suspended, which, in turn, would lead to an
accumulation of 'defunct' connections over a short period of time. The Windows
and UNIX builds will automatically recover from this issue. The OpenVMS NSD may
throw a fatal 'access violation'.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: CSP.Gateway
Platforms: Tru64
DevKey: CMT078
Summary: Resolve an issue whereby a thread within the NSD would spin and
consume excess CPU time under Tru64 UNIX
Description:
Resolve an issue whereby a thread within the NSD would spin
and consume excess CPU time under Tru64 UNIX.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
No |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT079
Summary: Improve the mechanisms within the NSD for detecting, and responding
to, an interrupt from the browser
Description:
Improve the mechanisms within the NSD for detecting, and
responding to, an interrupt from the browser.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: CSP.Gateway
Platforms: Tru64
DevKey: CMT080
Summary: Resolve an issue in the page output caching mechanism that could
result in a thread spinning (and using much CPU time) under Tru64 UNIX
Description:
Resolve an issue in the page output caching mechanism that
could result in a thread spinning (and using much CPU time) under Tru64 UNIX.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
No |
No |
Category: CSP.Gateway
Platforms: Tru64
DevKey: CMT082
Summary: Resolve further issues with the UNIX implementation of change
CMT071 (Manifested as the NSD aborting on Tru64 UNIX)
Description:
A fault was found in the mechanism for automatically
recovering state-aware sessions after the user-driven interrupt of a request.
This error would particularly occur for requests taking a number of seconds to
service. This problem may manifest itself as an occasional SIGSEGV fault (code
11) which would often be followed by the OS issuing an abort signal (code 6) to
the NSD.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
Yes |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT083
Summary: Introduce a better filter for malformed URLs (and incorrectly
specified components within otherwise valid URLs)
Description:
Introduce a better filter for malformed URLs (and
incorrectly specified components within otherwise valid URLs). The specific
examples are:
http://127.0.0.1/csp/samples/menu.csp?&"
http://127.0.0.1/csp/samples/menu.csp?&=
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
Yes |
Category: System
Platforms: All
DevKey: DAS445
Summary: Fix memory leak in Job Servers
Description:
Each time a Job Server restarted the virtual memory count
would increase. This memory leak has been corrected.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Languages.Caché Basic
Platforms: All
DevKey: DAS446
Summary: Fix CachéBasic DatePart() and DateDiff() with week parameter
Description:
The "ww" option for DateDiff() and DatePart() is now
working correctly.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Languages.Cache Basic
Platforms: All
DevKey: DAS449
Summary: On all platforms, make max udp packet size for DCP be 1468
Description:
The default size had been 3600 on VMS. On some VMS
versions, this resulted in fragmentation which in turn caused occasional DCP
hangs.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
No |
No |
Category: SQL.GateWay
Platforms: All
DevKey: DLP1002
Summary: <INVALID OREF>zSQLGWExecute+5^%ooLibrary.DynamicQueryGW.1
Description:
Fixed the following sequence
temp ;
Set conn=##class(%SQLGatewayConnection).%New()
Set res=##class(%ResultSet).%New("%DynamicQuery:SQL")
Write conn.Connect("CACHE5B476 Samples","_system","")
Set res=##class(%ResultSet).%New("%DynamicQueryGW:SQLGW")
Write res.Prepare("select * from Sample.Company",,conn)
Write res.Execute()
q
which generated a <INVALID
OREF>zSQLGWExecute+5^%ooLibrary.DynamicQueryGW.1 error in 5.0. This error is
caused by an oref in a $list structure. The structure of qHandle was changed
from a $list() to a local array.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Object.Stream
Platforms: All
DevKey: DLP1007
Summary: %Delete leaves open transaction
Description:
%Delete in a class with a character stream leaves a
transaction open if you try to delete a non-existing id.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP986
Summary: Fix bug in check for Class compiler interrupt
Description:
Prior to this change an attempt to compile a large number
of classes which generated long error messages would generate a <LIST> error and
classes which do not have errors will not be runnable. After this change the
correct error message (not a <LIST> error) will be reported and other classes
which successfully compile in the same compile cycle should be runnable.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP992
Summary: Qualify StorageToLogical call with property name
Description:
Corrected a problem in exporting Caché classes which have
been converted from release 4.x to 5.0.0 and subsequently exported to Java.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP993
Summary: Check actual number of parameters against formal spec
Description:
Dynamic queries are preparsed and literals are replaced
with '?'. The preparsed query is used to lookup a cached query. If a suitable
cached query is found it is used otherwise a new query is constructed and
cached. The preparser recognizes '?' and reports their location. The location
and value of substituted literals is also reported. The dynamic query as
implemented in %DynamicQuery::SQL only supports 16 formal arguments. The dynamic
query compiler was incorrectly including substituted literals when checking to
see if more than 16 '?' are specified in the query. If >16 an error 'Too many
parameters' is returned.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL
Platforms: All
DevKey: DLP996
Summary: Add Message property to %SQLProcContext
Description:
Additional error detail is often provided to xDBC clients
from the %msg local variable. SQL places additional information in that
variable. Stored procedures report SQL error information and rows processed in
the %sqlcontext object. However, this object did not provide a property in which
to place additional error information.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP998
Summary: Count only actual parameters in a dynamic query
Description:
When a dynamic query is initially cached all literals are
replaced with parameters. Then all parameters are reported by GetInfo. It is not
valid that a replaced literal be reported as a parameter. GetInfo() now
constructs parameter information from the query as submitted. Only parameters
actually contained in that query will be reported by GetInfo().
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Medium |
No |
Yes |
Category: System.I/O
Platforms: All
DevKey: DMD032
Summary: Fix rare access violations when using |TNT| devices on Windows
Description:
This fix corrects an error when using |TNT| devices that
manifested itself as access violation errors on Windows.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: System.TCP Devices
Platforms: Windows
DevKey: DMD035
Summary: Increase the size of the ctelnetd listen queue
Description:
Increased the size of the telnet daemon's listen queue to
prevent failed connection attempts if many users are connecting at approximately
the same time.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: System.Shutdown
Platforms: All
DevKey: DMD038
Summary: Create a CACCVIO-PID.LOG file for PAGRDERR and PAGRDERRXM
errors
Description:
If there is a hardware problem that leads to a SS$_PAGRDERR
or SS$_PAGRDERRXM error, this will be logged in a CACCVIO-PID.LOG file.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL
Platforms: All
DevKey: DPV1895
Summary: Fix return type for some ODBC Scalar functions
Description:
Some date- and time-related functions previously reported
their results using the wrong ODBC datatype. Specifically, they returned a
DOUBLE when they should have returned an INTEGER. The functions are:
- second
- minute
- hour
- week
- month
- year
- dayofweek
- dayofmonth
- dayofyear
The following functions previously reported DOUBLE and
now report VARCHAR:
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
CONVERT(TimeStamp,'abc',131)
Will throw an SQLCODE=-141 error.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: SQL.JDBC
Platforms: All
DevKey: DPV1921
Summary: Fix JDBC reporting of foreign keys
Description:
Using the JDBC getExportKeys() function, Caché did not
correctly report foreign keys when a table contained multiple foreign key
references to another table.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.JDBC
Platforms: All
DevKey: DPV1922
Summary: Correct JDBC reporting of parent reference field
Description:
When using the JDBC getExportedKeys() function, Caché did
not correctly report the name of the parent reference field.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL
Platforms: All
DevKey: DPV1924
Summary: Add checks to make sure string fields don't contain map piece
delimiter characters
Description:
Caché SQL has been enhanced to automatically detect field
values that contain characters used as delimiters in the associated global node
where the field is stored. This validation, which is OFF by default, is
controlled by a new class parameter, STORAGEDELIMITERCHECK.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
Yes |
Category: SQL
Platforms: All
DevKey: DPV1927
Summary: Fix query generated %QuickLoad function to not scan entire
table
Description:
We previously changed the Quick* functions so we treat all
ID's and references as Logical values. As part of this change I used some WHERE
conditions in an SQL statement of the form:
WHERE %INTERNAL(%ID) = :value
This caused the query to loop over all the records instead of fetching
just the record we are looking for. I'm not sure why %INTERNAL(%ID) isn't
treated the same internally as %ID, but I guess the query processor is not
optimized for it. It has been changed to just use a query of the form %ID =
:value for QuickLoad and the other instances where this code generation might
occur.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL
Platforms: All
DevKey: DPV1935
Summary: Fix DATEPART("wk",...) calculation
Description:
The calculation of week numbers carried out by the DATEPART
function returned an incorrect value. For example,
DATEPART("wk","2003-02-10")
returns 6 instead of the correct result, 7. This function is included for
Sybase SQLServer compatibility.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: SQL
Platforms: All
DevKey: DPV1940
Summary: Fix code generation problem with large indices
Description:
Corrected a problem where the code generator was
erroneously splitting lines when they were longer than 200 characters. This
specific case was a long index name with 8 or more fields in the index.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
Yes |
No |
Category: SQL
Platforms: All
DevKey: DPV1941
Summary: Fix QuickLoad problem involving primary keys and SQL queries
Description:
Corrected a code generation problem with QuickLoad when
there was a Primary Key index that was also the IDKey and the loading of a row
required an SQL query instead of direct global access.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
Yes |
No |
Category: SQL.Syntax
Platforms: All
DevKey: DPV1942
Summary: Fix <UNDEFINED> in parsing string function
Description:
Corrected an <UNDEFINED> error in the SQL scalar function,
STRING.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL
Platforms: All
DevKey: DPV1943
Summary: Fix insert select of stream field
Description:
Corrected a problem with INSERT ... SELECT
commands involving stream data that could result in incorrect values being
inserted.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
Yes |
No |
Category: SQL
Platforms: All
DevKey: DPV1944
Summary: Store empty LONGVARCHAR streams with "" instead of $c(0)
Description:
When saving a literal value of '' (SQL Empty String) in a
LONGVARCHAR field (GlobalCharacterStream), we now store a zero-length string
("") in the stream object rather than $c(0).
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: SQL
Platforms: All
DevKey: DPV1945
Summary: Correct TuneTable selectivity calculation for tables with UNIQUE
fields
Description:
TuneTable may incorrectly calculate the Selectivity for a
table with UNIUQUE fields.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
Yes |
No |
Category: SQL
Platforms: All
DevKey: DPV1946
Summary: Support global reference with vertical-bar syntax in mappings
Description:
Using vertical bars in global mapping references now works
as expected without compilation errors. That is:
^[$get(^nsp)]a -> always worked
^|$get(^nsp)|a -> now works
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
Yes |
Category: SQL
Platforms: All
DevKey: DPV1947
Summary: Add CONSTRAINT_OBJECT_NAME to %Library.SQLCatalog.SQLConstraints
procedure
Description:
A column CONSTRAINT_OBJECT_NAME has been added to the
%Library.SQLCatalog_SQLConstraints stored procedure. This column contains the
Object name of the foreign key or index which projected the constraint. The full
rowspec of the SQLConstraints procedure is now:
SQLConstraints Procedure
%SQLCatalog_SQLConstraints('tablename')
Takes 1 %String/VARCHAR type parameter which is the name of a BaseTable.
Returns all fields in the table:
ROWSPEC = CONSTRAINT_NAME:%String - Name of the constraint
TYPE:%String - Type of constraint
CONSTRAINT_DATE:%String - Constraint info depends on type
CONSTRAINT_OBJECT_NAME:%String - Object name of the constraint
Rows are returned in no particular order
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: SQL.Server
Platforms: All
DevKey: DPV1954
Summary: Fix Addqout^%qserver with > 32000 characters of data
Description:
Addqout, in xDBC server, did not handle more than 32000
characters.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
No |
Yes |
Category: SQL
Platforms: All
DevKey: DPV1962
Summary: Field-specific UPDATE triggers execute too often
Description:
Corrected a problem that could cause an update trigger,
which should be executed only when the values of specific fields have changed,
to be executed when any field's value changed. Here's a specific example:
Create Trigger LogArt AFTER UPDATE OF Price on pl31607 REFERENCING NEW ROW as NR
INSERT INTO pl31607Log(LogDate,ARTID, Price)
values ( CURRENT_TIMESTAMP, NR.ARTID, NR.PRICE)
was getting executed for every update, not just updates of the Price
field.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: SQL
Platforms: All
DevKey: DPV1968
Summary: Support Quick %nolock=2 which simply means behave as if standard
SQL statement
Description:
Honor current transaction isolation in Quick* API.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
No |
Yes |
Category: SQL
Platforms: All
DevKey: DPV1969
Summary: Ensured Proper Operations of Descending-Order Sorts
Description:
Previously, a descending-order sort in certain queries (for
example, those containing "COUNT(*)") resulted in data sorted in ascending order
when it should have been descending. This has been addressed.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production |
This change is an enhancement |
| Medium |
Low |
No |
No |
Category: Studio
Platforms: All
DevKey: (See below)
Summary: Multiple improvements to Studio
Description:
The following improvements were made to Studio:
- AGC185: Studio COS parser - improve handing of unclosed /*
- AGC204: Studio SQ parser - accept CONVERT scalar function
- DVU623: Allow 5 decimal points for selectivity
- DVU625: Cancel Debugger if user select Cancel in "SetDebug Target" dialog
- DVU626: Open Routine doesn't use Correct SourceControl
- DVU627: Added source control support for project and access to source
control from project tree.
- DVU628: No longer open added to project items automatically.
- DVU629: Generate valid Basic method in override Get/Set for Properties
- DVU632: No longer update the source code when copying a class
- DVU634: Change behavior of Delete Item in Studio
- DVU635: Make autocomplete in "GoTo" combo Case Sensitive
- DVU638: Template URL now have a parameter &DocumentNamespace in
addition to &Namespace.
- DVU640: The right-click menu has a trailing section-separator with no
following item, unless invoked on a package. This is fixed.
- DVU641: Remember the state of "Include System Items" in Open Dialogue
- DVU642: Change menu item 'Recent Files' to 'Recent Routines'
- DVU643: Added Message Box on Find Next before wrapping
- DVU644: Support Ctrl-Tab and Shift -Tab in Find/Replace dialog
- DVU645: Reset the STORAGESTRATEGY to "" if it was Deleted
- DVU648: Check inspector changes before closing studio.
- DVU650: 'Delete' button deletes only first element of multiple select
- DVU652: New Index Wizard. Disable Bitmap option for IDKEY, Unique and
Primary keys.
- DVU653: Eliminate error when Deleting new class
- DVU654: Address problem when creating a COS routine and then using Save As
.BAS
- DVU655: Fix Race Condition in Studio Display
- DVU656: Correct Ctrl/A behavior in output box
- DVU657: Loading class on Win XP cause multiple Inspector repaint.
- DVU658: It was possible that routine will exists without a timestamp. We
now check if it really exists before deciding that it was deleted.
- DVU659: export showed duplicate entries
- DVU660: Import dialog in Studio should have mask for *.csp,*.csr
- DVU661: If Registry is empty Connection Manager was showing "File not
find". We will not display this error any more.
- DVU673: Save color table after editing.
- DVU675: Changes to a newly created class are not saved upon exiting
Studio.
- DVU679: Correct tab order in File Open Dialog
- DVU687: Allow JavaScript editing in Studio.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Object.ActiveX
Platforms: All
DevKey: DVU630
Summary: Don't ask password for Namespace list in connection manager
Description:
If you have Caché Direct security turned on and you try to
use the SQL Manger you have to enter the Caché Direct User name and Password
several times. The error message for this has been fixed.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low
|
| No |
No |
Category: System
Platforms: All
DevKey: EKP009
Summary: Fix a DTM network emulation bug in $DATA
Description:
A bug in the DTM network emulation function zu107fun()
which would sometimes cause error code 258 has been corrected.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: Networking
Platforms: All
DevKey: GK169
Summary: Fix occasional segmentation violation when doing reverse $ORDER
over ECP on BIG-ENDIAN systems
Description:
Big endian gorder didn't check the returned value before
fetching on ECP systems. It was modified to check if there is a valid value
before de-referencing it.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK170
Summary: ECP answer buffer overrun
Description:
This fixed a bug which caused answer buffer overruns in
ECP.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK171
Summary: Improve the handling of asynchronous messages queued from the
server
Description:
This flag is set when the ECP read daemon is in the middle
of answering a request. If the flag is set then various requests may produce
asynchronous answer messages which could be inserted in the answer buffer,
otherwise asynchronous messages will be queued to be sent later.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK173
Summary: On recovery failure acquire ECP client resource
Description:
On recovery failure, ECP released the exclusive ownership
of the client request buffer without owning the client resource. It has been
changed to (re)acquire the resource (if didn't own), before releasing the
exclusive ownership.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK174
Summary: Accommodate largest possible size of UNICODE strings over ECP
Description:
5.0.0 client will hang if a 32K char uncompressed Unicode
string is set over ECP. If 5.0.1 client is connected to a 5.0.0 ECP server, a 32
char uncompressed Unicode string set will drop the ECP connection with ERSYSTM
error, and "bignet_net_read: Invalid pkt len - len.." msg in the server
cconsole.log. 5.0.1 ECP client and server is required to resolve this problem..
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK175
Summary: When running ECP over old format databases (2Kb), optimization
information was sometimes (rarely) overwritten
Description:
If the block had optimization info, and the following
global reference ccc(common char count) is > optimization, then the delta was
left with a garbage value.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK176
Summary: Ensure correct concurrent synchronization in ECP when allocating
space for a request entry
Description:
Code review uncovered a missing MEMBAR request which could
cause ECP client hangs or request corruptions. It could cause a hang or data
corruption. This has been fixed.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK177
Summary: Correct rare ECP synchronization of the application server cache
(old format (2K) databases)
Description:
On rare occasions, if both a set AND a subsequent kill
affecting the same node in a 2Kb database had not been transmitted to the ECP
database server, the application server may misapply a delete node request.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: Linux, HP
DevKey: GK178
Summary: Fix handling of TCP write errors
Description:
Caché/Linux network connection doesn't detect network
disconnection.. Redhat 7.3 and 8.0 have a TCP bug: If you overflow the outQ,
then drop the server connection, the client doesn't detect that the connection
is gone/dead. There is no error from the platform when you write, and hangs
forever if the server is windows. MS resets the peer connection (it works fine
with windows), but other UNIXes i.e. Sparc or HPux don't. Worst of all, it
leaves the system buffers allocated for a very long time. We modified nettcp to
wakeup every 5 seconds to check for halt request.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK179
Summary: ECP client didn't maintain server unique ID
Description:
We modified the system to remember the server GUID after
connection/session initialization. It was getting zeroed when session recovery
was denied. Then later the session wasn't recoverable because the server didn't
accept the GUID, and complained with session out of date message.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK181
Summary: Added $System.Server HostName and IPAddresses
Description:
Added:
$system.Server.HostName()
; Returns current host name
$system.Server.IPAddresses(<OPTIONAL name host>)
;Returns specified host IPs (comma separated)
;If host name is not specified returns current host IPs.
;Note: it returns configured IPs not necessarily the actual NIC IPs
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
Yes |
Category: Networking
Platforms: All
DevKey: GK182
Summary: Slowdown ECP worker dmn creation
Description:
Pause very very briefly to allow ECP worker daemons to
start after launching.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK184
Summary: Add process ID of client process to journal record
Description:
Modified ECP server to store the client sys number and pid
in the journal.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Medium |
No |
Yes |
Category: Networking
Platforms: All
DevKey: GK185
Summary: Increased ECP cluster master connection timeout
Description:
When running ECP as a lock transport for Caché clusters,
the timeout had been set too low to accommodate cluster failover.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK186
Summary: On cluster reconnect, exit the old ECP connection gracefully
Description:
When an application server establishes an ECP connection to
a node that happens to be the master of a cluster and that node is forced down
in the narrow window when the connection is still starting up, cluster recovery
will now succeed.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK194
Summary: ECP server to keep cluster slave session forever
Description:
If a slave node of cluster (running ECP for lock transport)
is disconnected from the network, it can cleanly reconnect later on. Previously
cleanup was incomplete so that reconnect attempts were unsuccessful.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK195
Summary: TCP-send interrupted system call handling
Description:
We modified the system to ignore the exceptions bit on
select, if select says the call was interrupted.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: Networking
Platforms: All
DevKey: GK197
Summary: Properly handle modifying ECP server (via control panel or config
manager) when already up and running
Description:
The ECP client structure is not initialized properly by ECP
reinit. This corrects the issue.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
No |
No |
Category: System.Cluster Specific
Platforms: All
DevKey: HYY732
Summary: preserve wij info of the old master for failover
Description:
Fixes a problem that could cause cluster journal recovery
to fail if the previous master died nicely.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Medium |
Low |
Yes |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY733
Summary: address an issue of journal daemon hanging
Description:
Corrected a problem where in rare occasions journal daemon
might skip writing some journal buffers to disk, causing the system to hang
eventually.
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY734
Summary: During cluster failover/recovery, transaction rollback would fail
if the new master had more than 254 databases mounted
Description:
Now the recovery code properly handles the maximum number
of databases permitted
Likelihood of happening |
Risk this change introduces new problems |
Distributed in ad hoc release and installed
in production
| This change is an enhancement |
| Low |
Low |
Yes |
No |
Category: System.Journaling
Platforms: OpenVMS
DevKey: HYY741
Summary: fix a bug that caused journal daemon to skip writing some journal
buffers and result in system hang
Description:
Addressed a problem where journal daemon might skip writing
certain journal buffers after journal file has switched, resulting in corrupted
journal file and system hang. The circumstance that caused it to happen is
present on Windows and OpenVMS platforms in 4.1 or Windows platforms in 4.0 and
earlier. This problem is much less likely to occur in Caché than in earlier
releases. It is fixed in this release. The primary conditions for the problem to
occur are:
- "free system on journal I/O error", and
- there is no space in either primary or alternate directory at one point
and then
- 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.
- 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.
- 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:
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
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.
- 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.
- 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:
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.
- 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
- The generated remote, local, home, and local_home interfaces all extend
- Package.EJBExt_Class, and
- 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
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 again