MediaWiki REL1_37
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.
 
 addIndexIfNoneExist ( $table, $indexes, $patch, $fullpath=false)
 Add a new index to an existing table if none of the given indexes exist.
 
 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.
 
 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.
 
 ifNoActorTable ( $func,... $params)
 
 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.
 
 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 equivilent 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 1021 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 871 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ addPgIndex()

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

Definition at line 992 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ addSequence()

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

Definition at line 773 of file PostgresUpdater.php.

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

◆ changeField()

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

Definition at line 882 of file PostgresUpdater.php.

References $res, and DatabaseUpdater\output().

◆ changeFieldPurgeTable()

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

Definition at line 908 of file PostgresUpdater.php.

References $res, and DatabaseUpdater\output().

◆ changeFkeyDeferrable()

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

Definition at line 1070 of file PostgresUpdater.php.

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

◆ changeNullableField()

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

Definition at line 963 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ changePrimaryKey()

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

Definition at line 1123 of file PostgresUpdater.php.

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

◆ checkIndex()

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

Definition at line 1105 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ describeIndex()

PostgresUpdater::describeIndex (   $idx)
protected

Definition at line 673 of file PostgresUpdater.php.

References $res.

◆ describeTable()

PostgresUpdater::describeTable (   $table)
protected

Definition at line 644 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 1165 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 954 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ dropFkey()

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

Definition at line 1055 of file PostgresUpdater.php.

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

◆ dropPgField()

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

Definition at line 860 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ dropPgIndex()

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

Definition at line 1098 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ dropSequence()

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

Definition at line 786 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ fkeyDeltype()

PostgresUpdater::fkeyDeltype (   $fkey)
protected

Definition at line 725 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 825 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ renameSequence()

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

Definition at line 793 of file PostgresUpdater.php.

References DatabaseUpdater\output().

◆ renameTable()

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

Definition at line 813 of file PostgresUpdater.php.

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

◆ ruleDef()

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

Definition at line 748 of file PostgresUpdater.php.

◆ setDefault()

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

Definition at line 938 of file PostgresUpdater.php.

References DatabaseUpdater\output().

Referenced by addSequence().

◆ setSequenceOwner()

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

Definition at line 805 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: