|
|
|
Caché Documentation
|
|
Release Notes for Maintenance Kits Prior to Caché 5.0.13
|
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 section provides a listing of changes between Caché
5.0.11
and
Caché
5.0.12.
This document contains several sections:
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 - This item indicates whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - This notes whether this change provides new
features or capabilities.
- CSP
- CSP.Gateway
- Languages
- Networking
- Object
- Object.Class Compiler
- Object.Relationships
- Object.Storage.Default
- Object.XML
- SQL
- SQL.DDL
- SQL.GateWay
- SQL.ODBC
- SQL.Query Processing
- SQLManager
- System
- System.Backup/Restore
- System.Cluster Specific
- System.Journaling
- System.Shadowing
- System.Shutdown
- Utilities
Category: CSP
Platforms: All
DevKey: MAK1153
Summary: %CSP.SysConnection exposes session data to client
Description:
Make sure that %CSP.SysConnection (which is used to
test connectivity from the CSP gateway to the Caché server) can
only be
called from the gateway. If it is called from somewhere other than the
gateway, it returns an HTTP error - Page Not Found.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MAK1177
Summary: If charset and content type are specified then always write out the 'charset=' header and use this charset
Description:
If a CSP page specifies a 'ContentType' and
also a 'CharSet' then Caché always outputs the
'charset=<charset>' header and uses the requested charset to
write the page out.
%CSP.Page does not define a CharSet by default. So this change will only
effect pages where ContentType and a CharSet are explicitly defined.
Prior to this change, CSP would only write the 'charset' header out
if the ContentType contained 'text/'.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: CSP.Gateway
Platforms: All
DevKey: CMT204
Summary: Resolve a problem whereby state-aware sessions would occasionally lock-up under Linux
Description:
This change corrects a situation
where state-aware sessions (preserve
mode 1) would occasionally lock-up, especially on Linux systems.
In extreme cases, the Gateway could become unresponsive to
other users.
The cause was an internal memory access violation when
responding to a session close or timeout event.
The integrity checking for state-aware connections has been improved
and the logic for detecting and responding to closed sessions has been
reworked.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Languages
Platforms: All
DevKey: CDS587
Summary: Provide switch so exponent must be upper case 'E'
Description:
Since Release 4.1, Caché has allowed the exponent designator for a number
in scientific notation to be either upper or lower case, 'E' or 'e'.
However, this is not compatible with some programs written in other dialects
of the M language, which recognize only upper case 'E'. Those programs use
lower case 'e' as a string delimiter. This change provides a switch which
restores the behavior of recognizing only upper case 'E' as the exponent
designator. The default behavior will continue to allow lower case
'e'.
To change the value of the switch for the current process, issue
SET oldvalue=$ZUTIL(68,63,newvalue)
To change the default value of the switch for all processes which start
after this command is executed, issue
SET oldvalue=$ZUTIL(69,63,newvalue)
If newvalue is 1, both uppercase 'E' and lower case 'e' will be recognized
as the exponent designator.
If newvalue is 0, only uppercase 'E' will be recognized.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK301
Summary: ECP failed node recovery to scan for all possible ECP sessions
Description:
During ECP recovery, all ECP sessions should be reset.
This change fixes a problem where some of the previous sessions would
not be correctly identified and therefore not reset upon recovery.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK314
Summary: Fixed ECP client shutdown wait loop
Description:
In prior versions, ECP client shutdown didn't wait for all connections to drop, and it
didn't handle free nodes properly.
This change causes client shutdown to scan for all allocated
slots.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK317
Summary: ECP recovery to cleanup sessions with no open transactions
Description:
ECP recovery didn't remove ECP sessions info if the session didn't
have any open transactions. Because the session slot was not cleared,
on the next system restart it would wait unnecessarily for that client to
reconnect.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK324
Summary: Fixed a timing problem which prevented the write daemon from joining cluster failover.
Description:
Prior to this change, on slow machines, the write
daemon might not join the
cluster failover promptly which caused the failover to hang forever.
This was due to intercluster synchronization overwriting the write daemon
recovery state, which prevented the new cluster master from resuming
the recovery. This now operates properly.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK325
Summary: Reset the ECP client session on unexpected errors during recovery
Description:
This change corrects a circumstance
where unexpected database errors that occured during ECP client recovery
could cause the recovery to hang.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK326
Summary: Add new ECP connection states to handle hang in connection-in-progress state
Description:
This change corrects the way ECP handles
connection states.
Prior to this, unexpected errors could result in ECP being hung
waiting for a re-connect and the only way to clear it was to restart Caché.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK349
Summary: Clear ECP pending transaction bits on halt or dead job cleanup
Description:
If a job exited unexpectedly (for example, with an access violation),
ECP did not clear the pending open transactions for that client.
The next job that got assigned to the same process slot
inherited these transactions, causing confusion between the client and
server states. This change correctly handles the cleanup.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK350
Summary: %HALT to handle ECP open transactions
Description:
%HALT didn't rollback ECP open transactions when the
client journaling was disabled. This change corrects the behavior to rollback ECP open
transactions.
Note: rollback returns <ROLLFAIL> error if application server
journaling is disabled. %HALT will rollback ECP transactions first,
then it will raise <ROLLFAIL> error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object
Platforms: All
DevKey: BJB291
Summary: Selectivity not saved in the class if KeepClassUpToDate = 1
Description:
If you run $SYSTEM.SQL.TuneTable("Schema.Table",1,1)
the Selectivity was not getting saved as part of the Class
definition.
This has been fixed.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP1025
Summary: Don't use preconstructed inheritance tree for inheritance resolution
Description:
In some rare cases, "method does not exist" errors would be reported
when compiling classes. This was caused by an error in determining
which methods are inherited from the superclasses. It is now fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK1042
Summary: Prevent <MAXSTRING> when importing classes from XML with very large implementation blocks
Description:
When importing a class from an XML file into Caché
with a very long implementation (over 64k of data), it was
possible to get a MAXSTRING error.
The import routine tried to concatenate the
beginning of the last line from the first 32k block with the next
block and this pushed it just over the 32k limit.
Now it keeps the
beginning of the last line in a separate buffer and only concatenates
this with the rest of the first line from the next 32k block rather
than the entire block.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Relationships
Platforms: All
DevKey: DLP1064
Summary: Don't set modified bits when swizzling related objects
Description:
When a reference is swizzled, the modbit for that property is not
supposed to change. This changes corrects the behavior;
the value of the modbit is unchanged for simple
swizzling.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Storage.Default
Platforms: All
DevKey: DLP1288
Summary: Clean up empty index globals in %DeleteExtent
Description:
The bitmap extent index for a class is automatically built whenever
any index is built and the bitmap extent has never been built. When
all instances are deleted from an extent there was a situation that caused
the system to incorrectly assume that the bitmap extent index was
already built.
This has been fixed by assuring that indices are purged whenever
extents are removed.
If any instances fail to be deleted successfully, the indices remain.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: JN228
Summary: Release Stream OREFS following parse
Description:
The SAX parser caches the XML parser it uses for
performance reasons. During entity resolution, CacheStreams may be
created via callbacks to %XML.SAX.EntityResolver and its
subclasses. As a side effect of parser caching, the OREFS of these
stream objects are also cached. (They are eventually garbage collected,
but in a non-deterministic manner). This causes a problem if the
user of the parser were to change namespaces before garbage collection
of the stream occurs.
This modification corrects the error by reclaiming the streams as soon as the
parse is completed.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: JN229
Summary: Return LocalName For EndElement NodeType %XML.TextReader
Description:
When the XML Reader NodeType was 'endelement', the LocalName property
returned empty string.
This correction makes it return the proper value.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2248
Summary: Use fields in subscripts when determining MapBlocks
Description:
An enhancement has been made to the calculation of a Map's estimated
block usage to include information about the fields in map subscripts
for the map. Now an index of the form:
^glo("index",Field1,Field2,ID)=""
will have a higher "cost" than an index of the form:
^glo("index",Field1,ID)=""
If the query optimizer can use an index on Field1, the second index should now be chosen.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: SQL
Platforms: All
DevKey: DPV2252
Summary: Tune Table via SQL Manager was not updating map statistics
Description:
An oversight has been corrected where a table's query optimizer
information was not fully updated until the class was recompiled.
This was missed when
the extentsize of the table was calculated through SQL Manager's
tuning facility.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2255
Summary: Use $Get() for invalid condition / NEXT code with piece map when needed
Description:
In the situation where the last subscript defined in a storagemap for
%CacheSQLStorage
was a
constant,
attempts to execute a runtime query against this table
could result in an <UNDEFINED> error.
Whether the error occurred or not depended on the details of the
global structure for the storage.
The possibility of this error has now been removed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2267
Summary: ASC does not work correctly
Description:
Prior to this change, a query that JOINs two
tables in a WHERE condition and has an ORDER BY <f1> DESC,
<f2> ASC might not return the rows in the correct order.
This has now been corrected.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2270
Summary: GetCachedQueryInfo gets <NULLVALUE> error
Description:
In prior versions,
Caché might fail to display the text of a
cached query when listing the queries of a namespace.
This change corrects that error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2278
Summary: Correct query generation for RowID mapping
Description:
This change corrects a situation where a table which
uses %CacheSQLStorage and specifies its own Map RowID Specifications
might generate improper map definition code. This causes
improperly generated query code for queries against the table.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.DDL
Platforms: All
DevKey: DPV2283
Summary: Fix <UNDEFINED> error When InvalidCondition in Map
Description:
This change corrects an error in constraint checking.
Under some circumstances, the checking of a unique constraint
or a foreign key referential integrity check by SQL might
produce an <UNDEFINED> error.
This happened when an SQL query was needed to check
the constraint, and the constraint was on the IDKey field.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: SQL.GateWay
Platforms: All
DevKey: MIT356
Summary: Infinite loop in CEnvironment::DisconnectAll()
Description:
Under some circumstances,
Caché processes could
generate a high CPU load after the user has closed them.
The symptom was caused by an infinite loop in the process disconnect
logic.
This change eliminates that circumstance.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: JCN482
Summary: Use localized decimal separator
Description:
A new checkbox has been added to the DSN
configuration screen: "Use Locale Decimal Symbol". By default,
CacheODBC sets the default decimal separator to "." to provide legacy
support for some customers.
Unfortunately, this causes some difficulties with
applications like PowerBuilder that prefer to use the
decimal separator as defined for the current locale.
Checking the
checkbox "Use Locale Decimal Symbol" will use the decimal separator in
process and leave its value unchanged. Leaving this unchecked
will give the old default behavior of setting the decimal separator in
the process to "." regardless of the locale.
This setting is defined
for all DSNs on a system as it is a property of the driver when it is
loaded.
On Unix, setting the environment variable CACHEODBCLOCALEDECIMAL = 1
lets the driver use the Locale's decimal separator value.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2260
Summary: Fix line-too-long issue with 16 map subscripts and overriding data access expressions
Description:
Under some circumstances,
an SQL query might
generate code in a single line which is too long (longer than 4095
characters).
This can happen when there are many subscript levels (greater than 15) in
the map definition and overriding data access expressions are used in
the map definition.
This change corrects the problem.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: PVA070
Summary: A SELECT * query with joins on single column idkey columns does not work properly
Description:
An error has been fixed where conditions (especially JOINs) on
single column idkey columns did not behave properly if the
SELECT clause were 'SELECT *'.
The suspect behavior could be poorly performing plans or SQLCODE= -400
when the query executes.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQLManager
Platforms: All
DevKey: YSD768
Summary: Menu options don't work in SQLMgr/Object/Execute/Query
Description:
In prior versions,
choosing to execute a query from SQL Manager, but selecting an option
from the menu after the query had been typed but not run, would
not execute the query. The option choice and query execution would
run properly, however, if you used the keyboard shortcuts to execute
it instead.
This circumstance has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS427
Summary: Fix ZQUIT 1 when $ZT=""
Description:
This corrects a problem that would cause an error handler to be skipped
when a lower level error handler issued
The
problem happened when the lower level error handler set $ZT="". This
would cause the ZQUIT 1 command to bypass the next error handler.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1825
Summary: Fix dead job cleanup to release global buffers
Description:
The code which cleans up after dead jobs in
Caché will now check to see if the job has retained a global
buffer and if so, it will free it.
Note: This does not mean that any global
buffers owned by the dead job will be released. In many circumstances
it is not safe to release the buffer as doing so might result in
database degradation getting written to disk.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1826
Summary: Write image restore refuses to run if Caché shared memory section exists
Description:
The write image restore program will now refuse to run
if Caché appears to be running from the manager's directory
specified as part of the restore. A message noting this will be logged in the
console log.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: Unix
DevKey: LRS813
Summary: Fix TCP read and accept timeout handling under Unix
Description:
A bug in timeout handling for TCP read requests under Caché/Unix has
been corrected. It could cause the READ to continue waiting past the
specified timeout if the process were probed by ^%SS, ^JOBEXAM, or
similar interrupting utility programs.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: Windows
DevKey: RJW753
Summary: Logging off windows causes dead cache processes
Description:
On Windows systems, Caché processes running in a
Windows Command Prompt window or running from a local Caché terminal
(the title bar will contain Caché TRM:processId) will be improperly
terminated when the user who started them logs out of the Windows
Workstation. This improper termination also occurs in Caché processes
started via the job command from these processes. This problem has
existed since Caché 4.0.
This change corrects this problem by establishing a console control
handler to catch the Windows Logoff event and exit Caché normally. It
also changes the way processes started by the job command are created so
they will persist following logout from the Windows Console.
Users may encounter one different behavior in processes started by the
job command. Since the process is started by the Caché control
process at the request of the Caché foreground process, the jobbed
process no longer runs in the login session of the user at the console
who created the process with the job command. This means that on
Windows XP, the process created by the job command will not be able to
access network devices using the drive letter mappings defined for the
user logged into the Windows console. You should use the UNC naming
convention (that is \\server\share...) instead of the local drive
mapping (eg. w:\...) in your code to access network shares from
processes started by the job command.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SJ1560
Summary: Fix JOBEXAM causing access violations later
Description:
This corrects a rarely occurring situation where using JOBEXAM to view a
process could cause that process to crash and get an access
violation. This happened in the case where the examined
process was completely out of process-private memory.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML472
Summary: Fix missing one DDP job array allocation
Description:
When an MSM job with a large internal job number accesses a remote
Caché system using DDP, it may get <DSTDB> error.
This change fixes this problem.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML475
Summary: Fix missing wake up on write daemon lock complete, and avoid forcing ENQ daemon while shutting down master
Description:
This change corrects a problem with cluster failover failure when the master node is
shut down. The source of the issue is that write daemon failed to notify the shutdown requestor when it
finished
causing a long delay.
Also, the ENQ daemon has to be
forced down when the cluster node is shutdown.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Backup/Restore
Platforms: All
DevKey: HYY885
Summary: Correct switch setting propagation in clusters
Description:
On a cluster platform, a situation may occur during backup
if the procedure to block and quiesce updates/accesses gets an error or fails to quiesce.
The problem is that switches set locally
but outside the backup program may get cleared during backup.
This change corrects the issue.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: SML476
Summary: Fix ACCVIO on scan through lock table
Description:
This change eliminates a small timing window
where a ^LOCKTAB or ^$LOCK SSVN could get an access
violations when there is a large volume of lock table activity.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Cluster Specific
Platforms: All
DevKey: JO1798
Summary: Suspend lock timeouts over ECP during cluster failover and cluster backups
Description:
CLU^SWSET, ENQ10^DBACK and ENQ13^DBACK have been
enhanced so that timed locks will not time out while switch 10 or 13
is set in a cluster.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY762
Summary: Enable null subscript support in journal restore and rollback
Description:
This change eliminates potential <SUBSCRIPT> errors during journal restore and transaction rollback.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY928
Summary: Allow transaction rollback in journal restore even when current journal file is not involved
Description:
In interactive mode, journal restore prompts for
transaction rollback if some transactions remain incomplete at the end
of restore.
This happens even if the current journal file is not involved in the
restore.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY944
Summary: Fix a problem in locating next journal file
Description:
This change addresses a problem with locating the
next journal
file.
In earlier versions, Caché could incorrectly compute the next
journal
file name. This has now been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: Tru64, OpenVMS
DevKey: HYY952
Summary: Address issues updating cachejrn.log
Description:
Cluster journal files are logged in cachejrn.log in the pij directory
of a Caché cluster. This log, cachejrn.log, is used by cluster journal restore
and cluster shadowing to locate every journal file used by any past or
present node of a Caché cluster.
This change causes
failures in logging the journal file name in cachejrn.log
to be reported in cconsole.log.
On VMS, updating cachejrn.log allows read sharing, eliminating a
potential cause of update failure in lieu of cluster shadowing.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY960
Summary: Update transaction index properly
Description:
This change corrects a
circumstance where
the beginning offset of an open transaction was set to a value smaller
than it should be. This did not affect transaction rollback
but could affect those applications
that assume the return value points to a valid
journal record.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: OpenVMS
DevKey: HYY964
Summary: Fix an <ENDOFFILE> problem with reading journal files using sequential I/O on VMS
Description:
This corrects an issue on OpenVMS that may cause a copier on
the source side of fast-mode shadowing to get occasional
<ENDOFFILE> errors when reading a very small journal file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY966
Summary: Retry journal expansion with smaller size, rather than switching to a new file, if bigger size fails
Description:
This corrects an issue that could result in unnecessarily
many small journal files when the amount of free space on the journal
disk is less than the expansion size of the journal file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY603
Summary: Maintaining transaction states on the shadow (fast-mode only)
Description:
Fast-mode (aka "block-mode") shadows are now
transaction aware and maintain a list of incomplete transactions that
are applied on the shadow. To roll back incomplete transactions, stop
shadowing and execute
SET rc=$$ROLLBACK^SHDWCBLK(ShadowID)
where ShadowID is the name of the shadow, and "rc" is the result code
for the operation:
1 = success and 0 = failure.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY834
Summary: Correct a problem that caused shadow source nodes to be mistakenly deleted
Description:
This corrects an instance where choosing "this system as
source" in control panel may not show any server info (and may get an
<UNDEFINED> error) even if there is a running server servicing a
shadow.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY835
Summary: Improve error recovery in shadowing
Description:
This change improves the error recovery
processing in shadowing by addressing an issue affecting how stack was unwound
when errors are passed on to upper level routines.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: Tru64, OpenVMS
DevKey: HYY946
Summary: Address a couple of issues of opening cachejrn.log in JRNINFO
Description:
This change does two things:
- It prevents occasional <NOTOPEN> errors
(generated from updjrninfo^JRNINFO) on the cluster data server
("source") of shadowing.
- It allows multiple jobs on the source to open CACHEJRN.LOG file for
READ simultaneously, resulting in some degree of performance
improvement on journaling and shadowing.
Note:
The latter item affects VMS clusters only. Read sharing is
already in use on Tru64 clusters.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: OpenVMS
DevKey: HYY951
Summary: Address <ENDOFFILE> errors in shadowing on VMS
Description:
This change corrects a problem where the source of fast-mode
shadowing (i.e., data server) on OpenVMS might get occasional
<ENDOFFILE> errors.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY953
Summary: Address a partition issue in cluster shadowing
Description:
This change corrects an issue that some component of cluster
shadowing might use more process memory than specified in Caché
configuration.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY956
Summary: Disable journaling ^%SYS("JRNINFO") (for cluster shadowing)
Description:
Updates to ^%SYS("JRNINFO") by JRNINFO server are no longer journaled.
This addresses an issue of cluster shadowing where the shadow of a
source server with no user activity is constantly seen as busy if
^%SYS("JRNINFO") is marked journaled (or "journal all globals" is set
in 5.0.x).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY957
Summary: Cluster shadow keeps device open for the same JRNINFO server whenever possible
Description:
This change corrects a performance issue where each cluster
shadow request resulted in a JRNINFO server being jobbed off. Now,
JRNINFO servers corresponding to a cluster shadow stay around whenever
possible.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY986
Summary: Allow cluster shadow GUI on non-cluster platforms
Description:
This change corrects a situation where the control panel could report
an <UNDEFINED> error when attempting to manage a cluster shadow,
if the system running the shadow was different different
in kind from the system running the cluster. An example of this would be
a Windows system shadowing a VMS cluster.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: RJF022
Summary: Compatibility-mode shadow should avoid reading beyond end of current journal
Description:
A correction to compatible-mode (record-mode)
shadowing has been made to prevent the source of shadowing from
sending journal records to the shadow destination which have not yet
been written to the current journal file
This corrects a problem
where the source of shadowing could get transient <FUNCTION> (or
other error) while processing the current journal file during a journal
switch. It also corrects an issue where, if the source of
compatible-mode shadowing crashes, the shadow destination may have
more recent completed transactions than what is available on the
source after recovery.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shutdown
Platforms: All
DevKey: RJW945
Summary: Extra process started during shutdown for Windows 2003
Description:
Shutting down Caché on a Windows Terminal Server
system can leave a cache.exe process attached to the shared memory
object if ^SHUTDOWN takes more than about 3 minutes.
This residual
cache.exe process prevents the configuration shared memory from being
destroyed at shutdown. This prevents Caché from being restarted
without either rebooting Windows or terminating the residual process
with the Windows task manager.
This change properly shuts down all the processes.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: CFL1150
Summary: Allow defining a cluster shadow on a system that doesn't support clustering
Description:
Prior to this change, Caché would refuse an attempt
to define the shadow for a cluster to be a machine type that did
not itself support clustering.
This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: LFT1292
Summary: Handle 2k corrupt directory better
Description:
This fixes a problem in integrity checking of very
old ISM databases. Running INTEGRIT would give false errors when
global name is not in the top pointer block.
This corrects the issue so that the
error is only given when there really are duplicate pointers in the
global directory.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: MAK1123
Summary: rMACSAVE data is inconsistent
Description:
In prior versions, when saving MAC/INC from Studio, the data stored in
^rMACSAVE or ^rINCSAVE had the root node incorrectly formatted.
This
should be the $horolog value of the time this MAC/INC was last
changed.
This change sets the proper value in place.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Documentation Updates
The content of the Caché documentation evolves from release to
release in response to editorial improvements, updates to existing
material, and addition of new information. The following is a summary
of the most noteworthy changes to the Caché documentation
since the previous release:
- Caché I/O Device Guide
- Added further explanation of RMS file open mode parameter restrictions
- Caché ObjectScript Reference
- OPEN command: removed the RMS file subsection
- $ZSEARCH function: Windows-specific behavior
- Caché SQL Reference
- Corrected NULL and empty string usage/representation throughout
- CAST
- CHAR_LENGTH
- CHARACTER_LENGTH
- LTRIM
- RTRIM
- Clarified case-conversion functions functionality and use throughout
- %ALPHAUP: added Unicode and cautionary examples
- ALTER TABLE - added 5 restrictions:
- alter column with streams data
- add primary key constraints for IDKey and index
- drop constraints for foreign key and IDKey
- ALTER VIEW:
- added WITH READ ONLY and WITH CHECK OPTION to syntax
- explained privileges requirements
- CALL: added embedded SQL support
- CHAR: corrected for Unicode characters, non-numerics
- COALESCE: clarified string and number handling
- CONCAT: replaced the prior description with a new one
- CONVERT:
- added second syntactical form
- added description for SQL_DOUBLE data type
- CREATE INDEX, DROP INDEX: added descriptions of the restrictions when there is existing data
- CREATE FUNCTION, CREATE METHOD, CREATE PROCEDURE, CREATE QUERY: detailed description of SELECTMODE and RESULTS clauses, when PROCEDURE keyword unnecessary
- CREATE TABLE: added all 9 collations, more no-op keywords, and security configuration
- CREATE TRIGGER: updated the description of the ORDER algorithm
- CREATE VIEW:
- fixed WITH CHECK OPTION error in syntax
- added privileges requirements and security configuration
- DROP TABLE: added privileges requirements and foreign key restriction
- DROP VIEW: documented the restriction when the view is non-existent
- GRANT: SQL security configuration options added
- INSERT: RowID restriction described
- LENGTH: added second syntactical form
- ROLLBACK: Cached Query exception explained
- SELECT: expanded extrinsic functions description; reworded SELECT * note
- TRUNCATE: documented the handling of numeric literals that represent numbers too large or too small
- WEEK: fixed the algorithm for calculating the week of the year
- SQL Concepts:
- Comments: added the list of variables in .INT code
- Data Types: added BIGINT and notes on streams
- Host Variables: added notes on undefined variables, OREF dot syntax, and listings in .INT code comments
- Identifiers: Added the description of the IsValidRegularIdentifier method and its invocation as procedure call
- Literals: Completely rewrote the material
- NULL: added new page on NULL and empty string usage
- Reserved Words: documented the $SYSTEM.SQL.IsReservedWord method as procedure call
- Transaction: described the conditions under which cached queries are excluded; described the uniqueness lock
- Error Codes:
- added 16 new code values to list and to descriptions of commands
- added $SYSTEM.SQL.SQLCODE() method and procedure call
These are in addition to minor enhancements in examples, as well as
corrections and improvements to grammar and spelling.
This section provides a listing of changes between Caché
5.0.10
and
Caché
5.0.11.
This document contains several sections:
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 - This item indicates whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - This notes whether this change provides new
features or capabilities.
- Config Mgr
- CSP
- CSP.Gateway
- CSP.Tags
- Installation.Windows
- Networking
- Object
- Object.CDL
- Object.Class Compiler
- Object.Library
- Object.Storage.Default
- Object.Storage.SQL
- Object.Stream
- SQL.GateWay
- SQL.ODBC
- SQL.Query Processing
- System
- System.Backup/Restore
- System.StartUp
- Utilities
Category: Config Mgr
Platforms: All
DevKey: CFL993
Summary: Add Hyperevent Implementation to Config Manager
Description:
A new CSP parameter, Hyperevent Implementation, has been added.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL999
Summary: Convert Hyperevent parameter from old CSP apps on upgrade
Description:
New CSP Applications will be created with the Hyperevent
Implementation parameter equal to "Select on server". On upgrade,
existing CSP Applications whose Hyperevent Implementation parameter is
missing will have it created with the value "Use Java applet".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MXT525
Summary: Use XMLHttpRequest browser object instead of Java for hyperevents
Description:
This change introduces the optional use of the
XMLHttpRequest Javascript object to implement #server. The actual
method used to implement #server is determined by a new Configuration
Manager parameter for CSP applications,
called "Hyperevent Implementation". "Hyperevent Implementation" has
four possible values that determine how #server is implemented:
- Use Java applet for #server
- Use XMLHttpRequest Javascript object for #server
- Select implementation using browser Javascript
- Select implemetation using HTTP_USER_AGENT on server
where:
- "Select on server" means CSP pages that use #server will include
either an applet tag OR Javascript to use the XMLHttpRequest object;
the selection will depend on the server HTTP_USER_AGENT CGI variable.
This option, "Select on server", is the default.
- "Use Java applet" states CSP pages using #server will always supply an
applet tag identifying the CSP Java broker applet; #server will always
use this applet.
- "Use XMLHttpRequest object" indicates CSP pages that use #server will
always include Javascript that uses the XMLHttpRequest object to
implement #server.
- "Select in browser" means CSP pages that use #server will include BOTH
an applet tag and Javascript to use XMLHttpRequest. The method used
will be chosen based on the availability of the XMLHttpRequest object
to the Javascript code in the browser.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: CSP
Platforms: All
DevKey: MXT635
Summary: In 3.2 compatibilty mode, &html will ignore < and > within <%...%>
Description:
In &html 3.2 compatibility mode, CSP will ignore < or
> within <% ... %>. This is meant to handle constructs like
&html< <% w "first->last" %> >
which are
encountered in Cache 3.2 WebLink applications.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT118
Summary: Improve the validation of the session token's fields after a failover/restart situation.
Description:
This change improves the validation of the session token's fields after
a failover (or web server/NSD restart) situation.
Previously, a request could be directed to an incorrect (or
unexpected) Caché server after a web server/NSD restart. This issue
could also result in requests in Virtual Host configurations being
directed to incorrect (or unexpected) Caché servers. The term, 'unexpected'
Caché servers, means a Caché server configured as an alternative to
the main (or default) server).
Editing the Gateway's server and/or application configuration on web
server/NSD startup would make problems of this nature more likely to
occur.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT192
Summary: Fix a problem in the transmission of form data in which CSP* variables (e.g. CSPToken) were placed at the end of a form posting more than 8K of data.
Description:
This change corrects an issue in the transmission of form data in which
CSP* variables (e.g. CSPToken) were placed at the end of a form
posting more than 8K of data. The problem manifested itself as such
forms failing validation checks on submission ('Illegal CSP Request'
errors).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT193
Summary: Ensure that Gateway error messages sent in response to SOAP-based requests are formatted as SOAP fault messages (as opposed to HTML).
Description:
This change ensures that Gateway error messages sent in response to
SOAP-based requests are formatted as SOAP fault messages (as opposed
to HTML).
For example, if the Gateway is unable to connect to the Caché server
for the purpose of servicing a SOAP request, the following SOAP fault
will be returned:
HTTP/1.1 200 OK
Content-type: text/xml
Connection: close
Expires: Thu, 29 Oct 1998 17:04:19 GMT
Cache-Control: no-cache
Pragma: no-cache
<?xml version='1.0' encoding='UTF-8' standalone='no' ?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:s='http://www.w3.org/2001/XMLSchema'
SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>CSP Gateway Error (version:5.1.0.423.0 build:663.775)</faultstring>
<detail>
<error xmlns='http://tempuri.org' >
<special>
Server Availability Error
</special>
<text>
Server is currently unavailable
</text>
</error>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
It should be noted that this facility can only work if the Gateway can
identify the incoming HTTP request as a SOAP-based request for
information. This may not be possible if a request for a SOAP-based
response is made via the HTTP GET method. It is, however, recommended
that requests for SOAP-based services be made through HTTP POST (or
related) methods. If the HTTP POST method is used, the Gateway can
identify SOAP-based requests by the associated content type.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: CSP.Tags
Platforms: All
DevKey: MXT543
Summary: Don't display argument in argument too long message for HyperEvent
Description:
A message is displayed when a HyperEvent method's
argument length is > 32000 characters.
With this change, the argument will not be
displayed since
it detracts from the clarity of the error message.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Installation.Windows
Platforms: All
DevKey: TTS082
Summary: Packet-driver doesn't bind to multiple NICs
Description:
This changes corrects a situation where the packet-driver for Windows
2000/XP and 2003 Server
did not properly report all the network cards it had bound to.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK323
Summary: $ORDER across ECP to restore the global vector when there is no answer
Description:
When $ORDER didn't find an answer across ECP, it sometimes left the
global vector naked reference invalid. This caused a
subsequent $ZREFERENCE to fail with wide character
error.
This change prevents that from happening.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: Windows
DevKey: TTS083
Summary: Fix Windows fatal error caused by packet driver on SMP systems
Description:
Prior to this change, the Caché packet driver would
cause a fatal Windows error when invoked on systems containing more
the two processors. This no longer happens.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object
Platforms: All
DevKey: DLP1220
Summary: Index on %ID fails
Description:
This change corrects a problem where attempting to define an index
involving the %ID token would fail.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.CDL
Platforms: All
DevKey: DLP1128
Summary: Change max routine size to 32k
Description:
The maximum routine size has been changed
from 40k to 32k. This will result in smaller OBJ routines and, for
large source files, more routines generated. This adjustment was
necessary in order to load files with methods with more than 32k of source
code.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP1127
Summary: Fix bug in CompileRoutine^%occSystem where errors not properly reported
Description:
This corrects an oversight where the status code from the compile
was only being returned if the compiler flag to display errors was
set.
Now the status code is always returned.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK1071
Summary: Make sure variables do not leak from generator methods in class compile
Description:
If you write a generator method the compiler was not
making sure that any variables you create in this generator do not end
up in the partition. Now an exclusive new is done before running
generators for a class to prevent this possibility.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Library
Platforms: All
DevKey: MAK1149
Summary: MoveToEnd of file streams not working if directory not default
Description:
If you open an existing file stream stored in a
directory other than the current default directory (the one with the
CACHE.DAT file in it for this namespace) then the MoveToEnd method would
fail to work correctly.
This change corrects the problem.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Storage.Default
Platforms: All
DevKey: DLP1198
Summary: Reduce chances of generating a duplicate default storage global name
Description:
The default global name generator used by the
default storage class has been improved.
Note:
This default global name generator reduces the number duplicate global
names generated but it still does not guarantee uniqueness.
It is
still the responsibility of the user to make sure the global names
used (IDLOCATION, DATALOCATION, INDEXLOCATION and STREAMLOCATION) are
unique.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Storage.SQL
Platforms: All
DevKey: DLP1207
Summary: Allow quotes & subscripts within stream LOCATION values
Description:
This change corrects an issue in the class compiler. In constructing
the initial expression for stream properties, it did not
properly handle values that contained quote characters.
This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Stream
Platforms: All
DevKey: MAK1033
Summary: FindAt doesn't work with larger streams/strings
Description:
This change corrects a problem in
the FindAt method in %Stream.Object. The method would not
calculate the correct position when it had read in two or more
20,000-byte chunks of data.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Stream
Platforms: All
DevKey: MAK815
Summary: Redirect temporary file stream location
Description:
If the global ^%SYS("TempDir") is defined, this
is now used as the temporary location for stream data.
If this is not
defined, then Caché will use "" as the directory.
This
puts the stream data in the current directory which is normally the
location of the CACHE.DAT file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.GateWay
Platforms: All
DevKey: MIT339
Summary: Disconnect active connection if %SQLGateway is killed
Description:
This change introduces a new class
%GTWConnection. Its %OnClose method disconnects an active connection
if the gateway is terminated.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: AND513
Summary: Fix a message sequence error/thread safety issue
Description:
The Caché ODBC driver has been externally thread-safe for quite some time now. For example,
if two threads were simultaneously operating on the same statement object, Caché ODBC
driver guarantees there will be no conflicts.
This change fixes the instances internally where there were
thread-related issues that could result in "message sequence errors".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: AND518
Summary: Add try/catch blocks to help exit critical sections in case of a crash
Description:
This change improves error handling in cases where ODBC
terminates abnormally and error recovery actions by the application
override the default actions taken by the operating system.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: DPV2196
Summary: Query fails if schema name equals username
Description:
A problem has been fixed in ODBC/JDBC.
The first
time a query is Prepared, if
- a Cached Query exists for the statement, and
- the user is privileged for the statement,
an <UNKNOWN ERR> would get
passed back to the client under some conditions.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: MIT235
Summary: Incorrect Preparsing for Decimal literal
Description:
This changes corrects a situation where a decimal literal in the first
column of a SELECT statement, for example,
SELECT 0.1, F1 FROM TESTCASE1234
would prevent parameter replacements from
being made.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK574
Summary: Set padcode before "next" loop
Description:
This change corrects an error that caused compile-time <UNDEFINED>
errors in SELECT statements with OUTER JOINs when certain
CacheSqlStorage "general mapping" features were used.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK582
Summary: Do streamless expression optimization
Description:
This change optimizes streamless
(sub)expressions (i.e. expressions without any fields)
in SELECTs and a few other places
by evaluating them only once at the beginning of the query.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: SQL.Query Processing
Platforms: All
DevKey: AK597
Summary: Fix "pushlog" cloning of unary, streamless
Description:
This change corrects an error in optimization where certain query
conditions
were
"pushed down" and applied within the evaluation of a view that has a
GROUP BY clause.
This occurred in cases where the condition
included a unary operator or a {d ...} date expression.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK598
Summary: Fix 'opex' with many streamless expressions
Description:
This change remedies a situation which
caused incorrect processing or a likely run-time <UNDEFINED> error
when
- there were a large (more than 250) number of expressions, and
- these expressions had to be evaluated at the beginning of the query.
An example of this is an IN
condition on a collated field with more than 250 constants.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2192
Summary: SQL Datediff crashes with <ILLEGAL VALUE>
Description:
Caché SQL now supports a datepart of "ms" or
"milliseconds" for the DATEADD and DATEDIFF functions.
We also now
support SQL_TSI_FRAC_SECOND for the ODBC Scalar functions
- {fn TIMESTAMPADD()},
- {fn TIMESTAMPDIFF()}.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2200
Summary: A query with column < negative number returns wrong results
Description:
This corrects an instance where a query can return incorrect results
when
- there is a WHERE clause condition selecting attribute values
less than a negative value, for example, f < -5,
- there is an index on that column, and
- some of the rows are null in that column.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2228
Summary: Support space collation properly against NULL values
Description:
An error has been corrected
where a field value that used the SPACE collation compared against
NULL was not returning the correct results. For example, a query
like:
SELECT count(*) FROM SQLUser.MyTable WHERE MyField IS NULL
return the incorrect results if MyField's collation was SPACE.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: PVA050
Summary: Ensure use of rowid based on one field, and the field itself are equally optimized
Description:
This change adds a new feature. Previously, you could never use <viewcolumn>->x
syntax. Now, if view column maps to a base table column that supports arrow
syntax, the view column will support it as well. Note that arrow
syntax referring to a child table from a parent table is still not
supported for views because there is no way to specify whether the
child table pseudo column is 'selected' by the view. In addition, this
new feature will not work for views defined by SELECT DISTINCT, or
aggregated views, or UNION views.
Another new feature is that special columns %ID, %CLASSNAME,
%TABLENAME now work with arrow syntax. Thus ref->%CLASSNAME will
return the name of the referenced class.
Compatibility note:
This change addresses many issues relating to column qualification in
queries using views and subqueries. The extra qualification needed to
work around these issues will no longer be needed.
Previously, if a table has a reference called X, and a child table
called X, then X->col would work as long as both the referenced table
and the child table don't both contain a column called. 'col'.
With change, X->col will always get an ambiguity error if it there are
two ways to resolve "X->", irrespective of what follows the arrow.
There is no change to the behavior that if you have a regular
column called X, and a child table called X, "X->whatever" will be
acceptable - because there is no ambiguity about what "X->" means: it
cannot be referring to the regular column called X.
This situation is judged to be rare. Should it occur, it can be
resolved by
- expllicitly renaming one of the table to avoid the conflict,
or
- using the SQL "JOIN" syntax instead of the Caché "arrow"
syntax.
Another upward incompatibility is that (contrary to other SQL
implementations and the standard), Caché allowed two items in the FROM
clause to have the same name, as long as one was a correlation name
and one was a table name. For example:
FROM T1 AS A, A
was allowed. This will now produce an error.
| Likelihood |
Medium |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: HYY948
Summary: Fix <STRINGSTACK> from $SORTEND
Description:
Addressed a problem where $SORTEND may generate a
<STRINGSTACK> error when there are many SETs (hundreds of
thousands of, or even millions) to sort.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: HYY954
Summary: Fix a problem with $SORTEND that could generate <ACCVIO> or <SYSTEM>
Description:
Under some circumstances $SORTEND would generate an
access violation or <SYSTEM> error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: OpenVMS
DevKey: JO1811
Summary: Adjust code to avoid OpenVMS compiler bug
Description:
A problem has been resolved which could cause access
violations on OpenVMS from certain block split operations in 8KB databases
when more than 2GB of global buffers have been allocated.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: OpenVMS
DevKey: JO1823
Summary: Adjust OpenVMS mailbox code to avoid data corruption
Description:
A small problem in the internal mailbox code on VMS
systems has been corrected. This could have caused corruption of data
being returned on Caché's internal string stack in certain rare
circumstances, particularly during reads from TCP/IP devices.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML473
Summary: Improve ECP dismount handling
Description:
Under some circumstances,
when a sufficient number of KILLs have been done to reduce the
number of global directory blocks needed by 1, the consolidation of
directory blocks can cause a
<DATABASE>
error during dismount.
ECP is more likely to provoke this rare problem but it can occur
without any ECP.
This change rectifies that possibility.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Backup/Restore
Platforms: All
DevKey: HYY959
Summary: Flush sorting in the case of using ZJRNFILT
Description:
This change addresses a situation
with journal restore when using a journal filter where SETs
may not get applied to the destination databases.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Backup/Restore
Platforms: All
DevKey: JO1816
Summary: Change Quiescence code to wait long if just the write daemon is still busy
Description:
the wait time in Caché backup, and other places where the
system waits for quiescence, has been extended.
If, after the
timeout period has expired, the system is quiet except for the write
daemon, the timeout is extended for up to 2 minutes to wait for the
write daemon to finish its current pass.
Previously on systems where
the write daemon routinely took more than the allowed timeout, a
backup might never succeed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.StartUp
Platforms: All
DevKey: TTS081
Summary: Correct long startup problem for Windows 2000 SP4
Description:
This change corrects a situation where
Wndows startup would take a long time whenever
- the Caché configuration was marked as automatically
starting service in the system, and
- a recent (i.e. after TTS031) packet-driver had been
installed.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: GK291
Summary: Fixed %GCMP across ECP
Description:
^%GCMP didn't work across ECP. It was looking for a
legacy net connection id
NET(1,"ACTIVE","CPNU",<connection name>)
which wasn't
set.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: PWC796
Summary: GBLOCKCOPY does not handle final $C(1) in pre-ISM 6.2 collated global properly
Description:
This change corrects a problem where globals in the ISM pre-6.2
collation that had a particular data pattern (final subscript of any
global node ending with $C(1)) could cause problems. The particular
symptom that was reported is a failure to convert the node properly
when using GBLOCKCOPY.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Documentation Updates
The content of the Caché documentation evolves from release to
release in response to editorial improvements, updates to existing
material, and addition of new information. The following is a summary
of the most noteworthy changes to the Caché documentation
since the previous release:
- High Availability Guide
- Reorganized the material and added a chapter called "Cluster Journaling" which covers cluster restore, recovery, and shadowing
- Reorganized ECP information by removing a large amount of material
from the GHA ECP chapter and moving it to the Distributed Data
Management book,
including a new appendix of guarantees and limitations
- Supported Platforms and Windows Installation
- Cache ObjectScript Reference
- Added time formats 5, 6, 7, & 8 to $ZDATETIME, $ZDATETIMEH
- Rewrote $ZTIMESTAMP special variable for local time variants
(Daylight Savings, etc.) and Time/Date interactions.
- Added class info section to $JOB special variable
- Cache SQL Reference
- Rewrote and expanded CREATE TRIGGER, DROP TRIGGER, Triggered Action pages
- Rewrote and expanded UNION page
- Rewrote Identifiers page, with updated character & length restrictions
- Added naming conventions/name conversions sections to CREATE TABLE
(table name & field name), CREATE VIEW, CREATE INDEX, CREATE
TRIGGER
- In SELECT specified naming conventions for AS clause values
- Added features to GRANT command
- Added note to SELECT on use of asterisk option
- Expanded the material on the UPDATE command, the Symbols table,
and the SQLCODE error code list
- Documented schema names, package names, and Configuration Manager
schema default in CREATE TABLE and CREATE VIEW.
- Completely rewrote Table page, renamed as Table Reference with new
syntax and description.
- Improved the clarity of the examples illustrating the difference
between the HAVING and WHERE clauses.
- Cache Class Reference
- Corrected EXTENTQUERYSIZE and EXTENTSIZE
- Organizational Changes
- Re-ordered the sequence of book collections on the documentation
home page and also re-ordered the sequence of books with each
group. Prior to this, they had been sorted alphabetically; now they
appear with the more important topics first.
- Changed the title of the short articles section from "Caché
Knowledge Base" to "Technical Articles" to make it more explanatory.
- Reworded the page headers to say "InterSystems Online
Documentation" instead of "Caché Online Documentation".
- Added a new home page item called "Documentation List" which
provides a list of the titles for all the books and all technical
articles sorted alphabetically.
These are in addition to minor enhancements in examples, as well as
corrections and improvements to grammar and spelling.
This section provides a listing of changes between Caché
5.0.9
and
Caché
5.0.10.
This document contains several sections:
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".
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 - This item indicates whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - This notes whether this change provides new
features or capabilities.
- Networking
- Object.XML
- SQL
- SQL.Query Processing
- SQLManager
- System
- System.Backup/Restore
- System.Cluster Specific
- System.I/O
- System.Journaling
- System.NWDS
- System.Shadowing
- System.StartUp
- System.Trans. Proc.
- Utilities
Category: Networking
Platforms: All
DevKey: GK296
Summary: Delay journal open transaction index calculation after ECP recovery
Description:
ECP can survive server restarts and crashes without
any client application involvement. During startup, if there were any ECP
client open transactions, the open transaction journal offset got stored in
the ^%SYS("ECPDELAYTR") global in case the system crashed again. The
global was never killed after successful ECP recovery.
So after many hours or days, if the system is restarted (for any
reason) it scanned from that remembered journal offset, which could
be many journal records. This would cause the next system restart to take a long
time, and some of the journal files may possibly have been deleted,
which will abort the rollback because of missing journal file.
With this change, the information will be
maintained in the WIJ file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: JN140
Summary: Guard against internal dtds with no system or public IDs
Description:
An XML file such as this example
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note [
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tova</to>
<from>Bill</from>
<heading>Reminder</heading>
<body>Don't forget the party this weekend!</body>
</note>
containing a
DOCTYPE but no SYSTEM or PUBLICID caused
ERROR #6301: SAX XMLParser Error: Unknown Error.
This change accommodates the missing information.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV1970
Summary: Allow creation of view with query against linked table
Description:
An error has been fixed which prevented the creation of a view against a
table linked via the SQL Gateway.
With this change, SQL can now create such a VIEW.
Previously, this operation would report that the table
had no Master Map definition.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2047
Summary: Fix filing of node which only holds an embedded field
Description:
A deficiency has been fixed in which the insert/update of a serial field's
values through SQL might not be stored properly in the database.
The error occurred when the
serial field was stored in a global node by itself (without any other
fields stored in the same node).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2222
Summary: Fix binding of fields with SPACE collation to Map Subscript definition
Description:
In previous versions of Caché, fields using a Space collation in a CacheSQLStorage subscript
expression of the form " "_{FieldName} were treated as expressions
rather than collated field values. This made the SQL Query Optimizer
less likely to use the index.
This is now corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: PVA056
Summary: A case of OUTER JOIN acting like INNER JOIN
Description:
A problem was fixed where an OUTER JOIN could
sometimes behave like an INNER JOIN.
This occurred when the join
column of the left side of the left join is an IDKEY, while the join
column from the right side is an indexed column that has a collation
different from EXACT.
Note:
While the problem has been fixed so the correct answer is returned,
this situation delivers poor performance. It is better to change the
collation of the column from the right side table to be EXACT, or to
not use primary key = IDKEY in the left side table.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQLManager
Platforms: All
DevKey: YSD683
Summary: SQL Manager: Delete Export/Import Generated Routines
Description:
This change corrects a problem in SQL Manager's export and import
class methods, %SQL.Export.Mgr.DeleteExportRoutine and
SQL.Import.Mgr.DeleteImportRoutine, that
prevented generated routines from being later deleted.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: OpenVMS
DevKey: JO1811
Summary: Adjust code to avoid VMS compiler bug in ginsert related to large buffer pools
Description:
This change resolves a problem that could cause access
violations in OpenVMS during certain block split operations in 8KB databases.
The problem occurred
when more than 2GB of global buffers had been allocated.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SJ1434
Summary: Fix problem with $BITLOGIC(~x,len), where x is ""
Description:
This fixes an error in $BITLOGIC where empty strings
would not get negated correctly if there were a length present and
only one argument, i.e. $BITLOGIC(~x,len).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SJ1435
Summary: Fix problems with $BITLOGIC(x) and certain values of x
Description:
This fixes a problem with $BITLOGIC(X) for certain
values of X. A spurious error would be reported when the following
conditions were met:
- X was stored as a bitmap whose last byte was 1
- (($BITCOUNT(X)-1)/8+5)=$LENGTH(X)
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SJ1436
Summary: Fix problems with $BITLOGIC(u^v) for Unicode systems
Description:
This change corrects a condition that resulted in the generation of an
invalid bit string from $BITLOGIC(u ^ v) (i.e. XOR operation).
The error occurred on Unicode databases
when one of the operands was compressed and the other was
not.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SJ1474
Summary: Fix problem with $BITLOGIC on Unicode systems mixing narrow and wide bitstrings
Description:
This change corrects an error where,
under circumstances requiring conversion from bitlist to bitmap, an
incorrect result could occur using the
& (AND) $BITLOGIC operator. This only occurred on Unicode installations.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML367
Summary: Fix DCP daemon rollback failure to record restored globals in journal file when it is shutdown.
Description:
When the DCP daemon is shut down, it will roll back
all opened transactions by remote client jobs.
However, it intermittently failed to record the restored globals into
journal file.
This caused the globals set be back to the
pre-rollback value when the server is restarted.
This change corrects that occurrence.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Backup/Restore
Platforms: All
DevKey: HYY939
Summary: Fix the sorting code of journal restore
Description:
This change addresses a problem with journal restore
involving a CACHETEMP database of specified max size (i.e., max
explicitly set to a value greater than zero).
Under some circumstances, users could experience a
<SUBSCRIPT> or <UNDEFINED> error during journal restore.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Cluster Specific
Platforms: All
DevKey: HYY863
Summary: Fix problems with journal restore during cluster failover or recovery
Description:
This change corrects
the following problems with cluster failover (after a node crash) or
cluster recovery at startup (after cluster crash):
- <NOTOPEN>main+1^JRNCLFOR, an error that would result in
cluster hanging (in the case of cluster failover) or startup aborting
(in the case of cluster recovery);
- incorrect data, as the result of journal records being restored in the wrong order.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Cluster Specific
Platforms:
DevKey: JO1797
Summary: Correct 60-second pause on a Tru64 cluster system has been resolved
Description:
A problem which could cause a pause in the write daemon cycle
on a Tru64 cluster system has been resolved. Since global updates
are locked out during this phase of the write daemon cycle, this
appeared to an application as a global module pause.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Cluster Specific
Platforms: All
DevKey: JO1801
Summary: Prevent infinite loop in Write Daemon if startup fails
Description:
A problem with clusters where the write daemon would
get stuck in an infinite loop if it encountered a problem completing
its portion of cluster startup has been resolved.
This was found
during internal testing, it has never been seen in the field.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.I/O
Platforms: All
DevKey: LRS780
Summary: Fix file handle and memory leaks with JOB servers
Description:
A problem has been fixed that could lead to file
handle and memory leaks with JOB servers, mostly on Windows
platforms.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY738
Summary: Journal start will skip any non-journal file and start journaling using the next available name
Description:
Journal start used to abort when the name for the new
journal file was taken by an existing file other than a valid journal
file. The new behavior of is to skip the non-journal file and
use the next available name for the new journal file.
A
warning message is also displayed in cconsole.log.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY758
Summary: Changes to journaling state take immediate effect
Description:
In previous versions,
some settings affecting globals may not have taken immediate
effect in existing processes. This was due to the fact that global
vectors were cached locally in the process.
The system setting that dictates whether
all or selected globals are journaled fell into this category.
This change enables the change of the system setting of journaling to
take immediate effect, even in existing processes.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY779
Summary: Use database redirections in transaction rollback that is part of a journal restore
Description:
This change corrects a problem where incomplete
transactions involving databases redirected elsewhere in the journal
restore were not rolled back properly.
The problem is present in all Caché releases.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY862
Summary: Start journaling using correct file count and file name in cluster recovery and failover
Description:
There was a problem introduced by a change to
version 5.0.5.
If a clustered system crashes shortly after journaling
switches/rolls-over to a new file, open transactions may not be
properly rolled back during the subsequent cluster recovery or
failover.
This change corrects that circumstance.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY868
Summary: Preventing descendants of a KILL from being journaled unless in transaction
Description:
This changes corrects a problem
in 5.0 where the descendants of a
KILL of a global node are journaled if the global is marked for
journaling, even though the KILL is NOT part of a transaction.
It
would be the correct behavior if the KILL is part of a
transaction,
but in this case it is not.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY893
Summary: Show sync journal I/O queue in cstat
Description:
Cstat has been enhanced with the “-j16”
option to display
jobs, if any, queued for synchronous journal I/O. For example,
Sync I/O queue (job:iowake:nextjob): 16
15:0: 13, 16:0: 15
The job # at the end of the line "Sync I/O queue" is the head of the
queue. It is followed by a list of jobs on the queue (not necessarily
in their order on the queue) that are NOT the last entry on the
queue. The nextjob field is the job # following this entry. In the
example above, the actual queue is:
head = job #16 -> job #15 -> job #13 = tail
Job #13 is not shown in cstat because it is the last entry on the queue.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System.Journaling
Platforms: All
DevKey: HYY895
Summary: Add a missing MEMBAR in journal I/O queue operation
Description:
This addresses
a potential problem that might cause jobs to hang while waiting for journal I/O to complete.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY896
Summary: Prevent journal daemon from hanging in infinite loop of clearing sync journal I/O queue
Description:
This correction prevents the journal daemon from hanging in an infinite
loop in some situations
involving a job (or
jobs) waiting in a synchronous journal operation (e.g., synchronous
TCOMMIT).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY907
Summary: Fix a potential problem with switching journal file amid a journal I/O failure
Description:
Under some circumstances an attempt to manually switch the journal
file
via ^JRNSWTCH or the GUI equivalent could hang indefinitely.
This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY924
Summary: Update journal info in the wij even if there is no database update
Description:
In previous versions, the journal info in the wij was not updated when
there was no database update. This could become a problem in some situations
where the journal grew indefinitely (e.g., with TS/TC or NN
records) without any database update, resulting in stale journal info in
the wij. If Caché aborted while in this state, users would see
a time-consuming journal restore
and transaction rollback at startup.
With this change,
the journal info is updated in the
wij as long as journal has grown, even if there is no database
update.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY925
Summary: Handle dead jobs on journal I/O queue
Description:
Under some conditions,
jobs in
synchronous journal operations (e.g., synchronous TCOMMIT) could hang
if killed while the journal daemon is retrying a failed I/O
operation.
This change prevents that from happening.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY931
Summary: Fix <ACCVIO> in dejournaling
Description:
This change eliminates a sporadic access violation error in dejournaling.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY933
Summary: Clear wij journal info if journaling didn't start at startup
Description:
If for some reason journaling failed to start at Caché
startup, the journal info in the wij would remain stale even if
databases are subsequently updated (without journaling). At the next
startup, the stale journal info in the wij could cause the previous
database updates (when journaling was off) to be overwritten by the
stale data from the journal.
This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.NWDS
Platforms: All
DevKey: DAS597
Summary: Fix NWDS mapping of ^rINDEX, ^rINDEXCLASS, ^oddPKG, etc.
Description:
In an NWDS configuration, some globals were not
properly mapped. This resulted in the SourceControl class being
unaccessible from the client.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY909
Summary: Fix a performance problem with fast mode shadowing
Description:
In Caché version 5, fast mode shadowing may
suffer a
performance degradation if journal file grows substantially. This
change addresses this issue.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.StartUp
Platforms: Windows
DevKey: TTS081
Summary: Correct Caché service long startup problem on Windows with packet-driver
Description:
When the packet-driver service is configured to
start automatically, Caché could take a long time to start.
This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Trans. Proc.
Platforms: All
DevKey: HYY845
Summary: Address a couple of issues in DCP server rollback
Description:
This change corrects a problem where the DCP server may
fail to roll back open transactions under certain circumstances.
One such situation, for example, occurs when
a DCP server terminated involuntarily at OS level.
In this case, it left some
incomplete transactions behind, which the succeeding DCP server would
failed to roll back.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Trans. Proc.
Platforms: All
DevKey: HYY888
Summary: Log and generate <ROLLFAIL> upon error in TROLLBACK
Description:
When error occurs in TROLLBACK, <ROLLFAIL> is now
generated and an error message is logged in the cconsole.log.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: Utilities
Platforms: All
DevKey: LFT1258
Summary: Have GBLOCKCOPY use an alternate OLD dir.
Description:
GBLOCKCOPY was using a subdirectory called "old" for
saving temporary data. This changes that to be called "pre-gbcopy",
so that it will not duplicate a commonly used name like "old".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Documentation Updates
The content of the Caché documentation evolves from release to
release in response to editorial improvements, updates to existing
material, and addition of new information. The following is a summary
of the most noteworthy changes to the Caché documentation
since the previous release:
- ObjectScript
- Added the description of the "*variable" usage to the
$ZTRAP special variable.
- Rewrote descriptions of HALT and ZTRAP commands, $HALT special
variable.
- Rewrote LOCK command description for multiple locks and
subscripted arrays and updated ^$LOCK and
^$ROUTINE structured system variables.
- Added TROLLBACK 1 option and other changes to TROLLBACK and TSTART
commands.
- Made a number of corrections to the $ISOBJECT and
$ZCONVERT functions,
and to the special variables:
$HOROLOG,
$STACK,
$ESTACK,
$ZTRAP,
$X,
$Y,
and
$ZA.
- Revised the logical operators section,
& and &%amp;, precedence and nesting, and '= operator for
the “Operators and Expressions” chapter of Using
Caché ObjectScript.
- IO Device Guide
- Rewrote Open command mode options for
Interprocess Communication.
- Added material describing the differences in printer handling on
UNIX and Windows.
- High Availability Guide
- Updated the material on Backup, Failover, and Journaling.
These are in addition to numerous, minor enhancements in examples, and
corrections to grammar and spelling.
This section provides a listing of changes between Caché
5.0.8
and
Caché
5.0.9.
This document contains several sections:
Caché News, Alerts and Advisories
As necessary, 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.
New Platforms
This Cache version adds support for the following new platform:
- Windows Server 2003 for 64-Bit Itanium-Based Systems
Online Documentation
As a convenience to our users, InterSystems provides
online access to documentation for recent versions of
Caché at the
InterSystems Website.
Once there, choose the "Caché" tab, and on the "Downloads" menu,
select "Documentation and Help Updates".
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 - This item indicates whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - This notes whether this change provides new
features or capabilities.
- Config Mgr
- CSP
- Languages
- Object
- Object.ActiveX
- Object.Library
- Object.Soap
- Object.Storage
- Object.XML
- SQL
- SQL.JDBC
- SQL.Query Processing
- Studio
- System
- System.Backup/Restore
- System.I/O
- System.Lock
- System.StartUp
Category: Config Mgr
Platforms: All
DevKey: CFL962
Summary: Fix JournalZGlob
Description:
This change corrects a circumstance
where the Config Manager would set the wrong value for the
JournalZGlob parameter.
This would cause globals beginning with "Z" or "z" not to be journaled
when the user intent was the opposite.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MAK649
Summary: Named user license for CSP session not decremented correctly if session ended immediately
Description:
For a CSP page logged in with a new named user license and
'%session.EndSession=1', the license associated with the most recent CSP
session was not released. This has been corrected; the named user license
for a CSP session is decremented correctly if its session ends immediately.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Languages
Platforms: All
DevKey: CDS423
Summary: Always generate QUIT at end of procedure
Description:
Under some circumstances,
the ObjectScript compiler generated incorrect
object code at the end of a procedure.
This could result in various
errors at the end of the procedure, such as <SYSTEM>
or <NO CURRENT OBJECT>.
This only happened if all the following conditions were met:
- the procedure ends with an IF statement;
- the last command of the IF statement is QUIT;
- the last line of the procedure contains all of -
- the QUIT,
- the closing brace for the IF,
- and the closing brace for the procedure.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object
Platforms: All
DevKey: MAK760
Summary: Connected property of FtpSession object still set to 1 (=True) after timeout
Description:
If the FTP connection times out, the Connected
property of the %Net.FtpSession object was still true. With this
correction, it is now correctly reset to false.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.ActiveX
Platforms: Windows
DevKey: JN133
Summary:
Description: Facilitate Callback functionality for Delphi Clients of CacheObject (ActiveX)
Delphi has Edit/Text box windows with a 'Text' property. The windows do not
support OLE Automation, so the SetOutput() method of CacheObject.Factory is
unable to access them.
DelphiCallback is a new component. It is an ActiveX control that can be
placed on a visual programming environment form. To use it, call the
CacheObject.Factory.SetOutput() method, passing in the name of the
DelphiCallback control. At runtime, the control is invisible but will
trigger a 'TextChanged' event when its Text property is set. This event
receives the Text written out by Cache.
Note: Use this component with Delphi Version 7 and earlier. Delphi Version 8
uses native .NET components that support the existing
CacheObject.Factory.SetOutput() method.
How to use this callback with Delphi 7
- Create a Delphi 7 Windows Forms Project
- From the Project menu, select Import Type Library. Scroll through the
list and select CacheObject, select the Install button, and follow the
prompts.
- From the Components menu, select Import ActiveX Control. Scroll through
the list and select DelphiCallback. Then, select the Install button and
follow the prompts.
- Add a TEdit box, a TButton , a TCallback, and any other components to the
form.
- Doubleclick the form to enter code for the form's creation, button press,
etc.
- Click the TCallback. From the Object Inspector window, select events, and
create an event for OnTextChange. This will tie the callback to the TEdit
box.
Here is sample code assuming a TextBox called Edit1 on a Form called TForm1 with the
OnTextChange event called TextChanged. Text shown in
boldface was added to the code generated by Delphi.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, OleCtrls, DELPHICALLBACKLib_TLB,
StdCtrls, CacheObject_TLB;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Callback1: TCallback;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure TextChanged(ASender: TObject; const p_bstrText: WideString);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Factory : IFactory;
Connected : Boolean;
ConnectString : string;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
Dispatch: IDispatch;
begin
Factory := CoFactory.Create;
ConnectString := Factory.ConnectDlg('Connect to Cache');
Connected := Factory.Connect(ConnectString);
If Connected = False Then
Begin
ShowMessage('Could Not Connect');
End
else
Begin
Dispatch := Callback1.DefaultInterface;
Factory.SetOutput(Dispatch);
End
end;
procedure TForm1.Button1Click(Sender: TObject);
var Person: Variant;
begin
Person := Factory.New('Sample.Person', 1);
If VarIsNull(Person) or VarIsClear(Person) then
Begin
ShowMessage('Could not create person');
End
Else
Begin
Person.Name := 'Test Person';
Person.PrintPerson;
End
end;
procedure TForm1.TextChanged(ASender: TObject; const p_bstrText:
WideString);
begin
Edit1.Text := Edit1.Text + p_bstrText;
end;
end.
How to use with VB
- Create a new VB standard executable.
- From the Project Menu, select Components. Scroll through the list and
select a checkmark next to "DelphiCallback 1.0 Type Library." This will add
a Component on the Components Tab.
- From the Project Menu, select References. Scroll through the list and
select a checkmark next to "CacheObject".
- Add a TextBox, Callback (added from above), and other controls to the
form.
- Hook up the text of the Textbox to the Callback. Double-click the
Callback object. In this TextChanged method, set the text to the desired
text. The output from the Factory's SetOutput() method is contained in the
string passed to this method.
This is sample code assuming a Textbox called Text1 and CommandButton
Command1:
Private Sub Callback1_TextChanged(ByVal p_bstrText As String)
Text1.Text = Text1.Text & p_bstrText ' Add the Text to the TextBox
End Sub
Private Sub Command1_Click()
Dim F As New CacheObject.Factory
Dim C As String
Dim P As Object
C = F.ConnectDlg("Connect Me to the Samples Namespace Please")
If F.Connect(C) = False Then
Exit Sub
End If
F.SetOutput Callback1 ' Hook up the Callback Control to CacheObject Factory
Set P = F.New("Sample.Person")
P.Name = "Jamie"
P.PrintPerson ' Output should appear in the TextBox
End Sub
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: Object.Library
Platforms: All
DevKey: DLP1254
Summary: Validate MAXLEN parameter in IsValid generator for %String
Description:
The %String MAXLEN parameter must be a positive
integer. Prior versions of Caché did not check MAXLEN for
validity.
This corrects the oversight in this class.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Library
Platforms: All
DevKey: MAK797
Summary: Enhance %Net.FtpSession so it can support both PASV mode and non-PASV mode for file transfers
Description:
The ftp client provided by %Net.FtpSession now supports both PASV and
non-PASV mode for transferring data. Change the default PASV mode by
setting the property UsePASV to 0.
Use the ChangeUser method to modify the current user logged in.
Sending LIST plus a space character even when there was no pattern caused a
problem. This has been corrected.
| Likelihood |
Low |
| Risk |
High |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: Object.Library
Platforms: All
DevKey: MAK877
Summary: Relationship object was not keeping track of disconnected items correctly
Description:
If you removed an item from a relationship with the
Remove method,
and then you inserted the same item back into the relationship,
the insertion operation was not restoring the connection
between the two objects properly.
The referred-to object was thus not being saved when its referrer was
saved.
This is now fixed.
| Likelihood |
Medium |
| Risk |
High |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Library
Platforms: All
DevKey: MAK936
Summary: Read without a timeout in %Net.FtpSession class can cause hang
Description:
When an application calls the NameList method in
%Net.FtpSession,
that method issued a read without a timeout on it.
The lack of the timeout could cause a hang
in the presence of a
bad network connection. The read has been changed to honor the same timeout as all the
other reads.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: OpenVMS
DevKey: JCN494
Summary: Problem when using the WSDL Reader on OpenVMS
Description:
As an enhancement to Cache 5.0.5,
URL parsing was removed from Caché code.
Instead, Caché used the facilities of the underlying Xerces
parser to process URLs.
On OpenVMS, this caused an opcode fault. The change rebuilds the
Xerces parser properly for OpenVMS.
| Likelihood |
High |
| Risk |
High |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Storage
Platforms: All
DevKey: DLP1115
Summary: Change deep save scheduling of disconnected related objects
Description:
Saving
the object instance of a parent in a parent-child relationship now
succeeds when the reference to the child is removed from the
relationship.
In some more complex transactions, a child object could both be modified
(requiring it to be saved), and removed from its relationship to its
parent.
This would result in validation failures when the save of the
(previous)
parent object was attempted.
This correction changes the behavior.
Any
objects deleted from relationships are removed from
the save set so that they do not cause validation errors in saving the
parent.
These objects are examined after the save set is constructed.
| Likelihood |
Low |
| Risk |
High |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Storage
Platforms: All
DevKey: DLP1257
Summary: Fix save of disconnected objects when parent object is not modified
Description:
When a relationship is severed between two objects, a record of that
is kept in the relationship object.
Prior to this change, under some circumstances Caché might miss
this fact and not save the new relationship state.
With this change, the new state is properly saved.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: JN193
Summary: ParseStream of %XML.TextReader caused segmentation fault
Description:
The XML parser used by %XML.TextReader uses a length value to indicate
how much data it has room for in its buffer. Due to an oversight, one
part of the routine was treating it as bytes and another as
characters.
This caused buffer overrun conditions when Unicode characters were
read and could result in fatal errors on some systems.
This change makes the length interpretation uniform, and eliminates
the error.
| Likelihood |
High |
| Risk |
High |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: BJB289
Summary: KeepClassUpToDate setting unprocessed in "tune" procedure call
Description:
Prior to this change, when TuneTable had been run, all classes were
marked as modified and requiring
recompilation. This happened regardless of the setting of the
"KeepClassUpToDate" argument to TuneTable.
Now, only the tuned tables are marked as being updated.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2029
Summary: Prevent some <MAXSTRING> errors in table compilation for some really large classes
Description:
The number of properties in a class has been increased from 430 to about 800
mapped to a single node.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2180
Summary: Lock escalation is now per-table
Description:
The lock escalation is now performed on a per-table basis.
Caché has had the concept of lock escalation for some time. This
is when "X" number of INSERT/UPDATE/DELETE/Saves occur within a single
transaction, the next lock acquired for the table is a table-level
lock. This prevents the Caché system lock table from filing up too
quickly.
But, if an application inserted 1000 rows into table A and then 1 row
into table B, table B would acquire a table-level lock. This is
because the lock escalation threshold counter was incremented for each
save in all tables.
With this change, there is a separate counter for each table.
Therefore, the lock escalation only occurs on a table when that table reaches
the lock escalation limit within a transaction (the default limit is
1000).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL
Platforms: All
DevKey: DPV2208
Summary: Fix <UNDEFINED> error on compile
Description:
This change corrects an instance where an <UNDEFINED> error may occur during the
table compilation phase of the class compiler. Caché reports the
error
- if a property in the
class uses a datatype with StorageToLogical and LogicalToStorage
methods,
- and the property is in the IDKEY index,
- and the table is a
child table.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.JDBC
Platforms: All
DevKey: AND415
Summary: Purge JDBC input before reporting stored procedure errors
Description:
When Caché detected a
stored procedure parameter mismatch error,
it immediately raised an exception.
In some instances, this leaves the
input buffer with data that was supposed to be consumed. The
subsequent call would then fail with a message sequencing error.
This change clears the buffer so sequencing errors do not result from
the exception being reported.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK576
Summary: Don't loop below DISTINCT fields
Description:
This change improves the speed of certain queries with GROUP BY or
DISTINCT, especially when these operations can be assisted by an index.
If a query has DISTINCT or GROUP BY and no aggregates need to be
processed by the query, execution terminates as soon as all the DISTINCT
field values become known.
Note: the optimization will not be evident in Show Plan.
| Likelihood |
Medium |
| Risk |
High |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2145
Summary: Fix convert() to SQL_DATE failure when CASE is used in query
Description:
This correction changes the SQL CASE statement to return its result
as
the datatype of the result of the first CASE condition.
All the
values returned by CASE are supposed to be of the same datatype, but
Caché does not
enforce this. So if the first condition returns a DATE,
the column will be of datatype
DATE.
If a later condition returns an INTEGER,
the value will be treated as a DATE value.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2210
Summary: Fix erroneous SQLCODE=-29 error with -> syntax and an unrelated sub-query in the FROM clause
Description:
A query such as
SELECT a.spouse->name FROM sample.person a,
(SELECT contact FROM sample.vendor) b
containing a sub-query of an unrelated table
would fail with an SQL erroe code of -29.
This change allows Caché to properly handle this case.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: DPV2213
Summary: Fix UPDATE Filing code with more than 200 fields in a node and delimited strings in use
Description:
This change corrects an error where Caché
would report a <MAXSTRING> error
during the table compilation phase of the class compiler if
%CacheSQLStorage is used, and more than 200 fields are stored in a
single node using a delimited string storage structure.
Delimited String storage simply means:
^glo(id)=field1^field2^field3^...^fieldN
where each field in this example is delimited by "^".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: DVU1056
Summary: Changed property tree handling in Query wizard
Description:
The performance of the Studio New Query Wizard could be poor in a namespace
that contained many classes with many relationships among the classes. The
performance has been improved.
The Query Wizard
is initializes only the data for the levels the user
actually explores.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: JN137
Summary: Indicate syntax error when missing final closing brace of class definition
Description:
The class syntax checker has been fixed to correctly report an error
when the final closing brace of a class definition is missing. In
previous versions, this invalid syntax was unreported.
| Likelihood |
High |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MC467
Summary: Set debug devices to use UTF8 mode
Description:
In previous versions, Caché failed to set UTF8 mode for devices
used in debugging. This resulted in non-Latin characters (for
example, Japanese) being displayed incorrectly.
This change rectifies that situation.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: Linux, AIX, HPUX, OpenVMS
DevKey: HYY932
Summary: Correct $SORT* in handling double type values on 64-bit platforms
Description:
This change addresses a issue with sorting (started and ended via $SortBegin and
$SortEnd, resp.) on 64-bit platforms. Global nodes that are
set to values of double type may attain incorrect values after
sorting. Since sorting is enabled in journal restore in 5.0.5 and
later, journal restore was affected by the problem too.
Note: A 64-bit platform is one where we use 64-bit
pointers. A platform where we use 32-bit pointers and 64-bit integers
(e.g., 4.1 for VMS) is not considered 64-bit.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: Linux
DevKey: JLC604
Summary: Fix OREF comparison error in Linux math functions
Description:
This change corrects an error that caused an <INVALID TYPE> error when comparing
an OREF to a non-null string. Now this comparison returns 0 (false).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JLC612
Summary: Fix error in $NORMALIZE()
Description:
This change corrects the calculation for $NORMALIZE(<number>,-1) that could incorrectly return
zero in some circumstances.
For example, prior to this change, the sequence
Set x = 3.5
Write $NORMALIZE(x, -1)
would correctly return the value 3. However, the sequence
Set x = 7 / 2
Write $NORMALIZE(x, -1)
would return the value 0.
Now it returns 3 as it should.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML399
Summary: Fix access violation on $zu(156) to traverse lock table.
Description:
There is a small chance that ^LOCKTAB or ^$LOCK SSVN
could get an access violation when there is heavy lock table
activity.
This change prevents that from occurring.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Backup/Restore
Platforms: All
DevKey: HYY921
Summary: Fix problem with restoring to a bigger existing database
Description:
Under certain circumstances, an attempt to restore a saved database file
into a bigger existing database can cause data corruption resulting in
<DATABASES MAP LABEL> errors and system hangs.
With this change, the data corruption no longer occurs.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Backup/Restore
Platforms: All
DevKey: LRS772
Summary: Avoid inadvertent restore of mgr database with EXTSELCT^DBREST
Description:
An error in the non-interactive API for restoring backups,
$$EXTSELCT^DBREST, has been fixed. The result of the error
is that the
manager's database could be inadvertently restored.
This would happen even if it was not specified
in the restore list. If it were present in the backup archive and the
file containing the restore list contained a blank line,
the manager's database would be overwritten.
This could
also happen if the calling process had enabled $ZEOF handling.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.I/O
Platforms: All
DevKey: LRS775
Summary: Fix crash with long Windows printer names
Description:
In previous versions, a process would crash if it attempted to open a
Windows printer device with a name longer than 69 characters (including the
"|PRN|" prefix). Now, length of up to 256 characters is supported with a
<NOTOPEN> error occurring for a length greater than 256.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Lock
Platforms: All
DevKey: SML457
Summary: Display DTM lock owner with remote PID
Description:
If a lock is held by a remote DTM client, the LOCKTAB and Control
Panel display will now append a "/" followed by the process ID of the
owner on the remote DTM system to the lock display as a monitoring aid.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Lock
Platforms: All
DevKey: SML464
Summary: Don't let ZA locking get lock count overflow
Description:
On earlier versions of Caché, it was possible for the
statement
to get a <COMMAND> error when
$ZU(69, 8) is set.
When it is not set,
it should not
get this error because ZA works like the LOCK command. This change fixes
this issue.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.StartUp
Platforms: All
DevKey: MAK922
Summary: Make sure %CSP.Daemon process is started in %SYS namespace
Description:
Prior to this change, the %CSP.Daemon process was
getting started in the implied namespace because this is the
namespace the startup code is in before it calls the function to start
the daemon. Now the daemon swaps to %SYS namespace.
| Likelihood |
High |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Documentation Updates
The content of the Caché documentation evolves from release to
release in response to editorial improvements, updates to existing
material, and addition of new information. The following is a summary
of the most noteworthy changes to the Caché documentation
since the previous release:
- In the Caché I/O device guide:
- Added the OPEN and USE options (positional and keyword) for the
COM port
- Fixed and updated the UNC section for printer names
- In the Caché SQL Reference book:
- Added new pages for
- %CHECKPRIV,
- GROUP BY,
- HAVING,
- the new date and time constructs {d ...}, {t ...}, and {ts ...},
- and variables includiing %msql, %ROWCOUNT, and SQLCODE
- Added %msql information to the material on CREATE
TABLE, CREATE VIEW, GRANT, and REVOKE
- Updated the information on CREATE TABLE
%Description adding explanations of the
%FILE, %NUMROWS, and %ROUTINE options
- Reworked and expanded the material on dates and time including:
CURRENT_TIME, CURTIME, HOUR, MINUTE, SECOND,
CURRENT_TIMESTAMP, GETDATE, NOW,
TO_DATE and TO_CHAR
- Added descriptions of the
%DELDATA and %NODELDATA options for DROP
TABLE
- Clarified the explanations of
%DB_OBJECT_DEFINITON and added cross-references to
%CHECKPRIV
for GRANT and REVOKE.
- Improved and expanded the examples showing SELECT usage with more
varied option combinations and more explanatory information on each example.
- Changed the browser stylesheets to remove excess leading spaces from lists
appearing inside table cells
- Added the lead items from the Glossary of Terms to the word index
- Added Itanium as a supported platform for Windows
These are in addition to numerous, minor enhancements in examples, and
corrections to grammar and spelling.
This section provides a listing of changes between Caché
5.0.7
and
Caché
5.0.8.
This document contains several sections:
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".
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 - This item indicates whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - This notes whether this change provides new
features or capabilities.
- Control Panel
- CSP
- CSP.DreamWeaver
- CSP.Gateway
- Languages
- Networking
- Object
- Object.Soap
- Object.XML
- SQL.GateWay
- SQL.JDBC
- SQL.ODBC
- SQL.Query Processing
- Studio
- System
- Utilities
Category: CSP
Platforms: All
DevKey: MAK918
Summary: Use streams to hold more than 32K of data in CSP forms
Description:
If you have a form in a CSP page with a textarea,
and the submitted data in the textarea is longer than 32K
characters, the CSP server now automatically creates a stream to hold
the data and returns the stream OREF as the result of
%request.Data("txt",1).
This
means that for any fields that could be larger than 32k you should
code something like:
Set value=%request.Data("fieldname",1)
If $isobject(value) {
; Treat this as a stream
} Else {
; Treat this as a regular string
}
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Control Panel
Platforms: All
DevKey: CFL1029
Summary: Closing the backup status window may cause the system to hang
Description:
Under some circumstances, closing the status window
of a GUI backup could
result in the system hanging. This change corrects that.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MAK994
Summary: Improve CSP license accounting
Description:
If a request for a new CSP page comes in which
causes a new session to be created,
and a serious error occurs before the
request is complete,
there are situations where the %cspServer process may HALT after
allocating a license but before storing the session information in
^%cspSession.
Should this occur, the license will never get released because the
%CSP.Daemon process will never detect this session timeout (there is
no entry in ^%cspSession).
With this change, the %cspServer process inserts an
entry in ^%cspSession
before allocating a license. Should the new process terminate abnormally, this license
will still get released by the %CSP.Daemon process.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MXT583
Summary: Close CSP security vulnerability
Description:
This change removes support for URL and FILE query parameters of
%XML.Utils.SchemaServer so that arbitrary file viewing is no
longer possible.
| Likelihood |
Low |
| Risk |
High |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP
Platforms: All
DevKey: MXT585
Summary: Fix %CSP.DwxUtils security hole that allows running of arbitrary classmethod
Description:
This change closes a %CSP.DwxUtils security hole
that allows running of an arbitrary classmethod.
| Likelihood |
Low |
| Risk |
High |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.DreamWeaver
Platforms: All
DevKey: MXT557
Summary: Dreamweaver extension changes for MX2004 and error fixes
Description:
Dreamweaver MX2004 changed the mechanism needed for
installing plugins. This change contains the modifications to the
Caché plugin necessary for it to work with MX2004 as it has
with earlier Dreamweaver versions. Corrections were made to fix
uninstall problems uncovered in earlier releases.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT116
Summary: Posting small binary files as multi-part MIME attachments may fail
Description:
This change corrects a problem where attempting to post small binary
files as multi-part MIME attachments could result in an error return.
This issue was particularly relevant to files containing the NULL
(ASCII 0) character in the first few bytes. This location, for example, is usually
reserved for header information in image and zip files.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT134
Summary: Gateway and Caché 'textarea' submissions greater than 32K may fail
Description:
This change corrects an error in the Caché
Version 5
communications protocol
between the Gateway and Caché. Prior to this, 'textarea' submissions
greater than 32K could fail.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT142
Summary: Hyperevents may fail in non-cookie session-management mode
Description:
Hyperevents may fail in
non-cookie, session-management mode if the session token (CSPCHD) was not passed as the
first hidden field in the form's posted data.
This could also happen in regular CSP forms, but more rarely.
This changes corrects this situation.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT177
Summary: Fix a problem in posting the contents of 'textarea' elements greater than 32K under some circumstances
Description:
This change corrects an issue involving a POST of a textarea element
containing more than 32K characters. Under some circumstances, the
textarea content could be silently truncated.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: CSP.Gateway
Platforms: Linux
DevKey: CMT182
Summary: Changes to ensure that the Gateway works with iPlanet/Sun ONE web servers under Linux
Description:
Sun has changed the default behavior of the Sun ONE (formerly
iPlanet) v6.1 server. The change mainly involves requests processed through NSAPI
extensions.
The effect of the change is that the server now assumes responsibility for
formulating and dispatching HTTP response headers. Previous versions
would allow NSAPI extensions to stream their own headers back to the
client and wouldn't intervene in this process unless the
module explicitly called the NSAPI header formulation and dispatch
functions.
This change includes essential modifications to ensure that the
Gateway works with the latest iPlanet/Sun ONE web servers
under Linux.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
Category: Languages
Platforms: All
DevKey: CDS532
Summary: Fix I/O keyword table truncation
Description:
The I/O keyword table was inadvertently truncated in
Release 5.0.5. The keywords /WRI, /WRITE, /XYT, and /XYTABLE were not
recognized as valid
and attempts to use them resulted in <SYNTAX> errors on Windows systems.
On UNIX and VMS systems,
only the last entry, /XYTABLE, was truncated with similar effect.
This change corrects both errors.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: Windows
DevKey: TTS031, TTS048, TTS073
Summary: Update the InterSystems packet driver
Description:
This change updates the InterSystems packet driver to correct issues
with
Windows "Plug-n-Play". Prior to this change problems during install or
uninstall could sometimes cause a Windows system failure.
The driver also now processes properly many dynamic
operations via packet-driver handles allowing the system to proceed more
gracefully.
The internal version number of the driver has been updated to
reflect the change.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object
Platforms: All
DevKey: DLP1137
Summary: Class instances are incorrectly marked as modified
Description:
Under some circumstances, class instances were being marked as modified
when
Count() or %GetNext()
were invoked, and more than one instance of the object was stored in
the database.
An example is a "parent" object instance with multiple "children".
This change properly preserves the modification state of the object.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object
Platforms: All
DevKey: MC429
Summary: Prevent loss of SQL privileges during upgrade
Description:
Under some circumstances, upgrading could result in the discard of
privileges for SQL tables.
This changes preserves the privileges across an upgrade.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT507
Summary: Properly return application SOAP faults from web service
Description:
The ReturnFault() method of web services was not properly
preventing creation of the SOAP body after a fault was generated.
This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: MXT539
Summary: XML Schema wizard does not display non-UTF8 characters correctly in schema source
Description:
Prior to this change, the
XML Schema wizard could not properly handle an XML document
that was encoded in a character set other than UTF-8.
Now the Schema Wizard uses the character set encoding specified in the
<?xml ...> directive.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.GateWay
Platforms: All
DevKey: MIT314
Summary: Linked tables containing class queries with parameter fail
Description:
Prior to this change, if a linked table (for example, to data residing
in Microsoft
SQL Server) contained a class query with a parameter, and that
parameter was referenced in the WHERE clause, an attempt to compile
the class would result in a <SYNTAX> error.
This change corrects the problem and the class now compiles properly.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.GateWay
Platforms: All
DevKey: MIT316
Summary: Support HAVING clause for external tables
Description:
This change enables the generation of the HAVING clause for tables
linked from other databases.
In prior versions, the HAVING clause was wrongly omitted when the SQL
was sent to the other database.
| Likelihood |
High |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.JDBC
Platforms: All
DevKey: AND455
Summary: Implicitly close all streams after (bulk) insert/update has completed
Description:
Under some circumstances, a user could receive a <MAXSTRING>
error if a large number of streams were used in a bulk insert or
update operation. The streams were not properly being closed when the
operation completed.
Since there is no reason to keep the streams open in this
circumstance,
Caché now automatically cleans up all such structures
after a(n) (bulk) insert/update has completed.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.ODBC
Platforms: All
DevKey: JCN491
Summary: Japanese SQL table/field name may cause errors
Description:
The internal use of the ISDIGIT ANSI function
resulted in undefined behavior on integer values larger than 255.
This failure was present in version 5.0.5 and 5.0.7.
This has been corrected.
| Likelihood |
High |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK555
Summary: Allow TOP constant/variable in parenthesis
Description:
Allow the constant, host varible, or "?" that follows TOP to be
enclosed in parenthesis. (Currently, Caché does not allow a general
expression there, not even a constant expression.)
This is needed for external tables, since other vendors support only
constants after TOP, and thus the parenthesis are required to prevent
literal-replacement of that constant.
| Likelihood |
Medium |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK577
Summary: Fix split subscript with "y" nexting
Description:
Before this, Caché would report an error when it attempted
to compile queries with IN conditions on
parent reference fields,
and those conditions had more than
one "||" component.
For example:
SELECT * FROM grandchild WHERE parentref IN ('1||2', '3||4')
This change allows the compilation to proceed correctly.
| Likelihood |
Medium |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: AK590
Summary: Properly handle FROM with multiple OUTER JOINs of linked tables
Description:
A query that uses linked tables now succeeds when
the query includes more than one OUTER JOIN.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: SQL.Query Processing
Platforms: All
DevKey: AK591
Summary: Padding may survive condition with ISNULL()
Description:
The existence of certain WHERE conditions can cause an OUTER JOIN to be
converted to a regular join without affecting the query semantics.
(Regular joins can be more efficient to process than outer joins.)
In prior versions, the analysis of the conditions under which this
conversion could be performed was incorrect for some usages of
ISNULL, NVL, COALESCE, NULLIF, IFNULL, DECODE, and CASE,
as well as for fields in an extrinsic or a user-defined
function. This change corrects the analysis.
It also extends the analysis to correctly convert queries involving
OR conditions.
Finally, it corrects the regular 3-value logic NULL analysis in situations
where there
were NULL arguments in a call to an extrinsic or a user-defined
function contained in a WHERE clause.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: RAW442, RAW444
Summary: Improve Studio reliability
Description:
Under certain circumstances, an attempt to copy and paste a
program fragment would cause Studio to crash with an internal buffer
overflow.
This is more likely
when the program fragment has a large number of short, syntactic
elements because
the internal representation of the fragment required more space than
was allocated.
This change allocates sufficient additional space to contain the
copied section.
| Likelihood |
Low |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS535
Summary: Handle interruptions in Event.Wait()
Description:
When a process is using $System.Event.Wait() to do a timed wait, and it
receives a signal from another process, such as from JOBEXAM or to update
internal tables after mounting a database, the timing mechanism was lost
and the process would never return from the Wait(). This change
makes it work properly.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JLC591
Summary: Correct error in $QUERY/$ORDER from translated subscripts
Description:
This change corrects a error affecting non-Unicode
Caché systems. The error happens during the translation of the
internal encoding
of subscripts from ISM versions 6.2 through 6.4 to Caché Standard
collation.
Such translations occur, for example, when using
%GIF.
Subscripts starting with a
ÿ
(lower-case "y" with an umlautl HTML = ÿ or ÿ)
might not get translated properly
and end up in the
database with the wrong encoding. This would generate a
<WIDECHAR> error when those nodes were later accessed via $ORDER or
$QUERY.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: UNIX
DevKey: JO1792
Summary: Change incremental backup handling where a user job can't read from a database
Description:
A defect has been corrected that could cause the write demon to hang.
The problem only occurs when a database on a Unix system is not readable
by all Caché jobs, and the database is included in a Caché incremental
or concurrent incremental backup. Under these circumstances, the system may
hang following the backup.
This hang can be identified by examining the wdwake value
displayed by cstat. It has a value of 2, the problem
resolved by this change has occurred.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO1794
Summary: Assure global vector resetting after database dismount and re-mount
Description:
This change corrects a problem which could cause processes to skip
resetting their global vectors after a database has been dismounted
and re-mounted.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: Windows
DevKey: JO1799
Summary: Correct inaccurate reporting of dead jobs on Windows
Description:
From the Caché alert issued 22 April 2004:
InterSystems has corrected a defect that can cause Caché processes to
be incorrectly deleted from Caché. This defect is present on Windows
platforms only and applies to currently released Caché 5.0.x versions.
Only processes that call out of Caché using $ZF() and modify their
Windows security profile are at risk of encountering this defect. The
likelihood of encountering this problem is low, but the effects could
be severe including causing Caché to hang. To determine if your system
has encountered this defect check the cconsole.log file for a message
indicating that a dead process has been "cleaned", for example:
04/20-17:28:33:734 ( 4184) cleaned dead job, pid: 4224
If the PID that has been cleaned still exists as a Windows process,
then the problem may have occurred.
Note: the
"cleaned" message is evidence that normal Caché functionality
has been triggered to protect against dead processes, it is not, by
itself, evidence of the defect. Moreover, PIDs are
quickly reused in a running Windows system, so unless you find the PID
in existence at the Windows level very shortly after the timestamp on
the "cleaned" message you have likely not encountered the
defect.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: LRS757
Summary: Fix BACKUP restore errors with archives having many databases
Description:
From the Caché alert issued 27 April 2004:
InterSystems has corrected a defect in Caché backup that could result
in inability to restore from a backup archive. This defect exists in
all Caché 4.1.x and later versions and for all platforms and operating
systems.
This problem can only occur in backup archives with 16 or more
databases. The likelihood of encountering this problem is low but
increases with the number of databases in an archive. Existing backup
archives can be checked with the following procedure without actually
restoring any databases.
To check whether existing archives are subject to this error,
user should
- invoke ^BACKUP;
- choose option 3, "Restore Selected or Named Directories";
- mark every database listed with an "X", so they will be read but
NOT restored.
If the restore reads through the entire archive without a
"missing blocks" error the archive
is not affected by the condition.
No database restore should occur because none
has been selected - that is what the "X" means.
Note: a clean check of one archive with the above procedure does not
guarantee that the next backup will not encounter the problem.
This change eliminates the error.
See the
earlier section
on alerts for related information.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: Windows NT
DevKey: SAP157
Summary: %PRIO malfunction on WIN NT 4.0
Description:
Prior to this change, a call to NORMAL^%PRIO after a
call to LOW^%PRIO would leave the process in
priority 0 (zero). This only happened on Windows NT.
A workaround for the problem was to
set the priority by doing HIGH^%PRIO, then NORMAL^%PRIO.
With this fix,
it no longer happens on any platform and the workaround is no longer needed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Documentation Updates
The content of the Caché documentation evolves from release to
release in response to editorial improvements, updates to existing
material, and addition of new information. The following is a summary
of the most noteworthy changes to the Caché documentation
since the previous release:
- Supplied additional program examples in the SQL reference
manual
- Added additional cross-references between the Caché
ObjectStript and the SQL references
- Updated the table of symbols for SQL
- Updated the documentation on installing and configuring the CSP Gateway
- Added additional active links to related material in cross-references
These are in addition to numerous, minor enhancements in examples, and
corrections to grammar and spelling.
This section provides a listing of changes between Caché
5.0.5
and
Caché
5.0.7.
This document contains several sections:
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.
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 - This item indicates whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - This notes whether this change provides new
features or capabilities.
- Config Mgr
- Networking
- Object.Relationships
- Object.XML
- SQL.Query Processing
- System
- System.Backup/Restore
- System.Journaling
- System.Licensing
- System.StartUp
Category: Config Mgr
Platforms: All
DevKey: CFL1011
Summary: Fix deletion of .cpf backup files on OpenVMS
Description:
A bug has been fixed where all the VMS-created
backup versions of the .cpf file were deleted when the configuration
was edited via Config Manager.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: SML436
Summary: Reduce the precision of double-precision subscripts being sent to DSM systems
Description:
DSM systems cannot handle the full range of
Caché double-precision numeric subscripts.
The subscripts are now reduced in precision to that which a DSM system
can accept.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Relationships
Platforms: All
DevKey: DLP1094
Summary: Fix <UNDEFINED> in %Collection.RelationshipObject::GetObjectAt
Description:
This change corrects an illegal internal reference
in the named method which caused an <UNDEFINED> error.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Relationships
Platforms: All
DevKey: DLP1121
Summary: Don't automatically load related objects when swizzling the parent
Description:
Prior to this change, when a child object
attempted to reference its parent, all the objects contained in
relationships
of the parent would be instantiated. This resulted in an unexpected
and unnecessary
large overhead in making the reference. This change removes the
automatic loading in favor of loading only those objects actually referenced.
| Likelihood |
Medium |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Relationships
Platforms: All
DevKey: DLP1134
Summary: Load related objects in Next() and Previous() if not loaded
Description:
With this change, related objects are now loaded
when calls are made to the Next() and Previous() methods. Previously,
these methods could return errors.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Relationships
Platforms: All
DevKey: DLP1138
Summary: Don't set modbit when swizzling relationship object
Description:
The modified bit for an object was incorrectly being
set when other objects it referenced were brought into memory. This
has been corrected and the modified bit is now set only if the object
is actually modified.
| Likelihood |
Medium |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Relationships
Platforms: All
DevKey: MAK853
Summary: Performance improvement and correction to %Collection.RelationshipObject
Description:
When an applilcation called Insert(oref) to insert an object
reference into a relationship collection, or called the deprecated
method SetAt(oref,key), instead of the oid being stored in the
relationship, just the id was stored. This could cause problems
when searching for an oid in the collection. Now both methods
correctly insert the oid.
In correcting this, some changes were made to improve the performance of the internal
storage for the relationship and to reduce the memory footprint
required.
| Likelihood |
Medium |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.Relationships
Platforms: All
DevKey: MAK992
Summary: %ConstructClone failed with relationships
Description:
The %ConstructClone method failed to load all the
ID's
of a relationship before performing its work. Prior to this change,
it would clone only the ID's that had been loaded by other reference attempts.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Object.XML
Platforms: All
DevKey: JN178
Summary: Fix erroneous call to endDTD in Sax Parser
Description:
An incorrect method call in the SAX content handler
resulted in an attempt to reach a
non-existent method. This is now corrected.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: BJB284
Summary: Correct ifn conflict with Virtual OR
Description:
A problem has been corrected with the SQL code
generator. If you selected against a UNION subquery containing an OR
clause,
under some circumstances the columns would display
the wrong value in the results.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: DAS497
Summary: Correct <ACCVIO> associated with date/time processing
Description:
Under some circumstances, the conversion of a
date/time to display format would result in an <ACCVIO> error
if the fractional seconds portion of the date/time was zero.
| Likelihood |
Medium |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: HYY864
Summary: $SortEnd preserving the order of SETs to the same node
Description:
Under some circumstances, $SortEnd() may apply SETs
to the same global node in a different order from the one in which
they were issued, resulting in incorrect value of the global node.
This change applies them in the correct order.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: HPUX
DevKey: JLC590
Summary: Fix bug in Clsetcon() for hp11
Description:
This change corrects a performance degradation in
the HPUX implementation of Caché that eventually results in a
<STORE> error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: LFT1134
Summary: Fix $zobjexport issues
Description:
This change corrects several errors in
exporting objects whose size approaches 32K in length, and
involve undefined variables. It also improves the handling of object
tokens during export.
| Likelihood |
Medium |
| Risk |
Medium |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: Windows
DevKey: LFT1214
Summary: Improve Caché handling of lack of handles
Description:
This changes adds error handling
for the condition where a Caché system running on
Windows
runs out of handles.
| Likelihood |
Medium |
| Risk |
Medium |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: RJF018
Summary: Improve handling of $BIT for old format databases
Description:
This change corrects a problem where SETs using the $BIT
(bitmap indexing) function in a 2K (old format) database could cause
database integrity errors. Prior to this change, when a $BITSET
created bigstring data, it failed to update the bottom pointer node to
reflect the addition of the bigstring node in the data block. This
problem affects all prior Caché releases.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: OpenVMS
DevKey: SAP150
Summary: %PRIO set's rather than increments base priority
Description:
HIGH^%PRIO sets an incorrect priority on OpenVMS.
This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML398
Summary: Correct an issue with numeric subscript access over a network
Description:
Under some circumstances, attempts to access globals
on a remote DSM/MSM system using $DATA or $ORDER could result in a
<SUBSCRIPT> error or the wrong data being returned.
This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML400
Summary: Call netmap only when the network is configured
Description:
When there is no
network configured, an attempt to use ^LOCKTAB or Control Panel to delete a lock
entry would result in a <NETWORK> error. This change corrects
that condition.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML445
Summary: Improve ECP connection startup to initiate ECP daemon jobs
Description:
The very first ECP access to
remote server took about 5 seconds for Windows platform. This change
corrects this issue.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Backup/Restore
Platforms: All
DevKey: HYY805
Summary: Reset internal state when errors reported by DBACK*
Description:
This changes corrects a situation where internal
state flags were not being properly reset when errors were reported by
DBACK* in the case where it was invoked by an application.
Even with this change, applications which invoke backup operations programmatically
should handle all errors reported and
attempt to restore the system state prior to the backup being invoked.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Backup/Restore
Platforms: All
DevKey: HYY886
Summary: Quiesce ECP-based cluster after setting backup switch
Description:
This change addresses an issue on an ECP-based Caché cluster
where a corrupted backup may results because the cluster was not quiesced
before backup started.
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY859
Summary: Prevent non-privileged user from stopping journaling
Description:
A non-privileged user is not allowed to stop
journaling. As far as journaling is concerned, a non-privileged user
is one who doesn't have the write access to the journal file.
When a non-privileged user tries to stop journaling, one of the
following errors
is reported:
Access to journal file [journal name] denied
or
Unable to open journal file [journal name] for write access
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Licensing
Platforms: All
DevKey: RJW691
Summary: Can't Connect to License Manager After Hot License Upgrade
Description:
When upgrading a license key on a running Cache version 5.0 configuration,
either by copying the cache.key file into the system manager directory and
running $$UPGRADE^%LICENSE, or by installing it using the
Configuration Manager License Wizard, communication with the License
Manager would be lost because the internal License Manager address
field was overwritten.
This change prevents this from happening. The
License Manager will receive the new key capacity values and update
its internal tables within a minute or so. The new capacity values
are immediately available on the local system.
Note: This only
applies to multi-server keys which use the License Manager.
Also, you must install the new key on every configuration that shares
the key.)
| Likelihood |
Medium |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.StartUp
Platforms: All
DevKey: CFL981
Summary: Fix %SYS mappings
Description:
An error has been fixed where mappings defined for the
%SYS namespace would be lost upon Cache restart.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.StartUp
Platforms: All
DevKey: SAP153
Summary: CCONTROL can use the wrong cpf file
Description:
If there is a file in the Cachesys directory such as:
where <config> is the Configuration name,
ccontrol will start the Configuration using the
cache.cpf.<config> (even if you put nothing in the command line,
or use 'cache'). During the startup it tells the user that it is
using just the "cache.cpf" file.
With this change, it correctly reports the file name.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Documentation Updates
The content of the Caché documentation evolves from release to
release in response to editorial improvements, updates to existing
material, and addition of new information. The following is a summary
of the most noteworthy changes to the Caché documentation
since the previous release:
- An article on using Caché with a Network Appliance Filer
was added to the Knowledge Base section.
- The article on calculating the configuration parameters for UNIX
systems (Appendix B of the "Caché Installation Guide") has been updated.
- The Upgrade chapter of the Release Notes has been updated.
- The SQL reference material underwent a thorough review, for
example
- all date and time function descriptions were reworked as needed
including new information on conversion and the addition
of many new examples
- the CREATE and DROP statement descriptions were upgraded
- comparison tables were added for the functions IFNULL, NULLIF,
ISNULL, and NVL
- the SQL DDL datatype mappings were updated to match that shown in
the Configuration Manager
- correspondences between SQL and Objectscript functions were added
when appropriate
- the cross-references of commands, functions, and variable names
has been improved
- The I/O Device Guide in the Reference section was updated
with
- a rewritten section on using the SPOOLER
- description of TCP /SENDIMEDIATE mode
- new options available for Terminal OPEN
- Improvements were made to the Objectscript reference manual in the
areas of
- the interaction of NLS with $ZDATE and $ZDATETIME
- new examples for the date and time functions
- linking between TSTART, TCOMMIT and TROLLBACK and the
corresponding SQL commands
These are in addition to numerous, minor enhancements in examples, and
the usual
corrections to grammar and spelling.
This section provides a listing of changes between Caché
5.0.4
and
Caché
5.0.5.
This document contains several sections:
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.
At the time of this publication, the details on the following were
available:
| Date |
Subject |
| December 4, 2003 |
Caché Server Pages |
| November 19, 2003 |
Caché Backup Error and Lost Updates |
| November 17, 2003 |
IBM 64 bit - Caché Floating Point Zero Boolean Issue |
| November 14, 2003 |
Caché Server Pages |
| November 6, 2003 |
CSP Error Messages Corrupt in Caché 5.0.4 Only |
| October 17, 2003 |
Microsoft IIS 6.0 on Windows 2003 with CSP |
| October 6, 2003 |
Caché Process Local Variable Corruption [VMS] |
| March 13, 2003 |
Caché Process Local Variable Corruption |
| September 26, 2003 |
Caché and McAfee product conflict |
| September 22, 2003 |
Update: Hyper-Threading and Caché |
| January 15, 2003 |
Intel's Hyper-Threading technology and Caché |
| July 28, 2003 |
Caché and MultiNet |
| July 23, 2003 |
Journal Suspension and Data Loss |
| June 27, 2003 |
Caché and write permissions on UNIX
systems |
| June 23, 2003 |
Wrong answer for certain OR conditions when multiple index strategy used |
| June 20, 2003 |
Caché Networking and New Format Databases, Addendum |
| June 20, 2003 |
Caché Networking and New Format Databases |
| May 20, 2003 |
Transaction Processing over DCP |
| May 14, 2003 |
Telnet Connections on Caché Windows |
| May 12, 2003 |
Caché and AIX |
| March 13, 2003 |
Caché Process Local Variable Corruption |
| March 7, 2003 |
Multi-homing and Caché Clusters on OpenVMS |
| January 15, 2003 |
Intel's Hyper-Threading technology and Caché |
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 - This item indicates whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement - This notes whether this change provides new
features or capabilities.
- Critical - A value of "yes" in this column indicates that
a production application environment 'may' be at risk or
the deployment of an application may be impeded.
| Reference |
Summary |
| JCN465 |
Port linuxit platform to GCC 3.2 compiler |
| ALE349 |
Revamped Apache CSP installation on Unix |
| MXT541 |
Use binary streams for XML content in web service and web
client |
| PVA058 |
Fix issues with conditional table maps |
| SML413 |
Fix ECP lock zero time out. |
| MXT526 |
Correct security flaw in CSP broker. |
| RJW791 |
Preferred Server in Registry is not updated when changed |
| ALE258 |
Upgrade from 2.1.9 does not convert configuration
automatically |
| JCN479 |
Build thirdparty executables for Linux on SUSE with GCC 3.2
compiler |
| DPV2102 |
LogicalToDisplay() will now report %EXTERNAL(xxx) as type
VARCHAR. |
| MXT499 |
Fix bug in assigning names of classes created for inline
complexTypes by the XML schema wizard |
| DPV2109 |
Fix incorrect setting of $Bit for SQLStorage |
| JCN440 |
Fetch password from registry if Username passed in matches
registry entry |
| DPV2053 |
Fix privilege checking with privileges granted indirectly through
roles |
| DPV2131 |
Order By DESC does not always work with $Piece mapping |
| HYY837 |
Fix a problem with index sorting handling wide character
strings |
| LFT1166 |
INTEGRIT misses database error on 2K database |
| RFD095 |
Fix ^SHUTDOWN hang on cluster recovery |
| RFD066 |
Allow process to recover MONITOR sessions |
| JO1742 |
Resolve issues using GTABSZ as maximum global reference length for 2KB databases |
| DMD043 |
Fix a system quiesce problem caused by a missed wakeup to a slave write daemon |
| JCN452 |
Fix for WTS connections to loopback address |
| DPV2079 |
Correct <LOCK TABLE FULL> on DELETE |
| STC490 |
Fix MAXSCOPE error in DDPMASTER |
| GK255 |
Fix the way journal checkpoint was used |
| CFL984 |
Fix DDP configuration startup issue |
| MAK942 |
If %SYS database was 2K then CSP could get SUBSCRIPT error |
| DLP1125 |
Add GetColumnExtInfo() method to %ResultSet |
Possible Compatibility Issues
PLEASE EXAMINE THE REFERENCES IN THIS SECTION
CAREFULLY.
They document necessary modifications to Caché for this version
that may
affect the way your applications are designed, implemented, executed and/or
administered.
Whether a given changes affects your system will depend on your use of
the feature/facility noted.
Section Table of Contents
- Installation.UNIX
- Languages.Cache Basic
- Object
- Object.C++
- Object.Class Compiler
- Object.Soap
- SQL.JDBC
- SQL.ODBC
- SQL.Query Processing
- System
- System.Lock
- System.TCP Devices
- Utilities
Category: Installation.UNIX
Platforms: Unix
DevKey: ALE349
Summary: Revamped Apache CSP installation on Unix
Description:
The CSP installation on Unix has been changed to use the
same mechanism as on Windows and VMS. Previous versions of
Caché installed the files into cgi-bin.
With this change Caché does not use the /cachesys/csp directory with symbolic links
anymore.
Instead, <cachesys>/csp directory is set in the Apache
configuration file (httpd.conf) and all CSP applications are executed
from this directory.
This eliminates most questions
previously asked during this part of the install.
The URL to see the CSP systems management suite is now:
http://<ip_address>/csp-bin/nph-CSPcgiSys.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Languages.Cache Basic
Platforms: All
DevKey: DAS458
Summary: Implement CacheBasic Sleep command
Description:
CacheBasic Sleep Command:
The Sleep command suspends execution for the specified number of
seconds. Its syntax is
SLEEP Interval
where Interval is the number of second to wait.
Fractional seconds are supported. The resolution of the timer is the
same as for the ObjectScript HANG command.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object
Platforms: All
DevKey: JCN465
Summary: Port Linux platform to GCC 3.2 compiler
Description:
The compiler for the Linux platform has been upgraded. The compiler is now GCC 3.2
which uses the new C++ standard; the previous compiler was 2.95.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
Yes |
Category: Object.C++
Platforms: All
DevKey: IYB134
Summary: CPP Binding Erase removes selected element but nulls subsequent elements
Description:
The Vector Erase() method on the C++ side of the
binding should work like the RemoveAt() method in Caché. It
did not, but rather removed the selected element and all subsequent
elements.
With this change, it now behaves as expected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.C++
Platforms: All
DevKey: IYB137
Summary: Unicode character stream data is truncated on the right half
Description:
Under some conditions, the C++ binding would fail to
return all of the characters in a string converted to Unicode. This
has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP1125
Summary: Add GetColumnExtInfo() method to %ResultSet
Description:
A new method, GetColumnExtInfo() has been added to
%ResultSet. This method accepts the column number as an
input parameter and will return a $list containing the class name and
property name of the property corresponding to the column in the
query. If the column is not based on a property then the returned
information will be an empty $list.
Warning: As usual where upgrades are involved,
this change requires that classes containing queries be recompiled.
Failure to do so may result in <PARAMETER> errors under
some circumstances.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: Object.Soap
Platforms: All
DevKey: MXT489
Summary: Add support for input and output of SOAP headers by SOAP web methods.
Description:
SOAP web services and SOAP web clients are enhanced to support input and
output of SOAP headers within the SOAP envelope. This new header support
works only for web methods that are defined as Methods in an instantiable
class, not for ClassMethods. Web service methods can be plain Methods.
A new XML enabled class, %SOAP.Header, is introduced to represent a
SOAP header. The mustUnderstand and actor attributes are defined as
properties in the base class %SOAP.Header. The default for
mustUnderstand is "0" and the default for actor is "".
Additional properties must be defined in the subclass that represents
the header. The NAMESPACE parameter should be specified in the SOAP
header subclass to specify the XML namespace that the SOAP header is
defined in.
Two new properties and a new parameter are introduced in
%SOAP.WebService and %SOAP.WebClient:
- Property HeadersOut As %SOAP.Header (collection=array);
Any web service or web client method may add instances of any
%SOAP.Header subclass to this array. The index is the element name of
the header. The corresponding headers are then added to the SOAP
response message.
Parameter SOAPHEADERS = <list of headers>;
where <list of headers> is a comma separated list of input
header specifications. Each specification is of the form
"headerName:headerClass" where headerName is the element name of the
supported header and headerClass is the %SOAP.Header subclass that
corresponds to that header. This list defines all headers supported
in the SOAP request.
- Property HeadersIn As %SOAP.Header (collection=array);
Any SOAP header in the SOAP request that is found in the SOAPHEADERS
list is imported as a %SOAP.Header subclass and added to the HeadersIn
array. The web method may then act on these headers as
appropriate.
If any header in the SOAP request has mustUnderstand="1" and the
header element name is not in the SOAPHEADERS list then a SOAP fault
will be returned without processing the message.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT541
Summary: Use binary streams for XML content in web service and web client
Description:
The SAX parser interface was changed to treat
characters streams as containing Unicode data. In fact, the streams
used by web service and web client are actually in the encoding
specified by the XML declaration at the beginning of the XML document.
Therefore, web service and web client support now works with
binary streams.
Externally visible effects of this change:
- CSP is changed to have %request.Content always be a binary stream.
Previously, %request.Content was a character stream for text content
types, e.g. text/xml.
- The requestStream and responseStream arguments used for SOAP
transport the OnSOAPRequest and DoSOAPRequest methods must be binary
streams. This change effects the OnSOAPRequest and DoDOAPRequest
methods.
- The WriteRawMode property is added to %Net.HttpRequest to indicate
that the EntityBody has already been translated.
- In %XML and %SOAP, classes change to using UTF-8 instead of
utf-8.
- %XML.Writer modified to mirror the new behavior of the SAX parser:
- If no stream is passed to OutputToStream a %FileBinaryStream is created.
- The default Charset for %CharacterStream's and %String output is
UTF-16 on Unicode Caché and the default 8 bit charset for the
locale on 8 bit Caché.
- The XML declaration created for UTF-16 charset will be preceeded
by the Unicode BOM.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: SQL.JDBC
Platforms: All
DevKey: MAB209
Summary: Double single quotes in literals won't work
Description:
This change corrects several issues regarding JDBC preparser processing
literals with quotes inside and literals enclosed in parentheses. Double
quotes are now treated as single quotes for parameters.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL.ODBC
Platforms: All
DevKey: JCN460
Summary: Unicode stream data problem from VC++/ODBC
Description:
For European locales using single byte character sets or streams bound to
the Unicode character type (SQL_C_WCHAR), the correct number of bytes of
data is maintained when truncation occurs.
Applications can work around the original problem by binding the data to the
Unicode datatype SQL_C_WCHAR
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL.Query Processing
Platforms: All
DevKey: PVA058
Summary: Fix issues with conditional table maps
Description:
A problem has been fixed where errors like the
following could occur if a conditional map is present for a table, and an
SQL query using the table has host variables. From ODBC, JDBC,
SQL Manager, and dynamic SQL Query, literals are converted to host
variables, so this issue may occur even if the statements
don't directly contain parameters or host variables.
This situation does not occur if the conditional map is a NOTNULL map or the
condition {ifn}'="" is in the map.
It only occurs for other
types of conditions.
The situation is manifest as the error code
<UNDEFINED> in range+19^%qaqpcmp
Warning: The conditional map option, ConditionalWithHostVars, now performs
no function. This option indicated that host variables were not null,
allowing queries against all conditional maps. With this change, host
variables in queries are usable when null or not null.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: System
Platforms: All
DevKey: JLC559
Summary: Fix DTM color compatibility in %XDTM2
Description:
The following changes were made to the behavior of the /COLOR and /WOPEN
mnemonics in
%XDTM2:
- The colors in /COLOR(fg,bg) now follow this scheme:
- 0 - Black
- 1 - Blue
- 2 - Green
- 3 - Cyan
- 4 - Red
- 5 - Magenta
- 6 - Yellow
- 7 - White
- In /WOPEN, instead of always opening the window with white/black
attributes both for the border and the interior, there are now two
options:
- If nothing else is specified, the previous colors establised via
/COLOR(fg,bg) are used by both the border and the window interior.
- Four extra parameters were added to /WOPEN so that it is now possible
to specify the colors of the border and the interior separately as
shown below.
/WOPEN(col,lin,wid,hei,bor,attr,battr,title,tpos,max,
wfc, /* Window foreground color */
wbc, /* Window background color */
bfc, /* Border foreground color */
bbc) /* Border background color */
Note: the "max" parameter is used only for DTM compatibility
but is ignored by %XDTM2.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
No |
Category: System
Platforms: AIX
DevKey: JLC566
Summary: Implement CPUS_USE_ONLN for AIX
Description:
When a logical partition (LPAR) is configured on
AIX, for the purposes of licensing, Caché will count only the
number of CPUs in the partition in which it is running. Previously the
total number of CPUs configured in the machine would be used.
$system.Util.NumberOfCPUs() will also return the number of CPUs
available in the current LPAR.
Note:
This has no impact on concurrent-user-based licenses.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: System
Platforms: All
DevKey: SML388
Summary: Fix lock count inconsistencies.
Description:
On a DCP client, there was a small window during
which the system could attempt to free an already-freed lock. This
has been fixed.
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
No |
Category: System
Platforms: All
DevKey: SML390
Summary: Serialize DDP request for each remote job.
Description:
Under some circumstances, an MSM client system attempting
to gain a lock during a time of network instability could cause the
DDP daemon to crash. This was caused by an mismatch in the systems'
processing of lock/unlock requests. This has
been fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: System.Lock
Platforms: All
DevKey: SML413
Summary: Fix ECP lock zero time out.
Description:
If
a lock is owned by another job on the ECP server, when ECP client
does "Lock ^a(1):0" the lock command won't return until the lock is
released on server. Previously, it returned immediately.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
Yes |
Category: System.TCP Devices
Platforms: HPUX
DevKey: GK268
Summary: Disable TCP Nagle algorithm on all HP sockets.
Description:
This change disables the Nagle algorithm on all HP platforms. (It was enabled.)
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
No |
Category: Utilities
Platforms: All
DevKey: LFT1163
Summary: Add total pages to prompt in ^%SPOOL
Description:
This adds the total number of pages to the print prompt in ^%SPOOL.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Utilities
Platforms: All
DevKey: LFT1165
Summary: %GSIZE does not properly format the output for global names with > 10 characters.
Description:
This prevents the %GSIZE brief display from running
the global name and number of blocks together, and also prevents
splitting the global name and the number of blocks across lines, and
also prevents splitting either the name itself or the number of blocks
itself.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Other changes in this version
The following changes are deemed unlikely to affect
applications in any significant manner. Nonetheless,
InterSystems recommends examining them in view of your own application
and
system needs.
Section Table of Contents
- CHUI
- Config Mgr
- Control Panel
- CSP
- CSP.Gateway
- CSP.Net
- CSP.Tags
- CSP.Web Server
- CSPGUI
- Cube
- Documentation
- Explorer
- Installation
- Installation.UNIX
- Installation.Windows
- Languages.Cache Basic
- Misc
- Networking
- Object
- Object.Activate
- Object.ActiveX
- Object.Class Compiler
- Object.Java
- Object.LanguageBindings
- Object.Library
- Object.Relationships
- Object.Soap
- Object.XML
- SQL
- SQL.DDL
- SQL.JDBC
- SQL.ODBC
- SQL.Privileges
- SQL.Query Processing
- SQLManager
- Studio
- System
- System.Backup/Restore
- System.Cluster Specific
- System.I/O
- System.Journaling
- System.Localization
- System.Lock
- System.Shadowing
- System.Shutdown
- System.StartUp
- System.TCP Devices
- Terminal
- Utilities
Category: CHUI
Platforms: All
DevKey: SAP148
Summary: %DSMCVT gives <MAXARRAY> error on big string data when doing endian conversion.
Description:
Prior to this change, %DSMCVT could exceed the
maximum array size when converting data from big-endian
(Intel, Alpha) to
little-endian (PA-RISC, SPARC) format. This would impede migration.
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL979
Summary: Remote ECP databases cannot be read-only
Description:
With this change, the Read-Only check box is
disabled when editing a remote ECP database.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL984
Summary: Fix DDP configuration startup issue
Description:
Prior to this change, an incomplete DDP
configuration would cause Caché startup to fail under some circumstances.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
Yes |
Category: Control Panel
Platforms: All
DevKey: CFL862
Summary: Fix crash in Control Panel | ECP Network
Description:
A bug has been fixed where the Control Panel crashed
under certain circumstances when you clicked on ECP Network.
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL986
Summary: Configuration Manager gets error 380 when 2K buffers > 4096MB
Description:
A a run-time "invalid property" error could occur
when a 2KB cache size greater than 4096MB was specified. The
Configuration Manager would terminate.
This has been
corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Control Panel
Platforms: All
DevKey: CFL967
Summary: Fix journal dump in Control Panel
Description:
Journal records containing $C(0) were not correctly
displayed in the Control Panel. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Control Panel
Platforms: All
DevKey: CFL970
Summary: Fix Terminate for processes started via Job Servers
Description:
Prior to this correction, a user process started via
the job server could not be terminated via Control Panel.
RESJOB would have to be used to terminate certain processes.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Control Panel
Platforms: All
DevKey: CFL982
Summary: Control Panel doesn't show ECP incoming client node name for Locks
Description:
In previous versions, the Control Panel didn't show
ECP incoming client node name for Locks. It does now.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Control Panel
Platforms: All
DevKey: HYY827
Summary: Fixed <UNDEFINED> error in control panel on source of shadowing
Description:
Fixed a potential <UNDEFINED> error occurrence
in Control Panel in some unusual circumstances. When this happened,
the Control Panel would close.
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: CSP
Platforms: All
DevKey: MAK888
Summary: When importing a project from XML, modify the projects CSP paths if the CSP is imported to a different location
Description:
When a project containing a CSP file was exported from one namespace to
another, the path for the CSP file in the new project remained as the
original path, preventing the CSP file from being loaded. For example, from
USER to SAMPLES namespace, an exported page would change from
/csp/user/test.csp to /csp/samples/test.csp but the project would continue
to refer to /csp/user/test.csp -- which prevented the item from being loaded from
the project. Now, the correct path is created.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: CSP
Platforms: All
DevKey: MAK942
Summary: If %SYS database was 2K then CSP could get <SUBSCRIPT> error
Description:
CSP keeps an association of URL to class names to speed up
finding the correct class to call. A <SUBSCRIPT> error sometimes
occurred when %SYS was
a 2K database. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: CSP
Platforms: All
DevKey: MXT526
Summary: Correct security flaw in CSP broker
Description:
This change removes a security flaw in the CSP
broker facility.
Note: for details, see the item dated
December 4, 2003 referenced in the
alerts and advisories section above.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: CSP.Gateway
Platforms: All
DevKey: CMT130
Summary: Modify the Network Services Daemon clients such that they return the new CGI environment variable
Description:
With this change, the Network Servces Daemon clients have
been modified such that they will now return the new CGI environment
variable 'HTTP_X_UP_SUBNO' to the daemon.
This variable can now be requested via the 'Extra CGI Environment Variables' directive.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: CSP.Gateway
Platforms: All
DevKey: CMT131
Summary: Improve the mechanisms for requesting extra CGI Environment Variables.
Description:
Current versions of the Gateway will automatically
pass the following CGI Environment Variables to Caché with each and
every request.
- AUTH_PASSWORD
- AUTH_TYPE
- REMOTE_ADDR
- REMOTE_HOST
- REMOTE_USER
- HTTP_USER_AGENT
- SERVER_PROTOCOL
- SERVER_SOFTWARE
- SERVER_NAME
- GATEWAY_INTERFACE
- SERVER_PORT
- REMOTE_IDENT
- HTTP_ACCEPT
- HTTP_REFERER
- PATH_TRANSLATED
- CONTENT_TYPE
- HTTP_AUTHORIZATION
- HTTP_COOKIE
- HTTPS
- SERVER_PORT_SECURE
- REQUEST_METHOD
- HTTP_SOAPACTION
- HTTP_ACCEPT_CHARSET
- HTTP_ACCEPT_LANGUAGE
The Gateway can also be configured to send extra variables to Caché
using the following configuration parameter (under the 'Application
Access' section):
Extra CGI Environment Variables
This is a comma-separated list of extra variables required by the
application. The wildcard character '*' can be used to request all
environment variables.
This facility works well for the Gateway's ISAPI (IIS) and NSAPI
(iPlanet) based connectivity options because the DLLs (or UNIX Shared
Objects) have a close working relationship with the web server and, as
such, can easily request extra variables from their hosting
environment. However, with NSD-based connectivity solutions (e.g. as
commonly used for Apache under UNIX) things are slightly more
complicated because the environment variables have to be passed from
the Gateway's CGI module (or Apache API module) to the
NSD for further processing. The web-server facing modules do not have
access to the Gateway's (the NSD in this context) configuration and
cannot know which extra variables are required by the application.
The CSP CGI modules will transmit all the variables listed above to
the NSD with each and every client request. Other non-listed
variables are packaged up into a single variable called 'ALL_ENV'.
Customers using previous versions of the NSD-Gateway addressed the
problem of requesting extra variables by configuring the Gateway to
send 'ALL_ENV' to Caché. The application could then extract the
appropriate individual variables from this compound field.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: CSP.Gateway
Platforms: Unix
DevKey: CMT139
Summary: Improve the Gateway responsiveness with regards honoring the 'Server Response Timeout' at initial connection time.
Description:
This change improves the Gateway's responsiveness
with regards to honoring the 'Server Response Timeout' at initial
connection time.
It introduces techniques that will make sure that the
operating system gives-up trying to establish a connection after a
preset period of time (i.e. the Gateway's 'server response timeout'
value). This enhancement is only applicable to UNIX/Linux
systems.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: CSP.Net
Platforms: All
DevKey: MAK883
Summary: %Net.FtpSession Retrieve method returns 0 when successful
Description:
The Retrieve method of the %Net.FtpSession would
often return 0 instead of 1 even though it had retrieved the stream
from the remote system correctly. It has been changed to consistently
return 1 when successful.
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
No |
Category: CSP.Tags
Platforms: All
DevKey: YSD648
Summary: Web Form Wizard: lower-case HTML tags for XHTML compatibility
Description:
HTML tags must be lower case for XHTML
compatibility. This has been fixed in form wizard and studio new csp page, (since HTML tags are generated as well as csp tags) and in the CSP compiler where it generates script and applet tags.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: CSP.Web Server
Platforms: All
DevKey: MAK863
Summary: Fix minor problem with built-in web server not detecting sessionId
Description:
If a page is submitted to the built-in web server
that uses a multipart MIME post (typically a file upload page), and
cookies are turned off, then CSP embeds the CSPCHD token in the page. The
built-in web server was not detecting this sessionId correctly.
On a private page, it would report that you were logged out and could not
perform this action.
This only affected the built-in web server. Using CSP from a real
web server works correctly in this case.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: CSPGUI
Platforms: All
DevKey: YSD690
Summary: CSP Form Wizard - Disable 'readonly' setting for embedded properties
Description:
The ReadOnly checkbox is now not active for embedded properties of
persistent classes and for the %ID field.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Cube
Platforms: Windows
DevKey: RJW791
Summary: Preferred Server in Registry is updated when changed
Description:
Changing the preferred server in the Caché Cube now
immediately updates the registry. It no longer waits for the Cube to
exit before updating the registry value.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: Documentation
Platforms: All
DevKey: GAB019
Summary: Use server name for class reference documentation
Description:
Prior to this change,
the Caché Class Reference documentation was obtained from
"localhost".
Now the CSP page uses the name of the server it is executing on.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Explorer
Platforms: OpenVMS
DevKey: CFL969
Summary: Fix Export/Import in V mode in Explorer on VMS
Description:
A correction was made in the case where a global exported via
Explorer in Variable Length Record format on VMS not be formatted
properly and could not be imported
by Explorer or %GI.
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
No |
Category: Installation
Platforms: All
DevKey: LRS719
Summary: Fix issues with running user-defined installation routines
Description:
The running of customer-defined routines from cbootuser.rsa has been
made more robust, so that they are better isolated from the INSTALL
routine code and any errors that might occur during their execution
are trapped and logged, and the installation continues.
Note that customer-defined routines are called via DO as they are
loaded. Thus, they should not have an argument list on the main entry
tag. If more than one routine is loaded, and there are dependencies
among them, the user should ensure that all dependent routines are
loaded before they are used.
Additionally, customer-defined installation routines should not OPEN,
USE, CLOSE, or READ the principal device. It is preferable to avoid
doing any I/O using the principal device.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Installation.UNIX
Platforms: AIX
DevKey: LRS733
Summary: Modify parsing of lsattr command output under AIX, in cplatname
Description:
On some AIX systems, cinstall was not
recognizing logical partitions with high processor numbers. This has
been fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Installation.Windows
Platforms: All
DevKey: ALE258
Summary: Upgrade from 2.1.9 does not convert configuration automatically
Description:
The installation wasn't able to determine configuration and
network file names correctly. Therefore conversion didn't happen and
the upgrade could not proceed.
This is corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: Installation.Windows
Platforms: Windows
DevKey: ALE289
Summary: Install CSP Gateway modules for Apache2 and configure Apache2
Description:
The standard installation installs the CSP Gateway and configures Apache 2.0
for the Gateway, when Apache 2.0 is already installed. To select another
web server, use the custom installation.
The URL to see the CSP systems management suite is now:
http://<ip_address>/csp/bin/Systems/Module.cxw
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Installation.Windows
Platforms: Windows
DevKey: ALE307
Summary: Install files for server localization
Description:
Caché now installs files required for server
localization. These files include CSPMessages*.xml, Errors*.xml,
ObjectMessages*.xml and NLS *_src.goq and *_obj.goq files.
Due to the large size of goq files for Asian languages (Chinese, Japanese,
Korean), they are not installed by default. There is an option that is
part of the
Unicode custom install under "Caché Server" to
install them.
All xml files, goq files for all western languages and all files for
installation language are installed.
These files are installed under CacheSys\Mgr\Locale
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Installation.Windows
Platforms: Windows
DevKey: ALE313
Summary: Install Hungarian NLS goq files
Description:
The hun.goq files are installed in CacheSys\Mgr\Locale.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Languages.Cache Basic
Platforms: All
DevKey: CDS394
Summary: Fix Basic compiler failure on function call with no parameter list
Description:
Under some circumstances, the Basic compiler would
overflow the argument stacxk when compiling functions with no argument
list. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Languages.Cache Basic
Platforms: All
DevKey: JN087
Summary: Unary + operator now supported in Basic
Description:
The unary minus operator now does the expected
numeric conversion.
Prior to this change, it would be ignored under some circumstances.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Misc
Platforms: All
DevKey: JCN479
Summary: Build thirdparty executables for Linux on SUSE with GCC 3.2 compiler
Description:
InterSystems now has switched to build on SUSE with
GCC 3.2 rather than RedHat. RedHat executables built previously use
GCC 3.2.3 and are not compatible with the 3.2 release of the
compiler on SUSE.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
Yes |
Category: Networking
Platforms: All
DevKey: GK254
Summary: Fixed recovery of partially processed ECP requests
Description:
Upon server restart, when the last
partially processed request buffer is received, it will skip
already-processed/duplicate individual requests properly.
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Networking
Platforms: All
DevKey: GK255
Summary: Fix the way journal checkpoint was used
Description:
The write journal checkpoint processing was improved
to better handle system interruptions. Previously, there were cases
when the system might have concluded that journalling was turned off.
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
Yes |
Category: Networking
Platforms: All
DevKey: GK257
Summary: Fixed error-trap error frames.
Description:
The
error processor may attempt to get the routine source info, but that
operation may fail because the network is not available. Typically,
this results in the message "Error encountered while processing an
error"
being written to the cconsole.log file. This condition is now
recognized and the extra message avoided.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Networking
Platforms: All
DevKey: GK258
Summary: ECP clients are not picking up ClientReconnectDuration value changes
Description:
Previously,
ECP Timeouts were not persistent. Changes with the Configuration Manager will
persist now with this change.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Networking
Platforms: All
DevKey: GK259
Summary: ECP updates locally cached block of readonly DB.
Description:
Caché ECP has been changed to honor readonly DBs. ECP will return
<PROTECT> error before the request is sent to the server. In
some situations, ECP updated the local cache before sending the
request; the request failed but left the updated local cache intact
with incorrect data.
Note: this change is message level compatible,
backward and forward, except older versions will not honor the
readonly state.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Networking
Platforms: All
DevKey: GK261
Summary: Defining an ECP client causes DCP to fail during startup
Description:
In prior versions, defining an ECP client would cause
incorrect port numbers to be assigned legacy network nodes.
This has been corrected.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
No |
Category: Networking
Platforms: OpenVMS
DevKey: LFT1157
Summary: EIA0: not recognised as ethernet device
Description:
This change adds EIA0 to the ETHERNET_DEVICE_LIST for VMS
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Networking
Platforms: All
DevKey: STC490
Summary: Fix MAXSCOPE error in DDPMASTER
Description:
In some rare cases when using DDP in a clustered
environment, the DDP master process could receive a MAXSCOPE when
restarting after an error. This has been fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: Networking
Platforms: All
DevKey: TTS031
Summary: Fix Intersystems packet driver
Description:
The InterSystems packet driver is now fully "plug-and-play" compliant.
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
No |
Category: Object
Platforms: All
DevKey: DVU892
Summary: Remove word "Caché" from Studio and
Connection Manager title bar
Description:
Remove "Caché" from the title bar of Studio and Connection Manager.
Remove "Caché" from menu item Help->About (Caché) Studio.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object
Platforms: All
DevKey: MAK865
Summary: Under some conditions, the class index and actual classes present could get out of sync
Description:
In some circumstances, a user could delete a class
but the class index for this item was not updated at the same
time. These have been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object
Platforms: All
DevKey: MAK886
Summary: XML import fails with <MAXSTRING>endCSP+16
Description:
Importing large CSP files that were exported as XML
may cause <MAXSTRING> errors on import in some cases depending
on where the record boundaries fall with regard to the XML structure.
This no longer happens.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object
Platforms: All
DevKey: MC422
Summary: Update RoseLink
Description:
The following enhancements have been made to Caché Roselink:
- RoseLInk now uses the %Dictionary classes for its inspection activities
- Several new keywords were added to the Caché tab
- RoseLink now uses XML streams for its data manipulation (as a consequence the 32KB restriction has been lifted)
- Relationship processing has been improved
- Selection boxes now allow multiple selections at once
- Several defects were corrected in the way button states are handled
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object
Platforms: All
DevKey: MC453
Summary: GetErrorText to return multiple errors
Description:
GetErrorText has a defect that prevented it from returning multiple errors. This is fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Activate
Platforms: All
DevKey: JN169
Summary: Prevent <list> error importing objects with huge enumerations
Description:
Caché would report a <LIST> error when
importing Many Microsofts CDO objects at once. This was caused by the object having
a very large enumeration which overflowed the 32K maximum length of a
string, thereby corrupting the list. This has been fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.ActiveX
Platforms: All
DevKey: DPV2102
Summary: LogicalToDisplay() will now report %EXTERNAL(xxx) as type VARCHAR.
Description:
Any column prepared via xDBC of the type %EXTERNAL(xxx) will now report as type VARCHAR.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
|