MediaWiki REL1_39
DatabaseUpdater Class Reference

Class for handling database updates. More...

Inheritance diagram for DatabaseUpdater:
Collaboration diagram for DatabaseUpdater:

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.
 
 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.
 
 migrateActors ()
 Migrate actors to the new 'actor' table.
 
 migrateArchiveText ()
 Migrate ar_text to modern storage.
 
 migrateComments ()
 Migrate comments to the new 'comment' table.
 
 migrateImageCommentTemp ()
 Merge image_comment_temp into the image table.
 
 migrateTemplatelinks ()
 
 modifyField ( $table, $field, $patch, $fullpath=false)
 Modify an existing field.
 
 modifyTable ( $table, $patch, $fullpath=false)
 Modify an existing table, similar to modifyField.
 
 populateArchiveRevId ()
 Populate ar_rev_id, then make it not nullable.
 
 populateContentTables ()
 Populates the MCR content tables.
 
 populateExternallinksIndex60 ()
 Populates the externallinks.el_index_60 field.
 
 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.
 

Detailed Description

Class for handling database updates.

Stability: stable
to extend
Since
1.17

Definition at line 42 of file DatabaseUpdater.php.

Constructor & Destructor Documentation

◆ __construct()

DatabaseUpdater::__construct ( IMaintainableDatabase & $db,
$shared,
Maintenance $maintenance = null )
protected
Stability: stable
to call
Parameters
IMaintainableDatabase&$dbTo perform updates on
bool$sharedWhether to perform updates on shared tables
Maintenance | null$maintenanceMaintenance object which created us

Definition at line 122 of file DatabaseUpdater.php.

References $shared, DBO_DDLMODE, Maintenance\setDB(), and Wikimedia\Rdbms\IDatabase\setFlag().

Member Function Documentation

◆ addExtensionField()

DatabaseUpdater::addExtensionField ( $tableName,
$columnName,
$sqlPath )

Add a field to an existing extension table.

Intended for use in LoadExtensionSchemaUpdates hook handlers.

Since
1.19
Parameters
string$tableName
string$columnName
string$sqlPath

Definition at line 326 of file DatabaseUpdater.php.

References true.

◆ addExtensionIndex()

DatabaseUpdater::addExtensionIndex ( $tableName,
$indexName,
$sqlPath )

Add an index to an existing extension table.

Intended for use in LoadExtensionSchemaUpdates hook handlers.

Since
1.19
Parameters
string$tableName
string$indexName
string$sqlPath

Definition at line 312 of file DatabaseUpdater.php.

References true.

◆ addExtensionTable()

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.

Since
1.18
Parameters
string$tableNameName of table to create
string$sqlPathFull path to the schema file

Definition at line 298 of file DatabaseUpdater.php.

References true.

◆ addExtensionUpdate()

DatabaseUpdater::addExtensionUpdate ( array $update)

Add a new update coming from an extension.

Intended for use in LoadExtensionSchemaUpdates hook handlers.

Since
1.17
Parameters
array$updateThe 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.

◆ addField()

DatabaseUpdater::addField ( $table,
$field,
$patch,
$fullpath = false )
protected

Add a new field to an existing table.

Note
Code in a LoadExtensionSchemaUpdates handler should use addExtensionField instead!
Parameters
string$tableName of the table to modify
string$fieldName of the new field
string$patchPath to the patch file
bool$fullpathWhether to treat $patch path as a relative or not
Returns
bool False if this was skipped because schema changes are skipped

Definition at line 781 of file DatabaseUpdater.php.

References applyPatch(), doTable(), and output().

◆ addIndex()

DatabaseUpdater::addIndex ( $table,
$index,
$patch,
$fullpath = false )
protected

Add a new index to an existing table.

Note
Code in a LoadExtensionSchemaUpdates handler should use addExtensionIndex instead!
Parameters
string$tableName of the table to modify
string$indexName of the new index
string$patchPath to the patch file
bool$fullpathWhether to treat $patch path as a relative or not
Returns
bool False if this was skipped because schema changes are skipped

Definition at line 809 of file DatabaseUpdater.php.

References applyPatch(), doTable(), and output().

◆ addPostDatabaseUpdateMaintenance()

