|
|
|
Caché Documentation
|
|
Release Notes for Maintenance Kits Prior to Caché 5.0.12
|
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.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 |
| Enhancement |
No |
| Critical |
Yes |
Category: Object.ActiveX
Platforms: All
DevKey: DVU903
Summary: Fix application interruption caused by release of uninitialized binarystream.
Description:
Prior to this change, if a CacheObject.BinaryStream instance
was allocated but not used, the application would report an error when
the instance was released. This no longer happens.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP1123
Summary: Generate additional query metadata
Description:
The GetInfo() method of all queries has been extended so additional
metadata can be returned. Specifically, another formal argument has
been added to GetInfo() that is a pass-by-ref argument. If this
argument is sent a true value when GetInfo() is called then GetInfo
will return extended info in the same argument. At this time, the
extended information is a list that corresponds to the colinfo
list. Each element in the list is the property name corresponding to
the column contained in the same element position in the colinfo
list. If the column is not based on a property, then the element value
will be "".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP1136
Summary: Add STMTTYPE to extended query metadata
Description:
A new method has been added to
%ResultSet -
GetStatementType(). This method returns a number corresponding to the
SQL statement type.
- 1 = SELECT
- 2 = INSERT
- 3 = UPDATE
Other
values are also possible but are not common statement types for
%ResultSet queries.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: DLP1158
Summary: Tunetable info overwritten by XML load
Description:
Selectivity values defined in the storage definition
of a class are retained when the class is loaded from CDL or XML
files. Selectivity values contained in the CDL/XML file will overwrite
any saved selectivity values.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK828
Summary: Do not generate member method code if this method is overridden by user code
Description:
Caché generated the default method for Get even if it was overriden. This
has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK829
Summary: Allow multiple arguments to an object constructor %New method
Description:
With this change, up to ten parameters are permitted
to be passed to the %New method. These are in turn passed
to the %OnNew method to allow more flexibility in creating a new object.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK860
Summary: Prevent <UNDEFINED> in the class compiler when a dependency error exists.
Description:
When you compile some classes with a dependency error after reporting this error the class compiler was reporting:
<UNDEFINED>CompileList+66^%occCompile
Now it just reports the dependency error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK876
Summary: Prevent potential clash in use of ^CacheTempMAC if compiling a class with the same name in two namespaces at same time
Description:
If a class with the same name is present in two
namespaces and it is compiled at the same time then there is a
potential clash in the ^CacheTempMAC global which could result in the
class compile failing when it should work correctly. This usage collision
is now avoided.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK884
Summary: Report errors making class descriptor better
Description:
When creating the class descriptor if the routine to
call for a method is invalid report an error message of the problem
rather than failing with an <UNDEFINED> error. The message should
allow the real cause of the error to be tracked down more easily.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK891
Summary: Should use lock escalation when compiling huge number of classes
Description:
Compiling a large number of classes in a namespace may fill the lock
table or the internal system class lock, causing the compilation to fail
with a lock table full error or <TOO MANY CLASSES>. Now, this no longer
occurs but only one large namespace (4,000 classes or more) may be compiled
at a time.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Class Compiler
Platforms: All
DevKey: MAK897
Summary: Resolve ambiguous optimization in class compiler
Description:
The compiler now correctly optimizes code of this syntax:
Do ..Method().OtherMethod()
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Java
Platforms: All
DevKey: MAB207
Summary: Enhancement in Dynamic Java Binding when there is no Projected Java class
Description:
The Caché Java Reflection now uses a generic projection instead of a
projected Java class.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.Java
Platforms: All
DevKey: MAB210
Summary: Fixes in Java client side collections
Description:
A server error message now is reported instead of an ArrayIndexOutOfBounds
exception when there is an error fetching an object collection from the
server.
The method SList.addAll() now successfully insert into an empty SList.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Java
Platforms: All
DevKey: MAB236
Summary: Support for Fileman Date and Timestamp in Java client
Description:
Caché now projects to Java clients properties of type %Library.FilemanDate
and %Library.FilemanTimeStamp to java.sql.Date and java.sql.Timestamp,
respectively.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1261
Summary: Fix Java compile problems when reserved words are used
Description:
If the user uses certain names in their program, it
used to be the case that the generated program would not compile
because of conflicts with names used in CacheDB.jar. Now Caché
prefixes
such names with an underscore. This resolves the conflict and the
generated code will now compile.
Also get/set{Database/Id} are changed to get/set_{Database/Id}
(underscore has been added between the get or set and the name).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.LanguageBindings
Platforms: All
DevKey: JSL1295
Summary: Support Fileman Date and Timestamp in generated Java binding
Description:
Properties of %FilemanDate and %FilemanTimeStamp types are created in the
Java projection.
Note: These types are not yet supported in BulkInsert or the C++
binding.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.Library
Platforms: All
DevKey: MAK900
Summary: Type of argument to IsValid property method was incorrect
Description:
The property IsValid method was always taking an
argument of type %String but this is incorrect as some of the
arguments may not be %String type. This now takes arguments of a type
which allows any class to act as a subclass.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Relationships
Platforms: All
DevKey: MAK893
Summary: Prevent <UNDEFINED> error in %AddToSaveSet when saving a relationship object
Description:
When an application attempted to save a relationship
object, under some circumstances %AddToSaveSet would report an
<UNDEFINED> error.
This no longer happens.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT483
Summary: WSDL reader extensions to handle WSDL for UDDI specification.
Description:
If no services are specified in a WSDL, then create
a web client proxy class for each binding. The UDDI WSDLs are of this
form. The default classname for this class is
<BindingName>.<BindingName>.
Allow a web client class to not have a LOCATION parameter specified.
In this instance, the location will need to be specified at run-time.
Change method name handling to replace _ and - with "" instead of "u" as previously.
Extend the web client to handle lists (i.e. maxOccurs="unbounded" in
the schema) as method arguments in a document/literal WSDL. Changes
required are:
- Support argument parameters for a web method by converting these
parameters to property parameters in the %SOAP.Descriptor class for
the web service or web client.
- As an exception to (1), if the type of an argument is %ListOfObjects
or %ListOfDataTypes and ELEMENTTYPE is specified as a argument
parameter, then create the property in the %SOAP.Descriptor class with
the type given by the ELEMENTTYPE and Collection="list". This gives
us a way to easily create list argments to a web method.
- The WSDL reader uses (2) in order to handle maxOccurs="unbounded"
for the input or output parameters.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT487
Summary: Make SOAP web client class instantiable.
Description:
The SOAP client wizard now generates a new,
instantiable form of client classes. This new form is recommended
for all future usage.
The new (instantiable) form is now
generated by the SOAP client wizard, is recommended and will of course
also work.
The SOAP web client has been modified to be an instantiable subclass of
%RegisteredObject. The web methods generated by the SOAP WSDL reader
will be now be instance methods. The current ClassMethods will
continue to work.
Additional properties will be added to the %SOAP.WebClient class to
allow control of the SOAP request:
- Location - override the location URL
- Timeout - timeout for waiting for web response
%SOAP.WSDL.Reader (and therefore the SOAP client wizard) are changed
to create instantiable web client classes using the new properties
defined above.
Note: The old form continues to work.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT488
Summary: Allow use of transport protocol other than HTTP for SOAP web services
Description:
To implement a web service using your own transport,
get the SOAP message as a stream using your transport, instantiate the
web service class and call the OnSOAPRequest class method of the web
service class. On SOAPRequest is defined as:
Method OnSOAPRequest(action, requestStream, responseStream)
where
- action is a %String that specifies the SOAP action. The piece of
the action string after the last "." is used as the method name for
using the correct descriptor class. If action is "", then the element
name from the first element (the wrapping element) in the SOAP Body is
used as the method name.
- requestStream is a stream that contains the SOAP message encoded
according to the encoding attribute of the XML directive.
- responseStream is a character stream produced as the SOAP response
that contains the response SOAP message encoded in UTF-8.
responseStream may either be created before calling OnSOAPRequest and
passed in or a variable may be passed by reference that will be
assigned a %FileCharacterStream created by OnSOAPRequest.
An error will be indicated by returning a SOAP fault in response stream. No
%Status is returned.
A SOAP transport class may be specified to %SOAP.WebClient by
setting the Transport property of the web client to an instance of the
transport class. The SOAP transport class may specify the
DoSoapRequest method for the client class and may have additional
properties to be used by the transport class.
If no transport class is specified the default transport is HTTP.
To implement a web client, the transport class should contain a
DoSOAPRequest method that will be called by the web client with the
request. The web client class MUST be an instantiable web client.
The deprecated web client that uses class methods does not support use
of a transport class. The responsibility of DoSOAPRequest is to
transport the request to the service and obtain the response. The
signature of DoSOAPRequest is:
Method DoSOAPRequest(webClient,
action,
requestStream,
responseStream) As %Status
where
- webClient is the oref of the web client class
- action is a %String that specifies the SOAP action.
- requestStream is a stream containing the request encoded in
utf-8.
- responseStream is a %FileBinaryStream argument that should be
used by DoSOAPRequest to write the response. responseStream must
contain data in the charset specified by the encoding attribute of the
?xml directive. utf-8 is recommended.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT490
Summary: Web Services with SoapBindingStyle=rpc and SoapBodyUse=literal
Description:
Add support for SOAP web services and web clients with SoapBindingStyle=rpc and SoapBodyUse=literal.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT491
Summary: Use stream properties for %CharacterStream and %BinaryStream web method arguments
Description:
If a web method argument is %CharacterStream,
%FileCharacterStream or %GlobalCharacterStream, use a character stream
property in the %SOAP.Descriptor class for this argument. This allows
the use of the CONTENT="mixed" property parameter with this argument.
For example,
arg As %FileCharacterStream(CONTENT="mixed")
may be used for a mixed content character stream.
If a web method argument is %BinaryStream, %FileBinaryStream or
%GlobalBinaryStream, use a binary stream property in the
%SOAP.Descriptor class for this argument.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT492
Summary: Support one-way SOAP messages
Description:
A method in a web service may be defined to be
"one-way". This definition is done by not defining an "output"
message for the operation in the WSDL. In this case, the method must
return no value and no SOAP response is expected to the message. The
exact meaning of "no response" is somewhat open for interpretation.
We will ignore any response except a SOAP fault which we will process
as per usual. The idea will be to be as forgiving as possible to
support various interpretations. Note that this is different from a
request-response SOAP message (the usual form) with an empty response.
In the request-response, case an empty response element within the
SOAP Body is always expected.
The return type %SOAP.OneWay is used for both web service and web
client methods to indicate that message is one-way. For example,
Method send(x as %String) as %SOAP.OneWay
One-way methods should normally not be used even when no return type
is expected, since the use of request-response is much more common,
supported and expected.
When implementing a SOAP web service transport, OnSOAPRequest will
return an empty responseStream unless a SOAP fault occurs in which
case the responseStream will contain the SOAP fault.
When implementing a SOAP web client transport, the callback now has an additional argument
Method DoSOAPRequest(webClient,
action,
oneWay,
requestStream,
responseStream) As %Status
where OneWay = 1 if the no response is expected. Default is 0.
Note additional argument in the middle for DoSOAPRequest.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT493
Summary: WSDL reader to avoid creation of ambiguous code
Description:
For web client method that returns no value, the
WSDL reader will generate code with extra parentheses to avoid an
ambiguous construct which causes problems for compiler optimizing.
The code should be
Do (..WebMethod(methodname)).Invoke(....)
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT494
Summary: List arguments created by WSDL reader with ELEMENTTYPE need XMLNAME
Description:
When a list argument for a web method is needed, the
WSDL reader needs to insure that the correct element name is kept by
creating an XMLNAME property parameter. XMLNAME is needed because of the
change of type from %ListOfObjects to the base type when creating
property in descriptor class will use the XMLNAME in the base class
which isn't correct.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT497
Summary: Allow override of method to write the SOAP body of a SOAP request
Description:
Allow a web client class to take responsibility for
writing the SOAP body of the SOAP request. Specify the name of the
method to call to write the SOAP body by putting the method name into
the WriteSOAPBodyMethod property of the web client class. For example
Method test(..... [WebMethod]
{
Set ..WriteSOAPBodyMethod="override"
Do ..WebMethod("test").Invoke(.....
Set ..WriteSOAPBodyMethod=""
}
The signature of the override method is
Method override(proxy As %SOAP.ProxyDescriptor, tag As %String) As %Status
where
- proxy is the order of the descriptor class instance for this web method
- tag is the top level tag
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT498
Summary: Ignore web services other than SOAP services in WSDL
Description:
Ignore any services that a WSDL defines which bind to other than SOAP 1.1 bindings.
Also change to accept transport other than HTTP in the SOAP binding.
Create a comment to describe the transport. It is the user's
responsibility to create an appropriate transport.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT499
Summary: Fix bug in assigning names of classes created for inline complexTypes by the XML schema wizard
Description:
When names were generated for classes created for
inline complexTypes by the XML schema wizard, some properties that
referenced that type were not fixed up. Fixup of property type
references is now correct.
Previously classes were considered identical and rmeoved if all
property names were equal. This lead to unlike classes incorrectly
being represented by a single class. This problem was fixed by a
change to use equality of class parameters and property names, types
and parameters to establish equality of classes.
Correct overly aggressive folding of type references into collections
that lead to losing elements in XML.
Support includes a schema that has no target_Namespace and no default
namespace. This situation is treated as the target_Namespace and
default namespace being the same as the including schema per XML
specification.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: Object.Soap
Platforms: All
DevKey: MXT501
Summary: Do not, by default, validate SOAP messages against a schema
Description:
Change the web service and web client classes to
pass the SAX flags to the SAX parser as specified by the new SAXFlags
property. The default for SAX flags will no longer do schema-based
validation of SOAP messages. Since this level of validation is not
really needed for SOAP, it hurts performance and causes problems with
not knowing the location of the schema on the target system.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT503
Summary: WSDL Reader should not give error for soap:header
Description:
Ignore soap:header element in binding section. Previously an error was returned.
The header classes neeeded to manually put in headers are generated.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.Soap
Platforms: All
DevKey: MXT504
Summary: Fix method method names by WSDL reader not being unique
Description:
Class name is restricted to be unique in the first
25 characters. Make the descriptor classes for the generated web
client be unique in 25 characters by truncating and appending unique a
integer as necessary.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.XML
Platforms: All
DevKey: MXT463
Summary: Support NAMESPACE parameter of XML enabled classes.
Description:
This change adds support for the NAMESPACE class
parameter for XML enabled classes. The NAMESPACE parameter specifies
the XML namespace to be used when that class is projected to XML.
The NAMESPACE parameter is supported by %XML.Writer as the namespace
to use when exporting a class. If the NAMESPACE parameter is
specified for a class, then the namespace specified in the class is
always used even if the DefaultNamespace property is specified for
%XML.Writer or the namespace argument is specified for a %XML.Writer
method.
However, direct calls to XMLExport ignore the NAMESPACE class
parameter, since XMLExport does not directly support XML namespaces.
The NAMESPACE parameter is supported by %XML.Reader as the required
namespace for a class when importing an XML document.
In addition, the XMLPROJECTION property parameter is extended with a
new value, "elementref", that indicates that this element is defined by
a ref= attribute to a global element, possibly in another namespace.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.XML
Platforms: All
DevKey: MXT479
Summary: Change XML Schema wizard to save namespace information
Description:
As an optional feature of the XML Schema wizard,
the schema wizard saves XML namespace by using the NAMESPACE parameter
of the generated classes and marking properties created for
<element ref=...> tags as XMLPROJECTION="elementref". This
behavior is controlled by the optional CreateNamespace %Boolean.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.XML
Platforms: All
DevKey: MXT480
Summary: Handle more general specification of parameters for document literal WSDL
Description:
For document literal WSDL, SOAP must to deal with a
parameter element that does not specify complexType inline, rather it
use type= attribute of the parameter element.
Allow specification of package name as an argument to Process method
of %SOAP.WSDL.Reader to handle the case where default package name will
not result in unique class names with class descriptor limits.
Do not require message elements to have a name attribute with value of "parameters".
Fix an issues where the SOAP wizard display would be blank for the file:// protocol.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: Object.XML
Platforms: All
DevKey: MXT485
Summary: Cleanup XML schema reader api and allow control from UI
Description:
Add a new command line interface, Process, to
%XML.Utils.SchemaReader that is instantiated and controlled by
setting properties. Keep the existing ProcessSchema interface.
Modify ParseSchema to use the same properties.
The properties that control %XML.Utils.SchemaReader are:
- MakePersistent -- if true(1) create persistent classes, else create
registered classes. Default is true.
- MakeRelationships -- if true(1), convert list collections of
persistent classes to relationships. Default is true.
- MakeNamespace -- if true, add NAMESPACE parameter to generated classes. Default is false(0).
- Debug -- debug level. Additional output for levels >0. Default is 0.
- TestFlag -- if true, make output repeatable for unit test, e.g. no dates. Default is false(0).
Add flags to the user interface template to allow control of MakePersistent, MakeRelationships and MakeNamespace.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.XML
Platforms: All
DevKey: MXT502
Summary: XML Schema Reader fixes
Description:
Implement <xs:any> element as an element with
type of
%XML.String and XMLPROJECTION="any" which is a new
XMLPROJECTION that just displays the property value with no containing
tag. The property must be defined with CONTENT="mixed" and the value
should have a containing tag.
XMLPROJECTION="elementref" was not being generated for ref= of element
with type attribute specified. This has been fixed.
Make a created class Abstract if the abtract="true" attribute is
specified for a top-level complexType or element.
Allow character and binary stream properties to have XMLPROJECTION="content".
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: Object.XML
Platforms: All
DevKey: MXT522
Summary: Fix ExportToString reporting <MAXSTRING> error
Description:
This method has been changed to return
error
%Status if result of ExportToString will be > 32K.
Add ByRef %Status return argument to GetXMLString method of %XML.Writer.
Method signature is
Method GetXMLString(ByRef status As %Status) As %String
Return error %Status if result string > 32K.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV1873
Summary: Support LENGTH(expr) as SQL Scalar function
Description:
We now support LENGTH(expr) as a synonym for {fn LENGTH(expr)}
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV2020
Summary: Correct error reporting during preparsing in Dynamic SQL
Description:
If an SQL Dynamic Query results in an error during
SQL preparsing, the error will now be returned properly rather than
crashing. For example:
USER>Set rs = ##class(%ResultSet).%New("%DynamicQuery:SQL")
USER>Set xx="Select %ID From Sample.Person Where Name like ""A%' order by Name"
USER>Set sc = rs.Prepare(xx)
USER>Do $SYSTEM.OBJ.DisplayError(%objlasterror)
ERROR #5521: SQLError: SQLCODE = -3
SQL ERROR #3: Closing quote () missing^Select %ID
From Sample.Person Where Name like "A%' order by Name
Prior to this fix, Set sc = rs.Prepare(xx) would crash with an
<UNDEFINED> error and the query would fail.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV2076
Summary: ConvertDollarH2Date ignores $$SetDCFormat^%NLS("DateSeparator",".")
Description:
An issue has been fixed where the wrong value might
be returned from the SQL TO_DATE function is the process was using a
non-default DateSeparator and/of DateFormat.
| Likelihood |
Moderate |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV2079
Summary: Correct <LOCK TABLE FULL> on DELETE
Description:
A problem has been fixed which was introduced in
Caché 5.0.3 where the lock table could fill up if
thousands of rows were deleted from a table within a single
transaction and the table had at least one unique constraint defined
on it. When this happened, application would hang or terminate.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: SQL
Platforms: All
DevKey: DPV2088
Summary: Fix problems with Foreign Key constraints and $Piece access type
Description:
In some situations, a class compilation might
result in a generated syntax error in the compiled table routine if
the table had a single field foreign key constraint and the field in
the foreign key was mapped in a subscript level of a map using an
Access Type of Piece (in %CacheSQLStorage). This has been fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV2089
Summary: Implement many SQL Functions in $SYSTEM.SQL.<Function>()
Description:
The following SQL Functions have been provided as
API entry points in $SYSTEM.SQL.<Function>() so they can be
easily called from ObjectScript code.
- $SYSTEM.SQL.ABS(val)
- ABS returns the absolute value, which is always zero or a positive
number
- $SYSTEM.SQL.ALPHAUP(stringexp)
- ALPHAUP returns the Alphaup collation of the passed in value
- $SYSTEM.SQL.CEILING(val)
- CEILING is a scalar numeric function that returns the smallest
integer greater than or equal to a given numeric expression
- $SYSTEM.SQL.DATEADD(datepart,val,dateexp)
- DATEADD is a general date/time function that returns a date
calculated by adding a certain number of date parts (such as hours or
days) to a specified timestamp
- $SYSTEM.SQL.DATEDIFF(datepart,startdate,enddate)
- DATEDIFF is a general date/time function that returns the interval
between two dates
- $SYSTEM.SQL.DATENAME(datepart,dateexp)
- DATENAME is a general date/time function that returns a CHARACTER
STRING containing the name of the specified date part of a date/time
value.
- $SYSTEM.SQL.DATEPART(datepart,dateexp)
- DATEPART is a general date/time function that returns an INTEGER
representing the specified date/time part of the specified date/time
expression.
- $SYSTEM.SQL.DAYNAME(dateexp)
- DAYNAME is a date/time function that returns a character string
containing the name of the day in a given date expression.
- $SYSTEM.SQL.DAYOFMONTH(dateexp)
- DAYOFMONTH is a date/time function that returns an integer from 1
to 31 that corresponds to the day of the month in a given date
expression.
- $SYSTEM.SQL.DAYOFWEEK(dateexp)
- DAYOFWEEK is a date/time function that returns an integer from 1
to 7 that corresponds to the day of the week in a given date
expression.
- $SYSTEM.SQL.DAYOFYEAR(dateexp)
- DAYOFYEAR is a date/time function that returns an integer from 1
to 366 that corresponds to the day of the year in a given date
expression.
- $SYSTEM.SQL.FLOOR(val)
- FLOOR is a numeric function that returns the largest integer less
than or equal to a given numeric expression
- $SYSTEM.SQL.HOUR(timeexp)
- HOUR is a date/time function that returns an integer from 0 to 23
that corresponds to the hour component in a given date-time
expression.
- $SYSTEM.SQL.MINUTE(timeexp)
- MINUTE is a date/time function that returns an integer from 0 to
59 that corresponds to the minute component in a given date-time
expression.
- $SYSTEM.SQL.MONTH(dateexp)
- MONTH is a date/time function that returns an integer from 1 to 12
that corresponds to the month in a given date expression.
- $SYSTEM.SQL.MONTHNAME(dateexp)
- MONTHNAME is a date/time function that returns a character string
containing the name of the month in a given date expression.
- $SYSTEM.SQL.QUARTER(dateexp)
- QUARTER is a date/time function that returns an integer from 1 to
4 that corresponds to the quarter of the year in a given date
expression.
- $SYSTEM.SQL.SECOND(timeexp)
- SECOND is a date/time function that returns an integer from 0 to
59 that corresponds to the second component in a given date-time
expression.
- $SYSTEM.SQL.SQLSTRING(stringexp,maxlen)
- SQLSTRING returns the SqlString collation of the passed in
value
- $SYSTEM.SQL.SQLUPPER(stringexp,maxlen)
- SQLUPPER returns the SqlUpper collation of the passed in
value
- $SYSTEM.SQL.STRING(stringexp,maxlen)
- STRING returns the String collation of the passed in value
- $SYSTEM.SQL.TOCHAR(expr,format)
- TOCHAR is a general SQL string function that converts a given date
or number value to a string.
- $SYSTEM.SQL.TODATE(dateexp,format)
- TODATE is a general SQL string function that converts a given
string expression to a value of DATE data type.
- $SYSTEM.SQL.UPPER(stringexp)
- UPPER returns the Upper collation of the passed in value
- $SYSTEM.SQL.WEEK(dateexp)
- WEEK is a date/time function that returns an integer from 1 to 53
that corresponds to the week of the year in a given date
expression.
- $SYSTEM.SQL.YEAR(dateexp)
- YEAR is a date/time function that returns an integer in the range
1840-9999 that indicates the year in a given date expression.
For more information about each of the functions above, see the documentation for the matching SQL function in the Caché SQL Reference.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV2093
Summary: Implement $LIST, $LISTDATA, $LISTFIND, $LISTGET, $LISTLENGTH, and $PIECE functions
Description:
The following new SQL Scalar functions have been
implemented. The functions mimic the ObjectScript functions of the
same name.
- $PIECE(plist,delimiter,from,to)
- This function returns data of type VARCHAR
- $LIST(list,position,end)
- This function returns data of type VARCHAR
- $LISTDATA(list,position)
- This function returns data of type SMALLINT.
- $LISTFIND(list,value,startafter)
- This function returns data of type SMALLINT.
- $LISTGET(list,position,default)
- This function returns data of type VARCHAR.
- $LISTLENGTH(list)
- This function returns data of type SMALLINT.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV2100
Summary: SQL: Implement $EXTRACT, $FIND, and $LENGTH functions
Description:
The following new SQL Scalar functions have been
implemented.
The functions mimic the ObjectScript functions of the same name.
- $EXTRACT(expression,from,to)
- This function returns data of type VARCHAR
- $FIND(string,substring,position)
- This function returns data of type SMALLINT
- $LENGTH(expression,delimiter)
- This function returns data of type SMALLINT
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV2109
Summary: Fix incorrect setting of $Bit for SQLStorage
Description:
A defect has been fixed where SQL INSERT, UPDATE,
and DELETE did not work properly if a table had a Bitmap Extent index,
but no Bitmap index.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: SQL
Platforms: All
DevKey: DPV2140
Summary: SQL Fix: Handle DataAccess expression with "(" in global name
Description:
A bug has been fixed where a class using
%CacheSQLStorage with a DataAccess expression that contains a global
reference with a "(" in the global name would not compile properly.
An example DataAccess expression which caused the problem is:
^[$Piece(IVIndex({L1}),"^",1)]IVPatient
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV2143
Summary: SQL Fix: Support global reference with a "(" but no subscripts.
Description:
A bug has been fixed where a table and queries
against a table would not compile if there was a mapping to a global
which contained no subscripts, but there was at least one "(" in the
global reference. An example global reference which caused the
problem is:
^[$Piece(%NSP({L1}),"^",1)]IPatientSys
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV2151
Summary: Keep class definition up-to-date after tuning the table
Description:
After tuning a table, the class definition that projected the table
definition will be marked as up-to-date. The class definition will be
updated with the new EXTENTSIZE and SELECTIVITY parameter values, but will
not be marked as modified.
All dynamic SQL and xDBC SQL queries will use the new EXTENTSIZE and
SELECTIVITY values the next time the query is prepared. Class queries,
embedded SQL in a class definition, and stand-alone routines must be
manually recompiled for the queries to be optimized with the new values.
| Likelihood |
High |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: SQL
Platforms: All
DevKey: DPV2158
Summary: Do not tune external tables; keep-up-to-date now configurable
Description:
There is a new parameter to TuneTable called KeepClassUpToDate. This
flag takes 1 or 0. If 1 is passed in the table/class will be tuned
and the EXTENTSIZE and property SELECTIVITY settings will be updated
in the class definition, but the class timestamp will not change,
which means the class will still be considered up-to-date. If 0 is
passed in, the class definition timestamp value will be updated and
the class will be considered NOT up-to-date. The default value for
KeepClassUpToDate is 0.
The API calls to TuneTable are now defined as:
Do $SYSTEM.SQL.TuneTable(<table name>,<update>,<display>,.errors,<KeepClassUpToDate>)
and
Do TuneTable^%apiSQL((<table name>,<update>,<display>,.errors,<KeepClassUpToDate>)
SQL Manager has not been updated yet to allow the setting of the
up-to-date flag for the class when tuning the table. This will be
added in the near future.
There is also one other change in behavior. When all tables are tuned
(by calling (Do $SYSTEM.SQL.TuneTable("*",...)), the utility no longer
attempts to gather statistics for and tune External tables linked
through the SQL Gateway.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: SQL.DDL
Platforms: All
DevKey: DPV2078
Summary: DDL CREATE TABLE/VIEW works when security is off and user not logged in
Description:
A bug has been fixed where it was not possible to
create a table or view through SQL Manager if SQL Security was turned
off and no username was provided upon log in to the SQL Manager. Now,
if this scenario occurs, the table or view will be created with an
owner of _SYSTEM.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL.JDBC
Platforms: All
DevKey: AND363
Summary: Set current row to 0 (before first) after delete/insert/updateRow has been executed
Description:
Until now,
Caché
attempted to restore the current row after deleteRow, insertRow
or updateRow was executed. Under some conditions, this can possibly result
in invalid cursor state. With thischange, Caché sets the current cursor position
to BEFORE FIRST (0) right after refetching the result set.
ResultSet.getRow() was also corrected so that it returns 0 if the
cursor is positioned before/after the first/last row.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL.JDBC
Platforms: All
DevKey: JCN428
Summary: Add jdbc documentation to javadoc
Description:
This change allow the building of documentation for jdbc classes:
com.intersys.jdbc.CacheConnectionPoolDataSource and com.intersys.jdbc.CacheDataSource
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
Yes |
| Critical |
No |
Category: SQL.ODBC
Platforms: All
DevKey: JCN440
Summary: Fetch password from registry if Username passed in matches registry entry
Description:
The SQLDriverConnect API prompts for a password if
DSN and UID are passed in without specifying the password, regardless
of what exists in the registry for the password value.
The password will now be read from the registry if the
password is not passed and the UID passed into SQLDriverConnect
matches that found in the registry.
This was affecting Crystal Reports use.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: SQL.ODBC
Platforms: All
DevKey: JCN451
Summary: Display DSN Help as single screen
Description:
The Help for Caché ODBC DSN has been
streamlined.
It was changed to just display
one screen of help and skip displaying the index and find
tabs.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
No |
Category: SQL.ODBC
Platforms: All
DevKey: JCN452
Summary: Fix for WTS connections to loopback address
Description:
Connections from Terminal Server processes via the
loop back address were not getting counted properly as separate
connections. Now they are.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
| Critical |
Yes |
Category: SQL.ODBC
Platforms: All
DevKey: JCN454
Summary: SQLGetData returns uneven byte length for Unicode
Description:
When performing a Link to a Table from MS-Access, and
then opening it results in the error message "The Width of a Unicode text
column must be an even number of bytes". This has been corrected.