MediaWiki
master
|
Class for handling database updates. More...
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) | |
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 ($what=array( 'core', 'extensions', 'stats')) | |
Do all the updates. | |
dropExtensionField ($tableName, $columnName, $sqlPath) | |
dropExtensionTable ($tableName, $sqlPath) | |
dropTable ($table, $patch=false, $fullpath=false) | |
If the specified table exists, drop it, or execute the patch if one is provided. | |
getDB () | |
Get a database connection to run updates. | |
getPostDatabaseUpdateMaintenance () | |
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! | |
modifyField ($table, $field, $patch, $fullpath=false) | |
Modify an existing field. | |
output ($str) | |
Output some text. | |
purgeCache () | |
Purge the objectcache table. | |
tableExists ($tableName) | |
updateRowExists ($key) | |
Helper function: check if the given key is present in the updatelog table. | |
Static Public Member Functions | |
static | newForDB (&$db, $shared=false, $maintenance=null) |
Protected Member Functions | |
__construct (DatabaseBase &$db, $shared, Maintenance $maintenance=null) | |
Constructor. | |
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. | |
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. | |
doActiveUsersInit () | |
Sets the number of active users in the site_stats table. | |
doCollationUpdate () | |
Update CategoryLinks collation. | |
doLogSearchPopulation () | |
Migrate log params to new table and index for searching. | |
doLogUsertextPopulation () | |
Populates the log_user_text field in the logging table. | |
doMigrateUserOptions () | |
Migrates user options from the user table blob to user_properties. | |
doUpdateTranscacheField () | |
Updates the timestamps in the transcache table. | |
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. | |
getCoreUpdateList () | |
Get an array of updates to perform on the database. | |
getExtensionUpdates () | |
Get the list of extension-defined updates. | |
getOldGlobalUpdates () | |
Before 1.17, we used to handle updates via stuff like $wgExtNewTables/Fields/Indexes. | |
rebuildLocalisationCache () | |
Rebuilds the localisation cache. | |
setAppliedUpdates ($version, $updates=array()) | |
Protected Attributes | |
DatabaseBase | $db |
Handle to the database subclass. | |
array | $extensionUpdates = array() |
List of extension-provided database updates. | |
$postDatabaseUpdateMaintenance | |
Scripts to run after database update Should be a subclass of LoggedUpdateMaintenance. | |
$shared = false | |
array | $updates = array() |
Array of updates to perform on the database. | |
Private Member Functions | |
initOldGlobals () | |
Initialize all of the old globals. | |
loadExtensions () | |
Loads LocalSettings.php, if needed, and initialises everything needed for LoadExtensionSchemaUpdates hook. | |
runUpdates (array $updates, $passSelf) | |
Helper function for doUpdates() |
Class for handling database updates.
Roughly based off of updaters.inc, with a few improvements :)
Definition at line 33 of file DatabaseUpdater.php.
DatabaseUpdater::__construct | ( | DatabaseBase &$ | db, |
$ | shared, | ||
Maintenance $ | maintenance = null |
||
) | [protected] |
Constructor.
$db | DatabaseBase object to perform updates on |
$shared | bool Whether to perform updates on shared tables |
$maintenance | Maintenance Maintenance object which created us |
Definition at line 74 of file DatabaseUpdater.php.
DatabaseUpdater::addExtensionField | ( | $ | tableName, |
$ | columnName, | ||
$ | sqlPath | ||
) |
$tableName | string |
$columnName | string |
$sqlPath | string |
Definition at line 218 of file DatabaseUpdater.php.
DatabaseUpdater::addExtensionIndex | ( | $ | tableName, |
$ | indexName, | ||
$ | sqlPath | ||
) |
$tableName | string |
$indexName | string |
$sqlPath | string |
Definition at line 206 of file DatabaseUpdater.php.
DatabaseUpdater::addExtensionTable | ( | $ | tableName, |
$ | sqlPath | ||
) |
Convenience wrapper for addExtensionUpdate() when adding a new table (which is the most common usage of updaters in an extension)
$tableName | String Name of table to create |
$sqlPath | String Full path to the schema file |
Definition at line 195 of file DatabaseUpdater.php.
DatabaseUpdater::addExtensionUpdate | ( | array $ | update | ) |
Add a new update coming from an extension.
This should be called by extensions while executing the LoadExtensionSchemaUpdates hook.
$update | Array: the update to run. Format is the following: first item is the callback function, it also can be a simple string with the name of a function in this class, following elements are parameters to the function. Note that callback functions will receive this object as first parameter. |
Definition at line 182 of file DatabaseUpdater.php.
DatabaseUpdater::addField | ( | $ | table, |
$ | field, | ||
$ | patch, | ||
$ | fullpath = false |
||
) | [protected] |
Add a new field to an existing table.
$table | String Name of the table to modify |
$field | String Name of the new field |
$patch | String Path to the patch file |
$fullpath | Boolean Whether to treat $patch path as a relative or not |
Definition at line 499 of file DatabaseUpdater.php.
DatabaseUpdater::addIndex | ( | $ | table, |
$ | index, | ||
$ | patch, | ||
$ | fullpath = false |
||
) | [protected] |
Add a new index to an existing table.
$table | String Name of the table to modify |
$index | String Name of the new index |
$patch | String Path to the patch file |
$fullpath | Boolean Whether to treat $patch path as a relative or not |
Definition at line 516 of file DatabaseUpdater.php.
Add a maintenance script to be run after the database updates are complete.
Script should subclass LoggedUpdateMaintenance
$class | string Name of a Maintenance subclass |
Definition at line 265 of file DatabaseUpdater.php.
DatabaseUpdater::addTable | ( | $ | name, |
$ | patch, | ||
$ | fullpath = false |
||
) | [protected] |
Add a new table to the database.
$name | String Name of the new table |
$patch | String Path to the patch file |
$fullpath | Boolean Whether to treat $patch path as a relative or not |
Definition at line 484 of file DatabaseUpdater.php.
DatabaseUpdater::applyPatch | ( | $ | path, |
$ | isFullPath = false , |
||
$ | msg = null |
||
) | [protected] |
Applies a SQL patch.
$path | String Path to the patch file |
$isFullPath | Boolean Whether to treat $path as a relative or not |
$msg | String Description of the patch |
Definition at line 464 of file DatabaseUpdater.php.
Referenced by PostgresUpdater\addInterwikiType(), PostgresUpdater\addPgExtIndex(), MysqlUpdater\checkBin(), PostgresUpdater\checkIwlPrefix(), PostgresUpdater\checkPageDeletedTrigger(), PostgresUpdater\checkRevUserFkey(), PostgresUpdater\convertArchive2(), MysqlUpdater\doBacklinkingIndicesUpdate(), MysqlUpdater\doCategorylinksIndicesUpdate(), MysqlUpdater\doClFieldsUpdate(), MysqlUpdater\doFilearchiveIndicesUpdate(), MysqlUpdater\doFixAncientImagelinks(), MysqlUpdater\doIndexUpdate(), MysqlUpdater\doInterwikiUpdate(), MysqlUpdater\doLangLinksLengthUpdate(), MysqlUpdater\doMaybeProfilingMemoryUpdate(), MysqlUpdater\doPagelinksUpdate(), OracleUpdater\doRemoveNotNullEmptyDefaults2(), MysqlUpdater\doRestrictionsUpdate(), MysqlUpdater\doTemplatelinksUpdate(), MysqlUpdater\doUniquePlTlIl(), MysqlUpdater\doUpdateMimeMinorField(), MysqlUpdater\doUserGroupsUpdate(), MysqlUpdater\doUserNewTalkTimestampNotNull(), MysqlUpdater\doUserUniqueUpdate(), MysqlUpdater\doWatchlistNull(), MysqlUpdater\renameEuWikiId(), 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
Definition at line 393 of file DatabaseUpdater.php.
DatabaseUpdater::checkStats | ( | ) | [protected] |
Check the site_stats table is not properly populated.
Definition at line 624 of file DatabaseUpdater.php.
DatabaseUpdater::doActiveUsersInit | ( | ) | [protected] |
Sets the number of active users in the site_stats table.
Definition at line 643 of file DatabaseUpdater.php.
DatabaseUpdater::doCollationUpdate | ( | ) | [protected] |
Update CategoryLinks collation.
Definition at line 705 of file DatabaseUpdater.php.
DatabaseUpdater::doLogSearchPopulation | ( | ) | [protected] |
Migrate log params to new table and index for searching.
Definition at line 677 of file DatabaseUpdater.php.
DatabaseUpdater::doLogUsertextPopulation | ( | ) | [protected] |
Populates the log_user_text field in the logging table.
Definition at line 661 of file DatabaseUpdater.php.
DatabaseUpdater::doMigrateUserOptions | ( | ) | [protected] |
Migrates user options from the user table blob to user_properties.
Definition at line 726 of file DatabaseUpdater.php.
DatabaseUpdater::doUpdates | ( | $ | what = array( 'core', 'extensions', 'stats' ) | ) |
Do all the updates.
$what | Array: what updates to perform |
Reimplemented in OracleUpdater.
Definition at line 292 of file DatabaseUpdater.php.
DatabaseUpdater::doUpdateTranscacheField | ( | ) | [protected] |
Updates the timestamps in the transcache table.
Definition at line 693 of file DatabaseUpdater.php.
DatabaseUpdater::dropExtensionField | ( | $ | tableName, |
$ | columnName, | ||
$ | sqlPath | ||
) |
$tableName | string |
$columnName | string |
$sqlPath | string |
Definition at line 230 of file DatabaseUpdater.php.
DatabaseUpdater::dropExtensionTable | ( | $ | tableName, |
$ | sqlPath | ||
) |
$tableName | string |
$sqlPath | string |
Definition at line 241 of file DatabaseUpdater.php.
DatabaseUpdater::dropField | ( | $ | table, |
$ | field, | ||
$ | patch, | ||
$ | fullpath = false |
||
) | [protected] |
Drop a field from an existing table.
$table | String Name of the table to modify |
$field | String Name of the old field |
$patch | String Path to the patch file |
$fullpath | Boolean Whether to treat $patch path as a relative or not |
Definition at line 532 of file DatabaseUpdater.php.
DatabaseUpdater::dropIndex | ( | $ | table, |
$ | index, | ||
$ | patch, | ||
$ | fullpath = false |
||
) | [protected] |
Drop an index from an existing table.
$table | String: Name of the table to modify |
$index | String: Name of the old index |
$patch | String: Path to the patch file |
$fullpath | Boolean: Whether to treat $patch path as a relative or not |
Reimplemented in PostgresUpdater.
Definition at line 548 of file DatabaseUpdater.php.
DatabaseUpdater::dropTable | ( | $ | table, |
$ | patch = false , |
||
$ | fullpath = false |
||
) |
If the specified table exists, drop it, or execute the patch if one is provided.
Public
$table | string |
$patch | string|false |
$fullpath | bool |
Definition at line 566 of file DatabaseUpdater.php.
DatabaseUpdater::getCoreUpdateList | ( | ) | [abstract, protected] |
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)
Reimplemented in PostgresUpdater, OracleUpdater, Ibm_db2Updater, MysqlUpdater, and SqliteUpdater.
Get a database connection to run updates.
Definition at line 148 of file DatabaseUpdater.php.
DatabaseUpdater::getExtensionUpdates | ( | ) | [protected] |
Get the list of extension-defined updates.
Definition at line 274 of file DatabaseUpdater.php.
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.
Reimplemented in PostgresUpdater.
Definition at line 406 of file DatabaseUpdater.php.
DatabaseUpdater::initOldGlobals | ( | ) | [private] |
Initialize all of the old globals.
One day this should all become something much nicer
Definition at line 93 of file DatabaseUpdater.php.
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!
$key | String Name of key to insert |
$val | String [optional] value to insert along with the key |
Definition at line 375 of file DatabaseUpdater.php.
DatabaseUpdater::loadExtensions | ( | ) | [private] |
Loads LocalSettings.php, if needed, and initialises everything needed for LoadExtensionSchemaUpdates hook.
Definition at line 110 of file DatabaseUpdater.php.
DatabaseUpdater::modifyField | ( | $ | table, |
$ | field, | ||
$ | patch, | ||
$ | fullpath = false |
||
) |
Modify an existing field.
$table | String: name of the table to which the field belongs |
$field | String: name of the field to modify |
$patch | String: path to the patch file |
$fullpath | Boolean: whether to treat $patch path as a relative or not |
Definition at line 592 of file DatabaseUpdater.php.
static DatabaseUpdater::newForDB | ( | &$ | db, |
$ | shared = false , |
||
$ | maintenance = null |
||
) | [static] |
MWException |
DatabaseBase | $db | |
bool | $shared | |
null | $maintenance |
Definition at line 133 of file DatabaseUpdater.php.
Referenced by DatabaseSqliteTest\prepareDB().
DatabaseUpdater::output | ( | $ | str | ) |
Output some text.
If we're running from web, escape the text first.
$str | String: Text to output |
Definition at line 157 of file DatabaseUpdater.php.
Referenced by PostgresUpdater\addPgExtIndex(), PostgresUpdater\addPgField(), PostgresUpdater\addPgIndex(), PostgresUpdater\addSequence(), PostgresUpdater\changeField(), PostgresUpdater\changeFkeyDeferrable(), PostgresUpdater\changeNullableField(), MysqlUpdater\checkBin(), PostgresUpdater\checkIndex(), PostgresUpdater\checkOiDeleted(), PostgresUpdater\checkOiNameConstraint(), PostgresUpdater\checkPageDeletedTrigger(), PostgresUpdater\checkRevUserFkey(), PostgresUpdater\convertArchive2(), MysqlUpdater\doCategoryPopulation(), MysqlUpdater\doClFieldsUpdate(), MysqlUpdater\doFixAncientImagelinks(), MysqlUpdater\doIndexUpdate(), MysqlUpdater\doInterwikiUpdate(), MysqlUpdater\doLangLinksLengthUpdate(), MysqlUpdater\doMaybeProfilingMemoryUpdate(), MysqlUpdater\doNamespaceSize(), MysqlUpdater\doPagelinksUpdate(), MysqlUpdater\doPageRandomUpdate(), MysqlUpdater\doPopulateParentId(), MysqlUpdater\doRestrictionsUpdate(), MysqlUpdater\doSchemaRestructuring(), MysqlUpdater\doTemplatelinksUpdate(), MysqlUpdater\doUniquePlTlIl(), MysqlUpdater\doUpdateMimeMinorField(), MysqlUpdater\doUserGroupsUpdate(), MysqlUpdater\doUserNewTalkTimestampNotNull(), MysqlUpdater\doUserUniqueUpdate(), MysqlUpdater\doWatchlistNull(), MysqlUpdater\doWatchlistUpdate(), PostgresUpdater\dropIndex(), MysqlUpdater\indexHasField(), MysqlUpdater\renameEuWikiId(), PostgresUpdater\renameIndex(), PostgresUpdater\renameSequence(), PostgresUpdater\renameTable(), PostgresUpdater\setDefault(), SqliteUpdater\sqliteInitialIndexes(), and SqliteUpdater\sqliteSetupSearchindex().
Purge the objectcache table.
Reimplemented in OracleUpdater.
Definition at line 609 of file DatabaseUpdater.php.
DatabaseUpdater::rebuildLocalisationCache | ( | ) | [protected] |
Rebuilds the localisation cache.
Definition at line 735 of file DatabaseUpdater.php.
DatabaseUpdater::runUpdates | ( | array $ | updates, |
$ | passSelf | ||
) | [private] |
Helper function for doUpdates()
$updates | Array of updates to run |
$passSelf | Boolean: whether to pass this object we calling external functions |
Definition at line 320 of file DatabaseUpdater.php.
DatabaseUpdater::setAppliedUpdates | ( | $ | version, |
$ | updates = array() |
||
) | [protected] |
$version | |
$updates | array |
Definition at line 338 of file DatabaseUpdater.php.
DatabaseUpdater::tableExists | ( | $ | tableName | ) |
$tableName | string |
Definition at line 252 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!
$key | String Name of the key to check for |
Definition at line 358 of file DatabaseUpdater.php.
Referenced by MysqlUpdater\doCategoryPopulation(), MysqlUpdater\doClFieldsUpdate(), MysqlUpdater\doPopulateParentId(), MysqlUpdater\doUpdateMimeMinorField(), SqliteUpdater\sqliteInitialIndexes(), and SqliteUpdater\sqliteSetupSearchindex().
DatabaseBase DatabaseUpdater::$db [protected] |
Handle to the database subclass.
Reimplemented in OracleUpdater, and PostgresUpdater.
Definition at line 50 of file DatabaseUpdater.php.
List of extension-provided database updates.
Definition at line 44 of file DatabaseUpdater.php.
DatabaseUpdater::$postDatabaseUpdateMaintenance [protected] |
array( 'DeleteDefaultMessages', 'PopulateRevisionLength', 'PopulateRevisionSha1', 'PopulateImageSha1', 'FixExtLinksProtocolRelative', 'PopulateFilearchiveSha1', )
Scripts to run after database update Should be a subclass of LoggedUpdateMaintenance.
Definition at line 58 of file DatabaseUpdater.php.
DatabaseUpdater::$shared = false [protected] |
Definition at line 52 of file DatabaseUpdater.php.
Array of updates to perform on the database.
Definition at line 39 of file DatabaseUpdater.php.
Referenced by PostgresUpdater\getOldGlobalUpdates().