NAME

Language::MuldisD::Catalog - The system catalog or meta-model of Muldis D

VERSION

This document is Language::MuldisD::Catalog version 0.3.0.

PREFACE

This document is part of the Muldis D language specification, whose root document is Language::MuldisD; you should read that root document before you read this one, which provides subservient details.

DESCRIPTION

Muldis D has a mandatory core set of system-defined (eternally available) entities, which is referred to as the Muldis D core or the core; they are the minimal entities that all Muldis D implementations need to provide; they are mutually self-describing and are used to bootstrap the language; any entities outside the core, called Muldis D extensions, are non-mandatory and are defined in terms of the core or each other, but the reverse isn't true.

A significant subset of the Muldis D core entities are specific to being or implementing the Muldis D system catalog / meta-model, and aren't used elsewhere by the system; these are documented in the current Catalog document; all the other core entities are described in the Language::MuldisD::Core document. TODO: EDIT THIS PARAGRAPH.

This current Catalog document features ...

This current document does not describe the polymorphic operators that all types, or some types including core types, have defined over them; said operators are defined once for all types in Language::MuldisD::Core.

This documentation is pending.

TYPE SUMMARY

Following are all the data types described in this document, arranged in a type graph according to their proper sub|supertype relationships (but that some just reappear from the non-catalog core set to provide a similar context, and aren't re-described here):

sys.type.Universal

    sys.type.Empty

    sys.type.Scalar
        sys.type.Ordinal

            # The following are all regular ordinal scalar types.

            sys.type.Cat.ShortName
            sys.type.Cat.LongName

        # The following are all regular non-ordinal scalar types.

        # TODO

    sys.type.Tuple

        # The following are all regular tuple types.

        # TODO

    sys.type.Relation
        sys.type.Set

            # The following are all regular set types.

            sys.type.Cat.ShortNameSet

        # The following are all regular relation types.

        sys.type.Cat.AttrRenameMap

This documentation is pending.

SYSTEM-DEFINED CORE CATALOG SCALAR DATA TYPES

This subset of the core scalar data types (see Language::MuldisD::Core) are more special-purpose in nature and are intended for use in defining or working with the system catalog, which is mainly composed of nonscalar types built using these.

sys.type.Cat.ShortName

A Cat.ShortName is a canonical name for some DBMS entities (others use Cat.LongName), such as the declared names of attributes of scalar possreps or collection types, and for the declared names of routine parameters, and for the invocation names of the same. It is the same as Text in all ways but that it is specifically intended for use in naming DBMS entities rather than being normal data.

sys.type.Cat.LongName

A Cat.LongName is a canonical name for some DBMS entities (others use Cat.ShortName), such as the invocation names of types, routines, and variables, and it is typically used for the declared names of the same. A Cat.LongName consists of a sequence (1..N) of Cat.ShortName, the elements being ordered from greatest to least significance. Its default value is a single element that is the default value of Cat.ShortName, the empty string.

SYSTEM-DEFINED CORE CATALOG NONSCALAR DATA TYPES

These nonscalar data types, essentially all of the system-defined nonscalar types are special-purpose in nature and are intended for use in defining or working with the system catalog.

sys.type.Cat.ShortNameSet

A Cat.ShortNameSet is a Set of Cat.ShortName.

sys.type.Cat.AttrRenameMap

A Cat.AttrRenameMap is a specification for how to rename attributes of a relation. It is a binary Relation whose 2 attributes are named before and after, and both attributes have declared types of Cat.ShortName and each attribute is a unary key. Its default value has zero tuples.

CATALOGS

The Muldis D catalog relcons and relvars collectively reflect and/or control all entities in a DBMS. Given that the catalog provides complete descriptions of both the interface and implementation of each DBMS entity, for user-defined entities, and just the interface for system-defined entities, understanding these is akin to understanding the native grammar of Muldis D. This grammar is extremely simple by intention, but at a cost of being a little more verbose.

Catalog Relcons For System-Defined Entities

This section describes the structure of all cont.sys.<unq_name> catalog relcons, which themselves describe all system-defined DBMS entities in a computer-readable manner.

This documentation is pending.

Catalog Relvars For Depot Appearance Control

This section describes the structure of all cont.mnt.<unq_name> special catalog relvars, which reflect and control which depots are currently mounted in the DBMS. Users update these to open or close client-server DBMS engine connections, or to attach or detach file-based database files, create or delete the depots themselves, or associate, disassociate, create, or delete shared memory based depots, mount or unmount filesystem-based depots, etc. Updating these relvars has side-effects in making the entities belonging to a depot, named *.db.*, appear in or disappear from view. Details stored here include analogies to DSNs, database file names, DBMS server names and addresses, authentication details like login names and passwords. What details are stored per depot can vary significantly depending on which Muldis D implementation is in use, but this variance is limited to just cont.mnt.depot_detail. Note that it is forbidden to update any mnt relvars while a multi-statement transaction is active, because a transaction subjugates all entities concurrently visible or mounted in a DBMS, such that they must all commit or rollback as a unit.

This documentation is pending.

Catalog Relvars for User-Defined Entities

This section describes the structure of all cont.cat.app.<unq_name> and cont.cat.db.<depot>.<unq_name> general catalog relvars, the set of <unq_name> for each of which is identical, that reflect and control user-defined entities, including data types, routines, non-lexical variables (which are all relvars, real or virtual), state constraints, etc. Users update these to create or drop their relvars, data types, routines, constraints, etc. Updating these catalog relvars has side-effects in making global data relvars, named *.data.*, appear, disappear, or change in structure.

This documentation is pending.

SEE ALSO

Go to Language::MuldisD for the majority of distribution-internal references, and Language::MuldisD::SeeAlso for the majority of distribution-external references.

AUTHOR

Darren Duncan (perl@DarrenDuncan.net)

LICENSE AND COPYRIGHT

This file is part of the formal specification of the Muldis D language.

Muldis D is Copyright © 2002-2007, Darren Duncan.

See the LICENSE AND COPYRIGHT of Language::MuldisD for details.

ACKNOWLEDGEMENTS

The ACKNOWLEDGEMENTS in Language::MuldisD apply to this file too.