| From: BROKE::BITHER "Please reply to [email protected]" 28-MAR-1997 13:18:26.18
To: M5::MEMORMAN
CC: BITHER
Subj: New STARS Article
TITLE: -NSDS-E-REQBADRELNAME, ...Relation Not in Dictionary
PRODUCT: Rdb Transparent Gateway to DBMS
OP/SYS: OpenVMS VAX, OpenVMS AXP
SOURCE: Oracle Worldwide Customer Support
PROBLEM:
After attaching to Rdb Transparent Gateway to DBMS, a select from a table
that can be seen when doing "show tables" results in the following error:
%RDB-E-OBSOLETE_METADA, request references metadata objects that no
longer exist
-NSDS-E-REQBADRELNAME, The DSRI BLR request referred to a relation not in
the dictionary (at offset 79 in BLR request)
SOLUTION/WORKAROUND:
Create DBMS alias names for the set names and member record names
such that the combination of the two names will not exceed 31 bytes.
PROBLEM CAUSE:
The problem is caused by DBMS forked sets. Forked sets combine set names
and member record names into relational tablenames. The problem occurs when
the resulting tablename exceeds 31 characters. Neither CDD or SQL will allow
object names greater than 31 bytes.
Below is an example of a situation that fails followed by an example
of a solution to the problem.
********************************************************************************
Situation 1: (Fails)
SCHEMA NAME IS FOO
AREA NAME IS FOO_AREA1
RECORD NAME IS REC1
WITHIN FOO_AREA1 ITEM NAME IS I1 TYPE IS CHARACTER 10
RECORD NAME IS THISISAMIGHTYLONGRECNAME1
WITHIN FOO_AREA1
ITEM NAME IS I2
TYPE IS CHARACTER 10
RECORD NAME IS THISISAMIGHTYLONGRECNAME2
WITHIN FOO_AREA1
ITEM NAME IS I3
TYPE IS CHARACTER 10
SET NAME IS ALL_REC1
OWNER IS SYSTEM
MEMBER IS REC1
INSERTION IS AUTOMATIC
RETENTION IS FIXED
ORDER IS SORTED BY
ASCENDING I1
DUPLICATES ARE FIRST
SET NAME IS THISISAMIGHTYLONGSETNAME
OWNER IS REC1
MEMBER IS THISISAMIGHTYLONGRECNAME1
INSERTION IS AUTOMATIC
RETENTION IS FIXED
ORDER IS FIRST
MEMBER IS THISISAMIGHTYLONGRECNAME2
INSERTION IS AUTOMATIC
RETENTION IS FIXED
ORDER IS FIRST
-----------------------------
SQL> ATTACH
'FILENAME/TYPE=NSDS/PATH=WKD1:FOO.DEFAULT_SUBSCHEMA/DICTIONARY_DRIVER=DBMSQL$SHR
701';
SQL> SHOW TABLES
User tables in database with filename
/TYPE=NSDS/PATH=WKD1:FOO.DEFAULT_SUBSCHEMA/DICTIONARY_DRIVER=DBMSQL$SHR701
ALL_REC1
THISISAMIGHTYLONGRECNAME1
THISISAMIGHTYLONGRECNAME2
THISISAMIGHTYLONGSETNAME_THISIS (name of first member - rec1)
THISISAMIGHTYLONGSETNAME_THISIS (name of second member - rec2)
SQL> SELECT * FROM THISISAMIGHTYLONGSETNAME_THISIS;
%RDB-E-OBSOLETE_METADA, request references metadata objects that no longer exist
-NSDS-E-REQBADRELNAME, The DSRI BLR request referred to a relation not in the
dictionary (at offset 79 in BLR request)
SQL> SELECT * FROM THISISAMIGHTYLONGSETNAME_THISISAMIGHTYLONGRECNAME1;
%SQL-F-BAD_NAME, Identifiers and names may not exceed 31 characters in length
! If you give sql a completely nonexistent table name you get:
SQL> select * from xyz;
%SQL-F-RELNOTDEF, Table XYZ is not defined in database or schema
********************************************************************************
Situation 2: (Succeeds)
SUBSCHEMA NAME IS NEW_SUBSCHEMA FOR FOO SCHEMA
ALIAS RECORD THISISAMIGHTYLONGRECNAME1 IS REC2
ALIAS RECORD THISISAMIGHTYLONGRECNAME2 IS REC3
ALIAS SET THISISAMIGHTYLONGSETNAME IS SET2
REALM FOO_AREA1
IS FOO_AREA1
RECORD NAME IS REC1
ITEM I1 TYPE IS CHARACTER 10
RECORD NAME IS REC2
ITEM I2 TYPE IS CHARACTER 10
RECORD NAME IS REC3
ITEM I3 TYPE IS CHARACTER 10
SET NAME IS ALL_REC1
SET NAME IS SET2
\
\ CONTRIBUTORS:
\
\ Technical: Diane Bither
|