DatabaseUpdater::addPostDatabaseUpdateMaintenance ( $class)

Add a maintenance script to be run after the database updates are complete.

Script should subclass LoggedUpdateMaintenance

Since
1.19
Parameters
string$className of a Maintenance subclass

Definition at line 444 of file DatabaseUpdater.php.

◆ addTable()

DatabaseUpdater::addTable ( $name,
$patch,
$fullpath = false )
protected

Add a new table to the database.

Note
Code in a LoadExtensionSchemaUpdates handler should use addExtensionTable instead!
Parameters
string$nameName of the new table
string$patchPath to the patch file
bool$fullpathWhether to treat $patch path as a relative or not
Returns
bool False if this was skipped because schema changes are skipped

Definition at line 755 of file DatabaseUpdater.php.

References applyPatch(), doTable(), and output().

◆ appendLine()

DatabaseUpdater::appendLine ( $line)
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().

Note
protected since 1.35
Parameters
string$lineText to append to the file
Returns
bool False to skip actually executing the file
Exceptions
MWException

Definition at line 680 of file DatabaseUpdater.php.

References $line.

Referenced by copyFile().

◆ applyPatch()

DatabaseUpdater::applyPatch ( $path,
$isFullPath = false,
$msg = null )
protected

Applies a SQL patch.

Note
Do not use this in a LoadExtensionSchemaUpdates handler, use addExtensionUpdate instead!
Parameters
string$pathPath to the patch file
bool$isFullPathWhether to treat $path as a relative or not
string | null$msgDescription of the patch
Returns
bool False if patch is skipped.

Definition at line 700 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(), migrateArchiveText(), modifyField(), modifyTable(), populateArchiveRevId(), renameIndex(), and PostgresUpdater\renameTable().

◆ canUseNewUpdatelog()

DatabaseUpdater::canUseNewUpdatelog ( )
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

Returns
bool

Definition at line 610 of file DatabaseUpdater.php.

Referenced by insertUpdateRow().

◆ checkStats()

DatabaseUpdater::checkStats ( )
protected

Check the site_stats table is not properly populated.

Definition at line 1130 of file DatabaseUpdater.php.

References SiteStatsInit\doAllAndCommit(), and output().

Referenced by doUpdates().

◆ copyFile()

DatabaseUpdater::copyFile ( $filename)
protected

Append an SQL fragment to the open file handle.

Note
protected since 1.35
Parameters
string$filenameFile name to open

Definition at line 656 of file DatabaseUpdater.php.

References $line, and appendLine().

Referenced by applyPatch().

◆ doCollationUpdate()

DatabaseUpdater::doCollationUpdate ( )
protected

Update CategoryLinks collation.

Definition at line 1150 of file DatabaseUpdater.php.

References $wgCategoryCollation, and output().

Referenced by doUpdates().

◆ doConvertDjvuMetadata()

DatabaseUpdater::doConvertDjvuMetadata ( )
protected

Definition at line 1170 of file DatabaseUpdater.php.

References insertUpdateRow(), output(), and updateRowExists().

◆ doTable()

DatabaseUpdater::doTable ( $name)
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.

Parameters
string$nameTable name
Returns
bool

Definition at line 623 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().

◆ doUpdates()

DatabaseUpdater::doUpdates ( array $what = [ 'core', 'extensions', 'stats' ])

Do all the updates.

Parameters
array$whatWhat updates to perform

Definition at line 504 of file DatabaseUpdater.php.

References checkStats(), doCollationUpdate(), getCoreUpdateList(), getExtensionUpdates(), and getSchemaVars().

◆ dropExtensionField()

DatabaseUpdater::dropExtensionField ( $tableName,
$columnName,
$sqlPath )

Drop a field from an extension table.

Intended for use in LoadExtensionSchemaUpdates hook handlers.

Since
1.20
Parameters
string$tableName
string$columnName
string$sqlPath

Definition at line 340 of file DatabaseUpdater.php.

References true.

◆ dropExtensionIndex()

DatabaseUpdater::dropExtensionIndex ( $tableName,
$indexName,
$sqlPath )

Drop an index from an extension table Intended for use in LoadExtensionSchemaUpdates hook handlers.

