MediaWiki REL1_28
PostgresUpdater Class Reference

Class for handling updates to Postgres databases. More...

Inheritance diagram for PostgresUpdater:
Collaboration diagram for PostgresUpdater:

Public Member Functions

 addPgExtIndex ( $table, $index, $type)
 
 addPgIndex ( $table, $index, $type)
 
 describeIndex ( $idx)
 
 fkeyDeltype ( $fkey)
 
 ruleDef ( $table, $rule)
 
- Public Member Functions inherited from DatabaseUpdater
 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.
 
 appendLine ( $line)
 Append a line to the open filehandle.
 
 copyFile ( $filename)
 Append an SQL fragment to the open file handle.
 
 doUpdates ( $what=[ 'core', 'extensions', 'stats'])
 Do all the updates.
 
 dropExtensionField ( $tableName, $columnName, $sqlPath)
 
 dropExtensionIndex ( $tableName, $indexName, $sqlPath)
 Drop an index from an extension table.
 
 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 ()
 
 getSchemaVars ()
 Get appropriate schema variables in the current database connection.
 
 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!
 
 modifyExtensionField ( $tableName, $fieldName, $sqlPath)
 
 modifyField ( $table, $field, $patch, $fullpath=false)
 Modify an existing field.
 
 output ( $str)
 Output some text.
 
 patchPath (IDatabase $db, $patch)
 Get the full path of a patch file.
 
 purgeCache ()
 Purge the objectcache table.
 
 renameExtensionIndex ( $tableName, $oldIndexName, $newIndexName, $sqlPath, $skipBothIndexExistWarning=false)
 Rename an index on an extension table.
 
 setFileAccess ()
 Set any .htaccess files or equivilent for storage repos.
 
 tableExists ( $tableName)
 
 updateRowExists ( $key)
 Helper function: check if the given key is present in the updatelog table.
 

Protected Member Functions

 addInterwikiType ()
 
 addPgField ( $table, $field, $type)
 
 addSequence ( $table, $pkey, $ns)
 
 changeField ( $table, $field, $newtype, $default)
 
 changeFieldPurgeTable ( $table, $field, $newtype, $default)
 
 changeFkeyDeferrable ( $table, $field, $clause)
 
 changeNullableField ( $table, $field, $null)
 
 checkIndex ( $index, $should_be, $good_def)
 
 checkIwlPrefix ()
 
 checkOiDeleted ()
 
 checkOiNameConstraint ()
 
 checkPageDeletedTrigger ()
 
 checkRevUserFkey ()
 
 convertArchive2 ()
 
 describeTable ( $table)
 
 dropFkey ( $table, $field)
 
 dropIndex ( $table, $index, $patch='', $fullpath=false)
 Drop an index from an existing table.
 
 getCoreUpdateList ()
 
 getOldGlobalUpdates ()
 Before 1.17, we used to handle updates via stuff like $wgExtNewTables/Fields/Indexes.
 
 rebuildTextSearch ()
 
 renameIndex ( $table, $old, $new, $skipBothIndexExistWarning=false, $a=false, $b=false)
 Rename an index from an existing table.
 
 renameSequence ( $old, $new)
 
 renameTable ( $old, $new, $patch=false)
 
 setDefault ( $table, $field, $default)
 
 tsearchFixes ()
 
