MediaWiki  master
PostgresUpdater Class Reference

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

Inheritance diagram for PostgresUpdater:
Collaboration diagram for PostgresUpdater:

Public Member Functions

 addPgEnumValue ( $type, $value)
 Add a value to an existing PostgreSQL enum type. More...
 
 addPgExtIndex ( $table, $index, $type)
 
 addPgIndex ( $table, $index, $type, $unique=false)
 
 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) 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 (array $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)
 
 modifyExtensionTable ( $tableName, $sqlPath)
 
 modifyField ( $table, $field, $patch, $fullpath=false)
 Modify an existing field. More...
 
 modifyTable ( $table, $patch, $fullpath=false)
 Modify an existing table, similar to modifyField. More...
 
 output ( $str)
 Output some text. More...
 
 patchPath (IDatabase $db, $patch)
 Get the full path of a patch file. More...
 
 purgeCache ()
 Purge various database caches. More...
 
 renameExtensionIndex ( $tableName, $oldIndexName, $newIndexName, $sqlPath, $skipBothIndexExistWarning=false)
 Rename an index on an extension table. More...
 
 runMaintenance ( $class, $script)
 Run a maintenance script. 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...
 

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, $update=false)
 
 checkIndex ( $index, $should_be, $good_def)
 
 checkIwlPrefix ()
 
 checkOiDeleted ()
 
 checkOiNameConstraint ()
 
 checkPageDeletedTrigger ()
 
 checkRevUserFkey ()
 
 convertArchive2 ()
 
 describeTable ( $table)
 
 dropDefault ( $table, $field)
 Drop a default value from a field. More...
 
 dropFkey ( $table, $field)
 
 dropPgField ( $table, $field)
 
 dropPgIndex ( $table, $index)
 
 dropSequence ( $table, $ns)
 
 getCoreUpdateList ()
 
 getOldGlobalUpdates ()
 
 rebuildTextSearch ()
 
 renameIndex ( $table, $old, $new, $skipBothIndexExistWarning=false, $a=false, $b=false)
 
 renameSequence ( $old, $new)
 
 renameTable ( $old, $new, $patch=false)
 
 setDefault ( $table, $field, $default)
 
 setSequenceOwner ( $table, $pkey, $seq)
 
 tsearchFixes ()
 
- Protected Member Functions inherited from DatabaseUpdater
 __construct (IMaintainableDatabase &$db, $shared, Maintenance $maintenance=null)
 
 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...
 
 addIndexIfNoneExist ( $table, $indexes, $patch, $fullpath=false)
 Add a new index to an existing table if none of the given indexes exist. 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...
 
 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...
 
 migrateActors ()
 Migrate actors to the new 'actor' table. More...
 
 migrateArchiveText ()
 Migrate ar_text to modern storage. More...
 
 migrateComments ()
 Migrate comments to the new 'comment' table. More...
 
 migrateImageCommentTemp ()
 Merge image_comment_temp into the image table. More...
 
 populateArchiveRevId ()
 Populate ar_rev_id, then make it not nullable. More...
 
 populateContentTables ()
 Populates the MCR content tables. More...
 
 populateExternallinksIndex60 ()
 Populates the externallinks.el_index_60 field. More...
 
 rebuildLocalisationCache ()
 Rebuilds the localisation cache. More...
 
 renameIndex ( $table, $oldIndex, $newIndex, $skipBothIndexExistWarning, $patch, $fullpath=false)
 Rename an index from an existing table. More...
 

Protected Attributes

DatabasePostgres $db
 
- Protected Attributes inherited from DatabaseUpdater
IMaintainableDatabase $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...
 
Maintenance $maintenance
 
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...
 

Additional Inherited Members

- Static Public Member Functions inherited from DatabaseUpdater
static newForDB (IMaintainableDatabase $db, $shared=false, Maintenance $maintenance=null)
 
- Public Attributes inherited from DatabaseUpdater
const REPLICATION_WAIT_TIMEOUT = 300
 

Detailed Description

Class for handling updates to Postgres databases.

Since
1.17

Definition at line 32 of file PostgresUpdater.php.

Member Function Documentation

◆ addInterwikiType()

PostgresUpdater::addInterwikiType ( )
protected

Definition at line 1217 of file PostgresUpdater.php.

References DatabaseUpdater\applyPatch().

◆ addPgEnumValue()

PostgresUpdater::addPgEnumValue (   $type,
  $value 
)

Add a value to an existing PostgreSQL enum type.

Since
1.31
Parameters
string$typeType name. Must be in the core schema.
string$valueValue to add.

