MediaWiki  1.28.1
DatabaseUpdater Class Reference

Class for handling database updates. More...

Inheritance diagram for DatabaseUpdater:
Collaboration diagram for DatabaseUpdater:

Public Member Functions

 addExtensionField ($tableName, $columnName, $sqlPath)
 
 addExtensionIndex ($tableName, $indexName, $sqlPath)
 
 addExtensionTable ($tableName, $sqlPath)
 Convenience wrapper for addExtensionUpdate() when adding a new table (which is the most common usage of updaters in an extension) More...
 
 addExtensionUpdate (array $update)
 Add a new update coming from an extension. More...
 
 addPostDatabaseUpdateMaintenance ($class)
 Add a maintenance script to be run after the database updates are complete. More...
 
 appendLine ($line)
 Append a line to the open filehandle. More...
 
 copyFile ($filename)
 Append an SQL fragment to the open file handle. More...
 
 doUpdates ($what=[ 'core', 'extensions', 'stats'])
 Do all the updates. More...
 
 dropExtensionField ($tableName, $columnName, $sqlPath)
 
 dropExtensionIndex ($tableName, $indexName, $sqlPath)
 Drop an index from an extension table. More...
 
 dropExtensionTable ($tableName, $sqlPath)
 
 dropTable ($table, $patch=false, $fullpath=false)
 If the specified table exists, drop it, or execute the patch if one is provided. More...
 
 getDB ()
 Get a database connection to run updates. More...
 
 getPostDatabaseUpdateMaintenance ()
 
 getSchemaVars ()
 Get appropriate schema variables in the current database connection. More...
 
 insertUpdateRow ($key, $val=null)
 Helper function: Add a key to the updatelog table Obviously, only use this for updates that occur after the updatelog table was created! More...
 
 modifyExtensionField ($tableName, $fieldName, $sqlPath)
 
 modifyField ($table, $field, $patch, $fullpath=false)
 Modify an existing field. More...
 
 output ($str)
 Output some text. More...
 
 patchPath (IDatabase $db, $patch)
 Get the full path of a patch file. More...
 
 purgeCache ()
 Purge the objectcache table. More...
 
 renameExtensionIndex ($tableName, $oldIndexName, $newIndexName, $sqlPath, $skipBothIndexExistWarning=false)
 Rename an index on an extension table. More...
 
 setFileAccess ()
 Set any .htaccess files or equivilent for storage repos. More...
 
 tableExists ($tableName)
 
 updateRowExists ($key)
 Helper function: check if the given key is present in the updatelog table. More...
 

Static Public Member Functions

static newForDB (Database $db, $shared=false, $maintenance=null)
 

Protected Member Functions

 __construct (Database &$db, $shared, Maintenance $maintenance=null)
 Constructor. More...
 
 addField ($table, $field, $patch, $fullpath=false)
 Add a new field to an existing table. More...
 
 addIndex ($table, $index, $patch, $fullpath=false)
 Add a new index to an existing table. More...
 
 addTable ($name, $patch, $fullpath=false)
 Add a new table to the database. More...
 
 applyPatch ($path, $isFullPath=false, $msg=null)
 Applies a SQL patch. More...
 
 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). More...
 
 checkStats ()
 Check the site_stats table is not properly populated. More...
 
 disableContentHandlerUseDB ()
 Turns off content handler fields during parts of the upgrade where they aren't available. More...
 
 doActiveUsersInit ()
 Sets the number of active users in the site_stats table. More...
 
 doCollationUpdate ()
 Update CategoryLinks collation. More...
 
 doEnableProfiling ()
 Enable profiling table when it's turned on. More...
 
 doLogSearchPopulation ()
 Migrate log params to new table and index for searching. More...
 
 doLogUsertextPopulation ()
 Populates the log_user_text field in the logging table. More...
 
 doMigrateUserOptions ()
 Migrates user options from the user table blob to user_properties. More...
 
 doTable ($name)
 Returns whether updates should be executed on the database table $name. More...
 
 doUpdateTranscacheField ()
 Updates the timestamps in the transcache table. More...
 
 dropField ($table, $field, $patch, $fullpath=false)
 Drop a field from an existing table. More...
 
 dropIndex ($table, $index, $patch, $fullpath=false)
 Drop an index from an existing table. More...
 
 enableContentHandlerUseDB ()
 Turns content handler fields back on. More...
 
 getCoreUpdateList ()
 Get an array of updates to perform on the database. More...
 
 getExtensionUpdates ()
 Get the list of extension-defined updates. More...
 
 getOldGlobalUpdates ()
 Before 1.17, we used to handle updates via stuff like $wgExtNewTables/Fields/Indexes. More...
 
 rebuildLocalisationCache ()
 Rebuilds the localisation cache. More...
 
 renameIndex ($table, $oldIndex, $newIndex, $skipBothIndexExistWarning, $patch, $fullpath=false)
 Rename an index from an existing table. More...
 
 setAppliedUpdates ($version, $updates=[])
 