- Protected Member Functions inherited from DatabaseUpdater
 __construct (Database &$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.
 
 disableContentHandlerUseDB ()
 Turns off content handler fields during parts of the upgrade where they aren't available.
 
 doActiveUsersInit ()
 Sets the number of active users in the site_stats table.
 
 doCollationUpdate ()
 Update CategoryLinks collation.
 
 doEnableProfiling ()
 Enable profiling table when it's turned on.
 
 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.
 
 doTable ( $name)
 Returns whether updates should be executed on the database table $name.
 
 doUpdateTranscacheField ()
 Updates the timestamps in the transcache table.
 
 dropField ( $table, $field, $patch, $fullpath=false)
 Drop a field from an existing table.
 
 enableContentHandlerUseDB ()
 Turns content handler fields back on.
 
 getExtensionUpdates ()
 Get the list of extension-defined updates.
 
 rebuildLocalisationCache ()
 Rebuilds the localisation cache.
 
 setAppliedUpdates ( $version, $updates=[])
 

Protected Attributes

DatabasePostgres $db
 
- Protected Attributes inherited from DatabaseUpdater
Database $db
 Handle to the database subclass.
 
array $extensionUpdates = []
 List of extension-provided database updates.
 
resource $fileHandle = null
 File handle for SQL output.
 
 $holdContentHandlerUseDB = true
 Hold the value of $wgContentHandlerUseDB during the upgrade.
 
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.
 

Additional Inherited Members

- Static Public Member Functions inherited from DatabaseUpdater
static newForDB (Database $db, $shared=false, $maintenance=null)
 
- Static Protected Attributes inherited from DatabaseUpdater
static $updateCounter = 0
 

Detailed Description

Class for handling updates to Postgres databases.

Since
1.17

Definition at line 30 of file PostgresUpdater.php.

Member Function Documentation

◆ addInterwikiType()

PostgresUpdater::addInterwikiType ( )
protected

Definition at line 959 of file PostgresUpdater.php.

References DatabaseUpdater\applyPatch().

◆ addPgExtIndex()

PostgresUpdater::addPgExtIndex (   $table,
  $index,
  $type 
)

Definition at line 788 of file PostgresUpdater.php.

References $type, DatabaseUpdater\applyPatch(), and output().

◆ addPgField()

PostgresUpdater::addPgField (   $table,
  $field,
  $type 
)
protected

Definition at line 678 of file PostgresUpdater.php.

References output().

◆ addPgIndex()

PostgresUpdater::addPgIndex (   $table,
  $index,
  $type 
)

Definition at line 779 of file PostgresUpdater.php.

References output().

◆ addSequence()

PostgresUpdater::addSequence (   $table,
  $pkey,
  $ns 
)
protected

Definition at line 610 of file PostgresUpdater.php.

References output(), and setDefault().

◆ changeField()

PostgresUpdater::changeField (   $table,
  $field,
  $newtype,
  $default 
)
protected

Definition at line 690 of file PostgresUpdater.php.

References $res, and output().

◆ changeFieldPurgeTable()

PostgresUpdater::changeFieldPurgeTable (   $table,
  $field,
  $newtype,
  $default 
)
protected

Definition at line 715 of file PostgresUpdater.php.

References $res, and output().

◆ changeFkeyDeferrable()

PostgresUpdater::changeFkeyDeferrable (   $table,
  $field,
  $clause 
)
protected

Definition at line 819 of file PostgresUpdater.php.

References $command, and output().

◆ changeNullableField()

PostgresUpdater::changeNullableField (   $table,
  $field,
  $null 
)
protected

Definition at line 754 of file PostgresUpdater.php.

References output().

◆ checkIndex()

PostgresUpdater::checkIndex (   $index,
  $should_be,
  $good_def 
)
protected

Definition at line 919 of file PostgresUpdater.php.

References output().

◆ checkIwlPrefix()

PostgresUpdater::checkIwlPrefix ( )
protected

Definition at line 949 of file PostgresUpdater.php.

References DatabaseUpdater\applyPatch().

◆ checkOiDeleted()

PostgresUpdater::checkOiDeleted ( )
protected

Definition at line 867 of file PostgresUpdater.php.

References output().

◆ checkOiNameConstraint()

PostgresUpdater::checkOiNameConstraint ( )
protected

Definition at line 879 of file PostgresUpdater.php.

References output().

◆ checkPageDeletedTrigger()

PostgresUpdater::checkPageDeletedTrigger ( )
protected

Definition at line 900 of file PostgresUpdater.php.

References DatabaseUpdater\applyPatch(), and output().

◆ checkRevUserFkey()

PostgresUpdater::checkRevUserFkey ( )
protected

Definition at line 937 of file PostgresUpdater.php.

References DatabaseUpdater\applyPatch(), fkeyDeltype(), and output().

◆ convertArchive2()

PostgresUpdater::convertArchive2 ( )
protected

Definition at line 847 of file PostgresUpdater.php.

References DatabaseUpdater\applyPatch(), and output().

◆ describeIndex()

PostgresUpdater::describeIndex (   $idx)

Definition at line 513 of file PostgresUpdater.php.

References $query, $res, as, and FROM.

◆ describeTable()

PostgresUpdater::describeTable (   $table)
protected

Definition at line 488 of file PostgresUpdater.php.

References $res, as, and FROM.

◆ dropFkey()

PostgresUpdater::dropFkey (   $table,
  $field 
)
protected

Definition at line 801 of file PostgresUpdater.php.

References $command, and output().

◆ dropIndex()

PostgresUpdater::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

Reimplemented from DatabaseUpdater.

Definition at line 912 of file PostgresUpdater.php.

References output().

◆ fkeyDeltype()

PostgresUpdater::fkeyDeltype (   $fkey)

Definition at line 564 of file PostgresUpdater.php.

References FROM.

Referenced by checkRevUserFkey().

◆ getCoreUpdateList()

PostgresUpdater::getCoreUpdateList ( )
protected
Todo:
FIXME: Postgres should use sequential updates like Mysql, Sqlite and everybody else. It never got refactored like it should've.
Returns
array

Reimplemented from DatabaseUpdater.

Definition at line 42 of file PostgresUpdater.php.

◆ getOldGlobalUpdates()

PostgresUpdater::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

Reimplemented from DatabaseUpdater.

Definition at line 449 of file PostgresUpdater.php.

References DatabaseUpdater\$updates, as, global, and true.

◆ rebuildTextSearch()

PostgresUpdater::rebuildTextSearch ( )
protected

◆ renameIndex()

PostgresUpdater::renameIndex (   $table,
  $oldIndex,
  $newIndex,
  $skipBothIndexExistWarning = false,
  $patch = false,
  $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

Reimplemented from DatabaseUpdater.

Definition at line 644 of file PostgresUpdater.php.

References output().

◆ renameSequence()

PostgresUpdater::renameSequence (   $old,
  $new 
)
protected

Definition at line 620 of file PostgresUpdater.php.

References output().

◆ renameTable()

PostgresUpdater::renameTable (   $old,
  $new,
  $patch = false 
)
protected

Definition at line 632 of file PostgresUpdater.php.

References DatabaseUpdater\applyPatch(), and output().

◆ ruleDef()

PostgresUpdater::ruleDef (   $table,
  $rule 
)

Definition at line 586 of file PostgresUpdater.php.

References definition, and FROM.

◆ setDefault()

PostgresUpdater::setDefault (   $table,
  $field,
  $default 
)
protected

Definition at line 744 of file PostgresUpdater.php.

References output().

Referenced by addSequence().

◆ tsearchFixes()

PostgresUpdater::tsearchFixes ( )
protected

Definition at line 963 of file PostgresUpdater.php.

References DatabaseUpdater\applyPatch().

Member Data Documentation

◆ $db

DatabasePostgres PostgresUpdater::$db
protected

Definition at line 35 of file PostgresUpdater.php.


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