Definition at line 1025 of file PostgresUpdater.php.

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

◆ addPgExtIndex()

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

◆ addPgField()

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

Definition at line 882 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ addPgIndex()

PostgresUpdater::addPgIndex (   $table,
  $index,
  $type,
  $unique = false 
)

Definition at line 998 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ addSequence()

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

Definition at line 785 of file PostgresUpdater.php.

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

◆ changeField()

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

Definition at line 894 of file PostgresUpdater.php.

References $res, and DatabaseUpdater\output().

◆ changeFieldPurgeTable()

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

Definition at line 919 of file PostgresUpdater.php.

References $res, and DatabaseUpdater\output().

◆ changeFkeyDeferrable()

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

Definition at line 1077 of file PostgresUpdater.php.

References $command, and DatabaseUpdater\output().

◆ changeNullableField()

PostgresUpdater::changeNullableField (   $table,
  $field,
  $null,
  $update = false 
)
protected

Definition at line 971 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ checkIndex()

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

Definition at line 1177 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ checkIwlPrefix()

PostgresUpdater::checkIwlPrefix ( )
protected

Definition at line 1207 of file PostgresUpdater.php.

References DatabaseUpdater\applyPatch().

◆ checkOiDeleted()

PostgresUpdater::checkOiDeleted ( )
protected

Definition at line 1125 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ checkOiNameConstraint()

PostgresUpdater::checkOiNameConstraint ( )
protected

Definition at line 1137 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ checkPageDeletedTrigger()

PostgresUpdater::checkPageDeletedTrigger ( )
protected

Definition at line 1158 of file PostgresUpdater.php.

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

◆ checkRevUserFkey()

PostgresUpdater::checkRevUserFkey ( )
protected

◆ convertArchive2()

PostgresUpdater::convertArchive2 ( )
protected

Definition at line 1105 of file PostgresUpdater.php.

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

◆ describeIndex()

PostgresUpdater::describeIndex (   $idx)

Definition at line 688 of file PostgresUpdater.php.

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

◆ describeTable()

PostgresUpdater::describeTable (   $table)
protected

Definition at line 663 of file PostgresUpdater.php.

References $res, as, FROM, and null.

◆ dropDefault()

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

Drop a default value from a field.

Since
1.32
Parameters
string$table
string$field

Definition at line 963 of file PostgresUpdater.php.

References false, and DatabaseUpdater\output().

◆ dropFkey()

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

Definition at line 1059 of file PostgresUpdater.php.

References $command, and DatabaseUpdater\output().

◆ dropPgField()

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

Definition at line 870 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ dropPgIndex()

PostgresUpdater::dropPgIndex (   $table,
  $index 
)
protected

Definition at line 1170 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ dropSequence()

PostgresUpdater::dropSequence (   $table,
  $ns 
)
protected

Definition at line 797 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ fkeyDeltype()

PostgresUpdater::fkeyDeltype (   $fkey)

Definition at line 739 of file PostgresUpdater.php.

References FROM, and null.

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

Definition at line 44 of file PostgresUpdater.php.

References class, and true.

◆ getOldGlobalUpdates()

PostgresUpdater::getOldGlobalUpdates ( )
protected

Definition at line 624 of file PostgresUpdater.php.

References DatabaseUpdater\$updates, as, and true.

◆ rebuildTextSearch()

PostgresUpdater::rebuildTextSearch ( )
protected

◆ renameIndex()

PostgresUpdater::renameIndex (   $table,
  $old,
  $new,
  $skipBothIndexExistWarning = false,
  $a = false,
  $b = false 
)
protected

Definition at line 835 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ renameSequence()

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

Definition at line 804 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ renameTable()

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

Definition at line 823 of file PostgresUpdater.php.

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

◆ ruleDef()

PostgresUpdater::ruleDef (   $table,
  $rule 
)

Definition at line 761 of file PostgresUpdater.php.

References definition, FROM, and null.

◆ setDefault()

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

Definition at line 948 of file PostgresUpdater.php.

References DatabaseUpdater\output().

Referenced by addSequence().

◆ setSequenceOwner()

PostgresUpdater::setSequenceOwner (   $table,
  $pkey,
  $seq 
)
protected

Definition at line 816 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ tsearchFixes()

PostgresUpdater::tsearchFixes ( )
protected

Definition at line 1221 of file PostgresUpdater.php.

References DatabaseUpdater\applyPatch().

Member Data Documentation

◆ $db

DatabasePostgres PostgresUpdater::$db
protected

Definition at line 37 of file PostgresUpdater.php.


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