GT.M Version 5.0-000 Release Notes

23 February 2005

GT.M Group Fidelity Information Services, Inc. 2 West Liberty Boulevard, Suite 300 Malvern, PA 19355, United States of America

GT.M Support: +1 (610) 578-4226 Switchboard: +1 (610) 296-8877 Fax: +1 (484) 595-5101 http://www.sanchez-gtm.com gtmsupport@fnf.com

Table of Contents

Bulletin Overview
Platforms
Recompile
Relink
Global Directory Upgrade
Database Upgrade
Installation Instructions
Typographical Conventions
Synopsis Of The Release
Important Note
Change History
M-Database Access
M-Other Than Database Access
Utilities-MUPIP
Utilities-Other Than MUPIP
New Error Messages
Supplementary Information

As of the publication date, Fidelity supports this release on the following hardware and operating system versions. Contact the company for a current list of supported platforms.

Platform

Supported Versions

Notes

Hewlett-Packard Alpha/AXP/Tru64 UNIX

5.1B

-

Hewlett-Packard Alpha/AXP Open VMS

7.3-1/7.3-2

If you use external calls written in C with Version 6.x of the Compaq C compiler on Alpha Open VMS, be sure to carefully review all the provided kits for that product and apply them appropriately.

IBM eServer pSeries (formerly RS/6000) AIX

5.1/5.2/5.3

-

Hewlett-Packard HP-PA HP-UX

11i V2

Running GT.M on HP-UX 11i requires that patch PHKL_28475 be applied to the system. This patch fixes a problem with the lseek64() C library call that GT.M uses. A system without this patch on will give fairly consistent database errors of varying types, integrity errors, and in general will not work correctly for any but the most simplistic usage. The "swlist -p" command (as root) can be used to determine if this patch has been applied. Note that recent "BATCH" and "GOLDEN" patches may contain this patch so your system may have this patch applied but may not list it separately. Contact your HP service representative if you have questions.

Sun SPARC Solaris

9.0

-

x86 GNU/Linux - Red Hat Enterprise Server Series

3

The software should run on any contemporary combination of kernel, glibc and version 5 of ncurses.

Perform MUPIP UPGRADE (unless upgrading from a V4.4-003 or V4.4-004 release). For upgrades from GT.M V4.x, only the file header is modified. As always, at any given time, a database can be open only by processes of one version of GT.M. However, it is possible to switch back and forth between V5.0-FT01 and earlier V4.x releases unless a V5.0-FT01 database:

If a database has global variables longer than 8 characters, it is not possible to switch back and forth. To revert, the data will need to be extracted from the V5.0-FT01 database with MUPIP EXTRACT and loaded into a freshly created V4.x database with a MUPIP LOAD.

If a database has M standard subscript collation defined and has nodes with null subscripts, these will need to be Killed before the database is opened with a V4.x version of GT.M; otherwise unpredictable behavior will result, including possibly crashes, hangs and database damage.

If a database has NULL_SUBSCRIPTS set to ALLOWEXISTING, it has to be reset to ALWAYS/YES if there are existing nodes with null subscripts (as there presumably are) or to either ALWAYS/YES or NEVER/No, depending on the pre-upgrade value of the setting, if there are no such nodes.

If using replication and upgrading from V4.2-002 UNIX editions to any later version, recreate the replication instance files as the replication instance file for V4.2-002 is incompatible with subsequent versions.

Due to changes in the journal file format, journal files from older versions are not compatible with V5.0-FT01 and later releases. This means that new journal files will need to be created, which will happen automatically when a database file is opened by a process.

In a dual site configuration running different versions of GT.M on the two systems, when one system is on GT.M version V4.4-002 or higher, the earliest supported version for the other system is GT.M V4.3-000 on UNIX and V4.3-001 on VMS.

It is strongly advisable for the installation procedure to include the creation of a new backup and new journal files with no previous links.

Caution

