VAX_Rdb/VMS_________________________________________
Release Notes for Version 4.1A
June 1993
This document contains the Release Notes for Rdb/VMS
Version 4.1A and describes the problems fixed in this
release, additional known problems not fixed, and
additional restrictions.
Operating System: VMS
Software Version: Rdb/VMS Version 4.1A
Digital Equipment Corporation
Maynard, Massachusetts
________________________________________________________________
The information in this document is subject to change
without notice and should not be construed as a commitment
by Digital Equipment Corporation. Digital Equipment
Corporation assumes no responsibility for any errors that
may appear in this document.
The software described in this document is furnished under
a license and may be used or copied only in accordance with
the terms of such license.
No responsibility is assumed for the use or reliability
of software on equipment that is not supplied by Digital
Equipment Corporation or its affiliated companies.
Restricted Rights: Use, duplication, or disclosure by the
U.S. Government is subject to restrictions as set forth in
subparagraph (c)(1)(ii) of the Rights in Technical Data
and Computer Software clause at DFARS 252.227-7013.
© Digital Equipment Corporation 1993.
All Rights Reserved.
The following are trademarks of Digital Equipment
Corporation: CDD/Plus, CDD/Repository, DEC, DECtrace,
Rdb/VMS, VAX, VAX DOCUMENT, VAX Pascal, VAXcluster, VMS,
and the DIGITAL logo.
This document was prepared using VAX DOCUMENT, Version 2.1.
_________________________________________________________________
Contents
Preface................................................... vii
1 Software Problems Fixed
1.1 Installation Did Not Check for Existing UIC... 1-1
1.2 RMU/BACKUP/AFTER/QUIET_POINT Corrupted .AIJ
Backup File................................... 1-1
1.3 .AIJ File Could Contain Duplicate Data
Records....................................... 1-1
1.4 Deadlocks on Backup of .AIJ Files............. 1-2
1.5 RMU/BACKUP/AFTER_JOURNAL Failed Trying to
Truncate the .AIJ File........................ 1-2
1.6 A Self-Insert Query with Mapped Columns
Incorrectly Stored NULL Values................ 1-3
1.7 Bugcheck at PSIISCAN$END_SCAN + 26 After Lock
Exceptions.................................... 1-3
1.8 Bugcheck at UTIO$TRNLNM + 0000008a............ 1-3
1.9 Bugcheck at RDMS$$INSERT_SYMBOL + 0BC and
Other Offsets................................. 1-3
1.10 Bugcheck at RDMS$$EXE_OPEN + 63 on Query...... 1-4
1.11 Bugcheck When Monitor Generated Section Name
That Was Not Unique........................... 1-4
1.12 Memory Corruption Sometimes Caused Error...... 1-5
1.13 Metadata Corruption from Committing After
Failed ALTER, CREATE, or DROP Statements...... 1-5
1.14 Possible Access Violation with SET
TRANSACTION................................... 1-5
1.15 RDB$REMOTE_BUFFER_SIZE Was Translated Only
from the Process Table........................ 1-5
1.16 Failure to Delete or Update Existing
Records....................................... 1-6
1.17 Update Attempt Generated Incorrect
RDB-E-READ_ONLY_REL Error..................... 1-6
iii
1.18 RDML Generated Incorrect RDML-E-READ_ONLY
Error......................................... 1-6
1.19 Unnecessary Arithmetic Exceptions for Divide
and Multiply Operations....................... 1-7
1.20 Importing Large Databases with Many Storage
Areas......................................... 1-7
1.21 Trailing Spaces in Selection Value Caused
Incorrect Data Retrieval...................... 1-8
1.22 RDML Generated Incorrect RDML-W-JOIN_ATTRIBUTE
Error......................................... 1-8
1.23 Constraints Checked Only for Database First
Declared...................................... 1-9
1.24 Possible Database Corruption from Fragmented
Segmented String Records...................... 1-9
1.25 Monitor Exhausted Virtual Memory.............. 1-10
1.26 Bugcheck at KOD$UNBIND + 133 Affected
Detaching from Database....................... 1-10
1.27 Undeleted Mailbox Channels Could Cause Server
Failure....................................... 1-10
1.28 Monitor Terminated Abnormally When Closing a
Database...................................... 1-11
1.29 Segmented Index Search Returned Incorrect
Results....................................... 1-11
1.30 Corrupted Segmented Strings................... 1-11
1.31 RMU/RESTORE/ONLY_ROOT Incorrectly Updated the
Root File..................................... 1-12
1.32 Intermittent Access Violation Showed as an
Error Condition............................... 1-12
1.33 RMU/VERIFY/ALL Erroneously Flagged an Error... 1-12
1.34 RMU/VERIFY/ALL Exceeded Quota................. 1-12
1.35 RMU/VERIFY Bugchecked When Displaying Certain
Messages...................................... 1-12
1.36 Incorrect Results Were Returned If First Value
Was NULL...................................... 1-13
1.37 VERIFY Command Mishandled Root Files.......... 1-13
1.38 Join Query with Complex WHERE Clause
Containing OR Predicate Returned Wrong
Result........................................ 1-13
1.39 SQL/Services TCP/IP Support Did Not Work for
Messages That Exceeded the Client Write Buffer
Size.......................................... 1-13
1.40 Remote Start Transactions..................... 1-14
iv
1.41 B-Tree Corruption Resulted from Reorganizing
Sorted Indexes................................ 1-14
1.42 Wrong Results Were Returned for Some Retrieval
Strategies.................................... 1-14
1.43 Optimizer Chose Wrong Index for DELETE........ 1-14
1.44 Transaction Parameter Block Error When
DECtrace Was Running.......................... 1-14
1.45 Wrong Results Were Returned After Cursor Was
Opened........................................ 1-15
1.46 Optimizer Bugchecked at RDMS$$EXE_LEAF+453.... 1-15
1.47 SQL UPDATE ONLY Clause Caused Excessive
Journal Growth................................ 1-15
1.48 CURRENT_TIMESTAMP Did Not Return Actual
Current Time.................................. 1-16
1.49 LINK-E-SHRPSCLNG Errors Using SQL$USER.OLB.... 1-16
1.50 Incorrect Values During Index-Only Retrieval
Used Mapped Indexes........................... 1-17
1.51 IMPORT Statement Resulted in an Access
Violation..................................... 1-18
1.52 SELECT <correlation>.* FROM Table Failed with
Error......................................... 1-18
1.53 Distributed Boolean Queries Did Not Always
Return Rows................................... 1-19
1.54 Rows Not Sorted Correctly When Sorted on
VARCHAR Column................................ 1-19
2 Known Problems and Restrictions
2.1 SQL$STARTUP.COM Command Procedure No Longer
Exists........................................ 2-1
2.2 RMU/EXTRACT Does Not Extract Certain
Details....................................... 2-1
2.3 Virtual Address Space Is Exhausted by
RMU/VERIFY/ROOT............................... 2-2
2.4 Corrupt Index Produces Bugcheck............... 2-3
2.5 Delay Seen in First SQL SELECT Statement...... 2-3
2.6 Concurrent Table Inserts into Same Storage
Area Waste Space.............................. 2-3
2.7 RMU/EXTRACT Generates Output with Invalid
Syntax........................................ 2-5
2.8 SQL$PRE/Pascal Record Problem................. 2-5
2.9 Creation of Tables Containing Incompatible
Data Types.................................... 2-5
v
2.10 Creating a Descending Partitioned Sorted
Index......................................... 2-6
2.11 AIJ Header Translates Logical................. 2-7
2.12 RMU/EXTRACT/ITEM=VERIFY All Sorted Indexes in
Stream 1...................................... 2-8
2.13 Zigzag Match Strategy Loops or Bugchecks...... 2-9
2.14 File Limit on Sortwork Directory.............. 2-9
2.15 RMU/EXTRACT/ITEM=VERIFY Does Not Handle
Certain Indexes Correctly..................... 2-9
2.16 Bugcheck Storing Record After Snapshot File
Has Been Truncated............................ 2-9
2.17 DBR Processes May Hang Due to Waiting Lock
Requests...................................... 2-10
2.18 Problem Using Connections in Rdb/VMS.......... 2-10
2.19 Problem with Closing Cursors Between
Executable and Shareable Images............... 2-11
2.20 SQLPRE Confused with Exec SQL ALTER DATABASE
Statement..................................... 2-11
2.21 Column Name Is the Same as Domain............. 2-12
2.22 Bugcheck at FIND_DIV_OR_MULT.................. 2-12
2.23 RMU/SHOW STATISTICS Does Not Handle Large
Numbers....................................... 2-12
2.24 SQL-F-INVRNG from SQL IMPORT and SQL CREATE
DATABASE...................................... 2-13
2.25 Queries Using OR and Sorted Index May Result
in a Bugcheck................................. 2-13
2.26 Changes to Tables That Have DDAL Transfers
Defined....................................... 2-13
2.27 Documentation Errors in the V4.1 VAX Rdb/VMS
Release Notes................................. 2-14
2.27.1 Incorrect Example in Section 1.23.12...... 2-14
2.27.2 Incorrect Example in Section 3.2.15....... 2-14
vi
_________________________________________________________________
Preface
Rdb/VMS software is a general-purpose database management
system based on the relational data model.
This manual describes software problems fixed, known
problems, and restrictions in the Rdb/VMS Version 4.1A
release.
Intended Audience
These release notes are intended for all users of Rdb/VMS
Version 4.1A, and should be read to supplement information
contained in the Rdb/VMS Version 4.1 documentation set.
To get the most out of this manual, you should be familiar
with Rdb/VMS, data processing procedures, and basic
database management concepts and terminology.
A Note on the Terminology
When the SQL and RDO interfaces use different terms to
describe the same entity or concept, this manual uses
the SQL term, unless the discussion is specifically about
RDO or RDML. (This is also true of most other manuals in
the Rdb/VMS documentation set.) For example, this manual
normally uses table instead of relation, column instead of
field (of a relation), and row instead of record.
Operating System Information
The version of VMS running on your system must be at least
Version 5.3 for Rdb/VMS V4.1A. Other information about the
versions of the operating system and related software that
are compatible with this version of Rdb/VMS is included in
the Rdb/VMS media kit and the V4.1 VAX Rdb/VMS Installation
Guide.
vii
For information on the compatibility of other software
products with this version of Rdb/VMS, refer to the System
Support Addendum (SSA) that comes with the Software Product
Description (SPD). You can use the SPD/SSA to verify which
versions of your operating system are compatible with this
version of Rdb/VMS.
Structure
This manual contains information pertaining to Rdb/VMS
Version 4.1A.
Chapter 1 Describes known software errors that are
fixed in Rdb/VMS Version 4.1A.
Chapter 2 Describes current problems, additional
restrictions, and workarounds known to
exist for Rdb/VMS Version 4.1A.
Related Manuals
For more information on Rdb/VMS, see the following manuals
in the Rdb/VMS V4.1 documentation set.
o Getting Started with VAX Rdb/VMS
Introduces VAX Rdb/VMS, the Digital relational database
management system for VMS software environments. It
explains relational database concepts and introduces
using SQL to retrieve, store, and update data. It also
introduces how to create, load, and maintain a VAX
Rdb/VMS database.
o VAX Rdb/VMS Guide to Database Maintenance
Explains how to use the database maintenance utilities
to perform such operations as database monitoring,
security auditing, opening and closing a database,
verifying and altering a database, backing up,
restoring, and recovering a database, journaling
database activity, modifying database characteristics,
and handling bugcheck dumps.
viii
o VAX Rdb/VMS Guide to Database Performance and Tuning
Describes how to analyze the elements that affect
database performance and how to tune those elements
to optimize performance. This book contains decision
trees that provide an organized approach to identifying
and solving common database performance problems.
o VAX Rdb/VMS RMU Reference Manual
Provides reference material and a complete description
of the commands and syntax of the Rdb/VMS Management
Utility (RMU).
o VAX Rdb/VMS Glossary and Master Index
Defines terms used in the documentation for Rdb/VMS and
related products. It also provides a master index to the
entire Rdb/VMS documentation set.
o VAX Rdb/VMS SQL Reference Manual
Provides reference material and a complete description
of the statements, the interactive, dynamic, and
module language interfaces, and the syntax for SQL,
the structured query language interface for Rdb/VMS.
o VAX Rdb/VMS Guide to Using SQL
Introduces the Rdb/VMS SQL (structured query language)
interface, and shows how to retrieve, store, and update
data interactively and through application programs. Can
be used as a tutorial for learning the major features of
SQL.
o VAX Rdb/VMS Guide to Using SQL/Services
Describes how to develop application programs that use
SQL/Services, a client/server software component of
Rdb/VMS. SQL/Services allows programs invoked on various
remote computers running the Macintosh, MS-DOS, OS/2,
SunOS, ULTRIX, ULTRIX for RISC, or VMS operating systems
to access Rdb/VMS databases as well as other databases
supported by SQL on a VMS server system.
ix
o VAX Rdb/VMS Guide to Distributed Transactions
Describes the two-phase commit protocol and distributed
transactions, explains how to start and complete
distributed transactions using SQL, RDBPRE, and RDML,
and how to recover from unresolved transactions using
RMU commands.
o VAX Rdb/VMS Guide to Database Design and Definition
Explains how to design a logical database and how to
translate that design into a physical database using
Rdb/VMS data definition statements.
o VAX Rdb/VMS Installation Guide
Describes how to install Rdb/VMS.
o VAX Rdb/VMS Release Notes
Describes new features, problems and problems fixed,
restrictions, and other information related to Rdb/VMS
Version 4.1. Contains information about SQL and other
Rdb/VMS interfaces and utilities.
Conventions
In examples, an implied carriage return occurs at the end
of each line, unless otherwise noted. You must press the
Return key at the end of a line of input.
Often in examples the prompts are not shown. Generally,
they are shown where it is important to depict an
interactive sequence exactly; otherwise, they are omitted
in order to focus full attention on the statements or
commands themselves.
This section explains the conventions used in this manual:
<Ctrl/x> This symbol in examples tells you to press
the Ctrl (control) key and hold it down while
pressing the specified letter key.
Vertical ellipsis points in an example mean that
. information not directly related to the example
. has been omitted.
.
x
. . . Horizontal ellipsis points in statements or
commands mean that parts of the statement or
command not directly related to the example have
been omitted.
< > Angle brackets enclose user-supplied names.
$ The dollar sign represents the DIGITAL Command
Language prompt. This symbol indicates that the
DCL interpreter is ready for input.
References to Products
The Rdb/VMS documentation to which this document belongs
often refers to products by their abbreviated names:
o DECtrace for VMS software is referred to as DECtrace.
o VAX CDD/Plus software is referred to as CDD/Plus, the
data dictionary, or the dictionary.
o VAX Pascal software is referred to as Pascal.
o Rdb/VMS software is referred to as Rdb/VMS. Rdb/VMS
software Versions 4.1 and 4.1A are often referred to as
V4.1 and V4.1A respectively.
o The SQL interface to VAX Rdb/VMS is referred to as SQL.
The SQL interface is Digital Equipment Corporation's
implementation of the SQL standard ANSI X3.135-1989, ISO
9075:1989, commonly referred to as ANSI/ISO.
xi
1
_________________________________________________________________
Software Problems Fixed
The following sections describe problems with previous
versions of the Rdb/VMS software that are fixed in Version
4.1A for all interfaces. These software problems no longer
exist.
1.1 Installation Did Not Check for Existing UIC
The installation did not check for existing UIC when
asking the question for creating the RDB$REMOTE or the
RDB$REMOTE41 account.
1.2 RMU/BACKUP/AFTER/QUIET_POINT Corrupted .AIJ Backup File
It was possible for the
RMU/BACKUP/AFTER_JOURNAL/QUIET_POINT command to produce
a corrupt .AIJ backup file when the following conditions
were true:
o The /CONTINUOUS qualifier was used.
o The fast commit feature was enabled.
o Users were active when the AIJ backup operation was
performed.
The resulting .AIJ backup file was not usable for a
subsequent database recovery operation. No damage to the
active database occurred as the result of this problem, nor
was the active .AIJ file corrupted in any manner.
1.3 .AIJ File Could Contain Duplicate Data Records
AIJ data records could be duplicated in the .AIJ file under
two conditions:
o During large group commit operations, where the data
being written to the .AIJ file exceeded 64 blocks
Software Problems Fixed 1-1
o During AIJ lock rebuild operations
While AIJ data was merely duplicated, not lost, the
resulting .AIJ file could be considered "corrupt" by the
roll-forward utility, if it encountered AIJ data records it
did not expect.
Data is now journaled in the .AIJ file without being
duplicated. Rdb/VMS corrects the formatting of AIJ request
blocks into the AIJ cache, so that AIJ request blocks are
always atomically formatted, not partially formatted. In
addition, when Rdb/VMS rebuilds the AIJ lock value block,
if the number of bytes used is nonzero, the last written
AIJ block must be the first block in the AIJ cache.
1.4 Deadlocks on Backup of .AIJ Files
If a process failed while the RMU/BACKUP/AFTER_JOURNAL
utility was trying to perform a critical operation on the
.AIJ file (such as truncating it), it was possible for RMU
to fail because of a deadlock with the database recovery
process's freeze lock. This problem occurs because the
AIJ backup utility does not make certain critical lock
operations completable with respect to the freeze lock
protocol.
The problem was more likely to occur on high-volume,
update-intensive applications. The problem did not occur
when there was no database update activity during the AIJ
backup.
1.5 RMU/BACKUP/AFTER_JOURNAL Failed Trying to Truncate the .AIJ
File
RMU may have failed when attempting to truncate the .AIJ
file. This problem occurred only when fast commit was
enabled. Also, this problem was more likely to occur during
periods of high database throughput, typically when the
application process had attached to multiple databases.
1-2 Software Problems Fixed
1.6 A Self-Insert Query with Mapped Columns Incorrectly Stored
NULL Values
Rdb/VMS inserted NULL values instead of aggregated values
when both of the following conditions were true:
o The query selected the data from and inserted it into
the same table.
o The columns in the SELECT list were mapped columns
(either GROUP BY plus aggregate columns or UNION
columns).
This problem could have also occurred if the SELECT
statement had a UNION clause.
1.7 Bugcheck at PSIISCAN$END_SCAN + 26 After Lock Exceptions
A bugcheck could occur after a lock exception, such as
%RDMS-F-DEADLOCK, deadlock on freeze. In engineering tests,
this bugcheck occurred at PSIISCAN$END_SCAN + 26, although
offsets varied. Such bugchecks were caused by a timing
window problem when Rdb/VMS cleaned up the lock failure.
1.8 Bugcheck at UTIO$TRNLNM + 0000008a
A bugcheck was produced if a logical name table had access
control lists that denied world access.
1.9 Bugcheck at RDMS$$INSERT_SYMBOL + 0BC and Other Offsets
Bugchecks were observed with an exception at
RDMS$$INSERT_SYMBOL + 0BC. (They also occurred under other
offsets, such as + 0B8.) This bugcheck was rare and was
generally caused by a lock conflict on freeze or timeouts
when Rdb/VMS tried to load metadata information for a
table.
The lock conflict forced unloading of the metadata
information. However, the unload operation did not clean
up some symbol table information. When a metadata reload
was attempted, the bugcheck occurred because the reload
operation tried to insert information into a symbol table
that already existed.
Software Problems Fixed 1-3
1.10 Bugcheck at RDMS$$EXE_OPEN + 63 on Query
The following query resulted in a bugcheck at
RDMS$$EXE_OPEN + 63 because a structure containing
information about a loaded table was not properly loaded
before the second open cursor. For example:
SQL> ATTACH 'FILENAME TEST';
SQL> CREATE TABLE TAB (COL SMALLINT);
SQL> INSERT INTO TAB VALUES (100);
SQL> DECLARE C1 CURSOR FOR SELECT COL FROM TAB ORDER BY COL;
SQL> OPEN C1;
SQL> FETCH C1;
SQL> COMMIT;
SQL> OPEN C1;
%RDMS-I-BUGCHKDMP, generating bugcheck dump file DISK4:[WD]RDSBUGCHK.DMP;1
%SQL-I-BUGCHKDMP, generating bugcheck dump file DISK4:[WD]SQLBUGCHK.DMP;1
%SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual
address=00000034, PC=00000000, PSL=00000000
SQL>
1.11 Bugcheck When Monitor Generated Section Name That Was Not
Unique
The monitor occasionally failed at MON$CREATE_TROOT_SECTION
with the following error:
Exception At MON$CREATE_TROOT_SECTION+CB
%RDMS-F-BUGCHECK, fatal, unexpected error detected
This exceptionally rare problem occurred when the monitor
generated a random global section name that already
existed. The random name generation routine for the monitor
relies on the PID (process ID) for uniqueness. Because the
monitor is a persistent process whose PID never changes,
it was possible to generate a duplicate global section
name if multiple sections were created in rapid succession.
Now, each global section name produced by a process with a
particular PID must also be unique.
1-4 Software Problems Fixed
1.12 Memory Corruption Sometimes Caused Error
Memory corruption caused random bugchecks, looping,
and other abnormal behavior. The most common bugchecks
reported for this particular class of problem
occurred in the routines KOD$GET_VM, KOD$FREE_VMLIST,
PSIISCAN$GET_NEXT_DUPLICATE, PSIISCAN$END_SCAN, and
RDMS$$COMPILE_INDEX_MAPS. The exception was typically a
SYSTEM-F-ACCVIO or a SYSTEM-F-ROPRAND.
1.13 Metadata Corruption from Committing After Failed ALTER,
CREATE, or DROP Statements
Metadata corruption may have occurred if you executed a
COMMIT statement after receiving an error during a CREATE,
DROP, or ALTER statement.
This problem did not affect user data in any way. If
the view, trigger, or constraint definitions were not
referenced, they caused only an inconvenience.
1.14 Possible Access Violation with SET TRANSACTION
It was possible to get an access violation doing a two-
phase commit transaction. The access violation occurred
only if the SET TRANSACTION declaration was invalid. For
example:
SQL>
ATTACH 'ALIAS ONEDB FILENAME WORK$DB:PERSONNEL.RDB';
ATTACH 'ALIAS TWODB FILENAME WORK$DB:PERSONNEL.RDB';
SET TRANSACTION ON ONEDB USING (READ ONLY WAIT 3)
AND ON TWODB USING (RESERVING TWODB.EMPLOYEES FOR
PROTECTED WRITE WAIT 3);
In V4.1A an appropriate error message is generated.
1.15 RDB$REMOTE_BUFFER_SIZE Was Translated Only from the Process
Table
The RDB$REMOTE_BUFFER_SIZE logical was translated only
from the process table. If the logical was defined in
other tables, it was not translated. The logical is now
translated from LNM$DCL_LOGICAL. To see the tables defined
by this structure, issue the following command:
$ SHOW LOGICAL/STRUCTURE LNM$DCL_LOGICAL
Software Problems Fixed 1-5
1.16 Failure to Delete or Update Existing Records
Under certain circumstances, previous versions of Rdb/VMS
failed to select records to delete or update.
This failure occurred, in general, under the following
conditions:
o An index existed on the table to be operated on, and
that index was used for selection of the records to be
deleted or updated.
o The display of the strategy using the RDMS$DEBUG_FLAG =
"S" showed that a temporary table was being used.
o A substring expression was used on a column within the
table to select the appropriate records.
o The last record selected by the selection criteria was
not the last record that existed within the index.
1.17 Update Attempt Generated Incorrect RDB-E-READ_ONLY_REL Error
Rdb/VMS returned an incorrect RDB-E-READ_ONLY_REL error
when a reserved table was used as the source for an UPDATE
statement. The following example shows the sequence of
commands that generated the error:
SQL> SET TRANSACTION READ WRITE
cont> RESERVING TABLE1 FOR SHARED WRITE,
cont> TABLE2 FOR SHARED READ;
SQL> UPDATE TABLE1
cont> SET FIELD1 = (SELECT FIELD1 FROM TABLE2);
%RDB-E-READ_ONLY_REL, relation TABLE2 was reserved for
read access; updates not allowed
The READ_ONLY_REL error is no longer generated in this
situation.
1.18 RDML Generated Incorrect RDML-E-READ_ONLY Error
When using STORE and MODIFY statements, RDML attempted
to detect assignments into COMPUTED BY fields, which were
read-only. RDML incorrectly determined that an assignment
from a COMPUTED BY field to a field that is read/write was
illegal.
1-6 Software Problems Fixed
RDML generated an incorrect %RDML-E-READ_ONLY error when
processing queries like the following:
FOR R1 IN REL1
FOR R2 IN REL2
MODIFY R2 USING
R2.F2 = R1.F1 <----(R1.F1 is a COMPUTED BY field)
END_MODIFY
END_FOR
END_FOR
FOR R1 IN REL1
STORE R2 in REL2 USING
R2.F2 = R1.F1 <----(R1.F1 is a COMPUTED BY field)
END_STORE
END_FOR
1.19 Unnecessary Arithmetic Exceptions for Divide and Multiply
Operations
Under certain circumstances, Rdb/VMS unnecessarily
generated arithmetic exceptions for queries involving
division and multiplication operations. This occurred when
Rdb/VMS evaluated a division expression involving a divisor
value of 0, or a multiplication of two large values, prior
to applying a selection predicate that would have excluded
the row under consideration (thus making the performed
operation unnecessary).
1.20 Importing Large Databases with Many Storage Areas
Attempts to import large databases with many storage areas
sometimes failed with the following error:
%SQL-F-NOIDXRES, unable to import index SX_CONS_MONEY_PREM_DT
%RDB-F-SYS_REQUEST, error from system services request
-RDB-E-NO_META_UPDATE, metadata update failed
-RDMS-F-FILACCERR, error opening storage area file {filename}
-SYSTEM-F-NOIOCHAN, no I/O channel available
The error happened because Rdb/VMS had a hardcoded limit
on the number of open channels it would allow from EXEC
mode for each stream. For previous versions of Rdb/VMS,
the limit was 512 open channels per database attach. The
maximum number of open I/O channels has been increased to
1536. You must increase the VMS system parameter CHANNELCNT
Software Problems Fixed 1-7
(the maximum number of open channels allowed by VMS)
correspondingly.
1.21 Trailing Spaces in Selection Value Caused Incorrect Data
Retrieval
When all of the following were true, Rdb/VMS did not return
the correct set of database rows:
o The database was defined with a collating sequence.
o An index was defined and used for accessing a table.
o The selection value contained one or more trailing
spaces.
The trailing spaces in the selection value caused Rdb/VMS
to incorrectly retrieve the data values from the index.
1.22 RDML Generated Incorrect RDML-W-JOIN_ATTRIBUTE Error
RDML issues an error when an ERASE or MODIFY statement
operated on a context that is used in a query strategy
that results in a CROSS clause. This construct is illegal
because it can lead to unpredictable results. In Rdb/VMS
V4.1, RDML sometimes incorrectly determined that a relation
was part of a cross operation. For example:
FOR E IN APPL$HANDLE.EMPLOYEES WITH E.EMPLOYEE_ID = CUR_ID_CODE
FOR E0 IN APPL$HANDLE.EMPLOYEES WITH E0.RDB$DB_KEY = E.RDB$DB_KEY
MODIFY E0 USING
ON ERROR
$PUTMSG (RDB$MSG_VECTOR);
END_ERROR
E0.EMPLOYEE_ID := NEW_ID_CODE;
END_MODIFY;
END_FOR;
END_FOR;
Preprocessing this code incorrectly produced the following
error:
%RDML-W-JOIN_ATTRIBUTE, Relation 'EMPLOYEES' is part of a
join cannot be updated
%RDML-I-ATLINE, at line 36 in the file DISK02:[RDB]TEST.RPA
1-8 Software Problems Fixed
1.23 Constraints Checked Only for Database First Declared
The SET ALL CONSTRAINTS ON statement, using a context
variable or parameter for the two-phase commit protocol
with multiple databases and multiple transactions, used
to check the constraints in only the database that was
declared first. Now it checks the constraints in all
declared databases.
1.24 Possible Database Corruption from Fragmented Segmented
String Records
Under V4.1, database corruption could occur if the
segmented string record become fragmented. Rdb/VMS V4.0
introduced an optimization when allocating segmented
strings. This optimization avoided extending the area
by reusing space that was made available in the current
transaction. In other words, if a segmented string was
previously deleted (either by deleting the row, assigning
NULL to the column, or replacing the value with new data)
the old segments were saved and recycled.
Unfortunately, in cases where the old segment was too
small for the new data, the segment could be fragmented.
In addition, if the old segment was less than 10 bytes long
(including a standard 5-byte header) then the fragmentation
information would not fit in the available space, thus
corrupting the database page.
________________________ Note ________________________
This corruption did not occur in any of the following
situations:
o If you used WORM (write-once, read-many) areas,
this corruption did not occur in those areas
because the segmented string data was never
revised.
o If you defined the logical,
RDMS$USE_SEGMENTED_STRING, to Yes.
o When you used CDD/Plus or CDD/Repository, because
the data dictionary always uses the old-style
segmented strings.
______________________________________________________
Software Problems Fixed 1-9
The correction to the problem may also improve retrieval
performance of segmented strings because Rdb/VMS no longer
fragments any segmented string segments that are recycled.
1.25 Monitor Exhausted Virtual Memory
With databases containing a large number of global buffers
or a large number of storage areas, the database monitor
would exhaust virtual memory, prohibiting additional
database attaches, as follows:
o When the database parameters were set to "OPEN IS
MANUAL," successive or repetitive opening and closing
of the databases eventually caused the database monitor
to run out of virtual memory.
o When the database parameters were set to "OPEN IS
AUTOMATIC," repetitive "first" user attaches eventually
caused the database monitor to run out of virtual
memory. This condition was harder to detect and prevent.
The problem was caused because the monitor created a
global section that contained more than 32,000 VMS pages
of memory.
1.26 Bugcheck at KOD$UNBIND + 133 Affected Detaching from
Database
Users might have encountered a bugcheck at KOD$UNBIND + 133
with OpenVMS V5.5 and later, with an error of %SYSTEM-F-
SUBLOCKS when lock remastering occurred and a process that
was doing Rdb/VMS activity ended (normally or abnormally).
When this problem occurred, the database remained locked;
you could release the lock only by deleting all processes
that had locks associated with the database.
1.27 Undeleted Mailbox Channels Could Cause Server Failure
The SQL/Services communications server did not delete
mailbox channels. Under some circumstances this problem
caused the server to fail.
Configurations with the following characteristics were more
likely to experience this problem:
o Insufficient system resources
1-10 Software Problems Fixed
o Low idle timer setting
o High number of execute server processes created
o System up for a long time
1.28 Monitor Terminated Abnormally When Closing a Database
The monitor terminated abnormally when you used the
RMU/CLOSE/CLUSTER command. The exception listed in the
monitor log was one of the following:
"***** Exception at 000068D4 : MON$RELEASE_LCKTRM_USER + 0000006C"
"***** Exception at 00004DD2 : MON$FREE_VM + 0000001B"
This problem was caused by a timing condition in the
clusterwide database close procedure. It was possible for
a database recovery process (DBR) to be started because
a user process was abnormally terminated (Ctrl-Y/STOP or
DELETE/QUEUE) while the database was being closed on a
cluster with the /ABORT=FORCEX qualifier.
1.29 Segmented Index Search Returned Incorrect Results
Queries that used segmented indexes sometimes returned
incorrect results. The problem occurred because a SELECT
statement with value qualifiers that fell between two
existing index keys used the B-tree index. The B-tree
search algorithm incorrectly chose the lesser index key
as matching the search criteria.
1.30 Corrupted Segmented Strings
If you converted your database to V4.1 using the
RMU/CONVERT/NOCOMMIT command, and then inserted or
modified segmented strings, without having the logical
RDMS$USE_OLD_SEGMENTED_STRING defined, then issued an
RMU/CONVERT/ROLLBACK command, corruption of the segmented
strings could have occurred.
Software Problems Fixed 1-11
1.31 RMU/RESTORE/ONLY_ROOT Incorrectly Updated the Root File
The RMU/RESTORE/ONLY_ROOT command incorrectly updated the
root file if changes to the physical storage area occurred
after the backup file was created. For example, suppose
that the thresholds were set at (0,0,50) when a database
was backed up. If you issued the following command, you
would expect the threshold values to be changed:
$ RMU/RESTORE/ONLY_ROOT TEST_AREA /THRESHOLD=(50,70,90)
Although thresholds are reported as changed to (50,70,90),
they were evaluated using the values (0,0,50).
1.32 Intermittent Access Violation Showed as an Error Condition
A very rare and intermittent access violation manifested
itself as an error condition (SQLCODE of -1) returned
from SQL. A call to SQL$GET_ERROR_TEXT returned an access
violation with the reason mask, PC, and PSL all zero.
1.33 RMU/VERIFY/ALL Erroneously Flagged an Error
When a previously filled segmented string was set to NULL,
the RMU/VERIFY/ALL command flagged an error.
1.34 RMU/VERIFY/ALL Exceeded Quota
If there were a lot of fragmented segmented string
data, the RMU/VERIFY/ALL command might have reported a
RDMS-F-EXQUOTA error message.
This problem has been fixed, but if you continue to get
RDMS-F-EXQUOTA messages while doing an RMU/VERIFY/ALL
you can avoid this error by exporting and importing the
database and modifying the buffer size to equal the page
size. Database performance may or may not be impacted by
this change.
1.35 RMU/VERIFY Bugchecked When Displaying Certain Messages
A bugcheck dump was generated whenever RMU/VERIFY attempted
to display a message when any of the following errors were
detected:
o The length of a nonduplicate B-tree node was incorrect.
o A dbkey in a duplicate B-tree node was invalid.
1-12 Software Problems Fixed
o The length of a duplicated B-tree node was incorrect.
1.36 Incorrect Results Were Returned If First Value Was NULL
A query sometimes incorrectly returned no data because of
the way the query was formulated. The problem arose when
an OR retrieval with an index for each field was placed
on either side of the OR clause. When the value returned
in the first part of the OR was NULL and the value in the
second part of the OR retrieval was non-NULL then Rdb/VMS
returned incorrect results.
1.37 VERIFY Command Mishandled Root Files
The RMU/VERIFY command did not correctly handle root
specifications with search list logicals. Unless the
database was in the first directory specified in the search
list, the RMU/VERIFY command returned an error saying the
database did not exist.
1.38 Join Query with Complex WHERE Clause Containing OR Predicate
Returned Wrong Result
A query joining two tables with a complex WHERE clause
containing the OR predicate returned wrong results. The
strategy used was OR index retrieval. The wrong result was
produced because some of the predicates in the WHERE clause
were evaluated too early; that is, before all required
contexts were available.
1.39 SQL/Services TCP/IP Support Did Not Work for Messages That
Exceeded the Client Write Buffer Size
SQL/Services TCP/IP support failed when client messages
exceeded the client write buffer size. The default write
buffer size is 1300 bytes. If a client message was larger
than the write buffer size, SQL/Services broke the message
into packets. The SQL/Services communications server
incorrectly expected to receive the same number of packets
and the same size packets that the client sent. This
could not be assumed with TCP/IP. If the server read
packets faster than the client sent them, the SQL/Services
execution server bugchecked, displaying the following
error:
Software Problems Fixed 1-13
SQL Services Internal Error: 41
1.40 Remote Start Transactions
After a remote link was broken, the next START TRANSACTION
statement from the remote attach failed with:
%RDB-F-SYS_REQUEST, error from system services request
-LIB-F-INSFVIRMEM, insufficient virtual memory
1.41 B-Tree Corruption Resulted from Reorganizing Sorted Indexes
A B-tree node could be corrupted when sorted indexes were
reorganized under the following conditions:
o The B-tree node being reorganized contained a single
entry.
o The dbkey in the entry had a compressed length that was
different from that of the dbkey it was replacing.
The problem was caused because the B-tree node length
had not been updated correctly to reflect the potential
difference in size of the compressed dbkey.
1.42 Wrong Results Were Returned for Some Retrieval Strategies
Depending on whether an ORDER BY clause was present or on
the choice of the optimizer strategy, wrong results were
returned. This problem was evident with a match strategy,
the outer loop of which is a cross strategy of two entries.
1.43 Optimizer Chose Wrong Index for DELETE
During a DELETE operation, sometimes the wrong index was
chosen by the optimizer. The SELECT operation chose the
correct strategy.
1.44 Transaction Parameter Block Error When DECtrace Was Running
Executing an RMU/UNLOAD, RDO EXPORT, or SQL EXPORT command
while DECtrace was running generated an RDB-F-BAD_TPB_FORM
error.
1-14 Software Problems Fixed
1.45 Wrong Results Were Returned After Cursor Was Opened
The first time a cursor was opened in a program, subsequent
fetches did not always return the complete selection. The
second time the cursor was opened, correct results were
returned. This error was not seen with interactive queries.
This error in processing was rare. The error could occur
only during processing of a query that used host-variables
to specify ORed index ranges and a strategy of dynamic OR
index retrieval. The same query with only constant values
works correctly.
1.46 Optimizer Bugchecked at RDMS$$EXE_LEAF+453
Rdb/VMS bugchecked with the exception RDMS$$EXE_LEAF + 453
when using dynamic optimization with the backround using
many indexes. The following example is a strategy that can
generate this problem:
Sort
Cross block of 2 entries
Cross block entry 1
Conjunct Conjunct Conjunct Conjunct
Leaf#01 BgrOnly TAB1 Card=147928
BgrNdx1 IND1_TAB1 [4:4] Bool Fan=10
BgrNdx2 IND2_TAB1 [2:2] Fan=12
BgrNdx3 IND3_TAB1 [3:3] Bool Fan=9
Cross block entry 2
Leaf#02 BgrOnly TAB2 Card=150294
BgrNdx1 IND1_TAB2 [2:2] Fan=12
1.47 SQL UPDATE ONLY Clause Caused Excessive Journal Growth
Excessive RUJ, SNP, and AIJ growth was observed for some
queries that read records with the intent of later updating
some or all of them. This problem occurred under the
following circumstances:
o Rdb/VMS V3.1, V3.1A, and V3.1B had this problem due to
their implementation of the UPDATE ONLY feature. UPDATE
ONLY was then disabled for V3.1B and continued to be
disabled for V3.1C and V4.0*.
Software Problems Fixed 1-15
o In Rdb/VMS V4.1, new syntax and semantics were added to
the SQL DECLARE TABLE CURSOR statement to provide the
UPDATE ONLY feature for cursors. UPDATE ONLY cursors
should be used when all or most of the rows will be
modified by subsequent UPDATE . . . WHERE CURRENT OF or
DELETE FROM . . . WHERE CURRENT OF statements.
For UPDATE ONLY cursors, all rows fetched from the
database are locked for UPDATE. If the UPDATE ONLY
clause is not used then, the rows will be locked for
READ, and then these locks will be later converted to
UPDATE locks. In general, the use of UPDATE ONLY avoids
lock conversion operations and also possible deadlocks
resulting from this conversion process.
o In Rdb/VMS V4.1, new semantics were added to the SQL
searched UPDATE statements (UPDATE statements that do
not use a cursor) so that UPDATE ONLY was always used.
This was removed in V4.2 and V5.0.
The excessive journaling problem has been fixed for
searched UPDATE statements and UPDATE ONLY cursors in
Rdb/VMS V4.1A and DEC Rdb V5.1, and will be fixed in all
Rdb/VMS V4.1 and V4.2 future mandatory updates.
1.48 CURRENT_TIMESTAMP Did Not Return Actual Current Time
The CURRENT_TIMESTAMP, CURRENT_DATE, and CURRENT_TIME SQL
functions did not always return the actual current value.
In Rdb/VMS V4.1, the CURRENT_TIMESTAMP code was
restructured to update current date-time values with each
database request rather than by run-time generated code. An
unneeded condition test was left in the newly restructured
code that sometimes prevented the current date-time values
from being updated with each database request.
1.49 LINK-E-SHRPSCLNG Errors Using SQL$USER.OLB
In a shareable image when V4.0* and V4.1 modules are
linked, the following error occurred:
%LINK-E-SHRPSCLNG, Psect SQL$CALLER_PC has length of 8
in module SQL$CVT file SYS$COMMON:[SYSLIB]SQL$USER41.OLB;7
which exceeds length of 4 in shareable image
DISK2:[SMITH]RUNTIME.EXE;4
-LINK-E-NOIMGFIL, image file not created
1-16 Software Problems Fixed
1.50 Incorrect Values During Index-Only Retrieval Used Mapped
Indexes
Due to a problem in the decompression of compressed
integers within a mapped index, incorrect values were
returned during queries that carried out index-only
retrieval on the mapped index.
This problem occurred only if the value from the mapped
index rather than the value from the record itself, was
used for comparisons or display. For example:
SQL> CREATE TABLE T1 (F1 INTEGER, F2 INTEGER, F3 INTEGER);
SQL> CREATE INDEX I1 ON T1
(F1 , F2 MAPPING VALUES 70000000 TO 99999999);
SQL> INSERT INTO T1 VALUE ( 1, 79999991, 1);
1 row inserted
SQL> INSERT INTO T1 VALUE ( 1, 79999994, 1);
1 row inserted
SQL> INSERT INTO T1 VALUE ( 1, 79999998, 1);
1 row inserted
SQL> SELECT * FROM T1;
Get Retrieval by index of relation T1
Index name I1 [0:0]
F1 F2 F3
1 79999991 1
1 79999994 1
1 79999998 1
3 rows selected
SQL> SELECT F2 FROM T1;
Index only retrieval of relation T1
Index name I1 [0:0]
F2
79999991
79999991
79999995
3 rows selected
Software Problems Fixed 1-17
1.51 IMPORT Statement Resulted in an Access Violation
The IMPORT statement of an Rdb/VMS V4.0* database resulted
in an access violation when the database had a collating
sequence defined for the database. An IMPORT statement of
an Rdb/VMS V4.1 database resulted in an invalid database
parameter error. For example:
CREATE SCHEMA FILENAME 'TEST' DICTIONARY IS NOT REQUIRED
COLLATING SEQUENCE IS GERMAN GERMAN;
!
CREATE DOMAIN D1 IS CHAR(4);
CREATE DOMAIN D2 IS CHAR(10);
CREATE DOMAIN D3 IS CHAR(5);
CREATE TABLE T1 (F1 D1, F2 D2, F3 D3);
CREATE INDEX I1 ON T1 (F1, F2);
COMMIT;
!
EXPORT SCHEMA FILENAME TEST INTO TEST_EXP;
!
FINISH;
!
DROP SCHEMA FILENAME TEST;
!
IMPORT SCHEMA AUTHORIZATION TEST FROM TEST_EXP;
%SQL-F-ERRCRESCH, Error creating database filename TEST
-RDB-E-BAD_DPB_CONTENT, invalid database parameters in the
database parameter block (DPB)
-RDMS-F-BUFSMLPAG, buffer size is less than page size
-RDMS-F-AREA_NAME, area RDB$SYSTEM
1.52 SELECT <correlation>.* FROM Table Failed with Error
SQL module language utilizing a singleton SELECT failed
with the following error:
"SQL-F-INVSELSTAR, (1) * is not allowed in this context".
This could occur during the execution of any singleton
SELECT. For example:
1-18 Software Problems Fixed
SELECT A.*
INTO :DATA
FROM STUFF2 B, DATA A
WHERE B.STUFF3 = :KEY_DEF.STUFF3
AND A.ID = B.ID;
The error came back as:
SELECT A.*
1
%SQL-F-INVSELSTAR, (1) * is not allowed in this context
1.53 Distributed Boolean Queries Did Not Always Return Rows
A query did not return all of the rows (it typically
returned no rows) that met the selection predicate criteria
when all of the following circumstances were true:
o The query predicate contained a nondistributed Boolean
clause (AND, OR) and a column or columns in the Boolean
clause were compared to user program variables (instead
of literals).
o The optimizer picked a multisegment index that contained
those columns.
o The nondistributed Boolean predicate column was not the
first segment in the multisegment index.
1.54 Rows Not Sorted Correctly When Sorted on VARCHAR Column
Rows were not returned in the correct order when the
following conditions were true:
o The rows were sorted on VARCHAR columns.
o Some of the stored rows had zero length data in those
VARCHAR columns.
o A collating sequence was declared for that column.
Rdb/VMS incorrectly encoded a single character when
encoding the collating sequence for the zero length VARCHAR
columns. That character was essentially random, and thus
caused the particular row to collate into any random place
in the output stream.
Software Problems Fixed 1-19
2
_________________________________________________________________
Known Problems and Restrictions
This chapter describes known problems and restrictions
relating to Rdb/VMS Version 4.1A, and includes workarounds
where appropriate.
2.1 SQL$STARTUP.COM Command Procedure No Longer Exists
Beginning with Rdb/VMS V4.1, the command procedure
SQL$STARTUP.COM no longer exists.
Unless you modify RMONSTART.COM to do so, none of the
SQL images supplied as part of Rdb/VMS are installed.
Applications that use SQL and are installed with privileges
require that you install the following images using the VMS
Install utility. To install the images, use the following
commands:
$ INSTALL ADD SYS$LIBRARY:SQL$INT.EXE
$ INSTALL ADD SYS$LIBRARY:SQL$SHR.EXE
Unless you install these images, applications installed
with privileges will encounter the following error:
%SQL-F-NOENTRYPT, Older SQL version not compatible with compiled SQL
It is not necessary to install the SQL images as shared or
with privileges to avoid this error.
2.2 RMU/EXTRACT Does Not Extract Certain Details
The RMU/EXTRACT command does not generate an edit string,
query name, query header, and default value from view
definitions. The following example shows a view containing
an edit string, query name, query header, and default
value:
Known Problems and Restrictions 2-1
SQL> SHOW VIEW V1
Information for table V1
Columns for view V1:
Column Name Data Type Domain
----------- --------- ------
F1 INTEGER
Edit String: XXXXXX
DTR Default Value: 999
Query Name: VIEW EDIT 1
Query Header: Signed
Quadword
Isn't Scaled
F2 INTEGER
Source:
SELECT
C1.F1,
C1.F2
FROM T1 C1
From this view, the RMU/EXTRACT command generates the
following:
CREATE VIEW V1
(F1,
F2)
AS SELECT
C1.F1,
C1.F2
FROM T1 C1;
2.3 Virtual Address Space Is Exhausted by RMU/VERIFY/ROOT
The RMU/VERIFY/ROOT command may run out of VIRTUALPAGECNT
if the database uses a large number of buffers. The errors
returned are:
%RMU-F-ABORTVER, fatal error encountered; aborting verification
%RMU-F-CANTMAPTROOT, error mapping to the troot section
-SYSTEM-F-VASFULL, virtual address space is full
The workaround is to increase VIRTUALPAGECNT.
2-2 Known Problems and Restrictions
2.4 Corrupt Index Produces Bugcheck
When the RMU/VERIFY/ALL command finds a corrupted index,
it may bugcheck at exception RMUVERNDX$WALK_BTREE, and
an SQL DROP INDEX statement will result in an exception
at PSII$DESTROY_TREE. This is caused by an inconsistency
between the size of the index node and the total length of
the key entries in the node.
The workaround is to export and then import the database.
This problem is fixed in Rdb/VMS V4.2.
2.5 Delay Seen in First SQL SELECT Statement
On the first SELECT statement in interactive SQL, dynamic
SQL, or SQL/Services against some database tables, you may
see an unusually long delay before the query completes. An
elapsed time period as long as 4 or 5 minutes may occur.
The delay does not occur on subsequent SELECT statements
during the same database attach.
This problem is fixed in Rdb/VMS V4.2.
2.6 Concurrent Table Inserts into Same Storage Area Waste Space
Concurrent loads of two different tables mapped to the same
uniform area cause a gross misuse of space in the storage
area. The loads could be performed either by using ordinary
application inserts or by using the RMU/LOAD utility.
For example, the following is a dump of a SPAM page and
some pages in the particular SPAM interval. The dumps were
taken after two RMU/LOAD operations were started at the
same time, each loading a different table. Both tables
were mapped to the same uniform storage area. The pages
in questions are pages 951 through 956. Although these
pages were allocated to logical area 46, when the pages
are dumped, the output reveals that one record was stored
on page 951, yet the load failed to load any records into
pages 952 through 956 although they were presumably loaded
into the process's Rdb/VMS buffers. Much of the storage
area is wasted.
Known Problems and Restrictions 2-3
*-------------------------------------------------------------------------
* Rdb/VMS V4.1-0 6-OCT-1992 12:40:51.38
*
* Dump of Live area TEST1
* Filename: VIA$DB:[D_MCELHOES.RDB]TEST1.RDA;1
* Database: VIA$DB:[D_MCELHOES.RDB]MF_PERSONNEL.RDB;1
*
*-------------------------------------------------------------------------
000D 00000344 0000 page 836, physical area 13 (space mgmt)
CAC55AEF 0006 checksum = CAC55AEF
00961AED 1C9FBB80 000A time stamp = 6-OCT-1992 10:46:59.64
0000 0001 0012 1 free byte, 0 locked
0F00FFFFFFFFFFFFFFFFFFFFFFFFFFFF 001416 pages 837-892: threshold 3
pages 893-896: threshold 0
pages 897-898: threshold 3
pages 899-900: threshold 0
FFFF00300F00303F00F00F03FFFF0030 0026 pages 901-902: threshold 0
page 903: threshold 3
pages 904-908: threshold 0
pages 909-917: threshold 3
pages 918-920: threshold 0
pages 921-922: threshold 3
pages 923-926: threshold 0
pages 927-928: threshold 3
pages 929-932: threshold 0
pages 933-935: threshold 3
pages 936-938: threshold 0
page 939: threshold 3
pages 940-944: threshold 0
pages 945-946: threshold 3
pages 947-950: threshold 0
page 951: threshold 3
pages 952-956: threshold 0
pages 957-964: threshold 3
0FF00303F0FF00F00F00303F00F00F03 0036 page 965: threshold 3
pages 966-968: threshold 0
pages 969-970: threshold 3
pages 971-974: threshold 0
.
.
.
2-4 Known Problems and Restrictions
As a workaround, perform the record insert operations
serially.
2.7 RMU/EXTRACT Generates Output with Invalid Syntax
The RMU/EXTRACT command generates an output file containing
invalid syntax for some CREATE STORAGE MAP and CREATE INDEX
statements. The workaround modifies the output file to
correct the syntax.
If the remote database is restored to the local system on
which the RMU/EXTRACT command is being executed, the output
file generated is valid.
2.8 SQL$PRE/Pascal Record Problem
TYPE declaration of a Pascal record requires a semicolon
(;) separator between the last field and the END, even
though this is optional in the Pascal language itself.
If the semicolon (;) is missing, various errors may
appear either in the precompilation phase (host variables
apparently undeclared), or in the Pascal compilation phase.
For example and workaround:
TYPE my_type = record
fld1 : integer;
fld2 : real;
fld3 : packed array [1..20] of char;
end; ^ This semicolon
(;) is necessary for
the precompiler even
though it is optional
in the Pascal language.
2.9 Creation of Tables Containing Incompatible Data Types
Rdb/VMS accepts the creation of a table or domain from CDD
that contains an incompatible data type and DEFAULT VALUE
FOR SQL or MISSING VALUE attribute. An error message is
displayed when a user tries to insert values into the table
or domain. The following example displays the described
behavior:
Known Problems and Restrictions 2-5
$ DICT OPERATOR
CDO> DEFINE FIELD FIELD1 DATATYPE IS DATE
cont> DEFAULT_VALUE FOR sql IS "CED".
CDO> DEFINE FIELD FIELD2 DATATYPE IS TEXT SIZE IS 20 CHARACTERS.
cont> DEFINE RECORD TABLE1.
cont> FIELD1.
cont> FIELD2.
cont> END RECORD.
COD> EXIT
$ SQL$
SQL> CREATE DATABASE FILE FOO PATH FOO;
SQL> CREATE TABLE FROM TABLE1;
SQL> INSERT INTO TABLE1 (FIELD2) VALUES ('field2');
%RDB-E-ARITH_EXCEPT, truncation of a numeric value at runtime
-SYSTEM-F-IVTIME, invalid time
A workaround to avoid the preceding problem is to ensure
the data types and DEFAULT VALUE FOR SQL or MISSING VALUE
attribute are compatible in CDD prior to CREATE TABLE or
DOMAIN FROM or a dictionary integrate. By first correcting
and verifying that the data types and DEFAULT VALUE FOR SQL
or MISSING VALUE attribute are valid in the dictionary, you
can ensure that inconsistencies will not exist when you use
those definitions in the database.
2.10 Creating a Descending Partitioned Sorted Index
You cannot create or import a descending partitioned sorted
index on a table with existing records. The CREATE INDEX
statement puts all of the index records into the last
partition. Rdb/VMS does not return an error until a user
attempts a delete or modify operation (where the key value
changes).
Records inserted after the index is created go into the
correct partitions.
The CREATE INDEX statement in the following example
illustrates the problem:
2-6 Known Problems and Restrictions
SQL> CREATE DATABASE FILENAME LLAMAS
cont> CREATE STORAGE AREA AR1 FILENAME AR1 ALLOCATION IS 20 PAGES
cont> CREATE STORAGE AREA AR2 FILENAME AR2 ALLOCATION IS 20 PAGES
cont> CREATE STORAGE AREA AR3 FILENAME AR3 ALLOCATION IS 20 PAGES
cont> CREATE TABLE LLAMAS (F1 CHAR(4), F2 CHAR(2), F3 CHAR(4),
cont> F4 SMALLINT, F5 CHAR(4), F6 CHAR(4), F7 SMALLINT,
cont> F8 CHAR(6), F9 SMALLINT);
SQL> INSERT INTO LLAMAS VALUES
cont> ('MSGL',' ',' ',1,'1000','SSTR',8,'000006',0);
SQL> INSERT INTO LLAMAS VALUES
cont> ('DEC ',' ',' ',1,'01 ','INV1',1,'000002',0);
SQL> COMMIT;
SQL> CREATE UNIQUE INDEX I1 ON LLAMAS
cont> (F1 DESC,F2 DESC,F3 DESC,F4 DESC, F5 DESC,
cont> F6 DESC,F7 DESC,F8 DESC, F9 DESC)
cont> STORE USING (F1) IN AR1 WITH LIMIT OF ('ASOC')
cont> IN AR2 WITH LIMIT OF ('DEC')
cont> IN AR3 WITH LIMIT OF ('FS') OTHERWISE IN RDB$SYSTEM;
SQL> COMMIT;
SQL> UPDATE LLAMAS SET F2='99',F9=99
cont> WHERE F1='DEC' AND F2=' ' AND F7=1 AND F8='000002';
SQL> ROLLBACK;
SQL> EXIT;
________________________ Note ________________________
All workarounds for this problem have a major
drawback; you must load records after the index is
created. This can be done initially, but maintenance
becomes a problem because you must unload all of the
records, create the index, then reload the records.
______________________________________________________
2.11 AIJ Header Translates Logical
The RMU/VERIFY command sometimes fails with the following
error message:
%RMU-E-BADFNMAIJ, after-image journal file contains
references to wrong database
expected: "VIA_1:[RDBLAB]MF_PERSONNEL.RDB;1"
found: "DSA54:[VIA.][RDBLAB]MF_PERSONNEL.RDB;1"
Known Problems and Restrictions 2-7
This error indicates a discrepancy between the file
specification of the database root as stored in the after-
image journal file and the one stored in the database root
itself. It manifests itself only when all of the following
conditions are true:
o The database is multifile (the problem does not happen
for single file databases as they do not keep the file
specification of the root file).
o Journaling is active.
o The database root file is defined using a concealed
logical name.
o The database was opened manually using the RMU/OPEN
command.
The error can be ignored. The journal file is correct and
can be used to perform recovery by specifying the database
to be recovered with the /ROOT qualifier.
You can avoid this error message by:
o Opening the database with a file name specification that
does not use any concealed logicals.
o Changing the database to open automatically.
o Closing the database prior to performing the
verification operation.
2.12 RMU/EXTRACT/ITEM=VERIFY All Sorted Indexes in Stream 1
When an RMU/EXTRACT/ITEM=VERIFY command is used, all of
the sorted indexes are verified in stream 1 with the system
relations, no matter where the sorted indexes are stored.
They should be verified with the storage area where they
are stored.
As a workaround, use the output from the
RMU/EXTRACT/ITEM=VERIFY command as is, or modify it to
verify the index with the corresponding storage area.
2-8 Known Problems and Restrictions
2.13 Zigzag Match Strategy Loops or Bugchecks
Queries that generate a zigzag match strategy with a
dynamic leaf strategy in the inner loop may bugcheck at
RESTORE_RSS2 + 13C or may go into an infinite loop.
As a workaround, restructure the query or redefine
indexes such that a dynamic leaf retrieval strategy is not
generated for the inner loop of a zigzag match strategy.
2.14 File Limit on Sortwork Directory
When a version limit is set on the directory where sortwork
files are being directed and Rdb/VMS tries to create a
sortwork file that would exceed that limit, the process
doing the database activity enters a CPU loop within Rdb.
At this point, the only way to recover the process is to
stop it using a $STOP PROC/ID command.
As a workaround, change or remove the version limit on the
directory where sortwork files are directed.
2.15 RMU/EXTRACT/ITEM=VERIFY Does Not Handle Certain Indexes
Correctly
If an index is defined to be stored in an area other than
RDB$SYSTEM and is not used for placing records, then
RMU/EXTRACT/ITEM=VERIFY assumes the index is stored in
RDB$SYSTEM.
A workaround is to edit the output file created by
RMU/EXTRACT so that the index is verified as part of the
storage area in which it resides.
2.16 Bugcheck Storing Record After Snapshot File Has Been
Truncated
When attempting to store a record after the snapshot file
has been truncated it is possible to receive a bugcheck at
the following exception:
PIOFETCH$WITHIN_DB+194, %RDMS-F-BUGCHECK, fatal, unexpected error detected
This problem occurs when a snapshot file is truncated
while the database is open and there are active snapshot
transactions at the time of the snapshot file truncation.
Rdb/VMS V4.1 was enhanced to allow the snapshot files to be
truncated if exclusive access to the area can be acquired
Known Problems and Restrictions 2-9
(for additional information on this enhancement, please see
the V4.1 VAX Rdb/VMS Release Notes).
This problem does not pose any danger to database
integrity; no database corruption will occur.
The workaround is to truncate a snapshot file only when the
database has been closed on all nodes. Once the database is
closed, the snapshot files can safely be truncated.
2.17 DBR Processes May Hang Due to Waiting Lock Requests
Under certain circumstances, DBR (database recovery) might
hang because of VMS lock manager behavior. When granting
WAIT queue lock requests only when the CONVERT queue for
that lock resource is empty, DBR can starve an area lock.
This problem can be identified by examining the RMU/SHOW
LOCKS output and identifying storage area locks for the DBR
process waiting on the WAIT queue.
Consider an area A that process 1 and process 2 has in
Concurrent Write (CW). Let process 3 be on the CONVERT
queue for area A and let the requested mode be Protected
Write (PW). If process 2 dies and a DBR comes up for
the dead process, it tries to get area A in CW. However,
because this is a new lock request, the VMS lock manager
places this request on the WAIT queue and does not service
the request until the PW is granted. Because the mode
requested by the DBR is compatible with the currently
granted mode, process 1 is not blasted to release the lock
and thus the DBR is starved of the lock.
This problem is fixed in Rdb/VMS V4.2.
2.18 Problem Using Connections in Rdb/VMS
When attempting to connect from both executable and a
sharable image, SQL might incorrectly return the error
SQL-F-TWOIMPTXN.
If you create a connection in an executable image, start
a transaction and open a cursor, then call a routine in a
shareable image that creates a second connection, the error
SQL-F-TWOIMPTXN may be generated.
The workaround is to execute the CONNECT statement from the
default connection. This problem is fixed in DEC Rdb V5.1.
2-10 Known Problems and Restrictions
2.19 Problem with Closing Cursors Between Executable and
Shareable Images
There is a problem with the wrong cursor being closed. This
occurs when there is a COMMIT in a shareable image that
is linked with an executable image where cursors have been
opened in the shareable and executable image. The problem
occurs only if the shared images are linked with their
RDB$TRANSACTION_HANDLE PSECTs as LCL.
This behavior is demonstrated when a transaction in an
executable image opens a cursor and calls a routine in the
shareable image that starts a transaction, opens a cursor,
and does a fetch and a commit. At this point, the cursor
in the main image is closed but the cursor in the shareable
image is left open. If you try to open the cursor in the
shareable image for a second time, the following error is
returned:
%SQL-F-CURALROPE, Cursor cursor_name was already open
If you return to the main executable image, doing a fetch
returns the following error:
%SQL-F-CURNOTOPE, Cursor !AC is not opened
One workaround is to close the cursor in the main
executable image before calling the routine in the sharable
image. Or you can link the RDB$TRANSACTION_HANDLE PSECTs as
GBL in the sharable images.
This problem is fixed in DEC Rdb V5.1.
2.20 SQLPRE Confused with Exec SQL ALTER DATABASE Statement
When using the ALTER DATABASE statement in the same module
as other SQL statements, the following errors may be
incorrectly returned:
%SQL-F-TRAACT_1, A database cannot be created or altered while a
transaction is active
-SQL-F-TRAACT_2, ROLLBACK or COMMIT the transaction
There are three possible workarounds:
o Remove the ALTER DATABASE statement.
o Make the ALTER DATABASE statement the first statement in
the program.
Known Problems and Restrictions 2-11
o Put the ALTER DATABASE statement in a separately
compiled module.
This problem is fixed in DEC Rdb V5.1.
2.21 Column Name Is the Same as Domain
Prior versions of Rdb/VMS erroneously propagated domain
attributes to a COMPUTED BY column if that column had the
same name as the domain.
Until Rdb/VMS V4.1, this was harmless, and although these
attributes might have included VALID IF or DEFAULT clauses,
they had no meaning for a read-only column. However, in
V4.1 new functionality was added that propagates the
default for a new column to all previously stored rows
in the table.
This problem can be avoided by altering the domain to have
a default of NULL before the EXPORT statement is executed.
After the import operation is complete, the domain can
have its original default restored. This works because the
update operation is not performed if NULL is the default.
Alternatively, do not name COMPUTED BY columns the same as
existing domains.
2.22 Bugcheck at FIND_DIV_OR_MULT
When DIVIDE or MULTIPLY are used in aggregates, such as
SUM(), and computed by definitions with unary operators
such as EXTRACT, NEGATE, CHAR_LENGTH, and OCTET_LENGTH, a
bugcheck and an access violation will be generated.
This problem is fixed in DEC Rdb V5.0.
2.23 RMU/SHOW STATISTICS Does Not Handle Large Numbers
When activity is high on a database, sometimes RMU/SHOW
STATISTICS cannot display the actual numbers being reported
because they are too large. Instead it displays a series of
asterisk (*) characters.
This problem is fixed in DEC Rdb V5.0.
2-12 Known Problems and Restrictions
2.24 SQL-F-INVRNG from SQL IMPORT and SQL CREATE DATABASE
The SQL CREATE DATABASE and SQL IMPORT statement return
an SQL-F-INVRNG error when creating a storage area that
specifies a snapshot maximum extent that is less than the
minimum storage area extent.
The equivalent RDO DEFINE DATABASE and RDO IMPORT commands
successfully create the database and do not encounter this
error.
As a workaround, modify the specified value for the
snapshot maximum extent to be at least the value specified
for the minimum storage area extent.
Alternatively, you can modify the specified value for the
minimum storage area extent to be less than or equal to the
value specified for the snapshot maximum extent.
This problem is fixed in DEC Rdb V5.1.
2.25 Queries Using OR and Sorted Index May Result in a Bugcheck
A query mixing several AND predicates and OR predicates
in a given order, and using sorted index, may result in
a bugcheck at address PROCESS_OR_CRTV + 00000078 with
an access violation depending on how Rdb/VMS builds its
internal index structures.
A workaround is to rewrite the query to change the place
of the OR predicates within the WHERE clause, such that
Rdb/VMS take the indexes in a different order. Otherwise
the dump allows you to find the offending index so that you
can drop it.
This problem is fixed in DEC Rdb V5.1.
2.26 Changes to Tables That Have DDAL Transfers Defined
Section 4.10.4.1 of the VAX Data Distributor Handbook,
Version 2.2, states: "Data Distributor does not have any
direct means within a transfer definition to copy existing
indexes, constraints, triggers, or access control lists to
a target database. You can make changes to such database
structures without concern that existing transfers might
fail."
Known Problems and Restrictions 2-13
However, if you attempt to add or drop a constraint from
a table that was referenced in a replication transfer
definition, Rdb/VMS generates the following errors:
%RDB-E-NO_META_UPDATE, metadata update failed
-RDMS-F-RELUSETRA, relation JOB_HISTORY is used in a transferred definition
2.27 Documentation Errors in the V4.1 VAX Rdb/VMS Release Notes
The section lists the documentation errors in the V4.1 VAX
Rdb/VMS Release Notes.
2.27.1 Incorrect Example in Section 1.23.12
Section 1.23.12 contains an incorrect example. The example
showing how to use the RDM$MON_USERNAME, defines the
logical as a PROCESS logical:
$ DEFINE RDM$MON_USERNAME GOOD_QUOTAS
The example should define the logical as a SYSTEM logical:
$ DEFINE/SYSTEM/EXEC RDM$MON_USERNAME GOOD_QUOTAS
2.27.2 Incorrect Example in Section 3.2.15
Section 3.2.15 reads:
$ LINK PROGRAM,SYS$INPUT/OPT
SYS$SHARE:RDBINTSHR.EXE/OPT
PSECT_ATTR=RDB$MESSAGE_VECTOR,SHR
PSECT_ATTR=RDB$TRANSACTION_HANDLE,SHR
It should read:
$ LINK PROGRAM,SYS$INPUT/OPT
SYS$SHARE:RDBINTSHR.EXE/SHARE
PSECT_ATTR=RDB$MESSAGE_VECTOR,SHR
PSECT_ATTR=RDB$TRANSACTION_HANDLE,SHR
2-14 Known Problems and Restrictions