Qore Schema Module Reference  1.2
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...

Inheritance diagram for Schema::AbstractVersionedSchema:

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 More...
 
- Public Member Functions inherited from Schema::AbstractSchema
int align (bool force=False, int verbose=0)
 executes a schema alignment action on the database with the current schema template More...
 
 constructor (Qore::SQL::AbstractDatasource n_ds, *string dts, *string its, *hash opts)
 creates the object from the arguments More...
 
 drop (bool force=False, int verbose=0)
 executes a schema drop operation in the database
 
*hash getColumnOptions ()
 returns column options More...
 
*hash getCreateOnlyReferenceData ()
 returns a hash of "create-only reference data", describing data that is written to the table when the table is created More...
 
*hash 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 getFunctions ()
 returns function definitions More...
 
*hash getIndexOptions ()
 returns index options More...
 
*hash 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 getMaterializedViews ()
 returns materialized view definitions More...
 
string getName ()
 returns the name of the schema
 
*hash getPackages ()
 returns (Oracle) package definitions More...
 
*hash getProcedures ()
 returns stored procedure definitions More...
 
*hash 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 getSequences ()
 returns sequence definitions More...
 
*hash getStrictReferenceDataHash ()
 returns a hash of "strict reference data", describing the only data that can appear in the target table More...
 
*hash getTables ()
 returns table definitions More...
 
*hash 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 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 > 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 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
 

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