Protected Attributes

Database $db
 Handle to the database subclass. More...
 
array $extensionUpdates = []
 List of extension-provided database updates. More...
 
resource $fileHandle = null
 File handle for SQL output. More...
 
 $holdContentHandlerUseDB = true
 Hold the value of $wgContentHandlerUseDB during the upgrade. More...
 
string[] $postDatabaseUpdateMaintenance
 Scripts to run after database update Should be a subclass of LoggedUpdateMaintenance. More...
 
 $shared = false
 
bool $skipSchema = false
 Flag specifying whether or not to skip schema (e.g. More...
 
array $updates = []
 Array of updates to perform on the database. More...
 
array $updatesSkipped = []
 Array of updates that were skipped. More...
 

Static Protected Attributes

static $updateCounter = 0
 

Private Member Functions

 initOldGlobals ()
 Initialize all of the old globals. More...
 
 loadExtensions ()
 Loads LocalSettings.php, if needed, and initialises everything needed for LoadExtensionSchemaUpdates hook. More...
 
 runUpdates (array $updates, $passSelf)
 Helper function for doUpdates() More...
 
 writeSchemaUpdateFile ($schemaUpdate=[])
 

Detailed Description

Class for handling database updates.

Roughly based off of updaters.inc, with a few improvements :)

Since
1.17

Definition at line 34 of file DatabaseUpdater.php.

Constructor & Destructor Documentation

DatabaseUpdater::__construct ( Database $db,
  $shared,
Maintenance  $maintenance = null 
)
protected

Constructor.

Parameters
Database$dbTo perform updates on
bool$sharedWhether to perform updates on shared tables
Maintenance$maintenanceMaintenance object which created us

Definition at line 109 of file DatabaseUpdater.php.

References $db, $maintenance, $shared, DBO_DDLMODE, initOldGlobals(), loadExtensions(), Hooks\run(), Maintenance\setDB(), and Database\setFlag().

Member Function Documentation

DatabaseUpdater::addExtensionField (   $tableName,
  $columnName,
  $sqlPath 
)
Since
1.19
Parameters
string$tableName
string$columnName
string$sqlPath

Definition at line 267 of file DatabaseUpdater.php.

References true.

DatabaseUpdater::addExtensionIndex (   $tableName,
  $indexName,
  $sqlPath 
)
Since
1.19
Parameters
string$tableName
string$indexName
string$sqlPath

Definition at line 255 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)

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

Definition at line 244 of file DatabaseUpdater.php.

References true.

DatabaseUpdater::addExtensionUpdate ( array  $update)

Add a new update coming from an extension.

This should be called by extensions while executing the LoadExtensionSchemaUpdates hook.

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

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

Add a new field to an existing table.

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

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

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

Add a new index to an existing table.

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 773 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

Since
1.19
Parameters
string$className of a Maintenance subclass

Definition at line 364 of file DatabaseUpdater.php.

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

Add a new table to the database.

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

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

DatabaseUpdater::appendLine (   $line)

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

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

Definition at line 655 of file DatabaseUpdater.php.

References $line.

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

Applies a SQL patch.

Parameters
string$pathPath to the patch file
bool$isFullPathWhether to treat $path as a relative or not
string$msgDescription of the patch
Returns
bool False if patch is skipped.

Definition at line 672 of file DatabaseUpdater.php.

References $path, copyFile(), output(), and patchPath().

