|
|
|
Caché Documentation
|
|
Release Notes for Maintenance Kits Prior to Caché 5.0.21
|
Welcome and thank you for using Caché, the post-relational database.
This document has a section for each 5.0.x maintenance kit:
There is no section for 5.0.6.
This document provides a listing of changes between Caché
5.0.19
and
Caché
5.0.20.
For detailed information on getting started, see the Caché 5.0 Release Notes
(located off the Caché installation directory in the file Docs/GCRN/GCRN.html);
for information on previous 5.0 maintenance kits, see the file prenotes.htm,
located in the same directory as this file.
This document contains several sections:
InterSystems advises all users to recompile their applications as part
of the upgrade process so as to take advantage of all the performance
improvements as well as other changes that may affect them in this release.
Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate
importance to
users of our software. These include
alerts, mission critical issues, important updates, fixes, and releases
of Caché.
The most current list can be obtained from the
InterSystems Website.
Users should check this list periodically to obtain the latest information on
issues that may have an effect on the operation of their site.
Online Documentation
As a convenience to our users, InterSystems provides
online access to documentation for recent versions of
Caché at the
InterSystems Website.
From the home page choose the "Caché" tab, and on the "Downloads" menu,
select "Documentation and Help Updates" or follow
this link.
Description of a Change Report
To help you assess the impact of these changes on your
applications, each change description contains a more detailed explanation of
the modification.
All changes include a table giving pertinent information on the
issue's likelihood, impact of the change, and whether this has already been used
successfully in production by other customers.
In order to make the information easy to assimilate visually,
the tabular information has been simplified to a keyword or two and a
value. The full explanation of the keyword meanings are:
- 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 - Whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - Whether this change provides new
features or capabilities.
- Languages
- Misc
- Networking
- Networking.DDP
- Networking.ECP
- SQL
- SQL.Query Processing
- System
- System.Cluster Specific
- System.Journaling
- System.StartUp
Category: Languages
Platforms: All
DevKey: CDS421
Summary: Fix four-argument $BITFIND compiler
Description:
If the default direction of 1 was specified on $BITFIND, a <FUNCTION>
error resulted. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Misc
Platforms: All
DevKey: LRS970
Summary: Correct a couple of bugs in CacheHung.Com
Description:
The changes corrects several coding errors in
CacheHung that interfered with the proper checking on MUltiNet.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK279
Summary: Change LHANG to be consistent on all platforms
Description:
An internal function was used to pause for a specified number
of seconds. On OpenVMS, it released retained blocks before
waiting. This change modified it to not release the retained blocks on all
platforms; and release the retained block where necessary.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking.DDP
Platforms: All
DevKey: SML542
Summary: Support two digits ethernet device name for UNIX
Description:
This change supports ethernet device names that have
two trailing digits, so Caché could handle the ethernet cards
in the machine with more than 10 ethernet cards.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking.ECP
Platforms: All
DevKey: GK447
Summary: Fixed ECP recovery of partially processed request buffers
Description:
In prior releases, ECP recovery didn't track partially processed
request buffers accurately, and on server failure it could resend a
process lock request, or not send a synchronous request when it should
have. The side effects are: a lock could hang/loop the
ECP client daemon after recovery; or that some client jobs may hang
forever waiting for answer.
This change corrects that situation
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2506
Summary: TLEVEL not being adjusted properly
Description:
A problem has been fixed where
- multiple SQL insert/update actions occur within a single method or
procedure
- and the method or procedure is enclosed
within a transaction in AUTO_COMMIT mode.
In this situation, the method or procedure
could commit a transaction that
was started by the application code and not the filer.
This caused mismanagement of the transaction level.
It is now fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2502
Summary: Update with implicit join is broken in 5.0.18 - <UNDEFINED> error
Description:
This change corrects an error where an UPDATE
statement with an implicit JOIN in the WHERE clause using arrow syntax
could result in an <UNDEFINED> error running the query, or no
rows being updated when there should have been.
This problem was introduced in version 5.0.18.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS522
Summary: Clean up if callout setup fails
Description:
Under some conditions a QUIT command from the terminal that should clean up
after a <FRAMESTACK> error would instead halt the process. A <STORE> error
could also halt the process.
This change corrects that situation.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS691
Summary: Give <EDITED> instead of access violation if routine changes during $ZF
Description:
If a routine issues a callout ($ZF),
and the called routine in turn issues a callin to another routine that ends
up editing the routine
making the original callout while it is still active,
a memory access violation may occur
when the callout returns to the modified routine.
This fix will detect that condition and throw an
<EDITED> error instead.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK380
Summary: Shutdown to disable journaling while
waiting for the write daemon to catch up
Description:
The write daemon (WD) stores the previous check point journal index in the WIJ header.
Before shutdown signals a clean exit, it checks if the WIJ
header journal
index is the same as the journal index. If they are not, the
shutdown script modifies a dummy global and then forces a write daemon pass,
expecting the write daemon to store the latest journal index in the WIJ
header when it is finished.
If the dummy global is journaled, the modification increments the journal
index, and then the write daemon stores the previous journal index in the
WIJ. This causes the two indices to be out of synch again.
This change modifies shutdown to disable journaling in
current/shutdown process during this activity.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: OpenVMS
DevKey: GK393
Summary: Fixed hostname and IP validation
Description:
On OpenVMS systems, IP validation failed when the IP address had
no associated DNS entry. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK396
Summary: Disable ECP registration by STURECOV
Description:
This changes disables manual ECP session registration to prevent a
circumstance that resulted in the registration being performed twice.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: HYY1139
Summary: Purge the subscript-level cache when purging global vector
Description:
This change addresses an issue where a change to the journal
state of an subscript-level mapped global might not take effect immediately in
existing processes.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: 64-bit Linux
DevKey: JLC757
Summary: Fix membar for Linux/Itanium/AMD64
Description:
This change addresses an issue affecting Linux on
Itanium and AMD64 systems that might cause concurrency problems in
multiprocessor machines.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1834
Summary: SYSWATCH routine to monitor the health of a Caché system from COS
Description:
This change adds a new routine, SYSWATCH, in CACHESYS to monitor the various Caché
daemons and report if one of them terminates. This is not started by
default when the system comes up. To start this add
to
^ZSTU or SYSTEM^%ZSTART. SYSWATCH makes a console log entry if a
daemon terminates. The ^%MONITOR utility can be configured to generate
an email when this occurs.
in a terminal brings up the control menu. This lets you
start/stop the daemon, display any messages it has logged or
reconfigure the interval between cycles. The default interval is 120.
SYSWATCH records a little bit of information in
^SYS("SYSWATCH"). When it starts up, it purges any records which are
more than
30 days old.
Warning: SYSWATCH depends on
a properly functioning control process on Windows and UNix systems.
It will not operate if the control process dies or is hung.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: JO1836
Summary: Require WIJ to exist at Startup if SHUTDOWN didn't signal a clean exit
Description:
During shutdown, Caché will record whether
there are open transactions and whether journal restore is required
during the next startup.
When it next starts up, if Caché
cannot determine the last journal file from the WIJ, or if a required
journal file cannot be opened, and shutdown did not signal that
journal restore/transaction rollback were not required, the system
will not enable logins.
The -B command line flag can be used (with
csession on UNIX/OpenVMS or with ..\bin\cache -s. on Windows) to login to
Caché to resolve the problem. ^STURECOV can be used to retry
certain operations or to force Caché to start up with logins
enabled regardless of any problems which may be present.
Care should
be taken when forcing Caché to start up if journal
restore/transaction rollback cannot be run
because the application data may
be inconsistent in the globals.
In addition to the above, if the transaction rollback process queues
pending ECP transactions for later in the startup process, and if ECP
fails to properly deal with the pending transactions (either roll them
back or re-establish the transaction context), logins will not be
allowed until the problem is resolved.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1933
Summary: Update JRNSTART/JRNSTOP to work with STU code at startup
Description:
Change
JO1836 changed the product so that during startup if Caché does
not find a
WIJ and/or journal file, it will not allow users on the
system. However, in the case of a clean, normal shutdown
this check is overly-cautious and counterproductive.
This change alters ^JRNSTOP so that it leaves behind the same
information
as
^SHUTDOWN to tell ^STU that journal and transaction processing
recovery are not
required at startup.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: LFT1444
Summary: Fix Caché DDP for Cluster DSM use
Description:
This modifies Caché DDP networking for
clusters so only the master will send out advertisements. Getting
advertisements from multiple nodes from the same cluster was confusing
DSM machines.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RFD182
Summary: Fix PATROL on OpenVMS so it re-uses the same file version
Description:
Avoid creating multiple versions of the PATROL.DAT file on OpenVMS.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RFD183
Summary: Fix hang in SHUTDOWN of PERFMON
Description:
This change fixes a possible hang in SHUTDOWN
that can occur while trying to deallocate memory for PERFMON.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP168
Summary: Add severity level to opcom message
Description:
The cconsole log now contains a field denoting the
severity of the message information: 0 means informational, 1 is
warning, 2 is severe, 3 is fatal.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP199
Summary: Fix %Util to use 'quietly' parameter for loglevel, not 'severity'
Description:
Prior to this the severity code was being treated as
loglevel. This change corrects that error and properly displays the
output severity.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP233
Summary: Use OPMSG and provide severity for significant system error logging
Description:
This change supplies a severity code
for significant system
errors. Severity codes range from 0 (informational) to 3 (fatal).
They are logged in cconsole.log as a number following the date/time
and before the message.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP234; SAP235; SAP238; SAP246
Summary: Improvements to Monitor facilityConsole log monitor
Description:
This summarizes several changes and improvements to
the Monitor facility:
- SAP234
- This provides a management console for Monitor. The console
allows the operator to start and stop Monitor, set various parameters,
and define email settings.
- SAP235
- The system Monitor is started at system startup. If
email options are not configured, it enters a wait state until email
options are configured and the monitor is refreshed via the management
console. Otherwise,
it begins its monitoring of the cconsole log immediately.
- SAP238
- Allows the cconsole.log to be deleted while Cache is running.
- SAP246
- Allows the scan interval to be set. Upon setting email options for the first time and
restarting Monitor, it will have a high cpu usage because it has to
scan the entire log.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System
Platforms: 64-bit AIX
DevKey: SAP285
Summary: Support MQ on AIX 64
Description:
This change MQmake creates MQInterface.so for use on AIX 64-bit platforms.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: SAP427
Summary: Correct access violation in isend
Description:
This change corrects a situation that could case an access violation during View operations.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SJ1426
Summary: Allow larger # of active classes, release inactive classes from process table
Description:
This change allows a process to have more
classes active at any one time, and more efficiently deals
with classes that are not in active use by the process.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Cluster Specific
Platforms: All
DevKey: JO1957
Summary: Update cluster startup to read switches 8/10/11/13/14/15/21 from master
Description:
The Caché cluster code has been enhanced so
that a cluster member is no longer allowed to fully join a cluster
while a switch (10/13/14) which disables database access is set cluster-wide.
Previously this was allowed and the new system would
be allowed to cluster mount and read/write from databases. If the
cluster was in the process of performing a backup, this could cause
problems.
Now the new cluster member will detect the switches which have been
set cluster-wide and set those switches locally while it starts
up. This may mean that the Caché startup process will hang if a
switch is set which blocks global access.
A console log message will be generated if this occurs.
This version can interoperate with older versions but the new
functionality will not be present unless the master and the system
joining the cluster have been upgraded to a version with this
correction.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System.Journaling
Platforms: All
DevKey: GK443
Summary: Ignore dead ECP server open transaction jrn index
Description:
With this change, Caché
now remembers the journal index of open transactions.
In prior versions, it was possible for a dead ECP server session
to leave an invalid journal
index.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1025
Summary: Use severity levels in console messages for shadowing
Description:
Console messages for shadowing now come with
severity levels (INFO, WARNING and SEVERE).
Note: errors that are
fatal to shadowing are considered severe to the Caché system
hosting the shadow.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: JO1839
Summary: Monitor journal restore/tp rollback @ startup to generate progress info
Description:
During journal restore at startup a monitor will be
started to record the progress of the journal restore in the console
log. Messages will be generated every 5 minutes so that if the process
takes a substantial amount of time, the system manager can verify that
it is working properly.
The console log messages look like:
10/04-10:12:09:760 (17976) 0 Write daemon started.
10/04-10:12:11:042 (17400) 0 Clean Daemon Started
10/04-10:12:11:192 (13288) 0 Performing Journal Recovery
10/04-10:17:41:366 (18012) 0 Monitoring journal restore process pid 13288
10/04-10:17:41:616 (18012) 0 Journal restore progress.
File: c:\cache42\mgr\journal\20041004.015 Address: 102827040
10/04-10:17:44:881 (13288) 0 Performing Transaction Rollback
10/04-10:17:49:568 (13288) 0 Max Journal Size: 1073741824
10/04-10:17:49:588 (13288) 0 START: c:\cache42\mgr\journal\20041004.016
10/04-10:17:50:038 (13288) 0
Journaling selected globals to c:\tmpcache42\mgr\journal\20041004.016 started.
10/04-10:17:50:068 (13288) 0 Rolling back transactions ...
10/04-10:18:11:629 (18012) 0 Journal restore monitor exiting
(The entry of 17:50:038 has been placed on two separate lines.)
Note: If the journal restore takes less then 5 minutes, no messages
are generated.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System.StartUp
Platforms: Windows
DevKey: SAP118
Summary: NOSTU option for windows startup
Description:
On Caché for Windows, a new option is added
to the css program that allows a user to start only the system daemons
without doing any of the normal recovery steps. This option to the
css program looks like
css startnostu [<config>]
This functionality is required to resolve the occasional customer
crisis. One example of such a case is when journal recovery errors or
hangs the system because of filefull conditions or database errors.
You need to force down, start with NOSTU, enter Caché with the
-B option, fix the problem, and then restart. Starting with the NOSTU
option does not zero any journal recovery pointers in the WIJ. That
way, when you restart normally, you will still do the same recovery
that was pending.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
This section provides a listing of changes between Caché
5.0.18
and
Caché
5.0.19.
For detailed information on getting started, see the Caché 5.0 Release Notes
(located off the Caché installation directory in the file Docs/GCRN/GCRN.html);
for information on previous 5.0 maintenance kits, see the file prenotes.htm,
located in the same directory as this file.
This document contains several sections:
InterSystems advises all users to recompile their applications as part
of the upgrade process so as to take advantage of all the performance
improvements as well as other changes that may affect them in this release.
Known Regressions In Functionality
The following regressions in functionality are known to exist in this
release and may
adversely affect applications.
If you need an immediate correction for any of these defects, please contact
the
InterSystems
Worldwide Response Center.
They will be fixed in a future maintenance release.
- A problem has existed since Caché 5.0.16 when calling Stored Procedures.
If an application using ODBC or JDBC issues a Close Statement call,
Caché incorrectly removes all server side information about the
statement.
If the application tries to execute the same Stored Procedure a second
time,
Caché will return an <UNDEFINED> error from the server.
There is no workaround for this error.
- A defect has been identified that was introduced in Caché 5.0.11.
If you use the follow SQL syntax
SELECT PatID, Name, SSN
INTO :array()
FROM Sample.Patient
where PatID was defined as the IDKey, the node where the value of
PatID is stored could change.
In releases before 5.0.11, you would have an array that looked like:
array(2)=12345
array(3)="Doe,John"
array(4)="111223333"
while in Caché 5.0.11 and later the array would look like:
array(1)=12345
array(3)="Doe,John"
array(4)="111223333"
The value of PatID had moved from array(2) to array(1).
Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate
importance to
users of our software. These include
alerts, mission critical issues, important updates, fixes, and releases
of Caché.
The most current list can be obtained from the
InterSystems Website.
Users should check this list periodically to obtain the latest information on
issues that may have an effect on the operation of their site.
Online Documentation
As a convenience to our users, InterSystems provides
online access to documentation for recent versions of
Caché at the
InterSystems Website.
From the home page choose the "Caché" tab, and on the "Downloads" menu,
select "Documentation and Help Updates" or follow
this link.
Description of a Change Report
To help you assess the impact of these changes on your
applications, each change description contains a more detailed explanation of
the modification.
All changes include a table giving pertinent information on the
issue's likelihood, impact of the change, and whether this has already been used
successfully in production by other customers.
In order to make the information easy to assimilate visually,
the tabular information has been simplified to a keyword or two and a
value. The full explanation of the keyword meanings are:
- 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 - Whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - Whether this change provides new
features or capabilities.
- CHUI
- Languages.Cache Basic
- Networking
- Networking.ECP
- SQL.Query Processing
- System
- System.Backup/Restore
- System.Cluster Specific
- System.Journaling
- System.Lock
- System.Shadowing
- Utilities
Category: CHUI
Platforms: All
DevKey: LFT1250
Summary: Speed up routine search in CHUIs
Description:
This change corrects a problem that was slowing down routine
searches using the character-oriented utilities.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Languages.Cache Basic
Platforms: All
DevKey: DAS801
Summary: Fix CacheBasic Replace() function
Description:
This corrects a problem where Caché Basic did not correctly
handle the case where a Replace() function results in a string longer
than 32K. Before this, it resulted in a
<SYSTEM> error and/or an access
violation; now it correctly reports a
<MAXSTRING> error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Languages.Cache Basic
Platforms: All
DevKey: JN325
Summary: WorkAround AIX bug in CacheCOM
Description:
CacheCOM keeps a cache of shared library handles
which it has loaded. Due to a bug on certain versions of AIX, second
and subsequent calls to unload the library may
indicate it is not present, even
though the library remains loaded.
This change does not attempt to cache these library handles on AIX
avoiding a potential infinite loop.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK435
Summary: ECP clusters to handle dismounted cluster databases
Description:
In ECP clusters, when a cluster database is unmounted and
then remounted on the cluster master, subsequent $INCREMENTs
from the cluster slaves may fail with a <Directory>
error. This corrects the problem so the error no longer occurs.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Networking.ECP
Platforms: All
DevKey: GK438
Summary: Fixed ECP handling of system numbers on 64-bit platforms
Description:
On some 64-bit platforms (i.e. alpha VMS), when the
number of ECP connections was greater than 32, ECP did not handle
various internal states (i.e. pending transactions, client cache)
properly. This is now fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK611
Summary: Fix NULL analysis for constants/variables
Description:
This change corrects a compile-time <SUBSCRIPT> error when a WHERE clause contains any
of:
- The constants: 'NVL', 'CASE', 'IFNULL', 'ISNULL', 'COALESCE', 'NULLIF', or 'DECODE'
- The host variables :NVL, :CASE, :IFNULL, :ISNULL, :COALESCE, :NULLIF, or :DECODE.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: PVA063
Summary: Outer join with complex condition on the right operand table may return the wrong answer.
Description:
This corrects a circumstance where OUTER JOIN could
produce an incorrect answer. If there is complex condition (for
example, an OR condition) on a column of the right table of a LEFT
OUTER JOIN, and an index containing this column as a subscript is
chosen by the optimizer, then an incorrect result may be
delivered.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS674
Summary: Get number of source lines from ^ROUTINE
Description:
Before this change, a ZLOAD command would get the number of source lines
from the current object code of the routine. If more lines had been added
and saved by Studio without recompiling the routine, those lines would be
lost with a subsequent ZLOAD and ZSAVE. If lines had been removed, a
subsequent ZSAVE would get a <NOSOURCE> error.
With this change, the
ZLOAD will get the number of source lines from the current value in the
^ROUTINE global, thus correctly using the current source.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: 1
DevKey: CDS684
Summary: Fix <ERRTRAP> after <FRAMESTACK>
Description:
A fix introduced in 5.0.16 had an unintended side effect of terminating
the process after a <FRAMESTACK> error when it should have gone into a
debug prompt. This fix provides correct handling after a <FRAMESTACK>
error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: 1
DevKey: JO1787
Summary: Ignore RESJOB requests when running %ROLLBACK unless from shutdown
Description:
A process which is exiting and running %HALT, or any
of its subroutines such as %ROLLBACK, will no longer respond to RESJOB. The
process issuing the RESJOB will not receive any notification that the
target ignored it. Shutting down the system with
will
terminate these processes as it has in the past.
Additionally, direct calls to $ZUtil(4) will no longer terminate a daemon
on UNIX or Windows. These will return an error status of 0.
This change also adds a new return code from $ZUTIL(4); a -4
means the target is running %HALT so the RESJOB was
ignored.
$ZUTIL(4,<pid>,-65) can be used to force the job to exit
anyway although an open transaction will not be rolled back even
though the locks which protected it will be released.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: 1
DevKey: JO1948
Summary: Add framestack cleanup to nsswitch() for implied namespaces
Description:
This resolves a rare problem which could result in
process dumps in cases where routines switch and one or more of the
namespaces involved in the routine call stack is an implied namespace
(^^<directory reference>). This is a rare problem because implied
namespaces are not generally used in applications. This is more likely
to be seen in a development environment.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: 1
DevKey: JO1950
Summary: Fix error handling callers of setpath()/initpath() ($ZU(45), $ZU(46), $ZU(20) and $ZU(39))
Description:
The error handling cases of functions which
manipulate namespaces has been improved to avoid possible access
violations. The affected command and functions are:
- ZNSPACE command
- $ZUTIL(5)
- $ZUTIL(20)
- $ZUTIL(39)
- $ZUTIL(45)
- $ZUTIL(46)
Previously if one of these failed, certain internal structures would
be left in a not quite coherent state which could lead to subsequent
memory exceptions.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1952
Summary: Fix database expansion error
Description:
This change corrects a
rare circumstance resulting in database degradation could
occur during the addition of a secondary database volume. The error
occurs if the current size of the database ends on a map block and the
addition of the new volume requires setting incremental backup bitmap
bits. If this occurs, the write daemon will encounter a serious
disk write error because it tries to write the new bitmap blocks past
the end of the prior volume set member.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP402
Summary: Sending broadcast to CONTROL daemon causes it to exit
Description:
This change corrects that situation where
sending a broadcast to the CONTROL process with
$zu(94,<pid of CONTROL>,"test",2)
causes the CONTROL process to
core dump.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML440
Summary: Prevent quiescent failure on back up operation when job stuck in ttwrite()
Description:
This fixes an error where terminal output stopped by Control-S or
XOFF while the job is inside lock module could result in backup failing.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Backup/Restore
Platforms: All
DevKey: SML610
Summary: Fix a backup quiesce problem on cluster.
Description:
This change fixed an online backup quiesce problem
on cluster platforms with ECP channel. When there are jobs in slave
systems waiting for an answer from the master, the online backup will fail
on quiescing the cluster systems.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Cluster Specific
Platforms: All
DevKey: JO1956
Summary: Fix clearing of queue ENQDMN to avoid missed wakeups
Description:
A very rare condition which can result in a hung
Caché cluster on VMS has been resolved. The symptom is that the
ENQDMN misses a wakeup call and is hibernating while it has work
queued up. When this happens, the entire cluster will hang.
The hang can be diagnosed by
examining the output from
and looking for a list of work
waiting for the ENQDMN. In
the ENQDMN will say idle (job
#6). A
will send a wakeup to the ENQDMN and should resolve
the hang.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: ALl
DevKey: HYY1041
Summary: Set %UI to "CHUI" in journal restore to prevent jobbed jobs from hanging
Description:
This change addresses a problem with multi-job journal restore
on Windows where JOBbed restore jobs may hang in ^%Wprim or ^%CDCalBk
(as shown in ^JOBEXAM). It affected only Windows platforms due to the
way a JOBbed job is determined whether to be in GUI mode when %UI is
not set. While it mainly arises from the multi-job restore feature
introduced in 5.0.5, the problem may affect any user-implemented,
jobbed off journal restore if local variable %UI is not explicitly
set.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1125
Summary: Fix sorting in journal restore
Description:
This change corrects an issue in journal restore where too many
concurrent global sorts could exhaust the page file quota of
the process on
OpenVMS, resulting in a <STORE> error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Lock
Platforms: All
DevKey: SML614
Summary: Clear premjobid when a request is done
Description:
This fixed an error in
identifying the lock owner in an ECP server for
locks owned by remote ECP client. If the locks were granted inside
a
transaction of the ECP client job, the server showed the wrong lock
owner.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1086
Summary: Disable journaling in shadow database updaters if requested
Description:
This corrects a problem introduced in 5.0.13 where
SETs and KILLs
applied to shadow databases were journaled despite that the "journal
applied transaction" property was not enabled.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: CFL1345
Summary: Add GetRoutineDest and GetGlobalDest methods to %SYS.Namespace class
Description:
Two new class methods have been added to
%SYS.Namespace: GetGlobalDest and GetRoutineDest.
- GetGlobalDest
- Returns the system^directory where ^[Namespace]Global(Subscript) is mapped to.
If Subscript is missing, it returns the location for ^[Namespace]Global.
If Global is missing, it returns the default global location for Namespace.
- GetRoutineDest
- Returns the system^directory where Routine is mapped to in this Namespace.
If Routine is missing, it returns the default routine location for
Namespace.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: LFT1187
Summary: Fix NEXT^%R for BAS extension
Description:
This fixes an error in searching for Basic
routines using the CHUI utilities. Only routine names with dots in
them are affected by this bug, and even in that case, only names where
the second piece after the dot begins with something that collates
before "BAS". Prior to the change, Basic routines named x.ABC or x.999 or x.1.y were
not being found.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: LRS972
Summary: Correct FREECNT report on larger databases
Description:
The free space calculations of the %FREECNT utility were incorrect for
larger databases. As a result, %FREECNT could report more than 100% of
the space as free.
This has been corrected.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
This section provides a listing of changes between Caché
5.0.17
and
Caché
5.0.18.
For detailed information on getting started, see the Caché 5.0 Release Notes
(located off the Caché installation directory in the file Docs/GCRN/GCRN.html);
for information on previous 5.0 maintenance kits, see the file prenotes.htm,
located in the same directory as this file.
This document contains several sections:
InterSystems advises all users to recompile their applications as part
of the upgrade process so as to take advantage of all the performance
improvements as well as other changes that may affect them in this release.
Known Regressions In Functionality
The following regressions in functionality are known to exist in this
release and may
adversely affect applications.
If you need an immediate correction for any of these defects, please contact
the
InterSystems
Worldwide Response Center.
They will be fixed in a future maintenance release.
- A problem exists in Caché 5.0.16 when calling Stored Procedures.
If an application using ODBC or JDBC issues a Close Statement call,
Caché incorrectly removes all server side information about the
statement.
If the application tries to execute the same Stored Procedure a second
time,
Caché will return an <UNDEFINED> error from the server.
There is no workaround for this error.
- A defect has been identified that was introduced in Caché 5.0.11.
If you use the follow SQL syntax
SELECT PatID, Name, SSN
INTO :array()
FROM Sample.Patient
where PatID was defined as the IDKey, the node where the value of
PatID is stored could change.
In releases before 5.0.11, you would have an array that looked like:
array(2)=12345
array(3)="Doe,John"
array(4)="111223333"
while in Caché 5.0.11 and later the array would look like:
array(1)=12345
array(3)="Doe,John"
array(4)="111223333"
The value of PatID had moved from array(2) to array(1).
Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate
importance to
users of our software. These include
alerts, mission critical issues, important updates, fixes, and releases
of Caché.
The most current list can be obtained from the
InterSystems Website.
Users should check this list periodically to obtain the latest information on
issues that may have an effect on the operation of their site.
Online Documentation
As a convenience to our users, InterSystems provides
online access to documentation for recent versions of
Caché at the
InterSystems Website.
From the home page choose the "Caché" tab, and on the "Downloads" menu,
select "Documentation and Help Updates" or follow
this link.
Description of a Change Report
To help you assess the impact of these changes on your
applications, each change description contains a more detailed explanation of
the modification.
All changes include a table giving pertinent information on the
issue's likelihood, impact of the change, and whether this has already been used
successfully in production by other customers.
In order to make the information easy to assimilate visually,
the tabular information has been simplified to a keyword or two and a
value. The full explanation of the keyword meanings are:
- 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 - Whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - Whether this change provides new
features or capabilities.
- Config Mgr
- CSP
- CSP.Net
- Ensemble
- Languages.COS
- Networking
- Object.Activate
- Object.Class Compiler
- Object.Library
- Object.Soap
- Object.Storage.Default
- Object.Storage.SQL
- Object.Stream
- Object.XML
- SQL
- SQL.DDL
- SQL.ODBC
- SQL.Query Processing
- Studio
- System
- System.I/O
- System.Journaling
- System.Lock
- System.Shadowing
- Utilities
Category: Config Mgr
Platforms: All
DevKey: CFL1014
Summary: Add async disconnect switch to Config Manager
Description:
A new switch has been added which allows processes connected to a Windows
system via telnet to
receive a <DSCON> disconnected error asynchronously at the time the
disconnect occurs. The default behavior is to give the error only on the
next READ command. This switch has no effect unless disconnect errors are
enabled with $ZU(68/69,15,1). The new switch is $ZU(68/69,60,1).
This change adds the parameter, AsyncDisconnectErr, to the Miscellaneous
section of the .cpf file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: CSP
Platforms: All
DevKey: MAK1455
Summary: When ending a CSP session make sure the session global is present
Description:
If a user CSP application
- is using %session.Preserve=1 mode,
- and it issues a 'Lock' command.
- and then releases the lock this process has on the CSP
session,
it was
possible for the CSP daemon to clean up this license just before the
process running this connection exited. In fact, the license and session
information would get cleaned up twice.
With this change, the end session code gets
another lock on the CSP session before doing anything with this in
case the user code released this lock.
If the session global is
empty, then it knows someone else has removed the session so it has
nothing to do. Also the CSP daemon will time the session out
just slightly slower than the process exiting so the actual process
gets to close the session properly first before the daemon tries to
close it.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MXT536
Summary: CRLF in a string breaks #server()#
Description:
This change adds code to handle the case where the
characters $c(13) and $c(10) occur inside the #server directive.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MXT693
Summary: Applet version of #server has some locale inconsistencies
Description:
This change always forces JavaScript conversion of #server arguments
to strings which will always use periods in a decimal number.
Previously, when using the Java applet, #server relied on Java
LiveConnect conversion of a number to a string. Internet Explorer used the current
locale for this conversion (for example, ",", for non-English locales) and Mozilla
used JavaScript conversion (always "."). Now all browsers consistently
use JavaScript conversion.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Net
Platforms: All
DevKey: MXT691
Summary: %Net.SMTP BCC written to mail header
Description:
This changes the default behavior of %Net.SMTP to not write Bcc headers into the email message.
The ShowBcc property has been added to %Net.SMTP which, if set to 1, will keep
the old (incorrect) behavior of sending the Bcc headers.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: Ensemble
Platforms: All
DevKey: MC479
Summary: Fix bug that %File:DriveList query does not return the last item
Description:
In prior versions, the logic in DriveListFetch caused the
last item not to be returned. This is fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Languages.COS
Platforms: All
DevKey: SJ1657
Summary: Fix $BITLOGIC(a|b) problem for certain values
Description:
This fixes a bug that occurred when or'ing two
bitlists, where one was in bit list
format (as opposed to bit map format), and the other one had a shorter
logical length and was all ones and had no body.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: DAS469
Summary: Fix OpenVMS <ACCVIO>
Description:
This change alters the
optimization which determines the optimal number of open files for
network daemons by eliminating it for OpenVMS. The
optimization addressed a performance problem on NT only and
is not an issue on OpenVMS.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK416
Summary: Added protection to prevent buffer overrun when invalid blocks are viewed across ECP
Description:
Applications can only view global directory blocks across ECP, other
blocks may fail or not arrive completely. This change modifies
the view across ECP to protect ECP and application from buffer
overruns.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK425
Summary: Refresh remote class descriptors after ECP failover.
Description:
When a remote class is in use and there is an ECP
server failover, sometimes the method invocation fails with an
unexpected remote class recompiled error. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK430
Summary: ECP client to exit on shutdown consistently
Description:
Sometimes the ECP client read daemon didn't exit on
shutdown.
This is now fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK433
Summary: NWDS (Net Wide Domain Server) activation to preserve ECP client sessions
Description:
This changes the NWDS master to preserve ECP client configuration after master
reactivation. Without this fix any reference to a remote DB via ECP
may cause an access violation.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Activate
Platforms: All
DevKey: JN211
Summary: Rework handling of UserDefined Types by Activate
Description:
Activate did not properly discriminate between
interface-based and enumerated user-defined types. This led to access
violations when attempting to use some ActiveX Objects. The situation has been
corrected to treat these types appropriately.
Note: This fix has
introduced a backwards incompatibility for *some* ActiveX objects. Use
of the generated classes remains the same so it is not necessary for
users to update their applications per se, but to ensure continued
proper operation, existing users of Activate should re-import their
classes using the Activate wizard.
Additionally, to help identify those ActiveX objects which cannot be
handled by Activate, the classes %Activate.SafeArray and
%Activate.UserDefined (which are subclasses of %Activate.Unsupported)
have been introduced. Those ActiveX objects that have method/property
parameters or return values of these types are not supported.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP1329
Summary: <FRAMESTACK> error in %AddToSaveSet()
Description:
Some classes have recursive references that allow simple structures
such as linked lists to be represented. Under some circumstances, a relatively small number of
objects that are linked can cause a
<FRAMESTACK> error when triggers fire during a save if all objects have been swizzled. A
change has been made to %Save() that recognizes simple recursive
references and chooses a different mechanism for including each
swizzled reference to the save set.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK804
Summary: If an error occurs when importing an XML class definition, keep the old class
Description:
This change, originally introduced in Caché 5.0.17, had issues related
to importing OBJ code stored in an XML file. These have been addressed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Library
Platforms: All
DevKey: DLP1346
Summary: Fix infinite loop when a recursive reference cycle is encountered during save
Description:
Some object references result in a circularly linked list. This
structure caused an infinite loop. This change detects that situation
and prevents the loop.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT708
Summary: Add option to WSDL reader to include parameter for xsi:type attribute
Description:
This change adds an OutputTypeAttribute property to
%SOAP.WSDL.Reader class. If OutputTypeAttribute = 1 when the Process
method is called, then the OUTPUTTYPEATTRIBUTE will be added to the
Web Client which is created.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Storage.Default
Platforms: All
DevKey: DLP1339
Summary: Set %msg variable when an invalid ID is generated
Description:
The variable, %msg, is now set to the error text when an ID counter
validation check failure occurs. This makes object behavior consistent with SQL error reporting.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1331
Summary: Fix recursive reference calculation
Description:
An error was fixed where an <INVALIDOREF> error is
reported when a property that originates in a superclass is
subsequently inherited from a different superclass.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1343
Summary: Call index build/purge functions in table routine
Description:
%BuildIndices and %PurgeIndices is now supported for
classes using %CacheSQLStorage. Previously these methods were only
implemented for classes using %CacheStorage. %CustomStorage does not
implement these methods.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1452
Summary: %ExistsId returns incorrect value for SQL storage after rollback
Description:
Caché Objects use transactions during
filing. If the user initiates a transaction outside of a call
to %Save(), then some in-memory structures might not be updated if the
user transaction is subsequently rolled back. There is no mechanism
available to rollback the state of the in-memory objects in this
situation. The problem is that object persistence might improperly
dispatch to an update when the object does not exist in
storage. Classes using %CacheStorage do not experience this problem
because of an internal existence check that is performed prior to
dispatching to insert or update. %CacheSQLStorage does not perform
this check so it is possible that an object will be dispatched to
update which will subsequently fail with SQLCODE = 100.
%CacheSQLStorage will now check for an update failure with
SQLCODE=100. In that case it will attempt to save the object with an
insert.
Note: This change does not solve the problem of user-initiated
transactions and rollbacks, only update failures due to non-existent
objects.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Storage.SQL
Platforms: All
DevKey: DLP982
Summary: Don't add parent reference to ROWID if already specified
Description:
If the idkey definition includes the parent reference then, with this
change, it will not
be automatically added to the idkey by the class compiler.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Storage
Platforms: All
DevKey: DLP1407
Summary:
Address infinite loop in %AddToSaveSet when saving an object containing a reference to a self-referencing object
Description:
Previously, it was possible for an infinite loop to occur when saving an object that contained a reference to a self-referencing object (also known as a reflexive object); this loop occurred in %AddToSaveSet. This has been addressed.
Background:
A recursive class is a class that has a property whose type is that same class. A recursive object is an instance of a recursive class such that one instance of the recursive class has reference to another instance. A self-referencing or reflexive object is a special type of recursive object — one that has a reference to itself.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Stream
Platforms: All
DevKey: MAK1465
Summary: Object instances "loses" stream if save fails
Description:
Prior to this change, if a stream is saved as part of a transaction, and
the transaction is rolled back because another object in this
transaction failed to save, the stream was not rolling back its
internal state and so would lose the stream data. This is now fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT705
Summary: Add option to always include xsi:type attribute for elements output for a class
Description:
Some Java tool kits require the xsi:type attribute to
be specified for all elements even when the type can be determined
from the WSDL document.
This change adds the property OutputTypeAttribute to the %XML.Writer class which
forces the xsi:type attribute to be added to elements that are output
based on object properties.
It also adds the parameter OUTPUTTYPEATTRIBUTE to SOAP Web service classes that
forces the xsi:type to be used for all elements in the response; and
the parameter OUTPUTTYPEATTRIBUTE to SOAP Web client classes that
forces the xsi:type to be used for all elements in the request.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2121
Summary: Add To_Char and To_Date with Timestamp (and other date formats)
Description:
The SQL Scalar functions TO_DATE and TO_CHAR now accept %TimeStamp values as input. In addition, support for some time-related formats have been added.
For TO_DATE and TO_CHAR, the expression passed to the function may now be a valid %Library.TimeStamp logical value.
For TO_DATE and TO_CHAR, the following format codes have been added for support of TimeStamp values:
HH Hour of Day (1-12)
HH12 Hour of Day (1-12)
HH24 Hour of Day (0-23)
MI Minute (0-59)
SS Second (0-59)
SSSSS Seconds past midnight (0-86399)
AM Meridian indicator
PM Meridian indicator
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: SQL
Platforms: All
DevKey: DPV2167
Summary: Allow date format of YYYYMMDD in TO_DATE
Description:
TO_DATE now supports the following two formats:
'YYYYMMDD' and 'DDMMYYYY'
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2416
Summary: Improvements to handling $Piece maps with Overridden DataAccess expressions
Description:
With this change, when an application
- uses %CacheSQLStorage,
- has two or more subscript levels of Access Type $Piece, and
- has specified Data Access expressions for those subscript
levels,
it needs to specify a valid Row Reference in your map definition
rather than try letting the system generate one for you.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2435
Summary: Fix compilation of read-only table when CompiledTopLevelPieces is ""
Description:
A problem has been fixed where a table that could
not generate filing code due to a non-filable %CacheSQLStorage mapping
might get a <NULL VALUE> error during the compilation of the
table.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.DDL
Platforms: All
DevKey: BJB295
Summary: Make sure Selectivity is not 0 with $justify(19), same as %qarTune
Description:
A correction has been made to the SQL Manager. If
TuneTable was invoked from SQL Manager and ended up with a very small
Selectivity, first 5 decimal places all 0, the SQL Manager would file
the wrong value.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: AND611
Summary: Pay attention to user-supplied parameter type
Description:
A previous change (AND453) made parameter resetting impossible. This caused issues when
SQLExecDirect was called. Hence, the behavior has been reversed, so that Caché now pays
attention to user-supplied parameter types.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK619
Summary: Parent reference with more than 10 physical parts
Description:
This change corrects a problem that occurs in child table when the
parent table rowid has
more than 10 physical components, for example, more than 10 generations
of parents/grandparents. This problem exists in all versions of the product.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: BJB274
Summary: Add Name Space info to the mtemp0 header, $zu(67,6)
Description:
This is an enhancement to the header info that is stored in ^mtemp0.
The change adds Name Space info the header of ^mtemp0. This is
used by generated SQL code for sorts during query runs. The info can
be used to track down problem queries.
The structure looks like:
^mtemp(8,0)=$H^Job #^UserName^Server Name^Client IP^Routine Name^Name Space
for example:
^mtemp0(8,0)=58953,29117^1984^TestUser^TESTLAB2^127.0.0.1^CacheSql1^User
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2426
Summary: Rollback fail after UPDATE problem
Description:
SQL UPDATE, DELETE, and INSERT...SELECT statements
are now atomic in nature; the statement either completes
successfully or no rows in the table are modified.
For example,
assume you execute an update statement that will update 20 rows in the
table. The new value for a field in the 17th row fails validation.
Prior to this change, the first 16 rows would have been updated and
the statement would return an SQLCODE=-104 error. It was up to the
application to catch the error and role back the update of the
previous 16 rows (if desired). Now, if any row fails to update, none
of the rows in the table will be updated by the statement. The same
is true for DELETE and INSERT ... SELECT statements.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2442
Summary: UPDATE problem in transaction
Description:
A bug has been fixed where a statement like:
UPDATE MyTable
SET MAXID = MAXID + 1
WHERE MyField = ?
might not update any rows due to concurrency issues if multiple
processes where attempting the update at the same time.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MAK974
Summary: Improvements to source control hooks
Description:
This change, originally introduced in Caché 5.0.17, had issues related
to importing OBJ code stored in an XML file. These have been addressed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: CDS413
Summary: Give <EDITED> when routine changes during debugging
Description:
If a routine being debugged by one process is updated by another process,
the system could attempt to use an invalid address to resume execution in the debugger.
This gives invalid results or an access violation for the process
being debugged. The situation is now corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK378
Summary: Changed ECP client connection name
Description:
The ECP client sends its connection name to the
server. Currently the name is
<cli sys name - default is host name>.<ECP connection name>
This change alters the order and the
separator; the new format is:
<ECP connection name>:<cli sys name - host name>
If the cli sys name is too long it will not prevent ECP from recovery,
(The server identifies the connection by the connection name + the
client GUID). Also, the server entry in the control panel will have
the connection name followed by the host name; it makes the connection
name be more useable since most sites are configuring multiple
connections to the same server.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK382
Summary: ECP client to display the connected host IP.
Description:
This change adds a console log msg with the destination host IP
when an ECP client establishes a connection
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK399
Summary: TCP read to honor PSW2OLDTCPXY switch.
Description:
This change makes TCP disable x/y calculation when a process's $zu(68,55,1) switch is set.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1943
Summary: Correct reference counting error
Description:
A rare problem which can result in memory exceptions
has been resolved. The problem is most likely to be seen in
application which reference more than 8 namespaces (often) or rarely
when the system reloads the namespace configuration.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: LFT1451
Summary: Fix error using UTF8 in zobjexport
Description:
This fixes a problem on the import side of
$zobjexport when using function 13 and UTF8.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.I/O
Platforms: All
DevKey: CDS515
Summary: Allow asynchronous DISCONNECT errors for telnet sessions
Description:
A new switch has been added which allows processes connected to a Windows
system via telnet to
receive a <DSCON> disconnected error asynchronously at the time the
disconnect occurs. The default behavior is to give the error only on the
next READ command.
This switch has no effect unless disconnect errors are
enabled with $ZU(68/69,15,1). The new switch is $ZU(68/69,60,1).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY811
Summary: Fix global reference passed to journal restore filter
Description:
This change addresses an issue where an invalid (incomplete)
global reference name may be passed to the filter (^ZJRNFILT) used in
journal restore. This occurred if the character "]" appears in a
subscript of the global reference.
The problem was present in all released Caché products.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: RJF027
Summary: Avoid redundant error logging in JRNINFO
Description:
If the source of cluster shadowing has a
CACHEJRN.LOG whose last entry for a particular cluster system number
is a journal file that doesn't exist, a message like the following
message would be logged repeatedly to the cconsole.log:
JRNINFO SERVER ERROR: Information about _$101$DKA200:[JANUS.RJF5.MGR.JOURNAL]200
30917.001 cannot be updated as the file is gone
The most common reason for this situation would be if a former member
of a cluster has been removed from the cluster. With this correction,
the message will be logged only once.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: RJW1148
Summary: Multi-threaded shadowing using excessive cpu
Description:
Corrects a problem where shadow processes would consume excessive cpu
on client systems because of excessive polling. This problem was most
evident on AIX.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1135
Summary: Addressed a case of accvio in journal utility
Description:
Addressed an issue where running journal utilities (such as JRNDUMP or JRNINFO) might
result in an access violation (accvio) or a core dump in some circumstances.
It affected mainly clustered Caché systems.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Lock
Platforms: All
DevKey: SML563
Summary: Fix a potential dead lock when locking parent node on ECP server
Description:
This change avoided a possible dead lock on the ECP
client. For example:
- A job on ECP Client locked ^TEST(1,0) on server.
- A job on ECP server lock ^TEST(1,0) and wait.
If the client job then did the following:
F i=1:1:10000 l +^TEST(1) l -^TEST(1) w !,i
it will eventually hang.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Lock
Platforms: All
DevKey: SML604
Summary: Handle unlock locks to more than 8 different remote servers.
Description:
When a job owned locks to more than 8 remote server
through any network (ECP,DCP,DDP), a non-incremental lock (L ^a) or
argumentless lock (L ) command will leave the lock to 9th remote
server in 'delock pending' state in lock table. Furthermore, the lock won't be
released on the remote server either.
This change corrects that situation.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1110
Summary: Address <ACCVIO> in cluster shadow
Description:
This change addresses a concurrency issue in cluster
shadow that could cause an
<ACCVIO> error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1121
Summary: Address a <NOROUTINE> error on shadow
Description:
This change corrects a problem in 5.0.13 and later where, under
some rare circumstances, shadow processes might terminate unexpectedly
for no obvious reason (i.e., no error message indicating what went
wrong).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: RJW1132
Summary: Shadow getting <DIRECTORY> during namespace reactivation
Description:
A problem that could cause the shadow set/kill process to get a
<DIRECTORY> error during namespace reactivation has been corrected.
The error had caused shadow dejournaling to stop on the shadow
client.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: LFT1449
Summary: Fix bug in AllocateBlockInMap
Description:
This fixes a problem using REPAIR to allocate and
free blocks in a map. The problem occurs if the database has more
than one map and the block number is not in the first map.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML599
Summary: Remove extraneous check for some references
Description:
Prior to this change, Caché
would try to access
$D(^|NS|foo) to validate the input namespace. This caused the system
to slow down
if the namespace were mapped to remote ECP.
Because the reference won't
be cached in the client's buffer, there is an
unnecessary round trip network for every use of it. This change
removed this unnecessary checking.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: TCS015
Summary: Identify Lock Master for LOCKTAB
Description:
When LOCKTAB is run on a cluster, this change will now add a
line to the headed identifying this node as a cluster member, whether
or not this node is the lock-master and, if not, the name of the node
that is the lock-master. Attempting to free a lock on a cluster that
was taken out on a node other than the originating node will display a
warning message before allowing the user to proceed.
The change also adds a new, non-interactive utility to provide information about the cluster.
Manually freeing a single lock through LOCKTAB will add a message to the console log.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: LRS965
Summary: Fix %FREECNT utility calculations
Description:
An issue was introduced with Caché 5.0.17 where the free space calculations
of the %FREECNT utility and the Caché Control Panel's Local Databases display
caused all free block values to be displayed as zero. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
This section provides a listing of changes between Caché
5.0.16
and
Caché
5.0.17.
For detailed information on getting started, see the Caché 5.0 Release Notes
(located off the Caché installation directory in the file Docs/GCRN/GCRN.html);
for information on previous 5.0 maintenance kits, see the file prenotes.htm,
located in the same directory as this file.
This document contains several sections:
InterSystems advises all users to recompile their applications as part
of the upgrade process so as to take advantage of all the performance
improvements as well as other changes that may affect them in this release.
Known Regressions In Functionality
The following regressions in functionality are known to exist in this
release and may
adversely affect applications.
If you need an immediate correction for any of these defects, please contact
the
InterSystems
Worldwide Response Center.
They will be fixed in a future maintenance release.
- A problem exists in Caché 5.0.16 when calling Stored Procedures.
If an application using ODBC or JDBC issues a Close Statement call,
Caché incorrectly removes all server side information about the
statement.
If the application tries to execute the same Stored Procedure a second
time,
Caché will return an <UNDEFINED> error from the server.
There is no workaround for this error.
- A defect has been identified that was introduced in Caché 5.0.11.
If you use the follow SQL syntax
SELECT PatID, Name, SSN
INTO :array()
FROM Sample.Patient
where PatID was defined as the IDKey, the node where the value of
PatID is stored could change.
In releases before 5.0.11, you would have an array that looked like:
array(2)=12345
array(3)="Doe,John"
array(4)="111223333"
while in Caché 5.0.11 and later the array would look like:
array(1)=12345
array(3)="Doe,John"
array(4)="111223333"
The value of PatID had moved from array(2) to array(1).
Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate
importance to
users of our software. These include
alerts, mission critical issues, important updates, fixes, and releases
of Caché.
The most current list can be obtained from the
InterSystems Website.
Users should check this list periodically to obtain the latest information on
issues that may have an effect on the operation of their site.
Online Documentation
As a convenience to our users, InterSystems provides
online access to documentation for recent versions of
Caché at the
InterSystems Website.
From the home page choose the "Caché" tab, and on the "Downloads" menu,
select "Documentation and Help Updates" or follow
this link.
Description of a Change Report
To help you assess the impact of these changes on your
applications, each change description contains a more detailed explanation of
the modification.
All changes include a table giving pertinent information on the
issue's likelihood, impact of the change, and whether this has already been used
successfully in production by other customers.
In order to make the information easy to assimilate visually,
the tabular information has been simplified to a keyword or two and a
value. The full explanation of the keyword meanings are:
- 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 - Whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - Whether this change provides new
features or capabilities.
- Misc
- Object
- Object.Class Compiler
- Object.Storage
- Object.Storage.Default
- SQL
- SQL.Query Processing
- Studio
- System
- System.Backup/Restore
- System.I/O
- System.StartUp
- Utilities
- Utilities.Globals
- Weblink
Category: Misc
Platforms: All
DevKey: RJW970
Summary: Cstat shows a dead process as alive if Windows has reused the process id
Description:
Prior to this change,
it was possible for cstat to show a dead process as alive (that is, no
"D" indicator in
the pid table display) if the process Id had been reused by the
operating system for a new process.
Cstat now performs further tests
to insure that the process is running cache.exe from the
configuration's bin directory before considering it a valid Caché
process in the current configuration.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Misc
Platforms: All
DevKey: SAP388
Summary: Correct access violation in mailbox broadcast
Description:
This change corrects a situation where, under
certain circumstances, an attempt to send a broadcast message to all
mailboxes could result in an access violation error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object
Platforms: All
DevKey: DLP1445
Summary: %IsModified and IDKey Integers
Description:
A correction has been made
for the situation where an object ID based on a
simple integer property might be inappropriately detected as modified
when set to itself. For example, 'set obj.Prop=6' would report the
object as modified when the original value of obj.Prop had previously been
6.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK804
Summary: If an error occurs when importing an XML class definition, keep the old class
Description:
Prior to this change,
if you had a class on your system, and
then an attempt to import another version of that class failed,
Caché would delete the existing class.
Now it correctly leaves the existing class present if there during import.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Storage
Platforms: All
DevKey: DLP1353
Summary: EXTENTSIZE loading restored
Description:
A prior change discarded the value of the EXTENTSIZE
parameter when loading a class from XML or CDL. This change reverses
that. If you are replacing an existing class with
XML or CDL that does NOT contain EXTENTSIZE
the EXTENTSIZE of the replaced class will be retained.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Storage.Default
Platforms: All
DevKey: DLP1319
Summary: Optional OID uniqueness checking added
Description:
A new configuration option now makes it possible to
validate system-assigned ID values for new instances of objects.
The option is activated by
SET ^%SYS("dbms","validate system-assigned id") = 1
Classes using default storage and system-assigned IDs do not
normally check for the existence of an object with the newly assigned
ID value. That check is, under normal circumstances, not necessary as
the global reference used for the system ID counter is updated each
time a new object is inserted into the extent.
However, in very rare
cases, it is possible for this counter to contain an incorrect
value. This can happen if the user modifies the value manually;
if objects are inserted into the extent without using the object or
SQL filer; or system recovery efforts modify this value and are
subject to errors.
By setting the configuration option, the class compiler will
generate a uniqueness check on insert for the ID value. If at runtime the
uniqueness constraint fails, an error, IDKeyCounterNotValid, will
be returned to the caller and a message will be written to the console
log. Each failure will also cause the ID counter to be incremented so
it is possible that the problem will correct itself over time. It is
important to review the console log when this error is reported .
In certain deeply nested object models, it is possible that the
underlying error message will not be reported. Rather, a cyclical
dependency error could be reported from %Save(). This is not the usual
case but, when a cyclical dependency error is reported, one possible
cause might be the IDKeyCounterNotValid condition.
When an IDKeyCounterNotValid error message is reported it will be
necessary to bring the ID counter back into sync with the data.
It is the responsibility of the application developer or administrator
to determine how the counter became invalid (manually set by a
user or by code not using object encapsulation, bad recovery of a
journal file, disk failure, etc.). The correction for the error
condition depends on how the data and counter were caused to be out of
sync.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2289
Summary: For SQL INSERT, Start transaction prior to default value allocations
Description:
During SQL INSERT, if the SQL filer needs to start a
transaction, the transaction will now start earlier in the filer than
it used to. The transaction will now start before any default values
are assigned, including the $Increment(^glo) default value of the
RowID field (if applicable). This allows the $Increment of any
globals in default values to be recorded in the journal file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2301
Summary: Conditionally report error if RowID counter is out-of-synch
Description:
This is the SQL counterpart to
DLP1319. Please see that item for details.
The condition will be reported as an error code of -119.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2419
Summary: %r and default parameter for device
Description:
The default file parameters when sending the output of %r to a file are now "WNS".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2422
Summary: Correct duplicate cached query problem
Description:
A problem has been corrected where under certain
rare circumstances the same cached query routine could be associated
with
and invoked by
two different SQL statements.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: PVA080
Summary: Join condition following IN type condition on each of its operands produces wrong result
Description:
An error has been fixed where certain queries
could return the wrong answer. The type of query affected contains
these phrases:
- col1 IN (?,?,...)
- col2 IN (?,?,...)
and also the condition, col1 = col2, is true.
The problem may occur whether col1 and col2 come from the same table
or different tables.
Also, the IN condition could also be "(col1=? or col1=? or ...)" and similarly for col2.
Other conditions can occur before or after these, or in between them.
However, if the join condition occurs before at least one of the IN
conditions, the problem doesn't happen.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: AGC304
Summary: Studio COS Parser - support $ZLIST and other legacy functions
Description:
The Studio COS parser now colors legacy list
functions: $ZLENGTH, $ZLIST, $ZELEMENT, and $ZSUBLIST.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: DVU1044
Summary: New menu item: Add to Source Control
Description:
Added Tools->Source Control->Add to the Source
Control menu item which will cause to add the active document to source
control.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: JN289
Summary: Support #[]# syntax in CacheHTML
Description:
A previous change introduced support for the new
#[]# syntax, which allows ObjectScript commands to be embedded.
This adds it to the &html(...) processor.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MAK1002
Summary: Two periods appear in mac file when load from XML
Description:
In prior versions, importing a routine from Studio was not working
correctly because Studio lost the extension type of the item it had
imported. The item would be imported correctly but it would not get
compiled. This is now fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MAK1082
Summary: Improve error message from Studio GetStatus hook
Description:
When an attempt to lock an item calls the studio
hook in the 'GetStatus' method, Caché now uses more information in
returning an error code to the caller.
Prior to this, Caché would always report
that the item was not checked out of source control. Now it only
reports this is if the 'isinsourcecontrol' argument is true; otherwise it
just reports that this item is not editable.
Also if a username is
returned from the GetStatus call, this is displayed as part of the
error text.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MAK1145
Summary: BAS routines not compiled on load from Studio
Description:
This change fixes a problem importing and compiling
a BAS routine.
It also improves support for importing large
numbers of items into Studio.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MAK1205
Summary: Allow open dialog to respond faster in namespace with huge numbers of routines
Description:
The Studio Open dialog displays items sorted case
insensitively.
When a user opens up a namespace with a huge number of
routines, Studio must scan the whole list to find the correct order to
place these routines in. This can cause delays when there are hundreds
of thousands of routines in a namespace. In order to allow these
namespaces to be usable you can now set a flag:
Set ^SYS("Studio","CaseInsensitive")=1
This will force Studio in this namespace to work in a case insensitive
manner which allows it to list the items as they are found rather
than having to sort them all first. The routines are
all listed at the root level rather than the standard approach which
is the list routines from a class compile along with that class.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MAK974
Summary: Improvements to source control hooks
Description:
This change modifies the import/export functions so that they will
also call the source control hooks when a user imports items.
This permits
the source control hooks to export them to a
source control system.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: CDS388
Summary: Ignore $HALT for error HALTs
Description:
When a process has set $HALT, it should be effective only for normal
process termination. This fix corrects a problem that caused the system
to attempt to locate and run the $HALT routine in situations such as RESJOB
and system errors when the process should be halted immediately without
attempting the $HALT.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS656
Summary: Fix %STACK $ZU(41,n) when routine has changed
Description:
The %STACK debugger utility could display unprintable characters if the
routine object code is modified while the routine is being debugged.
This is no longer the case.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS659
Summary: Fix bad routine context after $HALT trap
Description:
If a routine sets $HALT to an entry point in a different routine, and the
halt trap returns back to the original routine because of a QUIT command
or a trapped error, the original routine context is not restored correctly.
Prior to this change, this situation could
cause invalid execution results or memory access violations.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS665
Summary: Fix error processing crash when routine source unavailable
Description:
A memory access violation could occur during error processing if there was
an unexpected additional error while trying to read the routine source.
With this fix, the system will continue without providing source information
about the original error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1909
Summary: Fix deadly embrace in system function
Description:
This changes corrects a rare problem where Caché may get
suspended in a system function while holding database blocks under a lock.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1926
Summary: Eliminate <EDITED> error for changed callers
Description:
A problem which could cause an exception (core file,
dump file, etc) where an <EDITED> error should have been
generated has been resolved. This involved cases where the program is
returning after evaluating the result of an indirection that involved
invoking another routine and the routine it is returning to has been
recompiled. An example of where this could occur is a reference of the
form:
Set str="name($$ent(123))"
Set x=@str
where $$ent goes off to another routine which causes the calling routine to be recompiled.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: Windows
DevKey: LFT1371
Summary: Handle Windows process table expansion correctly
Description:
This fixes possible access violations during
shutdown in situations where the process table has been expanding.
This is on Windows only.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: LFT1446
Summary: Fix Unicode problem in $zobjexport
Description:
This correct a problem in $zobjexport with
exporting long strings in a Unicode encoding.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: LRS771
Summary: New $System.Device methods
Description:
New $System.Device class methods have been implemented. Descriptions
are available in the %SYSTEM package class documentation. In summary:
- GetRightMargin() - returns the right margin setting for the current
device. This only applies to terminals.
- GetReadTerminators() - returns the read terminator string for the current
device. Does not apply to some devices.
- GetMnemonicRoutine() - returns the write mnemonic space routine name for
the current device.
- GetMnemonicDirectory() - returns the write mnemonic space routine
directory for the current device.
- GetClearScreen() - returns the Clear Screen (Form Feed) string for the
process principal device.
- GetBackSpace() returns the Back Space string for the process principal
device.<.LI>
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: UNIX, Linux
DevKey: LRS947
Summary: Fix startup node name detection on UNIX for DHCP
Description:
A problem with the Caché node name recognition has been fixed. This
only affected UNIX/Linux systems which connect to a DHCP name server.
After an abnormal system shutdown, Caché startup could believe the
instance was still in use by another node.
Correct utilization of the unique node name mechanism
requires that the 'ccontrol nodename <name>' command be used to assign
a unique name to the local node/machine, and that no instance of Caché
should be active when the node name is assigned or modified.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RFD097
Summary: Allow "0" process count in PATROL
Description:
Allow users to select "0" process count for less overhead in collection.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RFD101
Summary: Enable system-only MONITOR statistics for ^PATROL
Description:
This change corrects issues with interactions between ^PATROL and
^PERFMON (MONITOR), and also removes unnecessary overhead (STATISTICS resource
locking) when running PATROL.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RFD118
Summary: Add ECP statistics to MONITOR utility
Description:
This change adds ECP operations to the MONITOR
(i.e. ^PERFMON and $System.Monitor) network
statistics.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: RFD137
Summary: Fix server name for ECP MONITOR statistics
Description:
This change displays the
correct client name for server statistics in MONITOR.
ECP shows the name of client, as opposed to the address for DCP statistics.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RFD138
Summary: Fixes for ECP/DCP MONITOR statistics
Description:
This change corrects network MONITOR statistics, including proper display of ECP and DCP node names.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RFD140
Summary: Add all metrics for ECP MONITOR statistics
Description:
This change adds all network related counters (total
requests, cache hits/misses for client, etc.) to the ECP MONITOR
metrics.
They now parallel DCP metrics.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: Windows
DevKey: SAP247
Summary: Cforce works for any error getting events
Description:
This corrects a situation where, on Windows XP after the Control Process has
crashed,
the system can not be cleanly halted, even by cforce.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP261
Summary: Fix mailbox send hang when destination process is hung in %HALT
Description:
A process performing %SS or any mailbox send may
hang forever if the destination process has gotten in a state where
the mailbox lock is permanently held.
With this change, the calling process will exit the mailbox code after
trying and failing to get the mailbox lock 10 times (total wait of 1
second).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: Windows
DevKey: SAP289
Summary: Use correct thread handle for priorities on Windows
Description:
This corrects a situation where,
if you change the priority of one process other than
the current one, using $SYSTEM.Util.SetPrio(prio, processid), then all
process priorities may be changed by the same amount.
This will not happen if the current process priority is changed, using
^PRIO or $system.Util.SetPrio(n).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP392
Summary: Correct segmentation fault in the signal handler of $VIEW(-1)
Description:
This corrects a problem where a fault could occur
during use of the $VIEW function to view data in the process partition.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML471
Summary: Add a Clean daemon to take over from Control Daemon clean task
Description:
This change adds a new daemon called the 'Clean
Daemon' (CLNDMN). This daemon wakes up every 10 minutes to scan the system
pid table to see if any dead jobs are pending. It will reclaim any dead job
pid slot it finds. This daemon takes over the duty used to be
done by Control Daemon.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: JLC740
Summary: Support 64-bit dllids in $ZF(-4) and $ZF(-5)
Description:
This change fixes a potential problem on 64-bit platforms where trying
to load a user DLL or shared library via $ZF(-4)/$ZF(-5) might result in an error
depending on previous memory allocations.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Backup/Restore
Platforms: All
DevKey: HYY1038
Summary: Add an option to ignore default journal directories during journal restore
Description:
This change adds
an option to remove default directories (for searching for
journal files to dejournal) when setting up noncluster journal
restore. (The mechanism/interface for locating journal files in
cluster journal restore is different.)
Prior to this change, the prompt for specifying journal directories
along its help text looked like this:
Files to dejournal will be looked for in:
d:\Cache51\mgr\journal\
Specify other directories to search: <return when done>
There was no way to remove "d:\cache51\mgr\journal\" from the
list of directories to search for journal files.
With this change, the prompt looks like this:
Files to dejournal will be looked for in:
d:\cache51\mgr\journal\
in addition to any directories you are going to specify below, UNLESS
you enter a minus sign ('-' without quotes) at the prompt below,
in which case ONLY directories given subsequently will be searched
Directory to search: <return when done> -
[Directory search list is emptied]
Directory to search: <return when done> d:\cache51\mgr\journal\
Directory to search: <return when done>
Here is a list of directories in the order they will be searched for files:
d:\cache51\mgr\journal\
Note that there must be at least one entry on the directory search list
or
Caché will issue a warning:
** WARNING ** Directory search list must NOT be empty
and the setup will keep prompting.
Directory to search: <return when done>
unless one hits Ctrl-C to abort journal restore.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: System.I/O
Platforms: All
DevKey: LRS778
Summary: Implement sequential file sharing/locking option in OPEN
Description:
A new sequential file OPEN option has been added, to provide exclusive
write access to a file. This provides a way of blocking simultaneous
updates of a given file by various processes. The "L" option may be
combined with "R" and "W" options as follows:
- "WL" - exclusive/write mode
- "RL" - shared/read mode
- "WRL" - exclusive read and write mode
Under Caché/Windows, shared access for read and write is the default,
so "RL" does not alter the behavior. Exclusive mode interacts with
file accesses by non-Caché applications on the system.
Under Caché/UNIX, the share mode mechanism employs file locks, so "RL"
is necessary to coordinate with "WL" usages. If the "L" option is not
specified on OPEN, file locking neither affects nor is affected by
processes that do not employ it.
Under Caché/OpenVMS, files opened for write access use exclusive mode
(no sharing), and those opened for read use shared GET mode. This
behavior is not affected by the current change, hence the "L" option
is not used.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: System.I/O
Platforms: All
DevKey: LRS836
Summary: Avoid file deletion if user confuses keyword syntax
Description:
To avoid accidental deletion of a sequential file due to incorrect
keyword syntax specification in the OPEN command, this change nows
causes a syntax error to be reported if there is a "/" (slash) anywhere in the mode
parameter string (the first positional device parameter).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.StartUp
Platforms: All
DevKey: SAP351
Summary: File associations are confused when a multivolume DB fail to mount
Description:
In previous releases,
if one of the extensions after the first volume of a multi-volume DB
fails to mount during startup, then those extensions that successfully
mounted before the failure are not cleared, and are assigned instead
to the next DB in the list of databases in the config file.
For example, suppose there are two databases, "Multi" and "Single".
Multi has primary and 3 extensions stored in these files:
- c:\cache5012\mgr\
- c:\cache5012\mgr\v2
- c:\cache5012\mgr\v3
- c:\v4
Further suppose that the cache.ext in c:\v4 is deleted and
Caché is started.
In this case, the DB
Multi is not mounted because extension v4 fails to mount. But the DB
Single will be started as a multi-volume DB, with extensions in
- c:\cache5012\mgr\v2
and
- c:\cache5012\mgr\v3
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: RFA019
Summary: In %Buttons, do not delete cstat output file(s) if not appended to the HTML report
Description:
An error was corrected in %Buttons where the cstat output
and/or cconsole.log files were being deleted even if they were not
copied to the HTML output file.
%Buttons does not include these two files if they are larger than 5MB
or if appending either one of them will make the HTML output file
larger than 5MB. In this case, a pointer to the original location of
the cstat and/or cconsole.log is written to the HTML file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SAP123
Summary: %FREECNT performance enhancements
Description:
In calculating free space, this change causes
Caché to examine secondary map blocks first to
determine which maps are full maps. This avoids the need to read in
those blocks for maps that are known to be full.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: Utilities
Platforms: All
DevKey: STC498
Summary: Allow rebuildindex to work with implied namespaces
Description:
This change allows
$$RebuildIndex^%R(impliednamespacereference) to work correctly.
Prior to this, it would return an error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities.Globals
Platforms: All
DevKey: SAP379
Summary: %FREECNT for 2K Databases fails for large databases
Description:
This changes corrects errors in looking at the bitmaps on big-endian databases.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Weblink
Platforms: All
DevKey: CMT173
Summary: Make WebLink compliant with HTTP v1.1 response headers
Description:
With this change,
WebLink is now fully compliant with HTTP v1.1 response headers.
In particular it is possible to take advantage of v1.1 KeepAlive connectivity in WebLink applications.
Unlike HTTP v1.0, KeepAlive connectivity is 'on' by default in v1.1. If KeepAlive connectivity is not required the 'Connection: close' header directive must be added. For example:
HTTP/1.1 200 OK
Content-type: text/html
Connection: close
If KeepAlive is used, a 'content length' header field must be
supplied. If the response header generated by the application
indicates that KeepAlive should be used but does not contain a
'content length', WebLink will automatically buffer the response
content, determine its size, and insert the length header before
dispatching the whole response to the client.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Weblink
Platforms: All
DevKey: CMT267
Summary: Introduce full support for HTTP 'Keep-Alive' connectivity
Description:
This change allows HTTP 'Keep-Alive' connectivity to be used in
WebLink applications, for example,
Minimal HTTP/1.0 response header without keep-alive:
HTTP/1.0 200 OK
Content-Type: text/html
Minimal HTTP/1.0 response header with keep-alive:
HTTP/1.0 200 OK
Content-Type: text/html
Connection: keep-alive
Minimal HTTP/1.1 response header without keep-alive:
HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Minimal HTTP/1.1 response header with keep-alive:
HTTP/1.1 200 OK
Content-Type: text/html
Note that the default behavior is for keep-alive to be 'off' in HTTP v 1.0 but 'on' for HTTP v1.1.
When Keep-Alive connectivity is used it is necessary to include a
'Content-Length' response header. If the application does not include
this field in a response for which keep-alive is required (as is the
case in the examples above), WebLink will cache the response data to
determine its size and add the length field before dispatching the
final response headers. However, better performance will be achieved
if the application is able to add this field. For example:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 123
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
This document provides a listing of changes between Caché
5.0.15
and
Caché
5.0.16.
For detailed information on getting started, see the Caché 5.0 Release Notes
(located off the Caché installation directory in the file Docs/GCRN/GCRN.html);
for information on previous 5.0 maintenance kits, see the file prenotes.htm,
located in the same directory as this file.
This document contains several sections:
InterSystems advises all users to recompile their applications as part
of the upgrade process so as to take advantage of all the performance
improvements as well as other changes that may affect them in this release.
Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate
importance to
users of our software. These include
alerts, mission critical issues, important updates, fixes, and releases
of Caché.
The most current list can be obtained from the
InterSystems Website.
Users should check this list periodically to obtain the latest information on
issues that may have an effect on the operation of their site.
Online Documentation
As a convenience to our users, InterSystems provides
online access to documentation for recent versions of
Caché at the
InterSystems Website.
From the home page choose the "Caché" tab, and on the "Downloads" menu,
select "Documentation and Help Updates" or follow
this link.
Description of a Change Report
To help you assess the impact of these changes on your
applications, each change description contains a more detailed explanation of
the modification.
All changes include a table giving pertinent information on the
issue's likelihood, impact of the change, and whether this has already been used
successfully in production by other customers.
In order to make the information easy to assimilate visually,
the tabular information has been simplified to a keyword or two and a
value. The full explanation of the keyword meanings are:
- 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 - Whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - Whether this change provides new
features or capabilities.
- CSP.Gateway
- CSP.Tags
- Languages
- Languages.Cache Basic
- Networking
- Object
- Object.Activate
- Object.Class Compiler
- Object.Library
- Object.Roselink
- Object.Soap
- Object.Storage.Default
- Object.Storage.SQL
- Object.XML
- Special Projects
- SQL
- SQL.DDL
- SQL.JDBC
- SQL.GateWay
- SQL.ODBC
- SQL.Query Processing
- Studio
- System
- System.Cluster Specific
- System.I/O
- System.Journaling
- System.Lock
- System.Shadowing
- Utilities
Category: CSP.Gateway
Platforms: All
DevKey: CMT225
Summary: Fix a race condition in the UNIX Apache API modules that resulted in the Gateway configuration not being correctly read and initialized.
Description:
This changes fixes a race condition in the
initialization procedures for the UNIX Apache API modules
which could result in
the Gateway not correctly reading and initializing its configuration.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT239
Summary: Fix a problem that resulted in the PATH_INFO CGI environment variable not being correctly set for Apache-based installations.
Description:
This build fixes a problem that resulted in the
PATH_INFO CGI environment variable not being correctly set for
Apache-based installations.
InterSystems recommends that configurations should not use period
characters (.) in the paths.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: CSP.Tags
Platforms: All
DevKey: MXT542
Summary: Insert hidden fields for form just after <FORM> tag
Description:
Originally the hidden fields were inserted just
after FORM tag.
Then the
hidden fields of a form were moved to just before the ending <FORM> tag to make scanning
certain pages easier. However, this change introduced problems
with uploading large files. Therefore, the hidden fields will be
moved back to just after the <FORM> tag.
To control placement of the hidden fields, this change
introduces a new CSP:CLASS attribute, FormHiddenFieldsAtEnd. If
set to other than "0", the hidden fields will be placed just before the
closing <FORM> tag. Default is to have the fields after the opening
<FORM> tag.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Tags
Platforms: All
DevKey: MXT616
Summary: Make studio templates HTML 4.0 compliant
Description:
This change makes CSP pages used for studio
templates compliant with HTML 4.0.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Languages
Platforms: All
DevKey: CDS626
Summary: Fix $BITLOGIC with more than 17 operands
Description:
This change corrects a circumstance where attempting
to invoke the $BITLOGIC() function with more than 16 bitstrings in the argument
could result in a memory access violation when the routine is compiled or
incorrect results when it is executed. $BITLOGIC() will now correctly
handle up to 31 bitstrings as documented.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Languages.Cache Basic
Platforms: All
DevKey: DAS596
Summary: Fix CacheBasic EQV, IMP, XOR operators
Description:
This corrects a problem where incorrect code
was being generated under certain circumstances for expression
involving the EQV, IMP, and XOR operators.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Languages.Cache Basic
Platforms: All
DevKey: DAS764
Summary: Fix EQV, IMP operators
Description:
This fixes a bug in the CacheBasic XOR and EQV
operators where they were being handled as bitwise and not logical
operators.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK412
Summary: Init "Language" section of .cpf before SuperServer startup.
Description:
During startup, before finishing system
initialization, ECP connections are accepted to be recovered. If the
ECP client connection is accepted before the initialization is
complete, the ECP daemons are started with incorrectly enabled
NullSubscripts values.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object
Platforms: All
DevKey: MC488
Summary: Clean up temporary stream globals in %Dictionary classes
Description:
This change enables clean up of temporary stream
globals in %Dictionary classes; an %OnClose() method calls the Clear()
method for each stream property.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Activate
Platforms: All
DevKey: JN248
Summary: Old-style OLE variables not recognized by Activate Wizard
Description:
Early incarnations of OLE objects in Caché defined properties
as variables in the type library. This technique is almost obsolete
and as such the Activate Wizard (type library reader) did not
recognize them. The reader has been updated to recognize these
variables as properties.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP1426
Summary: Parent->Child->SubClassOfChild compile dependencies not detected
Description:
This change corrects an error where multi-level
dependencies among classes where not detected by the class compiler.
The compiler now correcting interprets the dependencies and compiles
all the affected classes/
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK919
Summary: Add ReturnTypeParams tnodes
Description:
This change adds a new method keyword,
ReturnTypeParams.
This can
contain a comma separated list of parameters for the return type of
the method.
Previously, Caché supported parameters on arguments to the method.
Now this is extended to the return type as well. A change to the
parser in Studio will follow that takes advantage of this new method
level keyword to store this information. Here is an example of a
method definition that has parameters on the return type:
Method Test() As %String(MAXLEN=100)
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Library
Platforms: All
DevKey: MIT248
Summary: Strip trailing zeroes after the decimal point in %TimeStamp normalization
Description:
This corrects a problem where trailing zeroes after
fractional parts of seconds prevented correct comparison for
%Timestamp values.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Roselink
Platforms: All
DevKey: MC490
Summary: Continue importing after error on one class
Description:
The specific problem this change resolves is that
Rational Rose does not allow a class and a package share the same name, but
Caché does.
This means, if you select all the classes in Caché, some of
them will generate an error on importing into Rational Rose.
The old behavior in RoseLink is that it quits once it encounters an
error creating a class or creating the package of the class. This is
fixed to allow it to continue so that it can finish the rest of the
classes.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT505
Summary: Change Web Service wizard to create instance methods for web method
Description:
With this change, the old form continues to work. A new (instantiable) form now
generated by the web service wizard is recommended, and will also work.
Since web services (subclass of %SOAP.WebService) are now a subclass
of %RegisteredObject, the web service wizard will now create instance
methods for the specified web methods. Class methods will continue to
work for web methods.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT506
Summary: Use instantiable web service and web client for SOAP samples
Description:
Change the SOAP web client (SOAP.DemoProxy) and web
service (SOAP.Demo) samples in the SAMPLES namespace to be
instantiable, i. e. to use Methods instead of ClassMethods.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT507
Summary: Fix bug in returning application SOAP faults from web service.
Description:
This fix corrects an issue where
the ReturnFault method of web service was not properly
preventing creation of SOAP body after a fault was generated.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT508
Summary: Optionally keep empty classes in xml schema wizard
Description:
This adds a KeepEmptyClasses property to %XML.Utils.SchemaReader.
If KeepEmptyClasses is true (1), then do not remove unused classes
with no properties. The default is to remove them.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT512
Summary: URL unescape SOAPACTION header in web service
Description:
This change causes .NET to escape the URL in the SOAPACTION header that is
sent to a web service. For example, "%Studio" becomes "%25Studio". We
need to URL unescape the SOAPACTION when it is received.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT514
Summary: Support soap:binding being last element in wsdl:binding
Description:
Soap:binding element is specified by WSDL schema to
be the first element contained in the wsdl:binding element. However, JAX makes
it last. This change adjusts the WSDL reader to handle this difference.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT530
Summary: Fix SOAP web client wizard bugs
Description:
This change has two parts:
- If style=rpc and a part name contains an _, then we
need to generate XMLNAME parameter for the method argument.
- Expand error checking for soap:body parts attribute to handle list
of parts that has more than one part.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT533
Summary: Fix SOAP web service HTTP test page error handling
Description:
Errors during web method execution were not returned
correctly in HTTP test page. This is now fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT534
Summary: Add sample web method to SOAP.Demo sample that shows return of list of objects
Description:
This change adds a GetListByName query to SOAP.Demo
which returns a query result as a list of objects.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT547
Summary: Fix Bad error message in SOAP web client
Description:
This corrects the message returned to the SOAP web client when the message
contains an empty body.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT554
Summary: Allow setting of %Net.HttpRequest properties by SOAP web client
Description:
This change adds properties to %SOAP.WebClient that it in turn
will set in the %Net.HttpRequest instance that it uses to make the
SOAP request. The %SOAP.WebClient property is the same as the
%Net.HttpRequest property with "Http" as a prefix. The following
properties are implemented:
- Username -> HttpUsername
- Password -> HttpPassword
- ProxyServer -> HttpProxyServer
- ProxyPort -> HttpProxyPort
- ProxyHTTPS -> HttpProxyHTTPS
- RequestHeaderCharset -> HttpRequestHeaderCharset
In addition, headers may be set in %Net.HttpRequest by calling the
SetHttpHeader(name As %String, value As %String)
method of %SOAP.WebClient.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT559
Summary: Support return type parameters in web methods
Description:
An earlier change added support in web methods for parameters for the method return type.
This upgrades the SOAP Client wizard to create returned lists as
%ListOfObjects or %ListOfDatatypes return type with ELEMENTTYPE
parameter.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT560
Summary: %SOAP.WebService and %SOAP.WebClient no longer have persistent properties
Description:
Normally web clients (subclasses of %Web.Client) and
web services (%SOAP.WebService) should not be made persistent. In the
rare case when they are, the properties of the base SOAP classes
should be transient. This change implements that position.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT562
Summary: Add SendSOAPBody method to %SOAP.WebClient for body as XML
Description:
The SendSOAPBody method of %SOAP.WebRequest will
send an XML document as the body of a SOAP request and return the
response body as an XML document.
This method is defined as
Method SendSOAPBody(Action As %String,
OneWay As %Boolean,
Request As %CharacterStream,
ByRef Response As %GlobalCharacterStream)
As %Status
where:
- Action is the SOAPAction for the SOAP request.
- If OneWay is 1 (true), then no response is expected.
- Request is the body of the SOAP request in the character set of
the current locale.
- Response is a character stream to which the body of the SOAP
response will be written in the character set of the current locale.
If Response is "", then a new character stream will be created.
The Location property of %WebRequest must be set to the endpoint of the web service before SendSOAPBody is called.
%SOAP.WebRequest is a subclass of %SOAP.WebClient and thus properties
of %SOAP.WebClient such as HeadersIn, HeadersOut, Timeout, etc. may be
used with the SendSOAPBody call.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT566
Summary: Fix schema created for a typed dataset
Description:
%XML.DataSet generated schema must include
elementFormDefault="qualified" which it did not previously. Microsoft
.NET 1.0 did not catch this problem. .NET 1.1 does catch the problem
and no data was loaded for typed datasets. This has been corrected in
Caché.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT588
Summary: Support %XML.DataSet as either input argument or return value or web service or client
Description:
This change implements full support for import by
%XML.DataSet. Therefore %XML.DataSet can now be an input, output
argument or result value of a web service or web client.
Note that when an %XML.DataSet is an input argument to a web method in
a web service, Execute for the %XML.DataSet has already been called on
entry to the web method. Similarly, when a %XML.DataSet is the result
of a web method in a web client, Execute has already been called for
the %XML.DataSet when the web method returns.
This change also supports import of typed datasets, i.e. datasets
whose column information is known at compile time. A typed dataset is
a subclass of %XML.DataSet in which the column information is defined
by specifying a query using class parameters CLASSNAME and QUERYNAME.
A new class parameter, DATAONLY, is added for typed %XML.DataSet's.
If DATAONLY is set to true (=1), then the schema and diffgram will not
be included in dataset XML output.
Support is added for the XMLIGNORENULL class parameter for
%XML.DataSet. XMLIGNORENULL will now work just as for any subclass of
%XML.Adaptor. When XMLIGNORENULL = 1 or XMLIGNORENULL="runtime" and
ignorenull is specified, then both missing tags (NULL) and empty tags
(<tag /> are stored in Cache %String property as "" and both
$c(0) and "" are exported as empty tag (<tag />).
The SOAP.DemoProxy class now had web methods for the GetByName and
GetDataSetByName methods of the SOAP.Demo web service.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT589
Summary: XML and SOAP wizards should not add XMLNAME to datatype class
Description:
The XML Schema Wizard and the SOAP Client Wizard no
longer add the XMLNAME parameter to datatype classes. The XMLNAME
parameter on the datatype class was being treated as a property
parameter and thus incorrectly overriding the property name.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT591
Summary: Error Detection problem with SOAP arrays
Description:
Now a dummy type is created for SOAP encoded array if no
arrayType attribute is defined. This changes the name of the dummy
type to UndefinedSoapArrayType to make the problem easier to
spot.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT592
Summary: New Web Service wizard should not create LOCATION parameter
Description:
This correction removes the LOCATION parameter from
a web service created by New Web Service wizard.
The LOCATION parameter defaults correctly to the location of the web
server and thus will usually not need to be specified.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT593
Summary: Various extensions and fixups of SOAP Client Wizard.
Description:
This change contains a number of fixes to the SOAP client Wizard and the XML Schema Wizard:
- Extend SOAP Client Wizard to correctly handle import element of
WSDL where imported document is a schema.
- Use %xsd classes for schema types which are restrictions of
xsd:integer.
- Allow use of either element or type attribute for part element in
message element of WSDL.
- Support multiple target namespaces in a WSDL.
- If multiple namespaces are declared, use the first one as the TYPENAMESPACE and
as the classes in the default package.
- Fix up property reference to classnames that have been modified
because too long or "_" removed.
- Remove invalid XML schema type shortDateTime and
gRecurringDay.
- Classes with no properties and that not referenced in the schema are
normally not kept. However, they need to be kept when part of a WSDL
since these classes may be referenced from the WSDL message
element.
- Handle old form of specification of SOAP array as element with
maxOccurs="unbounded".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT597
Summary: Multiple <s:simpleType> occurrences are generated within a WSDL of a service using a custom datatype
Description:
This corrects the repeated definitions of
simpleTypes for datatype classes.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT599
Summary: Make web service generator methods not ProcedureBlock to allow splitting
Description:
Large methods generated for %SOAP.WebService are marked as ProcedureBlock by
default and thus cannot be split.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT608
Summary: Long clean up after XMLExport.
Description:
Cache now unswizzles each list or array of persistent objects after it is
exported via XMLExport with literal format.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT613
Summary: Error message for part not found in WSDL
Description:
This correction causes Caché to return an error
message rather than <UNDEFINED> when element reference is not
found in WSDL in part of an element in
message element.
It also improves the part element not found error message.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT642
Summary: Support elementFormDefault for SOAP web service and web client
Description:
This change adds class parameter, ELEMENTQUALIFIED, to control
the format of the SOAP body. ELEMENTQUALIFIED
has the value of 1 (true for qualified) or 0 (false for unqualified).
The
ELEMENTQUALIFIED specification matches the elementFormDefault
attribute of the schema element in the WSDL defining the SOAP service.
To maintain compatibility, ELEMENTQUALIFIED will default to 1 for
SoapBodyUse="literal" and will default to 0 for SoapBodyUse="encoded".
These were the values always previously assumed for the
elementFormDefault attribute.
The SOAP client wizard is upgraded to create an ELEMENTQUALIFIED parameter
based on the elementFormDefault
attribute of the schema element having a non-default value.
When upgrading the SOAP client wizard fix the fact that _ was being
lost from XMLITEMNAME when folding array of elements into a wrapped
array.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT645
Summary: Support multiple namespaces in an XML document
Description:
This change completes the process of supporting
multiple XML namespaces in an XML document, particularly in a SOAP
message.
Support is added in XML enabled classes for the XMLELEMENTQUALIFIED
class and property parameter. The possible values of
XMLELEMENTQUALIFIED are "" (unspecified and the default), 0 (false)
and 1 (true). The XMLELEMENTQUALIFIED property parameter indicates
whether that property will be qualified (in the sense used by the XML
schema) when exported as XML. The default is the value of the
XMLELEMENTQUALIFIED class parameter. The XMLELEMENTQUALIFIED in turn
defaults to 1 for "literal" format exports and to 0 for "encoded"
format exports. These defaults are to maintain backward
compatibility.
The XML schema wizard will add the XMLELEMENTQUALIFIED property
parameter whenever the form attribute is specified for an element.
The XML schema wizard will add the XMLELEMENTQUALIFIED class
parameter based on the two new properties: MakeElementQualified and
DefaultExportFormat. If MakeElementQualified is true, then
XMLELEMENTQUALIFIED will be added based on DefaultExportFormat. If
DefaultExportFormat="" or not specified, then XMLELEMENTQUALIFIED will
be added to all classes. If DefaultExportFormat="literal"
XMLELEMENTQUALIFIED=0 will be added to classes in schema for which
elementFormDefault is not specified or is equal "unqualified". If
DefaultExportFormat="encoded" XMLELEMENTQUALIFIED=1 will be added to
classes in schema for which elementFormDefault is equal "qualified".
The SOAP client wizard will always process schemas with
MakeElementQualified=1 and DefaultExportFormat=value of BodyUse if it
is the same for all methods, else DefaultExortFormat="".
Properties are added to %XML.Writer and arguments to some of its
methods to better control ElementQualified at runtime when
XMLELEMENTQUALIFIED is not specified.
The ElementQualified property is added to %XML.Element. The local and
elementQualified arguments are added to the Element and RootElement
methods of %XML.Writer. The default for the local and
elementQualified arguments are the properties Local and
ElementQualified of %XML.Element if present and if not the properties
Local and ElementQualified of %XML.Writer.
The elementQualified argument is added to the Object and RootObject
methods of %XML.Writer. The default for the elementQualified argument
is the property ElementQualified of %XML.Writer.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT650
Summary: Handle prefix for result tags in SOAP response
Description:
This change makes Caché ignore the result tag prefix/namespace in a SOAP
response message because all external web services are not consistent
in usage for this tag especially for RPC documents.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT655
Summary: Make SOAP fault available after web method call in web client
Description:
This change makes SOAP faults available after a
method call.
After a web method in a web client class is called,
the SoapFault property of the web client will contain a returned SOAP
fault as an instance of %SOAP.Fault.
If the SOAP message returned to
the web method did not contain a SOAP fault, then SoapFault will be
"".
If the SOAP response is a SOAP fault, then <ZTRAP> is
issued and SoapFault will contain the %SOAP.Fault instance. In the
case of <ZTRAP>, %objlasterror will continue to contain the SOAP
fault as a Caché %Status.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT656
Summary: Allow SOAP web method arguments to be marked as required.
Description:
If a web service has a web method with
SoapBindingStyle="document", then this change allows the use of the REQUIRED
argument parameter for the input arguments. REQUIRED=1 means that the
argument is required and results in minOccurs=1 in the WSDL's schema
for that argument.
This change was made because .NET does not add the additional
argSpecified boolean argument if the argument is required.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT659
Summary: Fix problems with multiple file WSDL
Description:
This change fixes a number of bugs in handling WSDL
which consists of multiple included files:
- If elements from multiple schemas are used in a WSDL, use the
correct targetNamespace for the elements in each schema. The
enclosing WSDL targetNamespace must be saved and changed to the
schema's targetNamespace for each schema.
- The port type in the binding element was not found if it referenced
a different namespace than the WSDL targetNamespace.
- Only require a prefix for the SOAP namespace where it will be
used. The SOAP namespace need not be mentioned in a file if only
portType and message elements appear in that file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT668
Summary: Make XMLIGNORENULL appear in inherited parameters for SOAP class
Description:
This correction allows XMLIGNORENULL specified in a SOAP class already
to influence the SOAP messages used for each web method. See
%XML.Adaptor for behavior of XMLIGNORENULL. However, XMLIGNORENULL
did not appear in the inherited class parameter list for SOAP classes.
It will now appear as an inherited parameter.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT671
Summary: Support schema with no targetNamespace in WSDL
Description:
This change corrects problems in our support of a schema which does
not have a targetNamespace attribute that is contained in a
WSDL.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT676
Summary: Allow XMLPATTERN property parameter in XML enabled classes
Description:
This change allows XMLPATTERN property parameter for properties
within XML enabled classes. XMLPATTERN is generated by the XML Schema
Wizard for the pattern facet within XML schemas. The XMLPATTERN
parameter just documents the pattern facet and is not implemented in
Caché.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT678
Summary: Optionally create persistent classes in SOAP client wizard
Description:
This change adds an option to the SOAP Client Wizard to make the
created classes (except for the client itself) registered, persistent
or serial. This is implemented by adding a MakeSerial property to
%XML.Utils.SchemaReader and %SOAP.WSDL.Reader.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT680
Summary: Handle RPC WSDL with same name used for input and return parameter
Description:
With this addition, the RPC/literal WSDL created by Axis will use the
parameter as the input and output of a message. However, the types
are different. Caché treats the output parameter as the return value of the
web method.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT681
Summary: Fix bug: SOAP client opens stream twice
Description:
The SOAP client was opening the response stream
twice. This still worked, but was fixed to get a slight performance
improvement.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT688
Summary: Move SOAP logging parameters to local database
Description:
This correction moves parameters that control the logging of input to
web services/clients to a local database. These parameters, which were
previously in ^%SYS, will be writable for any given user.
Set
- ^ISCSOAP("Log")="i"
- to log web service requests and web client responses.
- ^ISCSOAP("LogFile")
- is the full path of the file to contain the logged
input.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT692
Summary: Empty dataset throws errors when specified in a different format
Description:
This change allows the input XML dataset format that
has only diffgram element with no child elements and interprets this
to be a dataset with no rows.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Storage.Default
Platforms: All
DevKey: DLP1273
Summary: Fix computation of data address base global reference
Description:
A limitation for %BuildIndices has been removed.
In the past if you change the Storage Property DataLocation so that it
contained a subscript, something like ^User.GloTest("data") instead of
^User.GloTestD then Build Indices would fail to populate any
indexes. This also works if there are multiple literal subscripts in
the global reference.
BuildIndices now takes this into account and correctly builds the Indices.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Storage.Default
Platforms: All
DevKey: MXT511
Summary: Need to clear collections before import
Description:
Before this change, if a collection is passed to a web client as an
Output or ByRef argument, the elements returned by the web service
were incorrectly just added to the collection.
This modifies the web client
to clear all Output or ByRef collection arguments before importing the
web service SOAP message so that the collection argument contains just
the elements sent by the web service.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1343
Summary: Call index build/purge functions in table routine
Description:
This change adds support for the %BuildIndices and
%PurgeIndices
methods in
classes using %CacheSQLStorage. Previously these methods were only
implemented for classes using %CacheStorage. %CustomStorage does not
implement these methods.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: JN247
Summary: Correct Handling of Unicode in %XML.SAX.Utils.Sequencer
Description:
While the SAX parser makes sure that callbacks to
content handler methods do not contain character strings longer than
32k, the %XML.SAX.Utils.Sequencer was attempting to put 32k of Unicode
characters into a $List. $List only supports 16k of
Unicode characters so <MAXSTRING> could be encountered. This
has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT510
Summary: Make internal representation of XML document smaller
Description:
%XML.Reader imports the XML document into a global.
Previously each element node stored its namespace as a string in the
node. Better storage usage is now obtained by storing a small integer
index into a namespace table in each node.
This change improves performance with no external changes.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT516
Summary: Fix XML schema wizard not to reduce a collection that references a collection
Description:
XML schema wizard was incorrectly combining a class
that contained only a collection with a referencing collection
property. This reduction is no longer done.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT518
Summary: Fix enumeration problems in XMLSchema
Description:
This correction fixes XMLSchema for enumerations
created for VALUELIST property parameter:
- Enumeration was not being shown for
XMLPROJECTION="attribute".
- User defined datatype classes were being ignored. This change
makes these user defined datatype classes appear in the XML schema and
in references. For this change a user defined datatype class is one
whose class name does not begin either % and does not have an XSDTYPE
parameter.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT520
Summary: Improve error message for unexpected xsi:type in XML document
Description:
If an element has an unexpected (invalid in this
context) type specified using xsi:type, then give a clear, unique
error message.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT522
Summary: Fix bug: ExportToString crashes MAXSTRING
Description:
This change causes Caché to return an error
%Status if result of ExportToString will be > 32K.
Also it
adds a ByRef %Status return argument to GetXMLString method of %XML.Writer.
The method signature is
Method GetXMLString(ByRef status As %Status) As %String
It
returns an error %Status if the result string > 32K.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT532
Summary: %XML.DataSet has INVALID OREF error when executing %Resultset functionality
Description:
The method, Execute, for an %XML.DataSet is not defined.
The XML must be produced using XMLExport or returning the %XML.DataSet
via SOAP. If the data in the query is desired, then %ResultSet should
be used instead.
This change gives a good error return instead of <INVALID OREF>.
Note the application code still needs to be changed to pick up
embedded error status.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT537
Summary: OpenURL method in %XML.Reader
Description:
This change adds the OpenURL(url,...) method to
%XML.Reader class. The input XML document is specified by a
URL.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT539
Summary: Fix bug: XML Schema wizard does not display non-ascii characters correctly when displaying schema source
Description:
This change modifies the XML Schema wizard and SOAP
Client Wizard to handle XML document that is encoded in other than
utf-8.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT545
Summary: Fix XML compile order problems
Description:
Before this change, some classes needed to be
compiled twice to correctly get the list of subclasses allowed for
a class reference. This problem is addressed by the following
changes:
- The XMLNAME and XMLTYPE parameters are not inherited from the
super class since these parameters are only meaningful for the class
in which they appear.
- The list of all subclasses of the referenced class to be used for
XMLTYPECONSTRAINT="choice" or "substitution group" when CHOICELIST is
not specified will be picked up at runtime instead of compile time as
is now done. The list of subclasses used to resolve xsi:type in the
XML document will also be picked up at runtime. This class list will
not need to be recomputed at runtime, since it will be maintained in
the data dictionary. This change will resolve the need to compile
some classes twice.
- Testing for a referenced class being abstract is now done at runtime.
- The XMLSUMMARY class parameter of a referenced class is now used
at runtime to determine if the class is referenced as a summary.
- The NAMESPACE class parameter of a referenced class is now used at
runtime to determine the XML namespace in which the tag for the
element is specified.
In addition the XML Schema Reader is changed to add
Parameter XMLINCLUDEINGROUP = 0;
to classes created for inline elements so that they are not used as
subclasses for choice list or types. This parameter does not
need to be generated for direct subclasses of %XML.Adaptor,
%RegisteredObject, %SerialObject or %Persistent.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT555
Summary: XML Schema wizard support for currently unsupported built-in types
Description:
With this change, the complete set of built-in schema types is now
supported, since a few missing ones have been added. These additional
types all map to %String.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT569
Summary: ERROR #5490 reported while running generator for method 'XMLImport'
Description:
The change fixes a compile error in XML enabled classes when
XMLCHOICELIST property parameter is used with one of the classes in
the list being a subclass of another class in the list.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT570
Summary: Add ability to force SOAP encoded XML to be exported inline
Description:
By default, SOAP encoded XMLExport of a class uses
idref's for class instances referenced by a class that is being
exported. This is indicated by the XMLExport format parameter of
"encoded". This change allows the referenced class instances to be
XMLExported inline as for "literal" format. This is indicated by the
XML format parameter of "encoded,inline".
%XML.Writer is also extended to allow inline writing of encoded
objects. The ReferencesInline property will control inline export.
Default is true (1).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT578
Summary: Extend %XML.Writer capabilities to include most XML node types
Description:
Methods are added to %XML.Writer to control document start and end:
Method StartDocument() As %Status
Method EndDocument() As %Status
The StartDocument and EndDocument methods are added to explicitly
mark the beginning and end of the XML document being written. If
StartDocument is not called, the XML document begins implicitly with
the first output and ends when EndRootObject or EndRootElement is
called. Therefore, StartDocument may not be called after any output
has been written. Also, EndDocument may not be called unless
StartDocument has been previously called. The purpose of allowing
explicit calls to StartDocument is to allow content such as comments
and processing instructions to be written after the end of the root
element.
Methods are added to %XML.Writer to support additional XML node types:
Method WriteAttribute(Name As %String,
Value As %String,
Namespace As %String,
ValueNamespace As %String)
As %Status
This method writes an attribute for the last element started. This method may only be called immediately after StartElement or Element.
Arguments:
- Name is the attribute name and is required.
- Value is the attribute value and is required.
- Namespace is the optional namespace for the attribute name. If
Namespace is not specified, then the default XML namespace is used for
the attribute name.
- ValueNamespace is the namespace for the value. If ValueNamespace
is not specified (the most usual case), no namespace prefix is used
for the value. ValueNamespace is used for attributes like xsi:type
whose value comes from an XML schema namespace.
Method Write(Text As %String|%CharacterStream)
This writes arbitrary text in the XML document without any escaping being
done. This method can be used in any part of the XML document where
Text is the character data to output and is of type of %String or
%CharacterStream.
Method WriteBase64(Binary As %Binary|%BinaryStream)
This encodes the specified binary bytes as base64 and writes out the resulting text.
Method WriteBinHex(Binary As %Binary|%BinaryStream)
This method encodes the specified binary bytes as binhex and writes out the resulting text.
Method WriteChars(Text As %String|%CharacterStream)
This method writes the XML element text performing any required escaping.
Method WriteCData(Text As %String|%CharacterStream)
This methods writes the XML element text in a CData section.
Method Comment(Text As %String|%CharacterStream)
This method writes out its argument as a comment <!--...--> containing the specified text.
Method WriteDocType(Name As %String,
PublicId As %String,
SystemId As %String,
Subset As %String)
As %Status
This methods Writes the DOCTYPE declaration with the specified name and optional attributes.
Method WriteProcessingInstruction(Name As %String,
Text As %String)
As %Status
This method writes out a processing instruction with a space between
the name and text as follows: <?name text?>.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT579
Summary: Improve error checking in XML schema wizard
Description:
This change add an error check for the case of an incomplete form loaded on
namespaces page. This fixes an issue that has only appeared for the OpenVMS
web server.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT584
Summary: Require explicit Execute call for %XML.DataSet
Description:
This changes the API for %XML.DataSet to require a call to
Execute before the dataset is returned by a WebMethod. The use of the
SetArgs method along with implicit Execute is deprecated.
The form of a WebMethod that returns a dataset becomes:
Method GetByName(name As %String) As %XML.DataSet [ WebMethod ]
{
Set result=##class(%XML.DataSet).%New()
Set status=result.Prepare(
"SELECT Name, SSN FROM Sample.Person WHERE Name %STARTSWITH ?")
If $$$ISOK(status) Set status=Do result.Execute(name)
If $$$ISOK(status) Quit result
/* Create fault and return */
set fault=##class(%SOAP.Fault).%New()
set fault.faultcode="GetByName"
do $system.Status.DecomposeStatus(status,.err)
set fault.detail=err(1)
set fault.faultstring="application error"
do ..ReturnFault(fault)
}
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT586
Summary: Enhance %XML.Writer use of prefixes
Description:
This change adds two enhancements:
In the case where default namespace is set for a tag by using
xmlns=..., do not create a prefix for the same namespace unless
required for this class.
And, optionally suppress the use of xmlns= to set default XML
namespace for literal XML documents. Control use of default XML
namespace by %XML.Writer property, SuppressXmlns (declared as %Boolean)
with default = 0 (false).
If SuppressXmlns is true then a prefix is used for each tag rather than default namespace with xmlns=.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: Object.XML
Platforms: All
DevKey: MXT598
Summary: Improve XML schema wizard support for maxOccurs="unbounded"
Description:
In XML Schema wizard and SOAP client wizard, this
change improves
support for maxOccurs="unbounded" in sequence or choice element. The
maxOccurs="unbounded" will be pushed onto any contained element tags
and will override the maxOccurs specification for the contained
element. This extended support is correct for sequence or choice
that contains exactly one element -- a fairly common case.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT600
Summary: Unnecessary swizzle of object in XMLExport of ID or OID
Description:
When XMLExport is outputting an array of objects or
list of objects property as an ID or OID (XMLREFERNCE="ID" OR "OID"),
the generated code uses GetNext to loop over the objects which causes
unnecessary swizzling. This change uses GetObjectNext for the
loop.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT601
Summary: CONTAINSID should not imply unique constraint in %XML.DataSet
Description:
With this change, %XML.DataSet will include a unique constraint in the
schema it writes only if CONTAINSID is specified and all columns are
from the same table.
Also, this change removes the ROWSPEC from the query in Sample.Person, since ROWSPEC is no
longer needed and having ROWSPEC doesn't allow ID to be considered in
the table.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT602
Summary: In XML schema and SOAP client wizard, cleanup unused classes created for %XML.String properties
Description:
In XML schema and SOAP client wizard, unused and
unnecessary classes with no properties were being created when
processing complex Type with mixed="true". These unused classes are
no longer created.
The specific case handled here is a complex type like:
<xs:complexType name="myType">
<xs:sequence>
<xs:element name="mix">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="e" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
The class created for myType has a property
Property mix As %XML.String;
Previously an unused class named "mix" was also being created for the
complexType in the mix property. This class is totally unnecessary
and is no longer created.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT603
Summary: XML Schema and SOAP Client Wizards handle .Net format datasets
Description:
The Soap Client Wizard and the XML Schema Wizard
will now recognize the proprietary Microsoft .NET dataset
representation in XML schemas. These will be mapped to %XML.DataSet
for untyped datasets or a subclass of %XML.DataSet for typed
datasets.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT606
Summary: Can't generate class with element name start with underscore and number in XML Schema Wizard
Description:
If property name or class name begins with a digit
after removing leading _, then this changes appends "X" to the name. For example,
XML name _-1a becomes Caché name X1a.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT607
Summary: Do not call IsValid method for importing by %XML.DataSet
Description:
When importing XML data in %XML.DataSet, IsValid
does not need to be called to check the logical value since only
datatype classes in which the XSDToLogical method generates a valid
logical value are used. This change removes the call.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT614
Summary: Change %XML.Writer default to not add XML declaration for strings and character streams
Description:
After this change, if the NoXMLDeclaration property of %XML.Writer is 1
(true), then the XML declaration will not be written. The default is
to write the XML declaration unless the Charset property is not
specified and the output is directed to a string or character stream
in which case no XML declaration is written.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT627
Summary: XML Schema Wizard ignores maxOccurs="unbounded" in schema
Description:
This corrects an error where maxOccurs was being ignored for
sequence or choice schema element that was the immediate child of a
complexType schema element.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT628
Summary: Generate correct class for mixed complex type that contains an attribute
Description:
If an element definition has an inline complexType
with mixed="true" that contains an attribute, Caché now generates the
correct class for the complex type.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT641
Summary: Relative Fonts in XML Schema Wizard
Description:
This change causes Caché to use relative
font-size values for XML Schema Wizard, SOAP Client Wizard and New Web
Service Wizard.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT644
Summary: Fix XML Schema Wizard for HL7 schemas
Description:
This makes several corrections in the XML schemas
wizard for HL7 schemas:
- Previously all short class names were made unique in the first 25
characters. We now only require short class names to be unique in the
first 25 characters within a package.
- Add property CompileClasses to %XML.Utils.SchemaReader. The
default is
1. It is set to zero to prevent automatic compilation of newly created classes.
This flag is used to combine multiple schemas before compiling.
- Ignore type=".". The use of "." as a type is a bug in the HL7
schemas.
- Remove - and _ from schema prefix before using it as a package
name.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT646
Summary: XML Schema Wizard mishandles long Relationship names
Description:
This change corrects an error that occurs When
property names in a relationship are reduced to 31 characters. It also
reduces the Inverse attribute of the relationship property.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT651
Summary: Make import of SOAP encoded arrays more forgiving of format
Description:
On XML import, Caché now allows either SOAP encoding format for
arrays (includes arrayType attribute) or literal format. This change
also effects input of SOAP requests by a web service or input of a
SOAP response by a web client.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT657
Summary: XML Dataset needs to allXMLExport of imported dataset
Description:
This change fixes the XMLExport and XMLImport methods of %XML.DataSet
(and it's subclasses) so that export of an imported dataset works properly.
This problem arises in SOAP web service that is attempting to return
an %XML.DataSet that was retrieved using a web client.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT658
Summary: Add new SchemaReader/Result feature - SqlColumnNumber=SequenceNumber
Description:
This change adds a SQL feature (..Features("SQL")="") to
%XML.Utils.SchemaReader to have columns displayed in the same order as
properties in Studio. The same feature is also added to the Schema
wizard.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: Object.XML
Platforms: All
DevKey: MXT660
Summary: %XML.Reader reads a %Float value 1e-128 as 0
Description:
This change corrects problems in validation and conversion from XML for %Float,
%xsd.float and %xsd.double to handle values close to 0.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT661
Summary: Fix bug: <ILLEGAL VALUE> when %XML.Writer.Charset="Windows-1251" on 8-bit Caché
Description:
This change eliminates an <ILLEGAL VALUE> error
when the Charset
property of %XML.Writer is set to a charset that does not have the
corresponding translate table loaded. %XML.Writer will now return a
%Status error from the first output to the document.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT667
Summary: Fix XML Schema Wizard to handle additional cases for HL7 CDA schema
Description:
If XML element names differ only in case, this
results in two properties in a class that differ only in case which is
not valid. This correction changes the XML schema wizard to disambiguate these
property names by adding a number to the end of one of the second
property name.
If class XMLNAME is different from class short name, then Caché
needs
to create XMLTYPE class parameter to specify the type to be projected
to XML.
This change also handles multiple levels of ref's. For example, group ref=g1 and within
group g1 element ref=e1. Previously this was not picking up types for
inner elements.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT670
Summary: Typed .NET format datasets come up as %XML.String when schema is imported via Schema Wizard
Description:
This change fixes the XML Schema Wizard to use
the underlying support for creating typed datasets as subclass of %XML.DataSet.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT677
Summary: Project Calculated properties as CONTENT without error
Description:
This change allows the support XMLExport of calculated properties with XMLPROJECTION="content".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT682
Summary: Error check writes to stream
Description:
This change installs improved error return checking
from the Write method of stream,
since this can fail because of file permission issues.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT683
Summary: Allow href attribute for literal format XML import or export
Description:
Use of the href attribute has special meaning for
SOAP encoded format XML document. Fix literal format XML support to
allow href attribute to correctly map to
Property href As ... (XMLPROJECTION="attribute");
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT684
Summary: Add new "No Sequence Check" feature to XML Schema Wizard
Description:
This change adds a new "No Sequence Check" feature
to the XML Schema
Wizard which forces XMLSEQUENCE parameter in generated classes to
always have value of 0. The purpose of this feature is to deal with
some situations in which the customer's XML file does not have
elements in the same order as the XML schema.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: Object.XML
Platforms: All
DevKey: MXT686
Summary: %Status needs to be base64 encoded when exported as XML
Description:
This change exports %Status type properties using base64
encoding, since value is binary and can thus include octets that are
not valid characters in XML.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Special Projects
Platforms: All
DevKey: MXT563
Summary: Fix bug: file streams not cleaned up for XML enabled registered objects
Description:
If a subclass of %RegisteredObject has file streams
that are created by %XML.Reader on XML import, then these streams were
not being deleted when the object is deleted. This change corrects
that issue and
the streams are deleted.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: BJB300
Summary: Gunlock2 syntax error with No Subscript class.
Description:
If you have a class that has CacheSQLStorage and no
subscripts, Caché would generate an incorrect line of code in the gunlock2
procedure of the Table routine. This is now fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2326
Summary: Implement Build and Purge Indices for %CacheSQLStorage
Description:
Caché now supports %BuildIndices and %PurgeIndices for %CacheSQLStorage.
When %BuildIndices is called for a table using %CacheSQLStorage, the
method traverses every row of the master/data map and selects the
field values needed for all the indices being built and sets the index
value(s). When %CacheSQLStorage is used, the index IS NOT deleted or
purged first. The reason is there might be data in the index
global which belongs to another table or index. Also, $SortBegin and
$SortEnd are not used when building indices that use %CacheSQLStorage
for the same reason.
When %PurgeIndices is called for a table using %CacheSQLStorage, the
method traverses every row of the master/data map and selects the
field values needed for all the indices being purged and deletes the
index value(s).
At this time %BuildIndices and %PurgeIndices do NOT perform the index
sets/kills within a transaction, nor do they perform any locking of
the table.
Users are cautioned to build/purge indices only when no one else is
performing inserts, updates, or deletes, on the table.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: SQL
Platforms: All
DevKey: DPV2348
Summary: Report SQLStatistics for master map with single field PKey/IDKey
Description:
A problem has been fixed where a class with a single field IDKEY/PRINARY KEY index like:
Index APPIdkeyIndex On APP [ IdKey, PrimaryKey, Unique ];
was not projected to ODBC/JDBC as a unique index when using the SQLStatistics catalog query.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2355
Summary: Undefined in Trigger Code trying to read a {Name} variable not used in dynamic query
Description:
A problem has been fixed where a {Field} referenced
in an INSERT trigger, but not in an UPDATE or DELETE trigger resulted in
an <UNDEFINED> error upon insert, if a value was not specified
for the field.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2400
Summary: Correct update (to NULL) of serial sub-field in SQL filer
Description:
A problem has been fixed where the SQL UPDATE of a
serial sub-field value from a non-NULL to a NULL value might not file
properly.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2417
Summary: Don't generate setting of default value in SQL filer for virtual computed fields
Description:
With this addition, fields that are SQLComputed and Transient
(virtual computed fields) will no longer set the default value of the field in
the SQL filer if there was an initial expression defined for the field's
property. This will allow the referencing of ..Property in the
initialexpression of a transient property without affecting the SQL
table.
References to ..property are NOT allowed in the initialexpression
of persistent fields because there is no object context inside of the
SQL filer.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: SQL.DDL
Platforms: All
DevKey: BJB295
Summary: Make sure Selectivity is not 0 with $justify(19), same as %qarTune
Description:
A correction has been made to the SQL Manager. If
you ran TuneTable from SQL Manager and ended up with a vary small
Selectivity, first 5 decimal places all 0, the SQL Manager would file
the wrong value.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.JDBC
Platforms: All
DevKey: JMM028
Summary: JDBC preparser: allow extrinsic functions
Description:
This change corrects a regression in functionality
that prevented the JDBC parser from recognizing intrinsic functions.
It now allows the first character of an identifier to be '$', and
accepts '$' and '^' as possible values for subsequent characters.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.JDBC
Platforms: All
DevKey: MAB316
Summary: Correct handling of Japanese full-width space character in JDBC preparser
Description:
Japanese full-width space character "\u3000"($c(12288)) was not recognized by JDBC preparser. This is now fixed and it is treated as any other whitespace.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.GateWay
Platforms: All
DevKey: MIT287
Summary: Fix a case of an id field with an aliased external table
Description:
This change fixes a problem where a query with an id
field was referenced in the case of an aliased external table.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.GateWay
Platforms: All
DevKey: MIT392
Summary: SQLGateway and Functions
Description:
Support for CAST and TODATE was added for external
tables with this change.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: JCN532
Summary: Add CodePages for decoding 8 bit Cache
Description:
This change adds several additional Code Pages to
decode new Cache locales on 8-bit Cache:
- CP1250
- CP1256
- CP874
- CP1253
- CP1255
- CP866
- LatinA
- LatinT
- Latin7
Users must use the Unicode ODBC APIs to properly see the data, or
their regional settings Code Page must match Cache's NLS default. In
general it is safest to use Unicode Cache and Unicode ODBC API's to
avoid conversion confusion.
The full list of supported Code Pages is:
- CP1251
- Latin1
- Latin2
- LatinC
- LatinG
- LatinH
- CP1250
- CP1256
- CP874
- CP1253
- CP1255
- CP866
- LatinA
- LatinT
- Latin7
ODBC does not use these tables when communicating with the Unicode version of Cache, only 8-bit.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: SQL.ODBC
Platforms: All
DevKey: JCN537
Summary: Fix ODBC Stream Problem
Description:
Binding a Character Stream to a parameter and
inserting it into Caché would fail on Streams >32K. We do handle
large character streams if they are inserted using SQLPutData, which
sends them in smaller chunks. This now works in both cases.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: JCN539
Summary: Fix for SQLGetData with 0 buffer size, to return length of data to convert
Description:
VBScript used in an HTML document would make two
calls to SQLGetData on the same column. The first call had a buffer
length of zero, with the intent of getting back from SQLGetData the
length of the buffer needed after converting the data. This is important for
Character conversion and possibly retrieving binary data types.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK609
Summary: Fix ORDER BY ID DESC when BSL used
Description:
This change fixed a problem where a query specifying DESC sort on the ID would
sometimes return the results in ASCending order when a multi-index
access path is used.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK618
Summary: Ignore NULLable keys for DISTINCT
Description:
When using UNIQUE keys to determine whether a field is functionally
determined by a set of fields for DISTINCT purposes, Caché now ignores
UNIQUE keys that have NULLable (not required) fields, since in the
DISTINCT semantics all NULLs are one NULL, while for UNIQUE semantics
each NULL is different (so DISTINCT requires a stronger dependency).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK620
Summary: Fix DESC for "set" traversal
Description:
This change fixed a problem with a %ID or IDKEY field that has an IN condition and an
ORDER BY DESC .
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MXT531
Summary: XML Schema Wizard Back button does not go to previous screen
Description:
This changes fixes the Back button to return to previous screen in XML Schema wizard.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MXT674
Summary: Service method name at Web Service Wizard
Description:
This change causes Caché to ignore empty
lines and check method names in method name text area of Web Service
Wizard
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MXT701
Summary: Schema Wizard cannot read xsd file from directory which contains non-ascii character
Description:
This change fixes the XML Schema wizard and SOAP
Client Wizard to correctly display files with paths that have Unicode
characters that are not in the ISO-8859-1 charset.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS390
Summary: Implicit clear $ETRAP when $ZTRAP is set
Description:
When $ZTRAP is set to a non-empty value, it will now
take precedence over any
existing $ETRAP error handler. Caché will implicitly perform a NEW $ETRAP
command and will set $ETRAP="".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS635
Summary: Fix frame stack problem in stackinfo()
Description:
This fixes a problem that could lead to a process crash if a second error
was encountered while the system was collecting stack information about
the first error. The most vulnerable type of error would be problems
accessing routine source. The problem could also occur if there was an
error while executing a $STACK() function call.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS652
Summary: Fix <ACCVIO> with op=1 after <EDITED>
Description:
This fixes a memory access violation that could occur during a debugging
session. After an <EDITED> error is received, a QUIT command
removes some, but not all, of the levels on the execution stack causing a GOTO
command to resume execution at an invalid location instead of issuing
another <EDITED> error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK381
Summary: Speed up ECP client connection.
Description:
This change improves the time required to
make a connection to the ECP client. The server no longer does a DNS
lookup for the client name; it uses the specified hostname or IP
address.
Furthermore, it registers itself with the superserver much earlier in the
connection sequence.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: HYY947
Summary: Address issue of routine referencing purged namespace cache that caused <ERTRAP>
Description:
This change addressed an issue where Caché
startup with a small routine buffer pool may get <ERTRAP>.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JLC659
Summary: Fix bug in $Normalize
Description:
This change fixes an error in $NORMALIZE where 0
(zero) would be incorrectly returned for certain input values.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: Windows
DevKey: JO1904
Summary: Disable piece of JO1849 on OSWNT which use file id to match files
Description:
This fixes a problem introduced in 5.0.15 which could prevent
access to databases hosted on NAS (network attached storage) on Windows
systems.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: LFT1383
Summary: $zu(178) should check global name
Description:
$ZUTIL(178) for creating globals was not checking
the global name for validity. This could corrupt the global
directory. It has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: LRS782
Summary: Enable error trap recovery after namespace switch
Description:
Error trap processing has been improved to dispatch to the defined trap
handler even though a subsequent namespace switch has been performed.
As with QUIT processing in these same circumstances, control will pass
to the appropriate routine but it is up to that routine to restore the
original namespace if desired.
Prior to this change, an <ERRTRAP> exit could occur during error trap
processing after a namespace switch.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RFD104
Summary: Fix display of large counts for line-by-line monitor
Description:
Counts in ^%MONLBL were being displayed as signed
integers, which caused larger numbers to appear as negative numbers.
This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP332
Summary: Change max size of view buffer to prevent mailbox queue overwrite
Description:
A long view string could overwrite the mailbox
queue, causing possible access violation.
It has been fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SJ1433
Summary: Fix errors in JOB server
Description:
This change corrects a circumstance
which could hang Caché job
servers. The problem would show up after a number of JOB commands had
been executed by a given jobserver process when the routines being run
uses more than 64KB of local symbol table space.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SJ1456
Summary: Fix errors in generation of Caché Basic XOR, EQV, and IMPLIES logical operators
Description:
This change corrects instances where the Caché Basic compiler
may generate incorrect code for the logical operators mentioned above.
The code generator for these operators now is the same as for $ZBOOLEAN.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Cluster Specific
Platforms: 1
DevKey: JO1898
Summary: Acquire exclusive rather than shared ownership of clustered blocks with a NL lock
Description:
A problem has been corrected where a cluster member acting as an ECP
server for non-cluster members could "freeze" Caché.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.I/O
Platforms: AIX
DevKey: JO1891
Summary: Enable USE_EFFICIENT_TTINPUT for AIX
Description:
Terminal input on AIX has been made more efficient
to bring it in line with the implementation on other UNIX
platforms.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.I/O
Platforms: OpenVMS
DevKey: LRS795
Summary: Close RMS file if can't obtain I/O buffer
Description:
An error in Caché for OpenVMS has been fixed that could keep an RMS file
open even after a <NOTOPEN> error caused by insufficient partition
memory space to allocate an I/O buffer.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1026
Summary: Disable sorting in journal recovery at startup
Description:
With this change, sorting is disabled in journal recovery at startup
so database updates are applied in the order they were created.
Sorting is still enabled in regular journal restore that is initiated
by the user.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1034
Summary: Address a problem with $zu(78,18,0) on current journal
Description:
This change addressed a problem with cluster shadowing that
caused an error such as <VALUE OUT OF RANGE>updseqinfo+7^JRNINFO
to be generated on the source side. The error itself is recoverable
and may or may not affect the database integrity on the shadow.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1073
Summary: Fix cluster shadow inconsistency caused by copier setting "jrnend" value back
Description:
This change addresses a problem that can cause
inconsistency between a source and a cluster shadow in version 5.0.14
and upward.
Non-cluster shadowing situations are not affected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY987
Summary: Set wdstop when journal daemon gets <ACCVIO>
Description:
This change prohibits global updates once a journal daemon dies with <ACCVIO>.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Lock
Platforms: 1
DevKey: SML521
Summary: Improve lock management when the number of locks for a specific job is over 32 KB
Description:
When a job owned many locks (when the locks could
not fit in a 32 KB chunk of memory), a JOBEXAM to that job may cause
job been examined to hang because a needed resource is not released
by the JOBEXAM codes.
This change corrects that situation.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1007
Summary: Clear $ZE in error trap
Description:
This change addresses an issue on cluster shadow
where a shadow logged a <NOTOPEN> error on exit. The error was
actually generated (and trapped) during shadow dejournaling.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1037
Summary: Fix an <UNDEFINED> error in cluster shadowing
Description:
This change corrects a situation where possible intermittent
<UNDEFINED> errors (on line openjrnf+3^SHDWX) on cluster
shadow may occur.
The problem was believed to be present in 5.0.13 and up.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1045
Summary: Fix collation handling in shadowing
Description:
This change corrects a <SUBSCRIPT> error during shadowing
(5.0.13 and forward) in the scenario where the collation of the global
from the journal doesn't match that of the shadow database.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY978
Summary: Start cluster shadowing at the location specified by the user (not earlier than that)
Description:
This change addresses a problem with cluster
shadowing where shadow dejournaling may start at an earlier location
than specified by the user if the specified location contains a
nonzero sequence.
For example, if user specifies
"20040811 14:11:12,22531", shadow dejournaling would start at 20040811
14:11:12,22403, or 128 items earlier in terms of sequence #. Usually this is
not a problem (other than being a little inefficient), unless the user
intends to exclude the records prior to the specified location from
being dejournaled on the shadow.
There is no problem if the user specifies the location using cluster start time only (e.g., "20040811 14:11:12").
The problem is present in 5.0.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: CDS454
Summary: Handle <STORE> errors in %ETN
Description:
With this change, when a <STORE> error is
handled by the %ETN error trap routine, it will save
some minimum information to identify where the error happened in a %ERN
error log entry. It will then try to acquire more memory from the system and
create a normal %ERN log entry.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: JLC685
Summary: Fix UnicodeLittle/Big in old custom locales
Description:
This change adds code to the Caché upgrade
procedure to convert eventual custom UnicodeBig and UnicodeLittle
locale tables to the new format used by current and future
Caché releases. Additionally, importing a locale with the old
format will automatically convert it to the new one.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: LFT1321
Summary: Fix error trapping in 5.0 process class
Description:
This fixes a problem using the
$SYSTEM.Process:ALLFIELDS query. In prior releases, if there is a
hung process somewhere
when this query is run, the query will hang.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: RJF015
Summary: %FREECNT minor fix to free data block calculation
Description:
This corrects a problem where %FREECNT /
GetFreeCount^%DM would report several more free data blocks than were
really available.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: 1
DevKey: RJF029
Summary: Fix calculation used for ^REPAIR block allocation
Description:
This corrects a problem where using the Map Edit
functionality of REPAIR to allocate a block in a new-format database
could occasionally result in an inconsistency in the internal
structure of the map block. This inconsistency could later result in
a <DATABASE> error when new data is inserted into that database.
This change also corrects a problem where ^REPAIR would not allocate
or deallocate the last block in the range of blocks referenced by a
map block. This latter problem affects both old and new format
databases. When attempting to allocate or deallocate the last block
in a map, ^REPAIR would incorrectly state that "Block X is not the
correct map block for Y".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML540
Summary: Disable dead job cleanup by default
Description:
This change will disable Dead Job Cleanup as the
default setting when Caché is started.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
This section provides a listing of changes between Caché
5.0.14
and
Caché
5.0.15.
For detailed information on getting started, see the Caché 5.0 Release Notes
(located off the Caché installation directory in the file Docs/GCRN/GCRN.html);
for information on previous 5.0 maintenance kits, see the file prenotes.htm,
located in the same directory as this file.
This document contains several sections:
Important Caché News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate
importance to
users of our software. These include
alerts, mission critical issues, important updates, fixes, and releases
of Caché.
The most current list can be obtained from the
InterSystems Website.
Users should check this list periodically to obtain the latest information on
issues that may have an effect on the operation of their site.
Online Documentation
As a convenience to our users, InterSystems provides
online access to documentation for recent versions of
Caché at the
InterSystems Website.
From the home page choose the "Caché" tab, and on the "Downloads" menu,
select "Documentation and Help Updates" or follow
this link.
Description of a Change Report
To help you assess the impact of these changes on your
applications, each change description contains a more detailed explanation of
the modification.
All changes include a table giving pertinent information on the
issue's likelihood, impact of the change, and whether this has already been used
successfully in production by other customers.
In order to make the information easy to assimilate visually,
the tabular information has been simplified to a keyword or two and a
value. The full explanation of the keyword meanings are:
- 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 - Whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - Whether this change provides new
features or capabilities.
- Config Mgr
- Control Panel
- CSP
- CSP.Gateway
- Networking
- Object
- Object.ActiveX
- Object.Library
- SQL
- SQL.GateWay
- SQL.ODBC
- System
- System.Backup/Restore
- System.Cluster Specific
- System.Journaling
- Utilities
Category: Config Mgr
Platforms: All
DevKey: CFL542
Summary: Hide the Config Manager main form when Database Wizard called from Control Panel
Description:
Under certain conditions, when the Control Panel launched the Database
Wizard, a portion of the Config Manager window remained visible in the screen. This
change corrects that problem.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Control Panel
Platforms: All
DevKey: CFL1148
Summary: Kill ^%utility($J) upon exiting from Control Panel
UNRESOLVED
Description:
A bug has been fixed where ^%utility($J) was not
killed by the return code from the Control Panel. The left-over
nodes in this global can lead to undesirable database expansion.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MAK1213
Summary: Avoid closing the session if the CSP method is not an allowed type
Description:
If an application issues an HTTP request on Caché 5.0 for a
method other than GET/POST/HEAD, Caché would report this as an
error. However the error handler for this was getting a further error
which caused the session to be closed. Now we report this error
correctly.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MAK1242
Summary: Prevent a hyperevent for a session that is closed from taking a new license out
Description:
If an application runs a hyperevent for a session that has
expired, Caché warns that the session is timed out and the
hyperevent can not be processed. However, notifying the application takes out a
license in order to report this error. This changes corrects the
problem; a hyperevent
that cannot be run will not use another license to report the error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MAK977
Summary: End of file $zeof reset at the end of every CSP page, so it does not reflect system default
Description:
At the end of every CSP request, the CSP server
cleans up the session for the next request. This resets the end
of file/$zeof setting so that it always generated an <ENDOFFILE>
error when the end of a file was reached, even when the system default
was set to $zeof. Now it respects the system default
correctly.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT216
Summary: Ensure that a session token received as a cookie (CSPSESSIONID) will always take precedence over a token received as a form variable (CSPCHD) for cases where both are present in the request
Description:
This change ensures that a session token received as a cookie
(CSPSESSIONID) will always take precedence over a token received as a
form variable (CSPCHD) for cases where both are present in the
request. This is for security reasons: a cookie is much more likely
to uniquely identify a particular user and is harder to spoof (either
deliberately or by accident).
A typical situation where users can
end up accidentally sharing the same session token is in the case of
search engines which have recorded CSP URLs containing a session token
in the query string.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: AIX, All
DevKey: CMT222
Summary: Add extra processing to protect against the effect of SIGHUP (hang-up) signals in the AIX environment
Description:
This change introduces extra processing to protect against the
negative effects of SIGHUP (hang-up) signals in the AIX environment.
These signals, if not processed correctly, can cause the NSD process
to close down unexpectedly.
Typically, the following error condition will be recorded in the Event
Log if the installation is affected by this problem:
>>> Time: Sat Dec 27 11:25:24 2003; RT Build: 662.741; Log-Level: 0;
>>> Thread-Id: 258
Operating System Event
Signal Received: 1
A SIGHUP signal essentially means 'hangup' and is
typically generated when a terminal disconnects from a service.
This is a strange and unexpected signal to receive in a daemon
process,
at least in the context of a controlling terminal disconnecting.
The usual precautions for dealing with this UNIX signal were already
implemented in the NSD daemon. In addition to this processing, an
extra layer of processing has been added to specifically deal with
this signal under AIX.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: SML498
Summary: Reset argument stack after ECP server daemon processed one request
Description:
This change fixes an issue where the ECP server daemon may
get an access violation after processing many (about 135168) 'JOB'
requests from the ECP client.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object
Platforms: All
DevKey: DMC079
Summary: Mac OS: Fix Caché SAX problem loading XML files with relative paths
Description:
This corrects an issue where attempting to load an
XML file with a relative pathname on Mac OS X would result in an
error although
absolute pathnames worked
properly.
With this change, they both work.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.ActiveX
Platforms: Windows
DevKey: DVU1003
Summary: Wrong internal conversion for large integers
Description:
This corrects a problem where large integers in
$LISTs
would be incorrectly converted for COM output.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.ActiveX
Platforms: All
DevKey: DVU1116
Summary: Retain trailing zeroes in large numeric/integer/float-point values
Description:
This corrects a problem where trailing zeroes were
incorrectly dropped when converting large numeric values to display
format.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.ActiveX
Platforms: All
DevKey: DVU1273
Summary: Numeric values are passed to methods with wrong precision
Description:
This change suppresses adding a decimal point when
converting integer values for display.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.ActiveX
Platforms: All
DevKey: DVU1287
Summary: Numeric values are passed to methods with wrong precision
Description:
This change corrects a problem where numeric values
used as string arguments had trailing $c(0) appended to them.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.ActiveX
Platforms: All
DevKey: DVU962
Summary: Problem with %Float and %Currency data types on non US locales
Description:
This corrects problems in the use of the %Float and %Currency
data types when the locale is not the United States. The thousands
separator for numbers was not honored properly.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.ActiveX
Platforms: All
DevKey: DVU972
Summary: Use a 15-digit mantissa for double conversions
Description:
This corrects problems resulting in loss of
precision when converting numbers to %Library.Float.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Library
Platforms: All
DevKey: MIT407
Summary: Fix Unicode setting during initial connection in %SQLGatewayConnection
Description:
The problem with an incorrect environment setting
on UNIX in the case of Unicode Caché was corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2312
Summary: ISNULL returns incorrect values
Description:
The following problems have been fixed:
- When running a query in DISPLAY mode or ODBC mode with an
ISNULL(expr1,expr2) function, the Logical value was returned instead
of the Display or ODBC value. The return type of the ISNULL function
is the same as the type of the first argument to ISNULL.
- When running a query in DISPLAY mode or ODBC mode with an
NVL(expr1,expr2) function, the Logical value was returned instead of
the Display or ODBC value. The return type of the NVL function is the
same as the type of the first argument to NVL.
- When running a query in DISPLAY mode or ODBC mode with an
IFNULL(expr1,expr2[,expr3)) function, the Logical value was returned
instead of the Display or ODBC value. The return type of the IFNULL
function is the same as the type of the second argument (expr2) to
IFNULL.
- When running a query in DISPLAY mode or ODBC mode with a
NULLIF(expr1,expr2) function, the Logical value was returned instead
of the Display or ODBC value. The return type of the NULLIF function
is the same as the type of the first argument to NULLIF.
- When running a query in DISPLAY mode or ODBC mode with a
COALESCE(expr1,expr2,...) function, the Logical value was returned
instead of the Display or ODBC value. The return type of the COALESCE
function is the same as the type of the first argument to
COALESCE.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.GateWay
Platforms: All
DevKey: MIT368
Summary: Enable DataDirect driver connections in the Connect method of %SQLGatewayConnection
Description:
DataDirect drivers require setting a special option
and supplying a password in order to be functional. This change
modifies our connection code to detect that we are using DataDirect drivers
and to set the necessary options
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: JCN526
Summary: Cannot see view list in some ODBC client tools
Description:
Some applications include the null
termination character in the length of the string. This is wrong.
Caché now walks the Unicode string to terminate the read at the specified
length or at the first encountered null-terminated string, whichever
comes first.
This ensures the null termination character is not sent
to Caché over the wire.
The outward symptom is that some ODBC client tools cannot list views
in Caché.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: JCN532
Summary: Add CodePages for decoding 8 bit Caché
Description:
This change adds several additional Code Pages to decode new Caché locales on 8-bit installations:
CP1250, CP1256, CP874, CP1253, CP1255, CP866, LatinA, LatinT, and Latin7
Users must use the Unicode ODBC APIs to properly see the data, or
their regional settings Code Page must match the Caché NLS default.
In general, it is safest to use Unicode Caché and Unicode ODBC APIs to
avoid conversion confusion.
ODBC does not use these tables when communicating with the Unicode
version of Caché, only with 8-bit databases.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: JCN534
Summary: Use CharToUnicode for converting from 8-bit Caché
Description:
Conversions from an
8-bit Caché required a specific Unicode conversion call when the
client locale does not match Caché. This change adds the
necessary call.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS576
Summary: Prevent access violation in $LIST()
Description:
The $LIST() function could cause an access violation if the input list
happens to be exactly at the end of a memory page and the following page
has never been allocated. This is now corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS611
Summary: Fix crash vulnerability in stackinfo()
Description:
In some rare situations, during error processing involving routines that are
automatically recompiled because of old object code, the process could
crash with a memory access violation. This vulnerability has been
corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS619
Summary: Correct $ZTRAP/ZQUIT issue
Description:
Applications using a ZQUIT 1 command to pop execution levels could encounter
<FRAMESTACK> errors after upgrading to 5.0.12. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK386
Summary: Clean up routine buffer reference when routine is not available
Description:
When a routine is modified on the server, and a job in the
application server has a reference to the invalidated routine buffer,
the error handler may corrupt the routine buffer list if errors occur
while returning from a call to the routine. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK387
Summary: Fixed remote auto recompile routines
Description:
If auto-recompiled network routines are shared by
more than one job on the client, then on routine completion they may
corrupt or lock the routine queue. This has been fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: Linux
DevKey: JLC545
Summary: Improve detection of HyperThreading on Linux
Description:
This change correctly detects the number of physical
CPUs on SuSE 8.2 and Red Hat 7.3 for licensing purposes when
HyperThreading is enabled. Previous versions of Caché worked
only on Red Hat 8.x and later.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JLC702
Summary: Fix bug in $Normalize on 32-bit platforms
Description:
An error was fixed in $NORMALIZE that could cause
incorrect results for some combinations of input number and
scale. Only 32-bit platforms were affected by this change,
64-bit platforms did not have the problem.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1796
Summary: Remove restriction on changing the default collation in a database
Description:
^MSU now allows the default collation for new globals
to be changed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: OpenVMS
DevKey: JO1802
Summary: Prevent hang during open if LAT device returns DEVOFFLINE
Description:
A rare problem on OpenVMS systems which could result in
a Caché process entering an infinite loop while opening an
application mode LAT device has been resolved.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1821
Summary: Change dkmount/dkvolinfo so they don't hold seize during an open() call