Although the VMS file system (RMS) has a facility for versioning files, GT.M is designed to have only single version of a database file or journal file with a given file specification (excluding the version designator). Fidelity does not test or provide support for multiple versions of these files. Multiple versions of database files or journal files can lead to unpredictable results.

Refer to "Installing GT.M" in the GT.M Administration and Operations Guide (Chapter 2 in the UNIX edition; Chapter 3 in the VMS edition).

See the Change History for a list of the differences among V5.0-FT01 and V4.4-004.

The most significant enhancement of this release is the support of M names up to 31 characters long from the existing limit of 8 characters. Effective V5.0-FT01, GT.M allows up to 31 characters for the following names:

Any characters after the first 31 are ignored. All utilities MUPIP, LKE, DSE and GDE are also enhanced accordingly to allow up to 31 character names.

This release also includes the following enhancements.

  • Support of a new intrinsic function, $INCREMENT(glvn[,expr]), to atomically increment a global variable by a numeric value.

  • Support of case-sensitive M labels for external routines to call into. On VMS, there is an existing restriction that any calls from external C routines to M must refer to an upper-case M label. Effective V5.0-FT01, this restriction no longer applies and the external routines can refer to mixed-case M labels. The technical bulletin TB5-036 contains the details on enabling this enhancement.

  • Support of an option for a database to allow reading global variables with existing null subscripts but prohibit setting/updating global variables with null subscripts. The technical bulletin TB5-035 contains the details of the enhancements related to these changes.

  • Support of standard null subscript collation where the null subscript ("") collates before all other subscripts. By default, GT.M collates the null subscript between numeric and string subscripts (see TB5-035 for details on enabling this option).

In addition to the above enhancements, there are a number of fixes, performance enhancements and minor adjustments.

$I, $INCR, $INCREMENT, $ZINCR, and $ZINCREMENT are considered as valid synonyms of the full function name.

If not specified, expr defaults to 1. Otherwise, it is evaluated and coerced to a numeric value. The "expr" argument will be evaluated ahead of the "glvn" argument.

If glvn is undefined, a run-time error will be issued unless VIEW "NOUNDEF" is ON in which case glvn will be treated as having the null string value before the increment. This is true even if glvn is a global variable that resides on a remote note and is accessed through a GT.CM GNP server. glvn will be evaluated and coerced to a numeric value before the increment.

If the function is inside a transaction ($TLevel is non zero), or if glvn refers to a local variable, it is equivalent to SET glvn=glvn+expr.

If the function is not inside a transaction ($TLevel is zero) and glvn refers to a global variable, the function is equivalent to a SET glvn=glvn+expr that is performed as an Atomic, Consistent and Isolated operation. Note that the evaluation of expr is not Atomic, Consistent or Isolated; it is only the actual incrementing of the glvn that is. If the region containing the glvn is journaled, then the operation is also Durable. Only BG, MM (VMS only) and GT.CM GNP access methods are supported for the region containing the global variable (glvn). GT.CM OMI and GT.CM DDP access methods are not supported and there are no plans to support them in future.

$INCREMENT is not supported for global variables that have NOISOLATION turned ON (through the VIEW "NOISOLATION" command). If a $INCREMENT is attempted on such a variable, the run time error GTM-E-GVINCRISOLATION is generated.

The naked reference is affected by the usage of global variables (with or without indirection) in the glvn and/or expr components. The fact that "expr" is evaluated ahead of "glvn" needs to be used to determine the value of the naked reference after the $INCREMENT. If no indirection is used in either glvn or expr, the naked reference after the $INCREMENT will be:

  • glvn, if glvn is a global or

  • the last global reference in "expr" if glvn is a local or

  • unaffected if neither glvn nor expr has any global reference

The value of the glvn after the increment is returned as the value of the function.

The following error messages are newly added in this release. In addition, please see technical bulletins TB5-035 and TB5-036 for more messages.

For supplementary information on GT.M V5.0-000 Release, refer GTM_V5.0-000_Supplementary_Information.

For more information, see the GT.M web site.