Referenced by addField(), addIndex(), PostgresUpdater\addInterwikiType(), PostgresUpdater\addPgExtIndex(), addTable(), MysqlUpdater\checkBin(), PostgresUpdater\checkIwlPrefix(), PostgresUpdater\checkPageDeletedTrigger(), PostgresUpdater\checkRevUserFkey(), PostgresUpdater\convertArchive2(), MysqlUpdater\doBacklinkingIndicesUpdate(), MysqlUpdater\doCategorylinksIndicesUpdate(), MysqlUpdater\doClFieldsUpdate(), doEnableProfiling(), MysqlUpdater\doFilearchiveIndicesUpdate(), MysqlUpdater\doFixAncientImagelinks(), OracleUpdater\doFKRenameDeferr(), OracleUpdater\doFunctions17(), MysqlUpdater\doIndexUpdate(), MysqlUpdater\doInterwikiUpdate(), MysqlUpdater\doIwlinksIndexNonUnique(), MysqlUpdater\doLangLinksLengthUpdate(), MysqlUpdater\doMaybeProfilingMemoryUpdate(), OracleUpdater\doNamespaceDefaults(), MysqlUpdater\doNonUniquePlTlIl(), MysqlUpdater\doPagelinksUpdate(), OracleUpdater\doPageRestrictionsPKUKFix(), OracleUpdater\doRebuildDuplicateFunction(), OracleUpdater\doRecentchangesFK2Cascade(), OracleUpdater\doRemoveNotNullEmptyDefaults(), OracleUpdater\doRemoveNotNullEmptyDefaults2(), MysqlUpdater\doRestrictionsUpdate(), MysqlUpdater\doRevisionPageRevIndexNonUnique(), OracleUpdater\doSchemaUpgrade17(), MysqlUpdater\doTemplatelinksUpdate(), MysqlUpdater\doUpdateMimeMinorField(), doUpdateTranscacheField(), MysqlUpdater\doUserGroupsUpdate(), MysqlUpdater\doUserNewTalkTimestampNotNull(), MysqlUpdater\doUserNewTalkUseridUnsigned(), MysqlUpdater\doUserUniqueUpdate(), MysqlUpdater\doWatchlistNull(), dropField(), dropIndex(), dropTable(), modifyField(), PostgresUpdater\rebuildTextSearch(), renameIndex(), PostgresUpdater\renameTable(), SqliteUpdater\sqliteInitialIndexes(), SqliteUpdater\sqliteSetupSearchindex(), and PostgresUpdater\tsearchFixes().

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

Referenced by insertUpdateRow(), and setAppliedUpdates().

DatabaseUpdater::checkStats ( )
protected

Check the site_stats table is not properly populated.

Definition at line 998 of file DatabaseUpdater.php.

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

Referenced by doUpdates().

DatabaseUpdater::copyFile (   $filename)

Append an SQL fragment to the open file handle.

Parameters
string$filenameFile name to open

Definition at line 635 of file DatabaseUpdater.php.

Referenced by applyPatch().

DatabaseUpdater::disableContentHandlerUseDB ( )
protected

Turns off content handler fields during parts of the upgrade where they aren't available.

Definition at line 1160 of file DatabaseUpdater.php.

References global, and output().

DatabaseUpdater::doActiveUsersInit ( )
protected

Sets the number of active users in the site_stats table.

Definition at line 1018 of file DatabaseUpdater.php.

References output().

DatabaseUpdater::doCollationUpdate ( )
protected

Update CategoryLinks collation.

Definition at line 1084 of file DatabaseUpdater.php.

References global, and output().

DatabaseUpdater::doEnableProfiling ( )
protected

Enable profiling table when it's turned on.

Definition at line 1120 of file DatabaseUpdater.php.

References $out, $wgProfiler, applyPatch(), doTable(), and global.

DatabaseUpdater::doLogSearchPopulation ( )
protected

Migrate log params to new table and index for searching.

Definition at line 1053 of file DatabaseUpdater.php.

References output(), and updateRowExists().

DatabaseUpdater::doLogUsertextPopulation ( )
protected

Populates the log_user_text field in the logging table.

Definition at line 1036 of file DatabaseUpdater.php.

References output(), and updateRowExists().

DatabaseUpdater::doMigrateUserOptions ( )
protected

Migrates user options from the user table blob to user_properties.

Definition at line 1109 of file DatabaseUpdater.php.

References output().

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

References $name, $wgSharedDB, $wgSharedTables, global, and output().

