MediaWiki REL1_40
|
Class for handling database updates. More...
Inherited by MysqlUpdater, PostgresUpdater, and SqliteUpdater.
Public Member Functions | |
addExtensionField ( $tableName, $columnName, $sqlPath) | |
Add a field to an existing extension table. | |
addExtensionIndex ( $tableName, $indexName, $sqlPath) | |
Add an index to an existing extension table. | |
addExtensionTable ( $tableName, $sqlPath) | |
Convenience wrapper for addExtensionUpdate() when adding a new table (which is the most common usage of updaters in an extension) Intended for use in LoadExtensionSchemaUpdates hook handlers. | |
addExtensionUpdate (array $update) | |
Add a new update coming from an extension. | |
addPostDatabaseUpdateMaintenance ( $class) | |
Add a maintenance script to be run after the database updates are complete. | |
doUpdates (array $what=[ 'core', 'extensions', 'stats']) | |
Do all the updates. | |
dropExtensionField ( $tableName, $columnName, $sqlPath) | |
Drop a field from an extension table. | |
dropExtensionIndex ( $tableName, $indexName, $sqlPath) | |
Drop an index from an extension table Intended for use in LoadExtensionSchemaUpdates hook handlers. | |
dropExtensionTable ( $tableName, $sqlPath=false) | |
Drop an extension table. | |
fieldExists ( $tableName, $fieldName) | |
getDB () | |
Get a database connection to run updates. | |
getPostDatabaseUpdateMaintenance () | |
getSchemaVars () | |
Get appropriate schema variables in the current database connection. | |
insertUpdateRow ( $key, $val=null) | |
Helper function: Add a key to the updatelog table. | |
modifyExtensionField ( $tableName, $fieldName, $sqlPath) | |
Modify an existing field in an extension table. | |
modifyExtensionTable ( $tableName, $sqlPath) | |
Modify an existing extension table. | |
output ( $str) | |
Output some text. | |
patchPath (IDatabase $db, $patch) | |
Get the full path of a patch file. | |
purgeCache () | |
Purge various database caches. | |
renameExtensionIndex ( $tableName, $oldIndexName, $newIndexName, $sqlPath, $skipBothIndexExistWarning=false) | |
Rename an index on an extension table Intended for use in LoadExtensionSchemaUpdates hook handlers. | |
setAutoExtensionHookContainer (HookContainer $hookContainer) | |
Set the HookContainer to use for loading extension schema updates. | |
setFileAccess () | |
Set any .htaccess files or equivalent for storage repos. | |
tableExists ( $tableName) | |
updateRowExists ( $key) | |
Helper function: check if the given key is present in the updatelog table. | |
Static Public Member Functions | |
static | newForDB (IMaintainableDatabase $db, $shared=false, Maintenance $maintenance=null) |
Public Attributes | |
const | REPLICATION_WAIT_TIMEOUT = 300 |
Protected Member Functions | |
__construct (IMaintainableDatabase &$db, $shared, Maintenance $maintenance=null) | |
addField ( $table, $field, $patch, $fullpath=false) | |
Add a new field to an existing table. | |
addIndex ( $table, $index, $patch, $fullpath=false) | |
Add a new index to an existing table. | |
addTable ( $name, $patch, $fullpath=false) | |
Add a new table to the database. | |
appendLine ( $line) | |
Append a line to the open filehandle. | |
applyPatch ( $path, $isFullPath=false, $msg=null) | |
Applies a SQL patch. | |
canUseNewUpdatelog () | |
Updatelog was changed in 1.17 to have a ul_value column so we can record more information about what kind of updates we've done (that's what this class does). | |
checkStats () | |
Check the site_stats table is not properly populated. | |
copyFile ( $filename) | |
Append an SQL fragment to the open file handle. | |
doCollationUpdate () | |
Update CategoryLinks collation. | |
doConvertDjvuMetadata () | |
doTable ( $name) | |
Returns whether updates should be executed on the database table $name. | |
dropField ( $table, $field, $patch, $fullpath=false) | |
Drop a field from an existing table. | |
dropIndex ( $table, $index, $patch, $fullpath=false) | |
Drop an index from an existing table. | |
dropTable ( $table, $patch=false, $fullpath=false) | |
If the specified table exists, drop it, or execute the patch if one is provided. | |
getCoreUpdateList () | |
Get an array of updates to perform on the database. | |
getExtensionUpdates () | |
Get the list of extension-defined updates. | |
ifFieldExists ( $table, $field, $func,... $params) | |
Only run a function if the named field exists. | |
ifTableNotExists ( $table, $func,... $params) | |
Only run a function if a table does not exist. | |
migrateTemplatelinks () | |
modifyField ( $table, $field, $patch, $fullpath=false) | |
Modify an existing field. | |
modifyTable ( $table, $patch, $fullpath=false) | |
Modify an existing table, similar to modifyField. | |
rebuildLocalisationCache () | |
Rebuilds the localisation cache. | |
renameIndex ( $table, $oldIndex, $newIndex, $skipBothIndexExistWarning, $patch, $fullpath=false) | |
Rename an index from an existing table. | |
runMaintenance ( $class, $script) | |
Run a maintenance script. | |
Protected Attributes | |
HookContainer null | $autoExtensionHookContainer |
IMaintainableDatabase | $db |
Handle to the database subclass. | |
array | $extensionUpdates = [] |
List of extension-provided database updates. | |
resource null | $fileHandle = null |
File handle for SQL output. | |
Maintenance | $maintenance |
string[] | $postDatabaseUpdateMaintenance |
Scripts to run after database update Should be a subclass of LoggedUpdateMaintenance. | |
$shared = false | |
bool | $skipSchema = false |
Flag specifying whether or not to skip schema (e.g. | |
array | $updates = [] |
Array of updates to perform on the database. | |
array | $updatesSkipped = [] |
Array of updates that were skipped. | |
Class for handling database updates.
Definition at line 42 of file DatabaseUpdater.php.
|
protected |
IMaintainableDatabase | &$db | To perform updates on |
bool | $shared | Whether to perform updates on shared tables |
Maintenance | null | $maintenance | Maintenance object which created us |
Definition at line 122 of file DatabaseUpdater.php.
References $shared, DBO_DDLMODE, Maintenance\setDB(), and Wikimedia\Rdbms\Database\IDatabaseFlags\setFlag().
DatabaseUpdater::addExtensionField | ( | $tableName, | |
$columnName, | |||
$sqlPath ) |
Add a field to an existing extension table.
Intended for use in LoadExtensionSchemaUpdates hook handlers.
string | $tableName | |
string | $columnName | |
string | $sqlPath |
Definition at line 326 of file DatabaseUpdater.php.
References true.
DatabaseUpdater::addExtensionIndex | ( | $tableName, | |
$indexName, | |||
$sqlPath ) |
Add an index to an existing extension table.
Intended for use in LoadExtensionSchemaUpdates hook handlers.
string | $tableName | |
string | $indexName | |
string | $sqlPath |
Definition at line 312 of file DatabaseUpdater.php.
References true.
DatabaseUpdater::addExtensionTable | ( | $tableName, | |
$sqlPath ) |
Convenience wrapper for addExtensionUpdate() when adding a new table (which is the most common usage of updaters in an extension) Intended for use in LoadExtensionSchemaUpdates hook handlers.
string | $tableName | Name of table to create |
string | $sqlPath | Full path to the schema file |
Definition at line 298 of file DatabaseUpdater.php.
References true.
DatabaseUpdater::addExtensionUpdate | ( | array | $update | ) |
Add a new update coming from an extension.
Intended for use in LoadExtensionSchemaUpdates hook handlers.
array | $update | The update to run. Format is [ $callback, $params... ] $callback is the method to call; either a DatabaseUpdater method name or a callable. Must be serializable (ie. no anonymous functions allowed). The rest of the parameters (if any) will be passed to the callback. The first parameter passed to the callback is always this object. |
Definition at line 284 of file DatabaseUpdater.php.
|
protected |
Add a new field to an existing table.
string | $table | Name of the table to modify |
string | $field | Name of the new field |
string | $patch | Path to the patch file |
bool | $fullpath | Whether to treat $patch path as a relative or not |
Definition at line 789 of file DatabaseUpdater.php.
References applyPatch(), doTable(), and output().
|
protected |
Add a new index to an existing table.
string | $table | Name of the table to modify |
string | $index | Name of the new index |
string | $patch | Path to the patch file |
bool | $fullpath | Whether to treat $patch path as a relative or not |
Definition at line 817 of file DatabaseUpdater.php.
References applyPatch(), doTable(), and output().
DatabaseUpdater::addPostDatabaseUpdateMaintenance | ( | $class | ) |
Add a maintenance script to be run after the database updates are complete.
Script should subclass LoggedUpdateMaintenance
string | $class | Name of a Maintenance subclass |
Definition at line 455 of file DatabaseUpdater.php.
|
protected |
Add a new table to the database.
string | $name | Name of the new table |
string | $patch | Path to the patch file |
bool | $fullpath | Whether to treat $patch path as a relative or not |
Definition at line 763 of file DatabaseUpdater.php.
References applyPatch(), doTable(), and output().
|
protected |
Append a line to the open filehandle.
The line is assumed to be a complete SQL statement.
This is used as a callback for sourceLine().
string | $line | Text to append to the file |
MWException |
Definition at line 690 of file DatabaseUpdater.php.
Referenced by copyFile().
|
protected |
Applies a SQL patch.
string | $path | Path to the patch file |
bool | $isFullPath | Whether to treat $path as a relative or not |
string | null | $msg | Description of the patch |
Definition at line 710 of file DatabaseUpdater.php.
References $path, copyFile(), output(), and patchPath().
Referenced by addField(), addIndex(), PostgresUpdater\addPgExtIndex(), addTable(), MysqlUpdater\checkBin(), MysqlUpdater\doFixIpbAddressUniqueIndex(), SqliteUpdater\doFixIpbAddressUniqueIndex(), MysqlUpdater\doLanguageLinksLengthSync(), dropField(), dropIndex(), dropTable(), modifyField(), modifyTable(), renameIndex(), and PostgresUpdater\renameTable().
|
protected |
Updatelog was changed in 1.17 to have a ul_value column so we can record more information about what kind of updates we've done (that's what this class does).
Pre-1.17 wikis won't have this column, and really old wikis might not even have updatelog at all
Definition at line 620 of file DatabaseUpdater.php.
Referenced by insertUpdateRow().
|
protected |
Check the site_stats table is not properly populated.
Definition at line 1135 of file DatabaseUpdater.php.
References SiteStatsInit\doAllAndCommit(), and output().
Referenced by doUpdates().
|
protected |
Append an SQL fragment to the open file handle.
string | $filename | File name to open |
Definition at line 666 of file DatabaseUpdater.php.
References appendLine().
Referenced by applyPatch().
|
protected |
Update CategoryLinks collation.
Definition at line 1155 of file DatabaseUpdater.php.
References $wgCategoryCollation, and output().
Referenced by doUpdates().
|
protected |
Definition at line 1175 of file DatabaseUpdater.php.
References insertUpdateRow(), output(), and updateRowExists().
|
protected |
Returns whether updates should be executed on the database table $name.
Updates will be prevented if the table is a shared table and it is not specified to run updates on shared tables.
string | $name | Table name |
Definition at line 633 of file DatabaseUpdater.php.
References $wgSharedDB, $wgSharedTables, and output().
Referenced by addField(), addIndex(), addTable(), MysqlUpdater\checkBin(), MysqlUpdater\doFixIpbAddressUniqueIndex(), dropField(), dropIndex(), dropTable(), modifyField(), modifyTable(), and renameIndex().
DatabaseUpdater::doUpdates | ( | array | $what = [ 'core', 'extensions', 'stats' ] | ) |
Do all the updates.
array | $what | What updates to perform |
Definition at line 514 of file DatabaseUpdater.php.
References checkStats(), doCollationUpdate(), getCoreUpdateList(), getExtensionUpdates(), and getSchemaVars().
DatabaseUpdater::dropExtensionField | ( | $tableName, | |
$columnName, | |||
$sqlPath ) |
Drop a field from an extension table.
Intended for use in LoadExtensionSchemaUpdates hook handlers.
string | $tableName | |
string | $columnName | |
string | $sqlPath |
Definition at line 340 of file DatabaseUpdater.php.
References true.
DatabaseUpdater::dropExtensionIndex | ( | $tableName, | |
$indexName, | |||
$sqlPath ) |
Drop an index from an extension table Intended for use in LoadExtensionSchemaUpdates hook handlers.
string | $tableName | |
string | $indexName | |
string | $sqlPath | The path to the SQL change path |
Definition at line 354 of file DatabaseUpdater.php.
References true.
DatabaseUpdater::dropExtensionTable | ( | $tableName, | |
$sqlPath = false ) |
Drop an extension table.
Intended for use in LoadExtensionSchemaUpdates hook handlers.
string | $tableName | |
string | bool | $sqlPath |
Definition at line 367 of file DatabaseUpdater.php.
References true.
|
protected |
Drop a field from an existing table.
string | $table | Name of the table to modify |
string | $field | Name of the old field |
string | $patch | Path to the patch file |
bool | $fullpath | Whether to treat $patch path as a relative or not |
Definition at line 845 of file DatabaseUpdater.php.
References applyPatch(), doTable(), and output().
|
protected |
Drop an index from an existing table.
string | $table | Name of the table to modify |
string | $index | Name of the index |
string | $patch | Path to the patch file |
bool | $fullpath | Whether to treat $patch path as a relative or not |
Definition at line 871 of file DatabaseUpdater.php.
References applyPatch(), doTable(), and output().
|
protected |
If the specified table exists, drop it, or execute the patch if one is provided.
string | $table | Table to drop. |
string | false | $patch | String of patch file that will drop the table. Default: false. |
bool | $fullpath | Whether $patch is a full path. Default: false. |
Definition at line 958 of file DatabaseUpdater.php.
References applyPatch(), doTable(), and output().
DatabaseUpdater::fieldExists | ( | $tableName, | |
$fieldName ) |
string | $tableName | |
string | $fieldName |
Definition at line 442 of file DatabaseUpdater.php.
|
abstractprotected |
Get an array of updates to perform on the database.
Should return a multi-dimensional array. The main key is the MediaWiki version (1.12, 1.13...) with the values being arrays of updates.
Reimplemented in MysqlUpdater, PostgresUpdater, and SqliteUpdater.
Referenced by doUpdates().
DatabaseUpdater::getDB | ( | ) |
Get a database connection to run updates.
Definition at line 250 of file DatabaseUpdater.php.
|
protected |
Get the list of extension-defined updates.
Definition at line 464 of file DatabaseUpdater.php.
Referenced by doUpdates().
DatabaseUpdater::getPostDatabaseUpdateMaintenance | ( | ) |
DatabaseUpdater::getSchemaVars | ( | ) |
Get appropriate schema variables in the current database connection.
This should be called after any request data has been imported, but before any write operations to the database. The result should be passed to the DB setSchemaVars() method.
Reimplemented in MysqlUpdater.
Definition at line 505 of file DatabaseUpdater.php.
Referenced by doUpdates().
|
protected |
Only run a function if the named field exists.
string | $table | Table to check. If passed $this, it's assumed to be a call from runUpdates() with $passSelf = true: all other parameters are shifted and $this is prepended to the rest of $params. |
string | $field | Field to check |
string | array | static | $func | Normally this is the string naming the method on $this to call. It may also be an array callable. |
mixed | ...$params Parameters for $func |
Definition at line 1284 of file DatabaseUpdater.php.
|
protected |
Only run a function if a table does not exist.
string | $table | Table to check. If passed $this, it's assumed to be a call from runUpdates() with $passSelf = true: all other parameters are shifted and $this is prepended to the rest of $params. |
string | array | static | $func | Normally this is the string naming the method on $this to call. It may also be an array callable. |
mixed | ...$params Parameters for $func |
Definition at line 1247 of file DatabaseUpdater.php.
DatabaseUpdater::insertUpdateRow | ( | $key, | |
$val = null ) |
Helper function: Add a key to the updatelog table.
string | $key | Name of key to insert |
string | null | $val | [optional] Value to insert along with the key |
Definition at line 602 of file DatabaseUpdater.php.
References canUseNewUpdatelog(), and DBO_DDLMODE.
Referenced by doConvertDjvuMetadata(), MysqlUpdater\dropDefault(), modifyField(), and modifyTable().
|
protected |
Definition at line 1213 of file DatabaseUpdater.php.
References output(), and updateRowExists().
DatabaseUpdater::modifyExtensionField | ( | $tableName, | |
$fieldName, | |||
$sqlPath ) |
Modify an existing field in an extension table.
Intended for use in LoadExtensionSchemaUpdates hook handlers.
string | $tableName | |
string | $fieldName | The field to be modified |
string | $sqlPath | The path to the SQL patch |
Definition at line 408 of file DatabaseUpdater.php.
References true.
DatabaseUpdater::modifyExtensionTable | ( | $tableName, | |
$sqlPath ) |
Modify an existing extension table.
Intended for use in LoadExtensionSchemaUpdates hook handlers.
string | $tableName | |
string | $sqlPath | The path to the SQL patch |
Definition at line 421 of file DatabaseUpdater.php.
References true.
|
protected |
Modify an existing field.
string | $table | Name of the table to which the field belongs |
string | $field | Name of the field to modify |
string | $patch | Path to the patch file |
bool | $fullpath | Whether to treat $patch path as a relative or not |
Definition at line 994 of file DatabaseUpdater.php.
References applyPatch(), doTable(), insertUpdateRow(), output(), and updateRowExists().
|
protected |
Modify an existing table, similar to modifyField.
Intended for changes that touch more than one column on a table.
string | $table | Name of the table to modify |
string | $patch | Name of the patch file to apply |
string | bool | $fullpath | Whether to treat $patch path as relative or not, defaults to false |
Definition at line 1031 of file DatabaseUpdater.php.
References applyPatch(), doTable(), insertUpdateRow(), output(), and updateRowExists().
|
static |
IMaintainableDatabase | $db | |
bool | $shared | |
Maintenance | null | $maintenance |
MWException |
Definition at line 219 of file DatabaseUpdater.php.
References $shared, $type, Installer\getDBTypes(), and Wikimedia\Rdbms\IReadableDatabase\getType().
DatabaseUpdater::output | ( | $str | ) |
Output some text.
If we're running from web, escape the text first.
string | $str | Text to output |
-taint | $str | escapes_html |
Definition at line 260 of file DatabaseUpdater.php.
References $wgCommandLineMode.
Referenced by addField(), addIndex(), PostgresUpdater\addPgEnumValue(), PostgresUpdater\addPgExtIndex(), PostgresUpdater\addPgField(), PostgresUpdater\addPgIndex(), PostgresUpdater\addSequence(), addTable(), applyPatch(), PostgresUpdater\changeField(), PostgresUpdater\changeFieldPurgeTable(), PostgresUpdater\changeFkeyDeferrable(), PostgresUpdater\changeNullableField(), PostgresUpdater\changePrimaryKey(), MysqlUpdater\checkBin(), PostgresUpdater\checkIndex(), checkStats(), doCollationUpdate(), doConvertDjvuMetadata(), MysqlUpdater\doFixIpbAddressUniqueIndex(), SqliteUpdater\doFixIpbAddressUniqueIndex(), MysqlUpdater\doLanguageLinksLengthSync(), doTable(), MysqlUpdater\dropDefault(), PostgresUpdater\dropDefault(), dropField(), PostgresUpdater\dropFkey(), dropIndex(), PostgresUpdater\dropPgField(), PostgresUpdater\dropPgIndex(), PostgresUpdater\dropSequence(), dropTable(), MysqlUpdater\indexHasField(), SqliteUpdater\indexHasField(), migrateTemplatelinks(), modifyField(), modifyTable(), purgeCache(), rebuildLocalisationCache(), PostgresUpdater\renameIndex(), renameIndex(), PostgresUpdater\renameSequence(), PostgresUpdater\renameTable(), runMaintenance(), MysqlUpdater\setDefault(), PostgresUpdater\setDefault(), setFileAccess(), and PostgresUpdater\setSequenceOwner().
DatabaseUpdater::patchPath | ( | IDatabase | $db, |
$patch ) |
Get the full path of a patch file.
Keep in mind this always returns a patch, as it fails back to MySQL if no DB-specific patch can be found
IDatabase | $db | |
string | $patch | The name of the patch, like patch-something.sql |
Definition at line 741 of file DatabaseUpdater.php.
References Wikimedia\Rdbms\IReadableDatabase\getType().
Referenced by applyPatch().
DatabaseUpdater::purgeCache | ( | ) |
Purge various database caches.
Definition at line 1107 of file DatabaseUpdater.php.
References $wgLocalisationCacheConf, output(), and rebuildLocalisationCache().
|
protected |
Rebuilds the localisation cache.
Definition at line 1199 of file DatabaseUpdater.php.
References output().
Referenced by purgeCache().
DatabaseUpdater::renameExtensionIndex | ( | $tableName, | |
$oldIndexName, | |||
$newIndexName, | |||
$sqlPath, | |||
$skipBothIndexExistWarning = false ) |
Rename an index on an extension table Intended for use in LoadExtensionSchemaUpdates hook handlers.
string | $tableName | |
string | $oldIndexName | |
string | $newIndexName | |
string | $sqlPath | The path to the SQL change path |
bool | $skipBothIndexExistWarning | Whether to warn if both the old and the new indexes exist. [facultative; by default, false] |
Definition at line 384 of file DatabaseUpdater.php.
References true.
|
protected |
Rename an index from an existing table.
string | $table | Name of the table to modify |
string | $oldIndex | Old name of the index |
string | $newIndex | New name of the index |
bool | $skipBothIndexExistWarning | Whether to warn if both the old and the new indexes exist. |
string | $patch | Path to the patch file |
bool | $fullpath | Whether to treat $patch path as a relative or not |
Reimplemented in PostgresUpdater.
Definition at line 901 of file DatabaseUpdater.php.
References applyPatch(), doTable(), and output().
|
protected |
Run a maintenance script.
This should only be used when the maintenance script must run before later updates. If later updates don't depend on the script, add it to DatabaseUpdater::$postDatabaseUpdateMaintenance instead.
The script's execute() method must return true to indicate successful completion, and must return false (or throw an exception) to indicate unsuccessful completion.
string | $class | Maintenance subclass |
string | $script | Script path and filename, usually "maintenance/fooBar.php" |
Definition at line 1071 of file DatabaseUpdater.php.
References output().
DatabaseUpdater::setAutoExtensionHookContainer | ( | HookContainer | $hookContainer | ) |
Set the HookContainer to use for loading extension schema updates.
HookContainer | $hookContainer |
Definition at line 241 of file DatabaseUpdater.php.
DatabaseUpdater::setFileAccess | ( | ) |
Set any .htaccess files or equivalent for storage repos.
Some zones (e.g. "temp") used to be public and may have been initialized as such
Definition at line 1086 of file DatabaseUpdater.php.
References output().
DatabaseUpdater::tableExists | ( | $tableName | ) |
string | $tableName |
Definition at line 431 of file DatabaseUpdater.php.
DatabaseUpdater::updateRowExists | ( | $key | ) |
Helper function: check if the given key is present in the updatelog table.
Obviously, only use this for updates that occur after the updatelog table was created!
string | $key | Name of the key to check for |
Definition at line 577 of file DatabaseUpdater.php.
Referenced by doConvertDjvuMetadata(), MysqlUpdater\dropDefault(), migrateTemplatelinks(), modifyField(), and modifyTable().
|
protected |
Definition at line 80 of file DatabaseUpdater.php.
|
protected |
Handle to the database subclass.
Definition at line 70 of file DatabaseUpdater.php.
|
protected |
List of extension-provided database updates.
Definition at line 63 of file DatabaseUpdater.php.
|
protected |
File handle for SQL output.
Definition at line 107 of file DatabaseUpdater.php.
|
protected |
Definition at line 75 of file DatabaseUpdater.php.
|
protected |
Scripts to run after database update Should be a subclass of LoggedUpdateMaintenance.
Definition at line 86 of file DatabaseUpdater.php.
|
protected |
Definition at line 77 of file DatabaseUpdater.php.
Referenced by __construct(), and newForDB().
|
protected |
Flag specifying whether or not to skip schema (e.g.
SQL-only) updates.
Definition at line 114 of file DatabaseUpdater.php.
|
protected |
Array of updates to perform on the database.
Definition at line 50 of file DatabaseUpdater.php.
|
protected |
Array of updates that were skipped.
Definition at line 57 of file DatabaseUpdater.php.
const DatabaseUpdater::REPLICATION_WAIT_TIMEOUT = 300 |
Definition at line 43 of file DatabaseUpdater.php.