Since
1.21
Parameters
string$tableName
string$indexName
string$sqlPathThe path to the SQL change path

Definition at line 354 of file DatabaseUpdater.php.

References true.

◆ dropExtensionTable()

DatabaseUpdater::dropExtensionTable ( $tableName,
$sqlPath = false )

Drop an extension table.

Intended for use in LoadExtensionSchemaUpdates hook handlers.

Since
1.20
Parameters
string$tableName
string | bool$sqlPath

Definition at line 367 of file DatabaseUpdater.php.

References true.

◆ dropField()

DatabaseUpdater::dropField ( $table,
$field,
$patch,
$fullpath = false )
protected

Drop a field from an existing table.

Note
Code in a LoadExtensionSchemaUpdates handler should use dropExtensionField instead!
Parameters
string$tableName of the table to modify
string$fieldName of the old field
string$patchPath to the patch file
bool$fullpathWhether to treat $patch path as a relative or not
Returns
bool False if this was skipped because schema changes are skipped

Definition at line 837 of file DatabaseUpdater.php.

References applyPatch(), doTable(), and output().

◆ dropIndex()

DatabaseUpdater::dropIndex ( $table,
$index,
$patch,
$fullpath = false )
protected

Drop an index from an existing table.

Note
Code in a LoadExtensionSchemaUpdates handler should use dropExtensionIndex instead!
Parameters
string$tableName of the table to modify
string$indexName of the index
string$patchPath to the patch file
bool$fullpathWhether to treat $patch path as a relative or not
Returns
bool False if this was skipped because schema changes are skipped

Definition at line 863 of file DatabaseUpdater.php.

References applyPatch(), doTable(), and output().

◆ dropTable()

DatabaseUpdater::dropTable ( $table,
$patch = false,
$fullpath = false )
protected

If the specified table exists, drop it, or execute the patch if one is provided.

Note
Code in a LoadExtensionSchemaUpdates handler should use dropExtensionTable instead!
protected since 1.35
Parameters
string$tableTable to drop.
string | bool$patchString of patch file that will drop the table. Default: false.
bool$fullpathWhether $patch is a full path. Default: false.
Returns
bool False if this was skipped because schema changes are skipped

Definition at line 950 of file DatabaseUpdater.php.

References applyPatch(), doTable(), and output().

Referenced by migrateImageCommentTemp().

◆ getCoreUpdateList()

DatabaseUpdater::getCoreUpdateList ( )
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.

Returns
array[]

Reimplemented in MysqlUpdater, PostgresUpdater, and SqliteUpdater.

Referenced by doUpdates().

◆ getDB()

DatabaseUpdater::getDB ( )

Get a database connection to run updates.

Returns
IMaintainableDatabase

Definition at line 250 of file DatabaseUpdater.php.

◆ getExtensionUpdates()

DatabaseUpdater::getExtensionUpdates ( )
protected

Get the list of extension-defined updates.

Returns
array

Definition at line 453 of file DatabaseUpdater.php.

Referenced by doUpdates().

◆ getPostDatabaseUpdateMaintenance()

DatabaseUpdater::getPostDatabaseUpdateMaintenance ( )
Since
1.17
Returns
string[]

Definition at line 462 of file DatabaseUpdater.php.

◆ getSchemaVars()

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.

Stability: stable
to override
Returns
array
Since
1.28

Reimplemented in MysqlUpdater.

Definition at line 495 of file DatabaseUpdater.php.

Referenced by doUpdates().

◆ ifFieldExists()

DatabaseUpdater::ifFieldExists ( $table,
$field,
$func,
$params )
protected

Only run a function if the named field exists.

Since
1.35
Parameters
string$tableTable 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$fieldField to check
string | array | static$funcNormally this is the string naming the method on $this to call. It may also be an array callable.
mixed...$params Parameters for $func
Returns
mixed Whatever $func returns, or null when skipped.

Definition at line 1409 of file DatabaseUpdater.php.

◆ ifTableNotExists()

DatabaseUpdater::ifTableNotExists ( $table,
$func,
$params )
protected

Only run a function if a table does not exist.

