Schema checking

When the server is initialized, the schema files are read and checked for consistency and correctness.

If the checks fail, the server fails to initialize and issues an error message. During any dynamic schema change, the resulting schema is also checked for consistency and correctness. If the checks fail, an error is returned and the change fails. Some checks are part of the grammar. For example, an attribute type can have at most one supertype, or an object class can have any number of superclasses.

The following items are checked for attribute types:
  • Two different attribute types cannot have the same name or OID.
  • The inheritance hierarchy of attribute types does not have cycles.
  • The supertype of an attribute type must also be defined, although its definition might be shown later, or in a separate file.
  • If an attribute type is a subtype of another, they both have the same USAGE.
  • All attribute types have a syntax that is either directly defined or inherited.
  • Only operational attributes can be marked as NO-USER-MODIFICATION.
The following items are checked for object classes:
  • Two different object classes cannot have the same name or OID.
  • The inheritance hierarchy of object classes does not have cycles.
  • The superclasses of an object class must also be defined, although its definition might appear later or in a separate file.
  • The MUST and MAY attribute types of an object class must also be defined, although its definition might appear later or in a separate file.
  • Every structural object class is a direct or indirect subclass of top.
  • If an abstract object class has superclasses, the superclasses must also be abstract.