Referenced by addField(), addIndex(), addTable(), MysqlUpdater\checkBin(), doEnableProfiling(), MysqlUpdater\doInterwikiUpdate(), MysqlUpdater\doMaybeProfilingMemoryUpdate(), MysqlUpdater\doRevisionPageRevIndexNonUnique(), MysqlUpdater\doUserGroupsUpdate(), MysqlUpdater\doUserNewTalkTimestampNotNull(), MysqlUpdater\doUserNewTalkUseridUnsigned(), MysqlUpdater\doUserUniqueUpdate(), dropField(), dropIndex(), dropTable(), MysqlUpdater\indexHasField(), modifyField(), and renameIndex().

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

Do all the updates.

Parameters
array$whatWhat updates to perform

Definition at line 425 of file DatabaseUpdater.php.

References $wgVersion, checkStats(), getCoreUpdateList(), getExtensionUpdates(), getOldGlobalUpdates(), getSchemaVars(), global, runUpdates(), setAppliedUpdates(), updates(), and writeSchemaUpdateFile().

DatabaseUpdater::doUpdateTranscacheField ( )
protected

Updates the timestamps in the transcache table.

Returns
bool

Definition at line 1070 of file DatabaseUpdater.php.

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

DatabaseUpdater::dropExtensionField (   $tableName,
  $columnName,
  $sqlPath 
)
Since
1.20
Parameters
string$tableName
string$columnName
string$sqlPath

Definition at line 279 of file DatabaseUpdater.php.

References true.

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

Drop an index from an extension table.

Since
1.21
Parameters
string$tableNameThe table name
string$indexNameThe index name
string$sqlPathThe path to the SQL change path

Definition at line 292 of file DatabaseUpdater.php.

References true.

DatabaseUpdater::dropExtensionTable (   $tableName,
  $sqlPath 
)
Since
1.20
Parameters
string$tableName
string$sqlPath

Definition at line 303 of file DatabaseUpdater.php.

References true.

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

Drop a field from an existing table.

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

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

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

Drop an index from an existing table.

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

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

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

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

Public

Since
1.20
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 901 of file DatabaseUpdater.php.

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

DatabaseUpdater::enableContentHandlerUseDB ( )
protected

Turns content handler fields back on.

Definition at line 1173 of file DatabaseUpdater.php.

References $holdContentHandlerUseDB, global, and output().

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, identical to how updaters.inc did it (for now)

Returns
array

Referenced by doUpdates().

DatabaseUpdater::getDB ( )

Get a database connection to run updates.

Returns
Database

Definition at line 198 of file DatabaseUpdater.php.

References $db.

DatabaseUpdater::getExtensionUpdates ( )
protected

Get the list of extension-defined updates.

Returns
array

Definition at line 373 of file DatabaseUpdater.php.

References $extensionUpdates.

Referenced by doUpdates().

DatabaseUpdater::getOldGlobalUpdates ( )
protected

Before 1.17, we used to handle updates via stuff like $wgExtNewTables/Fields/Indexes.

This is nasty :) We refactored a lot of this in 1.17 but we want to remain back-compatible for a while. So load up these old global-based things into our update list.

Returns
array

Definition at line 584 of file DatabaseUpdater.php.

References $updates, as, global, and true.

Referenced by doUpdates().

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

Definition at line 382 of file DatabaseUpdater.php.

References $postDatabaseUpdateMaintenance.

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.

Returns
array
Since
1.28

Definition at line 416 of file DatabaseUpdater.php.

Referenced by doUpdates().

DatabaseUpdater::initOldGlobals ( )
private

Initialize all of the old globals.

One day this should all become something much nicer

Definition at line 129 of file DatabaseUpdater.php.

References global.

Referenced by __construct().

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

Helper function: Add a key to the updatelog table Obviously, only use this for updates that occur after the updatelog table was created!

Parameters
string$keyName of key to insert
string$val[optional] Value to insert along with the key

Definition at line 528 of file DatabaseUpdater.php.

References canUseNewUpdatelog(), and DBO_DDLMODE.

Referenced by modifyField(), and MssqlUpdater\updateSchema().

DatabaseUpdater::loadExtensions ( )
private

Loads LocalSettings.php, if needed, and initialises everything needed for LoadExtensionSchemaUpdates hook.

Definition at line 147 of file DatabaseUpdater.php.

