Loading...
Searching...
No Matches
Schema::AbstractVersionedSchema Class Reference

this class extends Schema::AbstractSchema by providing version logic based on a schema version string contained within the schema itself More...

Inheritance diagram for Schema::AbstractVersionedSchema:
[legend]

## Public Member Functions

| constructor (Qore::SQL::AbstractDatasource ds, *string dts, *string its, *hash opts)
| creates the object based on the arguments giving the location of the schema
Public Member Functions inherited from Schema::AbstractSchema
int | align (bool force=False, int verbose=0, bool do_msgs=True)
| executes a schema alignment action on the database with the current schema template
hash< SchemaAlignmentInfo > | alignWithInfo (bool force=False, int verbose=0, bool do_msgs=True)
| executes a schema alignment action on the database with the current schema template
| constructor (Qore::SQL::AbstractDatasource ds, *hash< SchemaOptionInfo > opts)
| creates the object from the arguments
| constructor (Qore::SQL::AbstractDatasource ds, *string dts, *string its, *hash opts)
| creates the object from the arguments
| drop (bool force=False, int verbose=0, bool do_msgs=True)
| executes a schema drop operation in the database
*hash< auto > | getColumnOptions ()
| returns column options
*hash< auto > | getCreateOnlyReferenceData ()
| returns a hash of "create-only reference data", describing data that is written to the table when the table is created
*hash< auto > | getCreationOptions ()
| returns schema creation options
SqlUtil::AbstractDatabase | getDatabase ()
| returns the AbstractDatabase object used for the schema
Qore::SQL::AbstractDatasource | getDatasource ()
| returns the datasource used for the schema
*hash< auto > | getFunctions ()
| returns function definitions
*hash< auto > | getIndexOptions ()
| returns index options
*hash< auto > | getInsertOnlyReferenceData ()
| returns a hash of "create-only reference data", describing data that will only be inserted if missing, otherwise existing rows with changed data are left unchanged
*hash< auto > | getMaterializedViews ()
| returns materialized view definitions
string | getName ()
| returns the name of the schema
*hash< auto > | getPackages ()
| returns (Oracle) package definitions
*hash< auto > | getProcedures ()
| returns stored procedure definitions
*hash< auto > | getReferenceDataHash ()
| returns a hash of "normal reference data", describing data that must appear in the target table, however additional rows are also acceptable
*hash< auto > | getSequences ()
| returns sequence definitions
*hash< auto > | getStrictReferenceDataHash ()
| returns a hash of "strict reference data", describing the only data that can appear in the target table
*hash< auto > | getTables ()
| returns table definitions
*hash< auto > | getTypes ()
| returns type definitions
string | getVersion ()
| returns the version of the schema
| log (string fmt,...)
| outputs a log message
| logpf (string fmt,...)
| outputs a log message prefixed with the schema name
| logProgress (string str)
| outputs a log message without any newline

## Protected Member Functions

bool | checkDowngrade (string current_version)
| this method is called if the current schema version is greater than the target version; returns True if the schema can be downgraded
bool | checkDropSchema (bool force)
| this method returns True if the schema can be dropped
bool | checkUpdateSchema (bool force, reference< hash< auto > > initial_schema_info)
| this method returns True if the schema can be updated
bool | checkUpgrade (string current_version)
| this method is called if the current schema version is less than the target version; returns True if the schema can be updated
*softstring | getSchemaVersion ()
| returns the existing schema version or nothing if not present
string | getVersionColumn ()
| returns the name of the column holding the schema version string by calling getVersionColumnImpl()
abstract string | getVersionColumnImpl ()
| returns the name of the column holding the schema version string
string | getVersionTable ()
| returns the name of the table holding the schema version string by calling getVersionTableImpl()
abstract string | getVersionTableImpl ()
| returns the name of the table holding the schema version string
hash | getVersionWhere ()
| returns the where clause hash defining the row where the schema version string is located by calling getVersionWhereImpl()
abstract hash | getVersionWhereImpl ()
| returns the where clause hash defining the row where the schema version string is located
Protected Member Functions inherited from Schema::AbstractSchema
SchemaCallbackHelper | alignIntern (bool force=False, int verbose=0, bool do_msgs=True)
| executes a schema alignment action on the database with the current schema template
bool | checkDropSchema (bool force)
| this method returns True if the schema can be dropped
bool | checkExistence ()
| returns True if the method can detect that DB objects defined in the schema exist in the database
bool | checkFirstTimeInstall ()
| returns True if checkExistence() returns False
bool | checkUpdateSchema (bool force, reference< hash< auto > > initial_schema_info)
| this method returns True if the schema can be updated
| doPostAlignment (Tables table_cache, bool first_time_install, *hash< auto > initial_schema_info)
| this method is called after schema structural alignment has been executed but before schema reference data management
| doPostAlignment (Tables table_cache, bool first_time_install, *hash< auto > initial_schema_info, int verbose)
| this method is called after schema structural alignment has been executed but before schema reference data management
| doTable (AbstractTable table, list rows, int upsert_strategy, bool delete_others, int verbose, reference< hash< string, int > > sh)
| this method is called to perform schema reference data managment on the given table with the given data
*hash< auto > | getColumnOptionsImpl ()
| returns column options
*hash< auto > | getCreateOnlyReferenceDataImpl ()
| returns a hash of "create-only reference data", describing data that is written to the table when the table is created
*hash< auto > | getFunctionsImpl ()
| returns function definitions
*hash< auto > | getGenericOptionsImpl ()
| returns schema creation options
*hash< auto > | getIndexOptionsImpl ()
| returns index options
*hash< auto > | getInsertOnlyReferenceDataImpl ()
| returns a hash of "insert-only reference data", describing data that will only be inserted if missing, otherwise existing rows with changed data are left unchanged
*hash< auto > | getMaterializedViewsImpl ()
| returns materialized view definitions
abstract string | getNameImpl ()
| returns the name of the schema
*hash< auto > | getPackagesImpl ()
| returns (Oracle) package definitions
*hash< auto > | getProceduresImpl ()
| returns stored procedure definitions
*hash< auto > | getReferenceDataHashImpl ()
| returns a hash of "normal reference data", describing data that must appear in the target table, however additional rows are also acceptable
*hash< auto > | getSequencesImpl ()
| returns sequence definitions
*hash< auto > | getStrictReferenceDataHashImpl ()
| returns a hash of "strict reference data", describing the only data that can appear in the target table
*hash< auto > | getTablesImpl ()
| returns table definitions
*hash< auto > | getTypesImpl ()
| returns type definitions
int | getUpsertStrategy (bool first_time_install)
| this method is called to return the upsert strategy before schema reference data management
abstract string | getVersionImpl ()
| returns the version of the schema
| init (Qore::SQL::AbstractDatasource ds, *hash< SchemaOptionInfo > opts)
| shared constructor initialization
| postDataActions (bool first_time_install)
| this method is called after schema reference data has been managed
| postDataActions (Tables table_cache, bool first_time_install, *hash< auto > initial_schema_info, int verbose)
| this method is called after schema reference data has been managed

