HELPLIB.HLB  —  SQL72  System Tables, Special Notes
    The following Help topics describe the usage of system tables
    with respect to particular versions of Oracle Rdb or in table to
    other database constructs, operations, or products.

1  –  Using Data Dictionary

    Although you can store your data definitions in the data
    dictionary, the database system refers only to the system
    tables in the database file itself for these definitions. In a
    sense, the system tables are an internal data dictionary for the
    database. This method improves performance as Oracle Rdb does not
    have to access the data dictionary at run time.

2  –  Modifying

    When you create a database, Oracle Rdb defines, populates,
    and manipulates the system tables. As the user performs data
    definition operations on the database, Oracle Rdb reads and
    modifies the system tables to reflect those operations. You
    should not modify any of the Oracle Rdb system tables using data
    manipulation language, nor should you define any domains based on
    system table fields. However, you can use regular Oracle Rdb data
    manipulation statements to retrieve the contents of the system
    tables. This means that your program can determine the structure
    and characteristics of the database by retrieving the fields of
    the system tables. See the Example Help subtopic under System_
    Tables in this Help library for an example of querying system
    tables.

3  –  Updating Metadata

    When you use the SQL SET TRANSACTION . . . RESERVING statement
    to lock a set of tables for an Oracle Rdb operation, you normally
    exclude from the transaction all the tables not listed in the
    RESERVING clause. However, Oracle Rdb accesses and updates system
    tables as necessary, no matter which tables you have locked with
    the SQL SET TRANSACTION statement.

    When your transaction updates database metadata, Oracle Rdb
    reserves the system tables involved in the update in the
    EXCLUSIVE share mode. Other users are unable to perform data
    definition operations on these tables until you complete your
    transaction. For example:

    o  When you refer to a domain (global field) in an update
       transaction that changes data definitions, Oracle Rdb locks
       an index for the system table, RDB$RELATION_FIELDS. No other
       users can refer to the same domain until you commit your
       transaction.

    o  When you change a system table or domain definition, Oracle
       Rdb locks an index in the system table, RDB$FIELD_VERSIONS. No
       other users can change table or global field definitions until
       you commit your transaction.

    o  When you change a table definition, Oracle Rdb locks an index
       in the system table, RDB$RELATION_FIELDS. No other users can
       change tables in the same index node until you commit your
       transaction.

4  –  LIST OF BYTE VARYING Metadata

    Oracle Rdb has supported multiple segment LIST OF BYTE VARYING
    data types for user-defined data. However in previous versions,
    Oracle Rdb maintained its own LIST OF BYTE VARYING metadata
    columns as single segments. This restricted the length to
    approximately 65530 bytes. An SQL CREATE TRIGGER or CREATE MODULE
    statement could fail due to this restriction.

    This limit was lifted by changing the way Oracle Rdb stores its
    own metadata.

    o  For columns containing binary data, such as the binary
       representation of query, routine, constraint, trigger action,
       computed by column, or query outline, Oracle Rdb breaks the
       data into pieces that best fit the system storage area page
       size. Thus, the segments are all the same size with a possible
       small trailing segment.

       The LIST OF BYTE VARYING column value is no longer fragmented,
       improving performance when reading system metadata.

    o  For columns containing text data such as the SQL source
       (for elements such as triggers and views) and user-supplied
       comment strings, Oracle Rdb breaks the text at line boundaries
       (indicated by ASCII carriage returns and line feeds) and
       stores the text without the line separator. Thus, the segments
       are of varying size with a possible zero length for blank
       lines.

       An application can now easily display the LIST OF BYTE VARYING
       column value and the application no longer needs to break up
       the single text segment for printing.

    No change is made to the LIST OF BYTE VARYING column values
    when a database is converted (using the RMU Convert command, RMU
    Restore command, or SQL EXPORT/IMPORT statements) from a previous
    version.

    Applications that read the Oracle Rdb system LIST OF BYTE VARYING
    column values must be changed to understand multiple segments.
    Applications that do not read these system column values should
    see no change to previous behavior. Tools such as the RMU Extract
    command and the SQL SHOW and EXPORT statements handle both the
    old and new formats of the system metadata.
Close Help