References $queue, $vars, $wgAutoloadClasses, $wgHooks, Installer\getExistingLocalSettings(), ExtensionRegistry\getInstance(), and global.

Referenced by __construct().

DatabaseUpdater::modifyExtensionField (   $tableName,
  $fieldName,
  $sqlPath 
)
Since
1.21
Parameters
string$tableNameThe table name
string$fieldNameThe field to be modified
string$sqlPathThe path to the SQL change path

Definition at line 340 of file DatabaseUpdater.php.

References true.

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

Modify an existing field.

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

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

static DatabaseUpdater::newForDB ( Database  $db,
  $shared = false,
  $maintenance = null 
)
static
DatabaseUpdater::output (   $str)

Output some text.

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

Parameters
string$strText to output

Definition at line 207 of file DatabaseUpdater.php.

References $wgCommandLineMode, and global.

Referenced by addField(), addIndex(), PostgresUpdater\addPgExtIndex(), PostgresUpdater\addPgField(), PostgresUpdater\addPgIndex(), PostgresUpdater\addSequence(), addTable(), applyPatch(), PostgresUpdater\changeField(), PostgresUpdater\changeFieldPurgeTable(), PostgresUpdater\changeFkeyDeferrable(), PostgresUpdater\changeNullableField(), MysqlUpdater\checkBin(), PostgresUpdater\checkIndex(), PostgresUpdater\checkOiDeleted(), PostgresUpdater\checkOiNameConstraint(), PostgresUpdater\checkPageDeletedTrigger(), PostgresUpdater\checkRevUserFkey(), checkStats(), PostgresUpdater\convertArchive2(), disableContentHandlerUseDB(), doActiveUsersInit(), MysqlUpdater\doCategoryPopulation(), MysqlUpdater\doClFieldsUpdate(), doCollationUpdate(), MysqlUpdater\doFixAncientImagelinks(), MysqlUpdater\doIndexUpdate(), OracleUpdater\doInsertPage0(), MysqlUpdater\doInterwikiUpdate(), MysqlUpdater\doIwlinksIndexNonUnique(), MysqlUpdater\doLangLinksLengthUpdate(), doLogSearchPopulation(), doLogUsertextPopulation(), MysqlUpdater\doMaybeProfilingMemoryUpdate(), doMigrateUserOptions(), MysqlUpdater\doNamespaceSize(), MysqlUpdater\doNonUniquePlTlIl(), MysqlUpdater\doPagelinksUpdate(), MysqlUpdater\doPageRandomUpdate(), OracleUpdater\doPageRestrictionsPKUKFix(), MysqlUpdater\doPopulateParentId(), MysqlUpdater\doRestrictionsUpdate(), MysqlUpdater\doRevisionPageRevIndexNonUnique(), MysqlUpdater\doSchemaRestructuring(), doTable(), MysqlUpdater\doTemplatelinksUpdate(), MysqlUpdater\doUpdateMimeMinorField(), doUpdateTranscacheField(), MysqlUpdater\doUserGroupsUpdate(), MysqlUpdater\doUserNewTalkTimestampNotNull(), MysqlUpdater\doUserNewTalkUseridUnsigned(), MysqlUpdater\doUserUniqueUpdate(), MysqlUpdater\doWatchlistNull(), MysqlUpdater\doWatchlistUpdate(), dropField(), PostgresUpdater\dropFkey(), dropIndex(), PostgresUpdater\dropIndex(), dropTable(), enableContentHandlerUseDB(), MysqlUpdater\indexHasField(), modifyField(), OracleUpdater\purgeCache(), purgeCache(), rebuildLocalisationCache(), PostgresUpdater\rebuildTextSearch(), PostgresUpdater\renameIndex(), renameIndex(), PostgresUpdater\renameSequence(), PostgresUpdater\renameTable(), PostgresUpdater\setDefault(), setFileAccess(), SqliteUpdater\sqliteInitialIndexes(), SqliteUpdater\sqliteSetupSearchindex(), and MssqlUpdater\updateSchema().

DatabaseUpdater::patchPath ( IDatabase  $db,
  $patch 
)

Get the full path of a patch file.

Originally based on archive() from updaters.inc. 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 706 of file DatabaseUpdater.php.

References $IP, IDatabase\getType(), and global.

Referenced by applyPatch().

DatabaseUpdater::purgeCache ( )