## Protected Attributes

string | version_column
| the name of the column containing the version string
string | version_table
| the name of the table containing the version string
hash | version_where
| a where clause hash defining the row where the schema version string is located
Protected Attributes inherited from Schema::AbstractSchema
*hash | all_options
| combined creation and column options
hash | callback_opts
| callback options plus all options
*hash | column_options
| column options, as provided by getColumnOptions()
*hash | creation_options
| creation options, as provided by getCreationOptions()
*string | data_ts
| explicit data tablespace name
SqlUtil::Database | db
| the Database object for the schema
string | drv
| the name of the database driver
Qore::SQL::AbstractDatasource | ds
| the datasource for the schema
*hash | index_options
| index options, as provided by getIndexOptions()
*string | index_ts
| explicit index tablespace name
code | info_callback
| the info callback for schema operations; can be used for explicit logging
string | name
| the name of the schema
hash | pure_callback_opts
| just callback options
hash | schema
| the schema template, as assembled from method callbacks providing schema element definitions
string | version
| the version of the schema

## Additional Inherited Members

Static Public Member Functions inherited from Schema::AbstractSchema
static hash | combineOptions (*hash h)
| combines option hashes into a single target option hash
static list | getRows (*softlist< auto > l)
| returns a list of hashes from a list of lists where the first list element in the top-level list is a list of column names, and subsequent lists are column values

## Detailed Description

this class extends Schema::AbstractSchema by providing version logic based on a schema version string contained within the schema itself

the location of the version string is defined by the following abstract methods that must be reimplemented in subclasses:

- getVersionTableImpl()
- getVersionColumnImpl()
- getVersionWhereImpl()

Note
  the schema version string (as designated by the return values of the methods listed above) must be included in reference data as returned by either getStrictReferenceDataHashImpl() or getReferenceDataHashImpl().

## Member Function Documentation

## constructor()

Schema::AbstractVersionedSchema::constructor | ( | Qore::SQL::AbstractDatasource | ds,
|  | *string | dts,
|  | *string | its,
|  | *hash | opts )

creates the object based on the arguments giving the location of the schema

Parameters

  ds | the datasource for the schema
  dts | an optional data tablespace name for the schema
  its | an optional index tablespace name for the schema
  opts | options for SqlUtil::Database::constructor()

## getVersionColumn()

string Schema::AbstractVersionedSchema::getVersionColumn | ( |  | ) |

protected

returns the name of the column holding the schema version string by calling getVersionColumnImpl()

this function wraps getVersionColumnImpl(); for forwards-compatibility, do not override this method in subclasses, instead re-implement getVersionColumnImpl()

## getVersionTable()

string Schema::AbstractVersionedSchema::getVersionTable | ( |  | ) |

protected

returns the name of the table holding the schema version string by calling getVersionTableImpl()

this function wraps getVersionTableImpl(); for forwards-compatibility, do not override this method in subclasses, instead re-implement getVersionTableImpl()

## getVersionWhere()

hash Schema::AbstractVersionedSchema::getVersionWhere | ( |  | ) |

protected

returns the where clause hash defining the row where the schema version string is located by calling getVersionWhereImpl()

this function wraps getVersionWhereImpl(); for forwards-compatibility, do not override this method in subclasses, instead re-implement getVersionWhereImpl()