Since
1.35
Parameters
string$tableTable 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$funcNormally this is the string naming the method on $this to call. It may also be an array callable.
mixed...$params Parameters for $func
Returns
mixed Whatever $func returns, or null when skipped.

Definition at line 1372 of file DatabaseUpdater.php.

◆ insertUpdateRow()

DatabaseUpdater::insertUpdateRow ( $key,
$val = null )

Helper function: Add a key to the updatelog table.

Note
Only use this for updates that occur after the updatelog table was created!
Extensions must only use this from within callbacks registered with addExtensionUpdate(). In particular, this method must not be called directly from a LoadExtensionSchemaUpdates handler.
Parameters
string$keyName of key to insert
string | null$val[optional] Value to insert along with the key

Definition at line 592 of file DatabaseUpdater.php.

References canUseNewUpdatelog(), and DBO_DDLMODE.

Referenced by doConvertDjvuMetadata(), MysqlUpdater\dropDefault(), modifyField(), modifyTable(), and populateContentTables().

◆ migrateActors()

DatabaseUpdater::migrateActors ( )
protected

Migrate actors to the new 'actor' table.

Since
1.31

Definition at line 1270 of file DatabaseUpdater.php.

References output(), and updateRowExists().

◆ migrateArchiveText()

DatabaseUpdater::migrateArchiveText ( )
protected

Migrate ar_text to modern storage.

Since
1.31

Definition at line 1287 of file DatabaseUpdater.php.

References applyPatch(), and output().

◆ migrateComments()

DatabaseUpdater::migrateComments ( )
protected

Migrate comments to the new 'comment' table.

Since
1.30

Definition at line 1233 of file DatabaseUpdater.php.

References output(), and updateRowExists().

◆ migrateImageCommentTemp()

DatabaseUpdater::migrateImageCommentTemp ( )
protected

Merge image_comment_temp into the image table.

Since
1.32

Definition at line 1250 of file DatabaseUpdater.php.

References dropTable(), output(), and tableExists().

◆ migrateTemplatelinks()

DatabaseUpdater::migrateTemplatelinks ( )
protected

Definition at line 1208 of file DatabaseUpdater.php.

References output(), and updateRowExists().

◆ modifyExtensionField()

DatabaseUpdater::modifyExtensionField ( $tableName,
$fieldName,
$sqlPath )

Modify an existing field in an extension table.

Intended for use in LoadExtensionSchemaUpdates hook handlers.

Since
1.21
Parameters
string$tableName
string$fieldNameThe field to be modified
string$sqlPathThe path to the SQL patch

Definition at line 408 of file DatabaseUpdater.php.

References true.

◆ modifyExtensionTable()

DatabaseUpdater::modifyExtensionTable ( $tableName,
$sqlPath )

Modify an existing extension table.

Intended for use in LoadExtensionSchemaUpdates hook handlers.

Since
1.31
Parameters
string$tableName
string$sqlPathThe path to the SQL patch

Definition at line 421 of file DatabaseUpdater.php.

References true.

◆ modifyField()

DatabaseUpdater::modifyField ( $table,
$field,
$patch,
$fullpath = false )
protected

Modify an existing field.

Note
Code in a LoadExtensionSchemaUpdates handler should use modifyExtensionField instead!
protected since 1.35
Parameters
string$tableName of the table to which the field belongs
string$fieldName of the field to modify
string$patchPath to the patch file
bool$fullpathWhether to treat $patch path as a relative or not
Returns
bool False if this was skipped because schema changes are skipped

Definition at line 986 of file DatabaseUpdater.php.

References applyPatch(), doTable(), insertUpdateRow(), output(), and updateRowExists().

◆ modifyTable()

DatabaseUpdater::modifyTable ( $table,
$patch,
$fullpath = false )
protected

Modify an existing table, similar to modifyField.

Intended for changes that touch more than one column on a table.

Note
Code in a LoadExtensionSchemaUpdates handler should use modifyExtensionTable instead!
protected since 1.35
Parameters
string$tableName of the table to modify
string$patchName of the patch file to apply
string | bool$fullpathWhether to treat $patch path as relative or not, defaults to false
Returns
bool False if this was skipped because of schema changes being skipped

Definition at line 1023 of file DatabaseUpdater.php.

