Qore Schema Module Reference 1.4.1
Loading...
Searching...
No Matches
Schema::AbstractVersionedSchema Class Referenceabstract

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

#include <Schema.qm.dox.h>

Inheritance diagram for Schema::AbstractVersionedSchema:
[legend]

Public Member Methods

 constructor (Qore::SQL::AbstractDatasource ds, *string dts, *string its, *hash opts)
 creates the object based on the arguments giving the location of the schema More...
 
- Public Member Methods 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 More...
 
hash< SchemaAlignmentInfoalignWithInfo (bool force=False, int verbose=0, bool do_msgs=True)
 executes a schema alignment action on the database with the current schema template More...
 
 constructor (Qore::SQL::AbstractDatasource ds, *hash< SchemaOptionInfo > opts)
 creates the object from the arguments More...
 
 constructor (Qore::SQL::AbstractDatasource ds, *string dts, *string its, *hash opts)
 creates the object from the arguments More...
 
private 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
 
 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 More...
 
*hash< auto > getCreateOnlyReferenceData ()
 returns a hash of "create-only reference data", describing data that is written to the table when the table is created More...
 
*hash< auto > getCreationOptions ()
 returns schema creation options More...
 
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 More...
 
*hash< auto > getIndexOptions ()
 returns index options More...
 
*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 More...
 
*hash< auto > getMaterializedViews ()
 returns materialized view definitions More...
 
string getName ()
 returns the name of the schema
 
*hash< auto > getPackages ()
 returns (Oracle) package definitions More...
 
*hash< auto > getProcedures ()
 returns stored procedure definitions More...
 
*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 More...
 
*hash< auto > getSequences ()
 returns sequence definitions More...
 
*hash< auto > getStrictReferenceDataHash ()
 returns a hash of "strict reference data", describing the only data that can appear in the target table More...
 
*hash< auto > getTables ()
 returns table definitions More...
 
*hash< auto > getTypes ()
 returns type definitions More...
 
string getVersion ()
 returns the version of the schema
 
 log (string fmt)
 outputs a log message More...
 
 logpf (string fmt)
 outputs a log message prefixed with the schema name More...
 
 logProgress (string str)
 outputs a log message without any newline More...
 

Private Member Methods

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() More...
 
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() More...
 
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() More...
 
abstract hash getVersionWhereImpl ()
 returns the where clause hash defining the row where the schema version string is located
 
- Private Member Methods 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 More...
 
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 More...
 
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
 
*hash< auto > getColumnOptionsImpl ()
 returns column options More...
 
*hash< auto > getCreateOnlyReferenceDataImpl ()
 returns a hash of "create-only reference data", describing data that is written to the table when the table is created More...
 
*hash< auto > getFunctionsImpl ()
 returns function definitions More...
 
*hash< auto > getGenericOptionsImpl ()
 returns schema creation options More...
 
*hash< auto > getIndexOptionsImpl ()
 returns index options More...
 
*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 More...
 
*hash< auto > getMaterializedViewsImpl ()
 returns materialized view definitions More...
 
abstract string getNameImpl ()
 returns the name of the schema
 
*hash< auto > getPackagesImpl ()
 returns (Oracle) package definitions More...
 
*hash< auto > getProceduresImpl ()
 returns stored procedure definitions More...
 
*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 More...
 
*hash< auto > getSequencesImpl ()
 returns sequence definitions More...
 
*hash< auto > getStrictReferenceDataHashImpl ()
 returns a hash of "strict reference data", describing the only data that can appear in the target table More...
 
*hash< auto > getTablesImpl ()
 returns table definitions More...
 
*hash< auto > getTypesImpl ()
 returns type definitions More...
 
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
 

Private 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
 
- Private 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 Methods 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 More...
 

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:

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
dsthe datasource for the schema
dtsan optional data tablespace name for the schema
itsan optional index tablespace name for the schema
optsoptions for SqlUtil::Database::constructor()

◆ getVersionColumn()

string Schema::AbstractVersionedSchema::getVersionColumn ( )
private

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 ( )
private

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 ( )
private

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()