Purge the objectcache table.

Definition at line 980 of file DatabaseUpdater.php.

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

DatabaseUpdater::rebuildLocalisationCache ( )
protected

Rebuilds the localisation cache.

Definition at line 1145 of file DatabaseUpdater.php.

References output().

Referenced by purgeCache().

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

Rename an index on an extension table.

Since
1.21
Parameters
string$tableNameThe table name
string$oldIndexNameThe old index name
string$newIndexNameThe new index name
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 319 of file DatabaseUpdater.php.

References true.

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

Rename an index from an existing table.

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

Definition at line 847 of file DatabaseUpdater.php.

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

DatabaseUpdater::runUpdates ( array  $updates,
  $passSelf 
)
private

Helper function for doUpdates()

Parameters
array$updatesArray of updates to run
bool$passSelfWhether to pass this object we calling external functions

Definition at line 459 of file DatabaseUpdater.php.

References $lbFactory, $params, $ret, as, and updates().

Referenced by doUpdates().

DatabaseUpdater::setAppliedUpdates (   $version,
  $updates = [] 
)
protected
Parameters
string$version
array$updates

Definition at line 489 of file DatabaseUpdater.php.

References canUseNewUpdatelog(), DBO_DDLMODE, and serialize().

Referenced by doUpdates().

DatabaseUpdater::setFileAccess ( )

Set any .htaccess files or equivilent for storage repos.

Some zones (e.g. "temp") used to be public and may have been initialized as such

Definition at line 959 of file DatabaseUpdater.php.

References $status, output(), and RepoGroup\singleton().

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

Definition at line 351 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!

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

Definition at line 509 of file DatabaseUpdater.php.

Referenced by MysqlUpdater\doCategoryPopulation(), MysqlUpdater\doClFieldsUpdate(), doLogSearchPopulation(), doLogUsertextPopulation(), MysqlUpdater\doPopulateParentId(), MysqlUpdater\doUpdateMimeMinorField(), doUpdateTranscacheField(), modifyField(), PostgresUpdater\rebuildTextSearch(), SqliteUpdater\sqliteInitialIndexes(), SqliteUpdater\sqliteSetupSearchindex(), and MssqlUpdater\updateSchema().

DatabaseUpdater::writeSchemaUpdateFile (   $schemaUpdate = [])
private
Since
1.21

Writes the schema updates desired to a file for the DB Admin to run.

Parameters
array$schemaUpdate

Definition at line 392 of file DatabaseUpdater.php.

References $updatesSkipped, and as.

Referenced by doUpdates().

Member Data Documentation

Database DatabaseUpdater::$db
protected

Handle to the database subclass.

Definition at line 62 of file DatabaseUpdater.php.

Referenced by __construct(), FakeDatabaseUpdater\__construct(), and getDB().

array DatabaseUpdater::$extensionUpdates = []
protected

List of extension-provided database updates.

Definition at line 55 of file DatabaseUpdater.php.

Referenced by getExtensionUpdates().

resource DatabaseUpdater::$fileHandle = null
protected

File handle for SQL output.

Definition at line 88 of file DatabaseUpdater.php.

DatabaseUpdater::$holdContentHandlerUseDB = true
protected

Hold the value of $wgContentHandlerUseDB during the upgrade.

Definition at line 100 of file DatabaseUpdater.php.

Referenced by enableContentHandlerUseDB().

DatabaseUpdater::$shared = false
protected

Definition at line 64 of file DatabaseUpdater.php.

Referenced by __construct(), and newForDB().

bool DatabaseUpdater::$skipSchema = false
protected

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

SQL-only) updates.

Definition at line 95 of file DatabaseUpdater.php.

DatabaseUpdater::$updateCounter = 0
staticprotected

Definition at line 35 of file DatabaseUpdater.php.

array DatabaseUpdater::$updates = []
protected

Array of updates to perform on the database.

Definition at line 42 of file DatabaseUpdater.php.

Referenced by PostgresUpdater\getOldGlobalUpdates(), getOldGlobalUpdates(), and FakeDatabaseUpdater\setAppliedUpdates().

array DatabaseUpdater::$updatesSkipped = []
protected

Array of updates that were skipped.

Definition at line 49 of file DatabaseUpdater.php.

Referenced by writeSchemaUpdateFile().


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