Schema Module

# Introduction to the Schema Module

The Schema module provides a high level database-independent API for working with database schemas; it uses the SqlUtil module to provide the middle and low-level schema management logic from a database-independent representation of a database schema.

To use this module, use `"%requires Schema"` in your code.

All the public symbols in the module are defined in the Schema namespace.

Classes provided by this module:

- AbstractSchema: base class for schema representation and management
- AbstractVersionedSchema: base class for versioned schema representation and management where the schema contains its current version

# Schema Module Release History

## Schema Module v1.3.1

- fixed a bug where too little information was passed to post schema alignment code (issue 3640)

## Schema Module v1.3

- improved logging output when performing schema alignments (issue 3114)
- fixed AbstractSchema::checkExistence() (issue 3266)

## Schema Module v1.2

- added the following public functions: (issue 1851)
  - Schema::c_blob()
  - Schema::c_clob()
- updated for complex types

## Schema Module v1.1.1

- applied the force option (i.e. cascade) when aligning schemas (issue 1314)

## Schema Module v1.1

- added the following public functions:
  - Schema::c_char()
  - Schema::c_date()
  - Schema::c_int()
  - Schema::c_number()
  - Schema::c_timestamp()
  - Schema::c_varchar()
- added the following public constants:
  - Schema::C_NULL
  - Schema::C_NOT_NULL
- bug fixes:
  - fixed AbstractSchema::combineOptions() to accept NOTHING as well as a valid option hash
  - fixed a bug with "insert-only reference data" with the verbose option; the upsert strategy was changed to `UpsertSelectFirst` which means that insert-only reference data could also be updated
  - fixed a bug where it was not possible to provide Database options when creating schemas (bug 501)

## Schema Module v1.0

- initial release