References applyPatch(), doTable(), insertUpdateRow(), output(), and updateRowExists().

◆ newForDB()

static DatabaseUpdater::newForDB ( IMaintainableDatabase $db,
$shared = false,
Maintenance $maintenance = null )
static
Parameters
IMaintainableDatabase$db
bool$shared
Maintenance | null$maintenance
Exceptions
MWException
Returns
DatabaseUpdater

Definition at line 219 of file DatabaseUpdater.php.

References $shared, $type, Installer\getDBTypes(), and Wikimedia\Rdbms\IDatabase\getType().

◆ output()

DatabaseUpdater::output ( $str)

Output some text.

If we're running from web, escape the text first.

Parameters
string$strText to output
-taint$strescapes_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(), migrateActors(), migrateArchiveText(), migrateComments(), migrateImageCommentTemp(), migrateTemplatelinks(), modifyField(), modifyTable(), populateArchiveRevId(), populateContentTables(), populateExternallinksIndex60(), purgeCache(), rebuildLocalisationCache(), PostgresUpdater\renameIndex(), renameIndex(), PostgresUpdater\renameSequence(), PostgresUpdater\renameTable(), runMaintenance(), MysqlUpdater\setDefault(), PostgresUpdater\setDefault(), setFileAccess(), and PostgresUpdater\setSequenceOwner().

◆ patchPath()

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

Parameters
IDatabase$db
string$patchThe name of the patch, like patch-something.sql
Returns
string Full path to patch file

Definition at line 733 of file DatabaseUpdater.php.

References Wikimedia\Rdbms\IDatabase\getType().

Referenced by applyPatch().

◆ populateArchiveRevId()

DatabaseUpdater::populateArchiveRevId ( )
protected

Populate ar_rev_id, then make it not nullable.

Since
1.31

Definition at line 1304 of file DatabaseUpdater.php.

References applyPatch(), and output().

◆ populateContentTables()

DatabaseUpdater::populateContentTables ( )
protected

Populates the MCR content tables.

Since
1.32

Definition at line 1341 of file DatabaseUpdater.php.

References insertUpdateRow(), output(), and updateRowExists().

◆ populateExternallinksIndex60()

DatabaseUpdater::populateExternallinksIndex60 ( )
protected

Populates the externallinks.el_index_60 field.

Since
1.32

Definition at line 1323 of file DatabaseUpdater.php.

References output(), and updateRowExists().

◆ purgeCache()

DatabaseUpdater::purgeCache ( )

Purge various database caches.

Definition at line 1099 of file DatabaseUpdater.php.

References $wgLocalisationCacheConf, output(), and rebuildLocalisationCache().

◆ rebuildLocalisationCache()

DatabaseUpdater::rebuildLocalisationCache ( )
protected

Rebuilds the localisation cache.

Definition at line 1194 of file DatabaseUpdater.php.

References output().

Referenced by purgeCache().

◆ renameExtensionIndex()

DatabaseUpdater::renameExtensionIndex ( $tableName,
$oldIndexName,
$newIndexName,
$sqlPath,
$skipBothIndexExistWarning = false )

Rename an index on an extension table Intended for use in LoadExtensionSchemaUpdates hook handlers.

Since
1.21
Parameters
string$tableName
string$oldIndexName
string$newIndexName
string$sqlPathThe path to the SQL change path
bool$skipBothIndexExistWarningWhether 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.

◆ renameIndex()

DatabaseUpdater::renameIndex ( $table,
$oldIndex,
$newIndex,
$skipBothIndexExistWarning,
$patch,
$fullpath = false )
protected

Rename an index from an existing table.

Stability: stable
to override
Note
Code in a LoadExtensionSchemaUpdates handler should use renameExtensionIndex instead!
Parameters
string$tableName of the table to modify
string$oldIndexOld name of the index
string$newIndexNew name of the index
bool$skipBothIndexExistWarningWhether to warn if both the old and the new indexes exist.
string$patchPath to the patch file
bool$fullpathWhether to treat $patch path as a relative or not
Returns
bool False if this was skipped because schema changes are skipped

Reimplemented in PostgresUpdater.

Definition at line 893 of file DatabaseUpdater.php.

