This document is the Caché 4.1.1 -> 4.1.15 cumulative change summary. The Caché 4.1 Release Notes provide detailed information on how to get started and the new features in the 4.1 general release.
| Special Note Regarding Clustered Databases on OpenVMS |
Category: Clusters
Platform(s): OpenVMS
Description: In OpenVMS cluster configurations, 8-KB formatted databases are preferred to 2-KB formatted databases. 8-KB formatted databases have additional recoverability in the event of a cluster node crash while multiple nodes are updating the same block simultaneously.
| Special Note Regarding Linux ODBC |
Category: ODBC
Platform(s): Linux
Description: The Caché ODBC client driver for Linux is not automatically installed. For detailed instructions on how to install the client ODBC component on Linux, see the provided ODBC Configuration document (odbcconf.txt, which is located on the installation media for Linux in the /dist/ODBC/ directory). This does not affect configurations in which Caché on Linux is serving ODBC requests from other clients.
| Special Note Regarding Mag Tape Backup Performance Upgrade for Windows | [LRS675] |
Category: System.Backup/Restore
Platform(s): Windows
Description: This Caché maintenance kit includes a revision in the backup utility that significantly improves performance for certain tape devices on Windows platforms. This may, however, render Caché unable to read backups from previous maintenance kits and versions.
For tape drives such as a DLT4, the backup block was being written out as a series of much smaller blocks. This revision significantly improves performance by ensuring that a single contiguous block is written, but it also means that a backup generated on the same hardware before this fix cannot be restored by a version of Caché with this fix.
| Caution: Backups made on certain kinds of tape drives on previous versions under Windows might not be able to be restored by a version with this revision. Customers should make a new backup immediately after upgrading and/or retain a Caché instance of the prior production version. |
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Medium | Medium | Yes | Yes |
| Fixed Field List for Outer Join | [AK501] |
Category: SQL.Query Processing
Platform(s): All
Description: Previously, certain kinds of outer joins could cause incorrect code generation resulting in <UNDEFINED> errors at runtime. This has been corrected.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Addressed LOCKTAB Display of DTM Locks | [DAS453] |
Category: System
Platform(s): All
Description: Previously, LOCKTAB was not displaying locks from DTM clients properly. This has been corrected.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | Yes | No |
| Fixed %GSIZE Use of Alternate Device | [LFT974] |
Category: Utilities
Platform(s): All
Description: Previously, if you specified an alternate device for the %GSIZE report but got an error message because the global had no data, then the output would not display correctly on the alternate device, but instead would switch to the console. This has been corrected.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Fixed Cluster Failover Potential Hang | [SML357] |
Category: System
Platform(s): All
Description: When jobs were issuing delock requests during cluster failover, there was a slight possibility of processes hanging after the failover was complete.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | Yes | No |
| Fixed Erroneous Blocks Copied Field in GBLOCKCOPY | [STC454] |
Category: System
Platform(s): All
Description: When using GBLOCKCOPY to copy data from one database to another database or namespace, an error might have been reported that the number of blocks copied did not match the calculated number of blocks to copy. This false error report was incorrect. The data was fully copied. This error has been eliminated.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Special Note Regarding Clustered Databases on OpenVMS |
Category: Clusters
Platform(s): OpenVMS
Description: In
OpenVMS cluster configurations, it is highly recommended to use 8-KB
formatted databases, rather than 2-KB formatted databases. Recoverability,
in the event of a cluster node failure, is far superior with 8-KB formatted
databases.
| Special Note Regarding Linux ODBC |
Category: ODBC
Platform(s): Linux
Description: Caché 4.1
provides Linux ODBC support through a Caché 5.0-based client.
See the provided ODBC Configuration document (odbcconf.txt) for information
on how to use this client. The odbcconf.txt file refers to an automatic
installation of the ODBC driver that is only part of the Caché 5.0
installation; this driver is not automatically installed as
part of the Caché 4.1 installation.
| Addressed Runtime Error in View Integrity Log (Control Panel) | [CFL516] |
Category: Control Panel
Platform(s): All
Description: Previously,
if you clicked View Integrity File for a remote system (from the Caché Control
Panel's Local Databases folder), did not select a log file to be displayed,
and then closed the Display File dialog, this would cause the Control
Panel to generate a runtime error. This has been corrected.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Increased Capacity for Multiple Multivolume Databases | [NGA107] |
Category: System
Platform(s): All
Description: Previously,
when a Caché environment using 2-KB databases was configured
to mount multiple multivolume databases, then some of those databases
could fail to mount. Caché has been changed to accommodate a
far greater number of multivolume databases. Before it was corrected,
this issue would appear during database setup.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | Yes | No |
| Addressed Issue with Local Variable Corruption When Reading From a Caché Device | [LFT1076] |
Category: System
Platform(s): All
Description: An issue was addressed where reading from a Caché device could corrupt local variables under two conditions:
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Medium | Low | Yes | No |
| CACHETEMP Size Characteristics Now Preserved Across Caché Restarts | [JO1591] |
Category: System
Platform(s): All
Description: The
expansion and maximum size characteristics of CACHETEMP are now preserved
across Caché restarts. Additionally, after restarting Caché the
current size of CACHETEMP is either the current actual size of the
database or 240MB, whichever is smaller. The purpose of limiting the
initial size of CACHETEMP to something smaller than the actual size
is to minimize the delay in starting Caché.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| High | Low | Yes | Yes |
| CACCVIO-PID.LOG File Now Created for PAGRDERR and PAGRDERRXM Errors | [DMD038] |
Category: System
Platform(s): OpenVMS
Description: Caché logs
information for certain access violations on OpenVMS hardware that
it has not caused but that are relevant to it. Previously, information
related to the SS$_PAGRDERR or SS$_PAGRDERRXM errors were not logged;
these have been added. The addition of logging for these errors should
aid in debugging OpenVMS problems which have been limiting Caché performance.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Ensured Proper Purging of Journal Files | [HYY566] |
Category: Journaling
Platform(s): All
Description: Addressed
a problem where a purged journal file erroneously appeared in JRNDUMP
or the Caché Control Panel.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Medium | Low | Yes | No |
| Corrected Potential Journal Corruption Issue | [HYY743] |
Category: Journaling
Platform(s): OpenVMS
Description: Addressed
a theoretical journal corruption problem caused by the journal switch
not waiting for journal asynchronous I/O to complete. This has never
been encountered in the fields and efforts to demonstrate this potential
problem were unsuccessful. This problem was identified during code
review related to other changes in journaling.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Corrected False <FILEFULL> in Cluster-Mounted 2-KB Databases | [JO1668] |
Category: Clusters
Platform(s): OpenVMS
Description: This
resolves a rare case in which a false <FILEFULL> error could
occur in a 2-KB formatted cluster-mounted database. This is difficult
to reproduce and requires extremely high rates of database updates
across multiple cluster nodes. The expansion now waits for updates
from other nodes and retries the expansion many times before reporting <FILEFULL>.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | Yes | No |
| Increased Robustness of Expansion Daemon | [JO1674] |
Category: Clusters
Platform(s): OpenVMS
Description: The
expansion daemon now runs if another process needs it during cluster
failover. Previously, the cluster would hang under these conditions.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | Yes | No |
| Fixes to rtnpurge() and clurtnpurge() for Unicode Systems | [SML169] |
Category: Clusters
Platform(s): All
Description: An
issue was addressed related to purging routines on cluster nodes for
Unicode installations. If encountered, this issue caused performance
degradation.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Medium | Low | No | No |
| Lock Handling on the Server Made More Uniform | [SML320] |
Category: Locking
Platform(s): All
Description: This
improves fairness of lock promotion when more than one process has
a lock pending until the release of a higher level lock. This only
affects applications which promote locks and have high contention on
specific lock references. Also, this is only relevant for configurations
which serve locks over DCP.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Medium | No | No |
| Lock Table Now Displays Lock Entries in a Pending State | [SML322] |
Category: Locking
Platform(s): All
Description: The
lock table now displays a "P" flag for a lock entry when it is waiting
for the server to grant the lock (that is, when the lock is Pending).
This makes clear that the locks granted in the lock table may not yet
have been granted on server.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Addressed Multi-Entry Lock Command Live Lock Problem | [SML338] |
Category: Locking
Platform(s): All
Description: This reduces the likelihood of an application deadly embrace between processes if the application uses the multi-entry Lock command (expressing several lock references within parentheses). For example, if five jobs were running the following line:
Kill ^q For Quit:$Data(^q) Lock +(^a(1),^b(1),^c(1,$Job)) Quit:$Data(^q) Lock
Then one process did the following:
For Lock +^a(1) Lock -^a(1)
And then that process
generated a Control-C code to interrupt the loop, those five processes
would be in deadlock. This has been corrected.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Improved Memory Handling with Lock Tables | [SML350] |
Category: Locking
Platform(s): All
Description: An
issue has been addressed to prevent possible memory loss when trying
to add a lock to a full lock table. If this condition continued unabated,
the system would eventually get a constant "Lock table full" event.
This has been corrected.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | Yes | No |
| Addressed Potential TRANSCB LRB List Corruption | [SML352] |
Category: Locking, DCP
Platform(s): All
Description: For DCP, in most cases when a job needed to send an unlock request to the server, it removed the lock entry in the local lock table right after the request was queued in network buffer. However, there was a rare case in which the lock entry would stay in the lock table until the unlock answer arrived. At that point , the DMNNET daemon would remove this lock entry when it processed the server's answer.
The problem was that
the DMNNET daemon did not hold a resource for the action. So when it
removed the lock from the list, it sometimes interfered with another
job working in the table. This has been corrected.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Fixed Hang on Multi-Entry Lock with Same Global Nodes Over Network | [SML353] |
Category: Locking, DCP
Platform(s): All
Description: Previously,
on DCP, when the multi-entry lock command had the same nodes in the
lock list and they were to the same remote system (that is, "Lock +(^a(1),
^b(1), ^a(1))"), the Lock command would hang. This has been corrected.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Changed Default maxudppktsize Parameter to Avoid Fragmentation of UDP Packets | [DAS449] |
Category: Networking, DCP
Platform(s): UNIX, OpenVMS
Description: Previously, the default packet size on OpenVMS and UNIX systems was set to 3600 to improve performance. Because some networks do not perform fragmentation and re-assembly of packets, this causes DCP clients to timeout and display the <Server... is down...> message. The fragmentation problem may be due to an operating system or router setting.
To correct this problem,
the default maxudppktsiz parameter on all platforms is now 1468, which
is the maximum packet size sent by Caché. This obviates the
previous need to fragment packets. Note that the Caché Configuration
Manager allows you to increase the maxudppktsiz to a maximum of 3600,
which provides a small performance improvement on networks which know
how to perform fragmentation properly.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | Yes | Yes |
| Addressed an Issue Where telnet Disconnection Left an Open Transaction | [SML321] |
Category: Transaction Processing
Platform(s): Linux, OpenVMS
Description: Previously,
disconnecting a telnet session while a job had a open transaction resulted
in the transaction not being rolled back after the job exited. This
issue has been corrected.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Medium | Low | No | No |
| Changes to GCOMPACT | [STC450] |
Category: Utilities
Platform(s): All
Description: On
a single database, only one GCOMPACT program can now run at a time.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| Changed GBLOCKCOPY to Allow Conversion of Collation for ISM pre-6.2 Globals | [STC451] |
Category: Utilities
Platform(s): All
Description: Previously,
when converting or copying an older ISM database (pre-version 6.2),
GBLOCKCOPY would not ask if you wanted to change the collation of its
globals to the Caché standard collation and would not change
the collation. Not changing the collation of the global had a slight
effect on performance. GBLOCKCOPY now asks if you wish to change the
collation. InterSystems advises that you should convert older collations
to Caché standard ones.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| High | Low | No | Yes |
| Datatype Validation Now Works Properly for Values Less Than 0.1 | [TTS042] |
Category: Objects, ActiveX
Platform(s): Windows
Description: Previously, if a property had a %Float value less than 0.1, the object save failed with the error:
ERROR #5802: Datatype validation failedThis has been fixed.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Medium | No | Yes |
| Correct Handling of FOR QUIT Nested in WHILE | [CDS200] |
Category: Caché ObjectScript, Compiler
Platform(s): All
Description: Previously, a Quit command associated with a For loop was not compiled correctly under certain conditions. The conditions are:
The symptom is that the Quit command transfers control to the next command after the For loop, but the For loop remains active. Thus, the next Quit statement executed outside of the outer loop is applied to the For loop and transfers control again to the command after the For loop. An example is:
Set i=0 While i<3 {
For j=1:1:3 {
If j=2 { Quit }
}
Write i Set i=i+1
}
Quit
Note that in order to
benefit from this correction, you must recompile existing routines
after the upgrade is installed.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | Yes | No |
| Fixed SQL Filer Referential Action Calls | [DPV1967] |
Category: SQL
Platform(s): All
Description: An
issue has been addressed which caused an <UNDEFINED> error when
some Foreign Key referential actions were supposed to be performed
upon UPDATE or DELETE. The bug only existing in versions 4.1.9 through
4.1.13 of Caché.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Medium | Low | No | No |
| Ensured Proper Value Checking for SQL Gateway | [MIT228] |
Category: SQL Gateway
Platform(s): All
Description: Previously,
the SQL Gateway maintained certain internal variables as integers;
it now uses binary values for these. This change addresses a particular
place where a test had not been updated. Applications encountering
this issue could have had failed connections or generated excessive
connections.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Medium | Low | Yes | No |
| Improved Error Handling for ctrldemo Sample Program | [RJW725] |
Category: Samples
Platform(s): All
Description: The
ctrldemo sample program now has error handling that prevents certain
exceptions.
| Likelihood of happening |
Risk
this change introduces new problems |
Distributed
in ad hoc release and installed in production |
This
change is an enhancement |
| Low | Low | No | No |
| SQL Client Installation Available | [ALE108] |
Category: SQL
Platform(s): Windows
Description: Caché now supports an SQL client installation, which includes only SQL Tools: the SQL Manager, the ODBC driver, and the JDBC driver. The footprint for this installation is about 3MB, and includes only these components and their required libraries.
Probability of running into this issue: N/A (enhancement).
Probability of issue affecting a production system if encountered: None.
Risk that installing the change introduces incompatibilities or new problems: None.
This change has been delivered as an ad hoc kit to other customers and they have installed it in production.
This is an enhancement.
| Control Panel's "Background Integrity Check" No Longer Produces Empty Log File | [CFL903] |
Category: Utilities
Platform(s): OpenVMS
Description: Previously, running the background integrity check from the Caché Control Panel produced an empty log file in addition to the output file. This is now fixed.
Probability of running into this issue: 100%
Probability of issue affecting a production system if encountered: None.
Risk that installing the change introduces incompatibilities or new problems: Low.
This change has been delivered as an ad hoc kit to other customers and
they have installed it in production.
| Shadowing Performance Improvements | [HYY750] |
Category: Shadowing
Platform(s): All
Description: This addressed a performance problem with fast-mode shadowing where the shadow may have consumed significant CPU locating the end of journal (GEND^SHDWCBLK). The problem is present in Cache 4.1 and earlier.
Probability of running into this issue: Low.
Probability of issue affecting a production system if encountered: High.
Risk that installing the change introduces incompatibilities or new problems: Low.
This change has been delivered as an ad hoc kit to other customers and
they have installed it in production.
| Enhancements to shutdown and cforce | [JO1675] |
Category: System
Platform(s): OpenVMS
Description: Under very heavy loads, Caché shutdown, in rare circumstances, failed to shut down one or more of its processes. This prevented a clean restart and required running cforce. This condition has been corrected.
Probability of running into this issue: Low.
Probability of issue affecting a production system if encountered: Low.
Risk that installing the change introduces incompatibilities or new problems: None.
This change has been delivered as an ad hoc kit to other customers and
they have installed it in production.
| Addressed Issues in Lock Encoding | [SML336] |
Category: System
Platform(s): All
Description: A lock with a subscript that contained a non-zero fractional part in the teens, such as 4.14 or 886.17, may have been encoded incorrectly. The improperly encoded value appears in the LOCKTAB-generated lock table.
This problem had no practical effect on the use of locks. Though the representation was erroneous, the lock functioned as expected. That is, each incorrect value was always encoded the same way. The fix corrects the representation; the locking behavior before and after the fix is the same.
Probability of running into this issue: Low.
Probability of issue affecting a production system if encountered: None.
Risk that installing the change introduces incompatibilities or new problems: None.
This change has been delivered as an ad hoc kit to other customers and
they have installed it in production.
| Addresses Issues Related to SELECT Statements in Subqueries | [AK517] |
Category: SQL
Platform(s): All
Description: An issue has been addressed in SQL compilation related
to nested SELECT statements not returning appropriate values. The type
of code that could trigger this was a SELECT query with SELECT subqueries
in the SELECT list, such as:
SELECT(SELECT(SELECT fDECIMAL1 from A.View1) FROM Table1) FROM Table2where A.View1 is a streamed view defined as
CREATE VIEW A.View1 as SELECT DISTINCT TestID, X.fVARCHAR1, fCHAR1, X.fDECIMAL1, fSMALLINT1, fTINYINT1, fINT1, X.fFLOAT1, fDOUBLE1, fTIMESTAMP1 from A.Table1 as XIn these cases, the statement would never be executed, since the attempt to prepare the statement failed with the error:
<SUBSCRIPT>finfo+1^%qaqpif2
This has now been corrected.
Probability of running into this issue: Low.
Probability of issue affecting a production system if encountered: Low.
Risk that installing the change introduces incompatibilities or new
problems: Low.
| Improvements to Handling of READ-COMMITTED Locks | [AK536] |
Category: SQL
Platform(s): All
Description: There have been improvements made in the handling of READ-COMMITTED locks, so as to avoid setting them unnecessarily.
Probability of running into this issue: Very low.
Probability of issue affecting a production system if encountered: Low.
Risk that installing the change introduces incompatibilities or new problems: Low.
This change has been delivered as an ad hoc kit to other customers and
they have installed it in production.
This release includes the following fixes and changes:
The DSN Configuration screen now includes a new "Unicode SQLTypes" checkbox. [JCN337, JCN365]
This checkbox is for use when working with Unicode data in a Unicode Caché that converts to a multibyte character set like, Shift-JIS. Visual Basic applications using ADO may truncate Unicode data if this is not selected. Microsoft Office 2000 applications may also truncate Unicode data.
Selecting "Unicode SQLTypes" reports SQL_WVARCHAR (-9) SQLType for the datatype of strings in a Unicode Cache Database, which allows ADO applications to know they are dealing with Unicode String data, so they can allocate the buffer size properly. If your application encounters a "SQL data type out of range" error from the Microsoft Driver Manager using SQLBindParameter, it can be caused by having selected "Unicode SQLTypes."
The default is to not select this box. For an already existing DSN, this is value is off by default.
Resolved an issue with doing a server-side redirect to a private page. [MAK563]
Resolved an issue with writing a large stream on Unicode system. [MAK565]
VB Form Wizard: Addressed an issue with generated code for embedded class. [YSD508]
Made changes for non-traditional Primary Keys [DPV1635]
Prior to this change, Caché SQL only reported to ODBC's SQLPrimaryKey catalog query fields which were defined as part of an actual PRIMARY KEY index. Now this has been enhanced to report additional cases as Primary Keys reported to SQLPrimaryKeys. Here are the new rules for SQLPrimaryKey reporting:
If there is an explicit PRIMARY KEY index defined, its fields are reported as the SQLPrimaryKey fields [existing behavior]. If the IDKEY index is a single field, the IDKEY field(s) is reported as the SQLPrimaryKey field(s) [new behavior].
If SQLROWIDPRIVATE is FALSE, the SQLROWID field is reported as the SQLPrimaryKey field [new behavior].
Otherwise, no fields are reported as SQLPrimaryKey fields [new behavior].
In addition, the reporting of SQLForeignKeys has been enhanced to include add an additional case, where the SQLROWID field is reported as the SQLPrimaryKey field of a table referenced by a child table's parent reference field. Here is the new rules for SQLForeignKey reporting:
If there is an explicit FOREIGN KEY defined, its fields are reported as the SQLForeignKey fields [existing behavior].
Otherwise, if there is a reference field to a table with an IDKEY index and the IDKEY index is also the PRIMARY KEY index, report the reference field in SQLForeignKeys [existing behavior].
Otherwise, if there is a reference field which is also the parent reference, and the referenced table has a single field IDKEY index which is reported as the SQLPrimaryKey of that table, report the parent reference field in SQLForeignKeys [new behavior].
Otherwise, if there is a reference field which is also the parent reference, and the SQLROWID of the referenced table is reported as the SQLPrimaryKey of that table, report the parent reference field in SQLForeignKeys [new behavior].
The default schema of _CURRENT_USER is now determined at DDL runtime. [DPV1655]
Addressed an issue related to naming conventions for ODBC calls. [JCN338]
Studio: Resolved an issue where if the "Syntax Check on Leave Line" option was selected, coloring was taking place anyway. [RAW323]
Resolved an issue where loading a CDL file caused the classes contained in the file to be deleted and uncompiled. The previous behavior was to completely remove the existing class from the class dictionary which had the side effect of deleting related items such as SQL privileges. That is no longer the case. [DLP815]
Performance enhancements for queries with UNION. [AK492, BJB250]
Addressed an issue with DESCending on subscript with %STARTSWITH [AK538]
Put in comment return tags of shared module. [AK540]
Resolved a problem with automatic redirection in %Net.HttpRequest when it used relative path references. [MAK628]
SQLManager: Backport of SaveQueryHistory and GetQueryHistory. [YSD541, YSD542]
Fixed checking for the expression If $Get(handle) instead of the If $Get(handle)'="" expression. [MIT228]
SQL Manager: Performance enhancements. [YSD452]
Corrected calculations for ODBC precision. [BJB253]
Changes to rebuild indices after datatype has changed to or from a string via DDL. [DPV1917]
SQL Manager: Resolved an error related to clicking on Views. [YSD554]
SQL Manager: Addressed an issue related to providing an error message when dropping table. [YSD555]
Table Compiler: Augmented support for macro definitions. [DPV1534, DPV1581]
Fixed reporting of ExportedKeys when multiple foreign keys from one table reference another. [DPV1921]
Ensured reporting of the proper field name for a foreign key reported from a reference field. [DPV1922]
Addressed an issue with the $ZU(41,n) display of a parameter frame. [CDS381]
Addressed an issue with Explorer-Configation Manager interactions. [CFL578]
Added support for half-width Katakana in global subscripts. [CFL861]
Resolved a configuration file corruption issue with files larger than 64KB. [CFL875]
Resolved a null password issue with the SQL Gateway. [CFL885]
Addressed an issue with unexpected shutdown of the Configuration Manager when saving custom configuration files. [CFL895]
Added support to ensure that the Lock Upload functionality returns appropriate errors. [DAS442]
Resolved access violations by checking if pabrdcst is non-zero before generating a mailbox message. [DMD032]
Addressed an issue where, on rare occasions, the journal daemon might skip writing some journal buffers to disk, causing the system to hang eventually. [HYY733, HYY740, HYY741]
Resolved an issue that could result in lost data or database degradation in Caché clusters of more than two nodes when multiple nodes are shut down in rapid succession. [JO1664]
Addressed an issue related to label block ownership during the update of gfiletab. [JO1665]
Resolved issues in writing large string data blocks for 2KB databases. [LFT1001]
Prevented setting UIC to 0,0 for an OpenVMS database. [LFT1012]
Made $ZU(94) functional on Windows and OpenVMS. [LFT1068]
Provided access for the Connection Manager to the Caché Direct server. [RAW327]
Addressed issue where COM port reads could fail on Windows if the data arrives before the read. [RJW709]
Ensured that errors returned from all shared memory deallocations are logged to cconsole.log. [SAP078]
Ensured proper handling of string literals in one routine being passed to another routine. [SJ1373]
Ensured correct setting of lh_granted_mode when it is in expand mode. [SML316]
Resolved an issue related to Lock and ZA operating on the same global from the same job. [SML329]
Resolved a multi-entry lock issue when it locks both parent and child node. [SML332]
Resolved a collation detection issue in an IF-ELSE clause. [STC417]
Addressed an issue with ggetglast2k when it bases its operation on optimization information. [TR958]
This release includes the following changes and fixes:
An <UNDEFINED> error in %DSET was corrected. This could occur, for example, when typing '?' at the Directory prompt in %Integrit. [ADC006]
A problem has been corrected which could cause a <DIVIDE> error when creating a new global using Control Panel. This problem only occurred when the global was being created on an OpenVMS system. [CFL607]
During transaction rollback at startup, updates in the rollback were not journaled and therefore would not be applied to shadow servers. [HYY602]
Journaling during startup was not occurring early enough in the startup process. We have reorganized our startup procedures to start journaling earlier. [HYY723]
A shadow server does not apply TSTARTs or TCOMMITs when processing journal entries from the main server. This is the same behavior as journal restore. [HYY679]
A problem with detection of system quiescence has been fixed. The problem could lead to hangs/failures/slowdowns in tasks like backups, journal switching, and shutdown. [JO1640]
A problem with GCOMPACT that could lead to database degrades if another process simultaneously killed nodes of that global has been corrected. [JO1645]
A number of improvements and corrections have been made to GBLOCKCOPY. [STC401]
A problem that could cause transaction rollback at startup to unnecessarily scan the entire journal file for open transactions, resulting in an unnecessarily long startup, has been corrected. [HYY670]
Shadowing has been enhanced so that use of $BIT to set/clear bitmap data in globals is now reflected on a shadow server in block-mode shadow configuration. [HYY615]
A problem with journal file information stored in the WIJ, which could result in errors in journal recovery at startup, has been corrected. [HYY654]
A problem with backup, which could cause an incremental backup to be invalid following database expansion after a full backup, has been corrected. This problem only affects databases with an 8KB block size. [HYY727]
A GCOMPACT problem, which could trigger an error that would freeze the system, has been corrected. This problem only affects databases with an 8KB block size. [JO1647]
A possible hang that could occur while restoring an 8KB formatted database has been corrected. [JO1650]
A problem that could cause REPAIR to get a function error trying to display stored next node data has been corrected. [LFT1053]
REPAIR has been enhanced so that, when it finds a corrupt block it cannot parse, it shows the nodes of the block up to the corruption. Previously, REPAIR would report the error and do a block dump of the bad block. [LFT1054]
A problem has been corrected which could enable the default global collation type to be set incorrectly if the Caché database originated in ISM. [LFT973]
A problem that could cause Caché Objects client component connections to fail has been corrected. [RAW321]
An internal problem with $BIT operations has been fixed. [SJ1336]
A rare (data dependent) problem with $BITFIND has been corrected. [SJ1354]
A problem with clearing bits in large bitmap strings has been corrected. [SJ1379]
An Access Violation that could occur using the new "I" mode in LOCK - has been corrected. [SML308]
A LOCK problem in DCP configurations has been corrected. If a client process died or exited while attempting to get a lock on a server when the server was down then the client could appear to have the lock when the server came back up. [SML309]
A <NOLINE> error in OLD^JOBEXAM when examining a process that is holding locks has been fixed. [STC394]
A GCOMPACT problem on 8KB formatted databases, which could cause corruption, has been corrected. [TR954]
The $zu(94) broadcast function has been enhanced to allow specification of whether $X/$Y are updated. [STC311]
A number of JDBC stream problems have been fixed. [AND259]
A problem with case sensitivity when using the embedded SQL CALL statement has been corrected. [DPV1850]
A problem that could produce extraneous trailing zeros after converting double (float) to string in Caché Object connections has been corrected. [DVU567]
A problem with switching from Preserve=1 to Preserve=0 in CSP has been fixed. [MAK545]
The CSP Gateway has been enhanced to return more useful messages, rather than 'Unknown Error'. [CMT066]
A problem with determination of the default schema while processing an SQL DROP/CREATE TRIGGER statement has been corrected. [DPV1824]
An <INVALID OREF> error in the DeleteTempStreams method has been fixed. [DPV1874]
In the SQL Gateway, the maximum length of a DSN entry has been increased from 50 to 256 characters. [MIT212]
Some extraneous debug printout has been removed from the Java client. [MAB101]
A problem with server side redirection to private CSP pages has been fixed. [MAK563]
A problem with SQL queries that used "ORDER BY DESC" syntax in conjunction with %STARTSWITH or other range conditions has been corrected. [AK538]
A new configuration parameter, "Unicode SQL Types", has been added to ODBC DSN configurations for use when Unicode servers communicate with multibyte clients. [JCN337]
A problem writing large stream values on Unicode systems has been corrected. [MAK565]
VB Form Wizard support for embedded classes has been improved. [YSD508]
A problem with cluster journal sequence numbers larger than 231 has been corrected. This could cause journal entries to not be applied during journal restore, for instance during cluster recovery. [HYY548]
A problem that could cause cluster journal sequence numbers to be set incorrectly after the OpenVMS cluster master had been shut down or crashed has been fixed. The effect of this problem is that a subsequent journal restore might not replay journal entries in the correct order. [HYY625]
A problem, which could cause an Access Violation to occur while processing journal markers during journal restore in OpenVMS cluster configurations, has been fixed. [HYY725]
Processing of the cluster journal sequence number on all nodes during cluster failover has been improved to provide greater robustness in the event of a second cluster failover. [HYY731]
A problem with OpenVMS cluster journal recovery, which could fail intermittently if the previous master node stopped normally, has been corrected. [HYY732]
A problem with OpenVMS cluster configurations with 3 or more nodes has been fixed. A hang can occur if one cluster node dies while the cluster is at sync point #3 and one of the slave nodes has hit a condition that forces all database updates to stop or one of the slave nodes is in the middle of database expansion. [JO1639]
A problem that could cause a server to fail to roll back open transactions for a cluster member that shutdown normally has been fixed. [JO1641]
A problem that could prevent cluster failover from completing in the event of a simultaneous DCP network problem was fixed. [JO1646]
Caché 4.1.9 is most relevant for large-scale production database servers and deployment of web based applications. This release has been tested extensively for several months and has met release requirements which include running several applications and customer test plans. Although the number of corrections is large, almost all of the individual changes have been installed at a customer site in a Ad Hoc (patch) release.
The most important areas addressed by 4.1.9 are:
Several corrections in LOCK handling to avoid system deadlocks, LOCK promotion, and timed-LOCK failures
VMS cluster failover and recovery is improved and avoids uncommon cases that impeded recovery
Deadlocks due to defects journaling
System quiescence, during backup for example, is faster and more reliable
Conversion utilities, in particular GBLOCKCOPY, are faster and avoid uncommon failures
Projecting Streams as objects is faster and more reliable
Several SQL improvements to ease migration to Caché
Many improvements and corrections to Java binding
The detailed list of changes follows. Please contact InterSystems Worldwide Response Center (support@InterSystems.com) if you would like to know more about any of these items.
Correct a VMS Installation problem due to missing CSP components
Java SysList improvements
Implement Driver.getPropertyInfo for JDBC
Add QuickStatement.parseStatus + new CacheInputStream constructor for Java
Add childTableRowInsert api to QuickStatement for EJB
Fix locking problem for Object class with no subscripts
Query Wizard support for child relationship
Allow renaming of DSN without duplication
A problem with Java binding parameter with C type =SQL_C_WCHAR and fix WCPToWString conversions when passed "\0" wchar_t[].
Relational Gateway now uses the wide ODBC api
Correct error 998 when non-privileged user starts ODBC connection
Add new SysList exception, NoMoreDataException, for JDBC
Consolidation of code to support streams in JDBC/ODBC
JDBC client side caching improvements
ODBC DDL statements are no longer cached
Tighten thread safety in JDBC
Implement Reader Interface in JDBC
Add locking options to Quick* in EJB
In JDBC/ODBC, flush client side cache on seeing certain DDLs
Minimize use of exceptions in CacheResultSet for JDBC
Fix subscript binding code when an index contains several properties
Use COS preparser for dynamic queries
Use Cache type from mtc() instead of ODBC type
Cleanup ^mtemp1("view") when done with it in %qavFunctions
Correct some ODBC type reporting for query columns
Correct lookup of field with -> syntax when alike names as child tables
Correct DROP PROC to release class lock when deleting the entire class
Add object datatype information to mtc() for Dynamic Queries from non ODBC clients
Use view schema as default schema when processing view's query
Correct PRECISION reported for LIST(...) in aggregate functions
Fix ORDER BY DESC on query with aggregate and GROUP BY/HAVING
Added CacheObject.ResultSet.RunTimeMode
Added CacheObject.ResultSet.GetDataAsString(col)
toFloat failed to convert when locale uses comma for decimal
Return proper Multibyte length during conversions from Unicode Cache for string
Fix exception when using SQLSetCursorName
Revert receive Socket changes
Clean up and make null termination string code consistent
Issue with a conversion from SQL_NUMERIC to SQL_C_WCHAR corrected
Don't allow rc_log_long_string to change a const char* or const wchar_t*
Turn off default behavior of logging CacheODBC.log header info
Merged 2 implementations of SysList
Posting too much data from %Net.HttpRequest object will cause a hang
Error with encoded pages in IE
Do not reset the %request object on a server side redirect
Enable logging in the SQL Gateway
A questionable conversion from SQL_CHAR to a C numeric type
Do not substitute variables in DDL in %qaqpreparser
Handle >= <= || <> in preparser
Support STMT_DDL_ALTER_DROP, STMT_DDL_OTHER
Put a space after comma in generated queries
External tables: select returns null instead of empty string
Support CALL PR without parens
Provide more precise information for arguments of standard functions
Do not replace constants in parentheses in SQL parsing
Correct CSP:SEARCH tag to use logical lookup for dates.
Remove DisplayError from Next method of %ResultSet
JDBC: recognize DDL statements in preparser
JDBC: readCharacterStream and readUnicodeStream
JDBC: correct performance issue with Date/Time conversions
JDBC: recognize DDL statements requiring client-side flush of Cached Queries
JDBC: fix issue with getDate
JDBC: correct parsing of '?' as String parameter
JDBC: parse large Numerics without loss of precision
JDBC: Update JDBC preparser to skip constants in parentheses
Make RUNTIME the default select mode for dynamic SQL queries
Added Run Time Mode in SQL Manager
Do not ignore scale parameter in registerOutParameter
Implement updatable views in SQL
Correct SQL CREATE TRIGGER generation of WHEN condition code
Fix for -23 errors and wrong fields chosen in un-flattened SQL queries against external tables
Implement SQL privileges on updatable views
Fix infinite loop in ALTER TABLE ADD PRIMARY KEY
Performance improvements to Java Binding
Extrinsic function calls corrected in Dynamic SQL
Port Relational Gateway to Linux
JDBC: remove unused code from SysList, add eltLength method
JDBC: fix pre-parsing of (?)
JDBC: parse default parameters in Stored Proc Calls
Add READONLY parameter for persistent classes
Fix <LABELREDEF> error with "inor" query and override NEXT code
Fix <UNDEFINED> in Compile+5^%qserver with big stored procedures
CacheJDBC.jar contained unnecessary resource file
Convert ODBC Date, Time and Timestamp type values
Add cache Job ID to the JDBC log file
Break SysList.java into two separate classes
Pass the descriptor info to some SysList.getXXX apis
Implement Statement.set/getMaxFieldSize
Propagate stream type info
Add DEFAULTCONCURRENCY parameter to %Library.Persistent
Fix problem with SELECT <label>.* in view definition
Generate AcquireReleaseLock entry points in READONLY tables
Fix INSERT INTO <table> SELECT <from nonupdatable-view>
Allow AS clause in vlabel^%qaqpsq for UPD/DEL when m > 1
Creation of SQL overflow routines with $$tag calls
Correct a cases where cstudio.exe loops when auto save is off
Correct crash on setting large autosave interval
Add UnicodeToCacheUni function
Prevent Studio from asking to reload a file after you save it on Cache 4.1/4.0
Prevent UNDEFINED error in getting a session
Add SQL support for ANY in external tables
Add interfaces to skip preparsing in ODBC
Do not return null from SysList.getList()
JDBC: correct eltLength() to return isNull instead of Length
JDBC: change getTime to use default Calendar date
JDBC: add interfaces to skip preparsing
JDBC: nanos in getTimestamp()
JDBC: use maxFieldSize in getString,getByte
JDBC: fix error in stuffDouble
Web Form Wizard: Include multiple reference levels in property tree
Enhance JDBC logging in a multithreaded environment
Allow CALL syntax in [Prepared]Statement executeXXX apis
JDBC: fix deprecated method CallableStatement.getBigDecimal(Index,Scale)
JDBC: option to add %ID when preparsing
VB Form Wizard: Include multiple reference levels in property tree
Form Wizard: Widen Properties Controls on Properties and Attribute pages
Allow CALL syntax in [Prepared]Statement executeXXX apis
EJB: Add apis for primary keys/constraints/relationships to the Quick interface
EJB: Add close and findPkByRowId apis to Quick Interface
Added new SysListProxy apis
Improve server side streams cleanup
Limit the JDBC statement pool size
Change SQL_MAX_COLUMN/TABLE_NAME_LEN to 128
Make setString/setByte stream inserts work against 4.1
Increase the number of multipart attachments that can be submitted from 9 to 61 (Cache v4.1 protocol).
Generate external routine for SQL stored procedure >16K source size
Correct ObjectScript procedures when ObjectScript code contains "}"
Added StringOnlyMode to CacheList.OCX and CacheQuery.OCXBuild ppc
Correct a core dump for SQL Prepare on Linux
Add environment variable to allow ODBC to use process locale rather than registry
Fix UNDEFINED error in ischildrelationshipuptodate+4^%occCompile
VB Form Wizard: Use Runtime Mode for CacheQuery's FindId
SQL Manager: Fix 4.0 error message if client version is lower than server
SQL Manager: "Open Routine" in 4.1 only worked with port 1972
Enabled SQL Outer join into a view with one table
Correct corruption in multithreaded JDBC log file
Prevent re-preparing DROP TABLE in SQL
Do a deep delete when getting rid of an ODBC client side cache
JDBC/ODBC: Do not do parse table type in SQLTables/getTables()
JDBC: Change the default TCP_NODELAY value to true
JDBC/ODBC: Do not cache statements longer than 5K
JDBC: Implement SQL-less Updatable Result Sets
Allow subscript expression like {table.field}_"||"_{table.field}
Correct code generation of LogicalToStorage functions in the table compiler
Add next() function to %apiSQL for legacy FDBMS default values
Add Cached Query protocol number to Cached Query Hash
Correct table compiler with multiple StorageToLogical methods
Restore compatibility of CacheObject.dll
Numeric Conversion fails in Spanish locale
%response.Redirect doesn't change the http/https protocol
Fix setting the %Float/%Currency properties for CacheObject projections
DescribeProceduresW returns error=-2
Implement a number of JDBC 3.0 DatabaseMetaData apis
Delay sending of stream parameters until execute* is called
Added new SysListProxy apis/Fixed four Prodlog items
Add Statement.closed flag
JDBC/ODBC - Use actual stream orefs
Generate correct Method Name for StorageToLogical of Embedded Property
Provide ability to update RowID fields in filer for trigger filing
Fixes for CREATE/DROP TRIGGER changing User/SQLUser package/schema mapping
Parse TABLE_TYPE for SQLTables on server side
Fix drop of foreign key constraint when reference is removed
Fix problems in SQL Rtune-time dictionary with AddView, FinalizeTable
Japanese Access fails with -104 error on Numeric SQLBindParameters
Remove unreferenced variable ClientMessage::convbuf
Correctly log calls to Wide APIs in ODBC
Correct a case in which SQLTables can go into an infinite loop
Modifications to GetData and calls to GetChar(W) to fix Truncation errors
Make calls consistent for null terminating strings
Make templates member functions
Keep ZConstList pointer in sync after ServerMessage::Get
Fix SQLGetData for SQL_BINARY data to SQL_C_CHAR, Truncation issues
Reduce conversion buffer from 32k to 512
Migrating Java Binding to new SysListProxy interface
CSP security fixes
Could not write 32k of data to a global stream
Don't set modified bit if SetObjectId() sets the same object
DescribeProceduresW returns error=-2
Add reconnect logic
Can't use ANSI SQL Comments in ODBC
Remove a call to _gcvt from the client
Handle $c(13,10) split over 2 $list chunks
JDBC: fix Syslist bug when setting Double value -0.0
VB Form Wizard: Add LogicalToDisplay to Generated Code
Fix an issue with SQLParamData/SQLPutData
Introduce the concept of cached query statement ownership
Disallow invoking apis on closed result sets
Fixes for table routine splitting and error reporting
Implement SQL_UNICODE_VARCHAR
Add some conversions for CharToUTF8String and UnicodeToUTF8String
Convert Character Streams from UTF8 format on the Wire to SQL_C_CHAR or SQL_C_WCHAR
When using Preserve=1 mode it was possible for the session end logic to get an error
%Net.FtpSession.RemoveDirectory, Variable usage mismatch
JDBC: %qserver.ReadStream, return real bytelength in message header
VB Form Wizard: Drop-down list for combo box
xDBC: Report LONGVAR* types as unsearchable
Memory Leak in BinarySteram.GetPicture
Consolidate and remove changes JCN301 and 303, Implement SQL_UNICODE_VARCHAR
Fix Unix Unicode dependency on SQLGetPrivateProfileString
Add project settings to build Single Threaded ODBC driver
Build Unicode ODBC driver for cppbinding, fix Unix warnings
Large Stored procedures: fix compilation error
Stored Procedures: return error when descriptors conflict
JDBC: set messageHeader in SysList.writeInputStream after reading stream
SQL Manager: LoadForm too slow and exit too slow
Fix for Apache configuration file edited by CSP Gateway install on VMS
Fix a deadlock in JDBC
Spaces collates same as empty string for STRING, SQLSTRING, SQLUPPER
Follow search rules of iODBC to find odbc.ini on Unix platforms
VB Form Wizard: Widen Settings Option Fields
Fix Embedded SQL CALL statement on 4.1 - use exact procedure name
Cleanup ("s") and ("t") variables in Cached Queries
Remove trailing zeros after converting double (float) to string.
Problem switching from Preserve=1 to Preserve=0 in CSP server
Correct CSP samples installation on VMS
Do not remove registry values used by Studio on new installation
CSP Gateway installation dialog improvements
Do not remove unrecognized registry keys during installation
PRINT displayed garbage on edited routines in some instances
%STACK, used by %ETN, could encounter <UNDEFINED> with private variables.
ZB /errotrap:off should disable $ETRAP
Reset terminators properly when leaving IMAGE mode
Correct some %STACK problems with NEW frames
Add namespace to %ETN terminal message
String stack discipline problem on Intel platforms led to process failure
Correct $ZEOF handling
Correct hang in Backup
Correct runtime error in Control Panel when expanding a remote namespace
Correct lock deletion on VMS
Correct Terminate Process on VMS
Global output creates empty files
Correct Explorer Find/Replace on remote servers
Correct <UNDEF> in %Wgr
Correct %GIF on VMS to not leave empty files
Correct incorrect $IO when device doesn't open
Correct $IO problem with device alias
Release PID table resource if process exits abnormally on VMS
GCOMPACT fails when $ZU(68,7) == 1
Allow the ENQPID resource to be freed from using cstat -F0, in an emergency
Protect the section of getjobnum where the ENQPID resource is held on VMS
Journal shadowing safeguard added for block mode
Address an issue of occasional "invalid address" errors on shadow server
Journal utilities updated with journal marker support
Backup quiescence with timeout
Properly use QUIETLY in STUCNFG, during startup
Cluster journal restore must dejournal records monotonically in terms of cluster sequence
Allow user to abort on timeout rather than waiting indefinitely for system to quiesce during unattended backup
Roll back transactions at cluster failover even after a system shut down normally
Address an issue of JRNSTART hanging
Backup quiescence with timeout
Correct external backup in QUIET mode (clustered systems only)
Address an issue of record-mode shadowing getting "invalid journal address" error after journal switch
Address an issue of journaling unable to recover from I/O error on a VMS system configured to suspend on journal errors
Address an issue of updating transaction index in WIJ
Journal daemon flushes out buffer periodically
Preserve alternate journal directory at INT^JRNSWTCH
Correct journal directory block to miss some database entry
Correct journal directory block to miss database entry during journal switch
Address an issue of journal I/O retry on VMS
An alignment problem on 64-bit platforms
Allow QUIET to be undefined in quietsw in backup
Quiesce on global updates instead of global accesses in CLRINC & BACKUP
Correct writing global type in ^REPAIR
Avoid <SYSTEM> errors on Solaris SPARC
The problems with the /TERMINATOR keyword parameter on VMS have been resolved.
Add a missing MEMBAR safeguard related to wdwake for clusters
Correct %GIF, %GBLOCKCOPY and Block mode %[DSM|MSM]CVT so they follow SLM mapping
Add support for using O_SYNC with journal files on Unix
Correct Repair of 2KB databases related to pointer block edits
Correct packset() handling of big strings when global is not Cache Standard collation
$SYSTEM.Java.InitVM() method generated an exception on Windows XP
Correct expansion bug w/cluster failover where label block gets rolled back
Add a mechanism for WD's in a cluster to wake each other up
Correct a couple of cluster backup problems with 2KB databases
Add gthrottlespin to cst.c for HP/UX
Update the expansion daemon to work correctly with switches/$ZU(51)
Cluster recovery dmn doesn't clear joboff & gcluster tests it before wakeup
Slave/Master WD coordination Corrected to prevent "lost" wakeup
Allow WD to get cluster block locks during failover (like garcol)
REPAIR interface changes
Correct some $zu(31) related errors
Special STORE error handling in REPAIR
Correct calculation in MapOut^%DMREPAIR
No need to disable journaling during REPAIR
Don't save modified REPAIR blocks if mgrdir is being REPAIRED
Catch STORE error in ParseRepairBlock^%DMREPAIR
Add map modification to REPAIR
Avoid infinite loop in integrity checking code
Correct %RFIND to handle tabs in routine lines
Correct mgr dir reference for UNIX Callin interface
Add missing Callin declarations for VMS link
Correct signal disable character setting for UNIX terminals
UNIX cbackup/cinstall/cstart script corrections
Correct unwarranted <NAMEADD> error when opening a VMS device
Allow block mode imports to journal
Alter journal warning dialog in %GIF
Check and warn user about user job journaling status in conversion utilities.
Correct use of multimedia timers on Windows platforms
TCP Devices now allow duplicate OPEN commands
Correct <UNDEFINED>blksave+39^%GBLOCKCOPY when global has no data
%GBLOCKCOPY deals better with %-globals in local databases
Slave WD would hang if new WD pass started within 20 ms
%CDSrv slave server error trap loop
Cache Direct server: add BeginTask hook
Make CMVISM32.DLL compatible with connection data in registry
CMVisM32: remember last connection
Add more DSM Zcall emulations to $zf()
Correct minor problems in 'MOUNT' and 'GETSYM' $ZF() calls
Correct Internal Failure at USE command after failed open of malformed numeric device entry.
Correct Internal Failure in repeated OPEN command following failed open using malformed open parameters in device table.
License server infinite loop on error loading backup server.
Process initialization failure, Network Server username, and security
Remove potential display of confusing error message during shutdown.
Avoid thread termination closing principal terminal device. Processes can occasionally hang while exiting. The symptom is that the process shows up running ^%HALT, but never terminates.
Loss of data between Cache and VB when cache process halts.
^%DSMCVT makes bogus globals converting certain long strings
Access violation from %JREAD
MQ Series interface recovering from Get errors or status=NOMSG
Corrected problem that occurred with multiple processes recompiling classes at the same time as accessing them with a very small buffer pool.
Correct multi-entry lock command problem
Correct a cluster fail over hung when the master died nicely with more than two members.
Check SWITCH right after idle for DCP remote locks.
Correct a possible lost wakeup call from slave to master.
Remove pending delock from partition queue when the job is halting.
Prevent LOCKLOST errors caused by a previous DIRECTORY error on a
Correct delock on TCOMMIT created phantom locks.
Correct a DCP/ECP lock in server and disappeared in client problem.
Let lock waiter process MBX work.
Make sure Cache create rw-rw-rw- permission of cconsole.log when the Cache is starting.
Correct DCP lock reset on client did not release all locks to the remote system.
Correct DCP server not releasing lock LHB resource.
Correct DCP to send delayed delock on re-connection.
Correct a missing delock on network server.
Correct a delock on parent node may unlock the child node.
Improved and faster GBLOCKCOPY
Disallow job examining DMNNET
Correct error handling in %JREAD/JCONVERT
Disallow GLOCKCOPY auto conversion of cluster mounted DB
Correct BLOCK import with SLM mapping
Correct TP with kill of first node in page
Changes and corrections in this release are:
Control Panel could produce a run-time error when changing the characteristics or extent definitions of a cluster-mounted database. [CFL686, CFL687]
Installation problems on Windows systems using Chinese locales. [ALE48]
Error editing CSP files stored on OpenVMS systems. [LRS594, MAK354]
Changes to global characteristics (e.g. journaling or protection) made via character utilities may not be detected by running processes. [HYY563, CFL644]
Sending large amounts of data at one time via TCP can fill buffers,
resulting in
Incorrect storage of routine source when converting routines from ISM to Caché using %SYSCONV. [LRS567]
An unsubscripted LOCK could sometimes conflict incorrectly with another LOCK held by the same process. [SML185]
A rare timing problem in LOCKs. [SML186]
CSP Gateway installation failed when IIS did not have a /scripts virtual directory. [ALE54]
A
For Telnet connections on Windows systems, Caché could send data too quickly. [TTS020]
Under rare conditions, an error trap may dispatch incorrectly. [SJ1352]
Under rare conditions, an error within an error handler could cause a core dump. [SJ1345]
A rare condition could cause journal file corruption during database backup on Windows systems. [HYY610]
The Caché ODBC client was always attempting to write a header to its log file, which caused problems if it lacked appropriate file system privileges. [JCN257]
An exotic potential conflict between a SET that triggers a block split and an overlapping multi-block KILL has been eliminated. (This problem has never been seen in the field.) [TR896]
Improve cluster recovery when one cluster member freezes (e.g. because its journal file is full). [JO1554, JO1522]
A problem with incorrect block numbers reported by the cstat diagnostic tool on cluster systems. [JO1545]
When adding an extent to a multi-volume database using 8KB blocks, the newly-created extent could be slightly larger than requested. [CFL705]
A rare problem with exclusive NEW commands that have many variable names with twelve or more characters that occurs on certain platforms. [JLC385]
A multi-volume database will not expand by more than 64MB at a time, even if its "extend by" property is set to a larger value. [LFT991]
A problem with the VISM OCX connecting to a Unicode server. [RAW252]
A license server problem on OpenVMS systems running multiple instances of Caché. [RJW566]
This maintenance release includes a few enhancements:
A new ODBC driver that includes native UNICODE support and improved logging.
A new JDBC driver that includes connection pooling and batched statements.
This maintenance release also corrects the following problems:
Eliminate occasional <FUNCTION> errors when making ODBC requests through an application server to a database server (using DCP).
The initial value used by $INCREMENT, operating on a Unicode string, used to default to zero if the string was not a number but did begin with one or more digits.
Correct a problem (with new format databases only) where creating a new global at the same time a database is expanding could result in an error during the global set with subsequent database degradation in the newly created global.
Eliminate <COMMAND> error when using the VIEW command on systems with very large memory allocations (> 2 GB). This could show up in a variety of situations, for instance using ^%JOURNAL to mark selected globals for journaling.
In new format databases, kills sometimes (very rarely) reported false database errors on VMS clusters. This false negative has been eliminated.
On cluster systems, if very large numbers of jobs (at least 32) on different cluster machines, were competing for exactly the same block, one of the cluster members could sometimes hang. The root cause has been corrected.
A number of corrections were made to backup and restore, including two problems triggered by expansion of the database while restoring it and two problems where an expansion was triggered while a database was being backed up and on rare occasions restoring this backup to a newly created database would produce database degradations.
Corrected a problem where expanding a 2KB database on Windows platforms could generate an access violation in the expansion daemon.
Fix routine recollation errors in %SYSCONV.
License server inappropriately logs out users during cluster fail over.
Under some circumstances, the backup license server could lose transactions it received from the active license server causing licenses to be lost when the active license server shuts down.
Two corrections to locking for DTM clients of a Cache server: Fix the "bad syntax" error when a DTM client tries to issue a lock command on Cache server. Argumentless lock command from a DTM client did not unlock on the Cache server.
Eliminate a deadlock in locking when a process holds a lock on a sub-node and wants to acquire a lock on the node but other processes are already queued for the node.
Eliminate an occasional hang of Caché shutdown.
If shutdown did not permit all open transactions to be rolled back, startup did not complete the process correctly.
Resolve a problem where a process could think a kill had been completed when it was still in progress.
On very slow lines, increase the robustness of TELNET connections.
Install CSP Gateway components on VMS.
Correct a timing bug on TCP socket reads.
Correct a problem on multi-processor systems when simultaneously accessing paired IJC devices.
Add the ability to turn off all flow control for comm. ports .
Correction to the 4 argument version of $PIECE on Alpha platforms.
Syntax coloring in Studio is improved.
SQL now supports INSERT .. SELECT from a Stream field.
Objects now release certain locks immediately instead of holding them until the end of a transaction.
Code generated for dynamic queries now includes class include files.
SQL now supports: SET OPTION LOCK_TIMEOUT = <numeric literal>.
Removed a potential infinite loop in the Architect Query Wizard.
Fixed an exotic case where CSP session locking could cause an oref error.
Studio pre-save hook now sets line number correctly.
Prevent too many %CSP.Daemon processes from starting.
Allow any character to appear within a csp:SQLQUERY tag.
In CSP, optionally allow support of v3.2 &html behavior.
Fixed a case where %NET.POP3 did not close objects.
Support for SQL optimizer directives in the FROM clause: %inorder,%full.
Improved SQL optimizations for "complex" indices.
Improved SQL index selection for certain JOINs.
Changed size of SQL Manager purge query window to support Japanese text.
Improved handling of SQL OUTER JOIN with IS NULL.
Remove the CSP workaround designed to cater for the inability of IE/IIS to process HTTP 1.0 content delivered from ISAPI modules. Microsoft, having identified the cause of this problem suggested that we always use HTTP 1.1 compliant response headers.
Do not send unchanged ENV variables from CSP Gateway to Server.
Add the CSPNATO (no activity timeout) parameter to the list of persistent variables within %cspServer.
Fix problem in CSP resulting in files with long names not being uploaded to Cache (multipart MIME).
Fix CSP problem causing the failure of hyperevent calls transmitting in excess of 8K of request data.
Added Support for CSP Gateway on VMS.
Fixed problems with Serial objects and Populate.
Fixed SQL problem with PRIMARY KEY with clustered data.
Fixed uniqueness check for PRIMARY KEY.
A bug has been fixed in the SQL Table Compiler where a syntax error would be generated in the table routine if a data map used Access Type of Piece and the field for the Access Level was of a data type which has LogicalToStorage method code.
Changed Studio default font to FixedSys (for better Japanese support).
CSP suffered from the directory traversal problem where if you manually send it a url such as:
http://localhost/csp/samples/./././otherfile.csp
This is now corrected.
CSP ServerSideRedirect now works with parameters in the request.
CSP uses HTTP/1.1 headers rather than HTTP/1.0.
In ActiveX, check for boundary condition when creating multiple pieces of class client info.
In Objects, fixed problem parsing expression methods with characters > 128 on 8 bit systems.
In CSP, add new JavaScript function, cspEncodeUTF8(string), that correctly converts the string from 16 bit Unicode to utf-8 and URL escapes the string.
Force charset of CSP search page to utf-8 for 8 bit locales.
In SQL Gateway, support login timeout for external tables.
In Objects, a problem has been corrected for CacheSQL Storage. There was a problem with the locking code on an UPDATE of an objects. If the UPDATE got an error then the lock of that object would not be released.
In CSP, add CGI Environment variable 'HTTP_SOAPACTION' to the list of variables always transmitted to Cache.
The behavior of the CSP gateway has been improved for cases where the server defined for an application path has been deleted (or doesn't exist).
With Objects, fix subscript binding code when an index contains several properties.
Fixed ORDER BY DESC with some SQL queries in READ_COMMITTED mode.
In SQL, use 4096 as reported length for VARCHAR columns in for stored procedures; value is user-specifiable in 4.2.
Specify default SQL schema for unqualified DDL statements.
In Architect, show inherited properties in Query Wizard.
For ODBC, preserve IP address on Citrix Terminal Servers in the same session.
Add Russian, Greek, Hebrew Charsets to SQL Manager.
A rare SQL problem has been corrected with the new locking syntax when used in Committed Read Select statements against a table with no subscripts.
This release includes an increased maximum framestack size.
This release corrects a number of issues:
Improper global vector invalidation.
Japanese localization of License Wizard.
A problem that caused $T to be incorrectly set in very rare circumstances.
A possible private variable corruption when using pass by reference.
A problem that caused journaling of KILLs to store excessive information.
A problem that, in rare cases, could cause journal records to be invalidated incorrectly.
A problem that, in rare circumstances, could cause a process to leave a routine buffer locked when halting after an error.
A problem with ^INTEGRITY that sometimes caused a "database not mounted" error to be reported, instead of the real error found.
A problem that caused GetFreeCount^%DM and %FREECNT to sometimes erroneously reported 0 for new format databases.
A problem that could cause BACKUP to force a full backup when an incremental backup should be permitted.
A very rare hang that could occur when dozens of jobs were contending for exactly the same database block.
A problem that could cause a lock command to a remote DSM system
over DCP to give an
A rare database integrity problem with big string data on old format databases.
A CSP setup problem on Cache OpenVMS systems.
This release includes support for the new Cache product and license types introduced during the summer. Existing installations do not require a new key (Cache 4.0 style keys will continue to work). The new license types are, in fact, translated to the equivalent Cache 4.0 measurements the utilities which report license usage do so in terms of the new definitions.
It also includes the following corrections:
In prior versions of 4.1, dismounting or deleting a database on a loaded system would produce unexpected errors in other processes, even if they did not reference the database in question. This was the subject of the Cache alert on 1 December, 2001 and could lead to data corruption. This problem has been corrected—all customers on 4.1, 4.1.1 or 4.1.2 should upgrade to Cache 4.1.3.
<NLSTABLE> or <SYNTAX> errors on installing certain 8-bit locales on 64 bit machines have been corrected (Problem 25643).
On Unix platforms, Cache was limited to a maximum of 30 open database files. Using more than this number would cause un-necessary closing/re-opening of databases. In 4.1.3, Cache now checks OS kernel parameters to determine the maximum (subject to a maximum of 200).
Several corrections have been made to error handling by Cache daemons. This further reduces the likelihood of an error during error processing halting a daemon.
In the enable-multi-user-client option of certain license types, licenses were not being freed when a particular user consumed her 13th or subsequent license slot and then exited. This has been corrected.
Several rare cases of database errors using $BIT have been corrected.
Two corrections which improve the performance of Cache clusters have been included.
This release includes:
A correction for a problem with reverse $ORDER, which could loop in certain cases on databases with 8KB blocks.
LOCKTAB now properly displays lock references containing dots, which are often used in object-based applications.
Several internal improvements for OpenVMS cluster configurations.
Corrections for several problems that produce dump files on OpenVMS systems following normal disconnects.
A correction for a rare condition that caused the write daemon process to terminate abnormally.
Increased performance of INTEGRIT on UNIX systems.
A fix for a problem with $PIECE(string,0,value) on Solaris Unicode systems.
A correction for a <STRINGSTACK> error during debugging on 64-bit systems.
A correction for a Cache Direct connection dialogue problem with wide characters (Unicode).
Cache 4.1.1 contains a single bug fix—for the $DATA function.
| Copyright © 2001-2003,
InterSystems Corporation. All Rights Reserved. |
Last updated: 2003-02-21 12:44:22 |
Source: GCRN_41x.html |
Please contact InterSystems Worldwide Response Center at support@intersystems.com if you would like to know more about any of these items.