MediaWiki REL1_39
PostgresUpdater Class Reference

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

Inheritance diagram for PostgresUpdater:
Collaboration diagram for PostgresUpdater:

Protected Member Functions

 addPgEnumValue ( $type, $value)
 Add a value to an existing PostgreSQL enum type.
 
 addPgExtIndex ( $table, $index, $type)
 
 addPgField ( $table, $field, $type)
 
 addPgIndex ( $table, $index, $type, $unique=false)
 
 addSequence ( $table, $pkey, $ns)
 
 changeField ( $table, $field, $newtype, $default)
 
 changeFieldPurgeTable ( $table, $field, $newtype, $default)
 
 changeFkeyDeferrable ( $table, $field, $clause)
 
 changeNullableField ( $table, $field, $null, $update=false)
 
 changePrimaryKey ( $table, $shouldBe, $constraintName=null)
 
 checkIndex ( $index, $should_be, $good_def)
 
 describeIndex ( $idx)
 
 describeTable ( $table)
 
 dropConstraint ( $table, $field, $type, $conname=null)
 Drop generic constraint.
 
 dropDefault ( $table, $field)
 Drop a default value from a field.
 
 dropFkey ( $table, $field)
 
 dropPgField ( $table, $field)
 
 dropPgIndex ( $table, $index)
 
 dropSequence ( $table, $ns)
 
 fkeyDeltype ( $fkey)
 
 getCoreUpdateList ()
 
 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)
 
 ruleDef ( $table, $rule)
 
 setDefault ( $table, $field, $default)
 
 setSequenceOwner ( $table, $pkey, $seq)
 
- 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.
 
 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.
 
 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.
 
 runMaintenance ( $class, $script)
 Run a maintenance script.
 

Protected Attributes

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

Additional Inherited Members

- Public Member Functions inherited from DatabaseUpdater
 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 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

◆ addPgEnumValue()

PostgresUpdater::addPgEnumValue ( $type,
$value )
protected

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 988 of file PostgresUpdater.php.

References $type, and DatabaseUpdater\output().

◆ addPgExtIndex()

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

◆ addPgField()

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

Definition at line 838 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ addPgIndex()

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

Definition at line 959 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ addSequence()

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

Definition at line 740 of file PostgresUpdater.php.

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

◆ changeField()

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

Definition at line 849 of file PostgresUpdater.php.

References $res, and DatabaseUpdater\output().

◆ changeFieldPurgeTable()

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

Definition at line 875 of file PostgresUpdater.php.

References $res, and DatabaseUpdater\output().

◆ changeFkeyDeferrable()

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

Definition at line 1037 of file PostgresUpdater.php.

References $command, dropConstraint(), and DatabaseUpdater\output().

◆ changeNullableField()

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

Definition at line 930 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ changePrimaryKey()

PostgresUpdater::changePrimaryKey ( $table,
$shouldBe,
$constraintName = null )
protected

Definition at line 1090 of file PostgresUpdater.php.

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

◆ checkIndex()

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

Definition at line 1072 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ describeIndex()

PostgresUpdater::describeIndex ( $idx)
protected

Definition at line 640 of file PostgresUpdater.php.

References $res.

◆ describeTable()

PostgresUpdater::describeTable ( $table)
protected

Definition at line 611 of file PostgresUpdater.php.

References $res.

◆ dropConstraint()

PostgresUpdater::dropConstraint ( $table,
$field,
$type,
$conname = null )
protected

Drop generic constraint.

If the constraint was created with a custom name, then the name must be queried and supplied as $conname, otherwise standard system suffixes and format would be assumed.

Parameters
string$table
string$field
string$type
string | null$conname
Returns
bool

Definition at line 1132 of file PostgresUpdater.php.

References $type.

Referenced by changeFkeyDeferrable(), changePrimaryKey(), and dropFkey().

◆ dropDefault()

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

Drop a default value from a field.

Since
1.32
Parameters
string$table
string$field

Definition at line 921 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ dropFkey()

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

Definition at line 1022 of file PostgresUpdater.php.

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

◆ dropPgField()

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

Definition at line 827 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ dropPgIndex()

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

Definition at line 1065 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ dropSequence()

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

Definition at line 753 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ fkeyDeltype()

PostgresUpdater::fkeyDeltype ( $fkey)
protected

Definition at line 692 of file PostgresUpdater.php.

◆ getCoreUpdateList()

PostgresUpdater::getCoreUpdateList ( )
protected
Returns
array

Reimplemented from DatabaseUpdater.

Definition at line 42 of file PostgresUpdater.php.

References true.

◆ renameIndex()

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

Definition at line 792 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ renameSequence()

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

Definition at line 760 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ renameTable()

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

Definition at line 780 of file PostgresUpdater.php.

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

◆ ruleDef()

PostgresUpdater::ruleDef ( $table,
$rule )
protected

Definition at line 715 of file PostgresUpdater.php.

◆ setDefault()

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

Definition at line 905 of file PostgresUpdater.php.

References DatabaseUpdater\output().

Referenced by addSequence().

◆ setSequenceOwner()

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

Definition at line 772 of file PostgresUpdater.php.

References DatabaseUpdater\output().

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: