—=pod
=encoding utf8
=head1 NAME
Language::MuldisD::Catalog -
The system catalog or meta-model of Muldis D
=head1 VERSION
This document is Language::MuldisD::Catalog version 0.3.0.
=head1 PREFACE
This document is part of the Muldis D language specification, whose root
document is L<Language::MuldisD>; you should read that root document
before you read this one, which provides subservient details.
=head1 DESCRIPTION
Muldis D has a mandatory core set of system-defined (eternally available)
entities, which is referred to as the I<Muldis D core> or the I<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 I<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 C<Catalog>
document; all the other core entities are described in the
L<Language::MuldisD::Core> document. TODO: EDIT THIS PARAGRAPH.
This current C<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 L<Language::MuldisD::Core>.
I<This documentation is pending.>
=head1 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
I<This documentation is pending.>
=head1 SYSTEM-DEFINED CORE CATALOG SCALAR DATA TYPES
This subset of the core scalar data types (see
L<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.
=over
=item C<sys.type.Cat.ShortName>
A C<Cat.ShortName> is a canonical name for some DBMS entities (others use
C<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
C<Text> in all ways but that it is specifically intended for use in naming
DBMS entities rather than being normal data.
=item C<sys.type.Cat.LongName>
A C<Cat.LongName> is a canonical name for some DBMS entities (others use
C<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
C<Cat.LongName> consists of a sequence (1..N) of C<Cat.ShortName>, the
elements being ordered from greatest to least significance. Its default
value is a single element that is the default value of C<Cat.ShortName>,
the empty string.
=back
=head1 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.
=over
=item C<sys.type.Cat.ShortNameSet>
A C<Cat.ShortNameSet> is a C<Set> of C<Cat.ShortName>.
=item C<sys.type.Cat.AttrRenameMap>
A C<Cat.AttrRenameMap> is a specification for how to rename attributes of a
relation. It is a binary C<Relation> whose 2 attributes are named
C<before> and C<after>, and both attributes have declared types of
C<Cat.ShortName> and each attribute is a unary key. Its default value has
zero tuples.
=back
=head1 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.
=head2 Catalog Relcons For System-Defined Entities
This section describes the structure of all C<< cont.sys.<unq_name> >>
catalog relcons, which themselves describe all system-defined DBMS entities
in a computer-readable manner.
I<This documentation is pending.>
=head2 Catalog Relvars For Depot Appearance Control
This section describes the structure of all C<< 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 C<*.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 C<cont.mnt.depot_detail>. Note
that it is forbidden to update any C<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.
I<This documentation is pending.>
=head2 Catalog Relvars for User-Defined Entities
This section describes the structure of all C<< cont.cat.app.<unq_name> >>
and C<< cont.cat.db.<depot>.<unq_name> >> general catalog relvars, the set
of C<< <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 C<*.data.*>, appear, disappear, or change
in structure.
I<This documentation is pending.>
=head1 SEE ALSO
Go to L<Language::MuldisD> for the majority of distribution-internal
references, and L<Language::MuldisD::SeeAlso> for the majority of
distribution-external references.
=head1 AUTHOR
Darren Duncan (C<perl@DarrenDuncan.net>)
=head1 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 L<Language::MuldisD> for details.
=head1 ACKNOWLEDGEMENTS
The ACKNOWLEDGEMENTS in L<Language::MuldisD> apply to this file too.
=cut