References applyPatch(), doTable(), and output().

◆ runMaintenance()

DatabaseUpdater::runMaintenance ( $class,
$script )
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.

Note
Code in a LoadExtensionSchemaUpdates handler should use addExtensionUpdate instead!
protected since 1.35
Since
1.32
Parameters
string$classMaintenance subclass
string$scriptScript path and filename, usually "maintenance/fooBar.php"

Definition at line 1063 of file DatabaseUpdater.php.

References output().

◆ setAutoExtensionHookContainer()

DatabaseUpdater::setAutoExtensionHookContainer ( HookContainer $hookContainer)

Set the HookContainer to use for loading extension schema updates.

Access: internal
For use by DatabaseInstaller
Since
1.36
Parameters
HookContainer$hookContainer

Definition at line 241 of file DatabaseUpdater.php.

◆ setFileAccess()

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 1078 of file DatabaseUpdater.php.

References output().

◆ tableExists()

DatabaseUpdater::tableExists ( $tableName)
Since
1.20
Parameters
string$tableName
Returns
bool

Definition at line 431 of file DatabaseUpdater.php.

Referenced by migrateImageCommentTemp().

◆ updateRowExists()

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!

Parameters
string$keyName of the key to check for
Returns
bool

Definition at line 567 of file DatabaseUpdater.php.

Referenced by doConvertDjvuMetadata(), MysqlUpdater\dropDefault(), migrateActors(), migrateComments(), migrateTemplatelinks(), modifyField(), modifyTable(), populateContentTables(), and populateExternallinksIndex60().

Member Data Documentation

◆ $autoExtensionHookContainer

HookContainer null DatabaseUpdater::$autoExtensionHookContainer
protected

Definition at line 80 of file DatabaseUpdater.php.

◆ $db

IMaintainableDatabase DatabaseUpdater::$db
protected

Handle to the database subclass.

Definition at line 70 of file DatabaseUpdater.php.

◆ $extensionUpdates

array DatabaseUpdater::$extensionUpdates = []
protected

List of extension-provided database updates.

Definition at line 63 of file DatabaseUpdater.php.

◆ $fileHandle

resource null DatabaseUpdater::$fileHandle = null
protected

File handle for SQL output.

Definition at line 107 of file DatabaseUpdater.php.

◆ $maintenance

Maintenance DatabaseUpdater::$maintenance
protected

Definition at line 75 of file DatabaseUpdater.php.

◆ $postDatabaseUpdateMaintenance

string [] DatabaseUpdater::$postDatabaseUpdateMaintenance
protected
Initial value:
= [
DeleteDefaultMessages::class,
PopulateRevisionLength::class,
PopulateRevisionSha1::class,
PopulateImageSha1::class,
FixExtLinksProtocolRelative::class,
PopulateFilearchiveSha1::class,
PopulateBacklinkNamespace::class,
FixDefaultJsonContentPages::class,
CleanupEmptyCategories::class,
AddRFCandPMIDInterwiki::class,
PopulatePPSortKey::class,
PopulateIpChanges::class,
RefreshExternallinksIndex::class,
]

Scripts to run after database update Should be a subclass of LoggedUpdateMaintenance.

Definition at line 86 of file DatabaseUpdater.php.

◆ $shared

DatabaseUpdater::$shared = false
protected

Definition at line 77 of file DatabaseUpdater.php.

Referenced by __construct(), and newForDB().

◆ $skipSchema

bool DatabaseUpdater::$skipSchema = false
protected

Flag specifying whether or not to skip schema (e.g.

SQL-only) updates.

Definition at line 114 of file DatabaseUpdater.php.

◆ $updates

array DatabaseUpdater::$updates = []
protected

Array of updates to perform on the database.

Definition at line 50 of file DatabaseUpdater.php.

◆ $updatesSkipped

array DatabaseUpdater::$updatesSkipped = []
protected

Array of updates that were skipped.

Definition at line 57 of file DatabaseUpdater.php.

◆ REPLICATION_WAIT_TIMEOUT

const DatabaseUpdater::REPLICATION_WAIT_TIMEOUT = 300

Definition at line 43 of file DatabaseUpdater.php.


The documentation for this class was generated from the following file: