Revert r35538:
[lhc/web/wiklou.git] / maintenance / updaters.inc
index 63a2671..6b1cb10 100644 (file)
@@ -1,10 +1,9 @@
 <?php
 /**
- * @addtogroup Maintenance
+ * @file
+ * @ingroup Maintenance
  */
 
- /** */
-
 if ( !defined( 'MEDIAWIKI' ) ) {
        echo "This file is not a valid entry point\n";
        exit( 1 );
@@ -57,7 +56,7 @@ $wgMysqlUpdates = array(
        // 1.5
        array( 'do_schema_restructuring' ),
        array( 'add_field', 'logging',       'log_params',       'patch-log_params.sql' ),
-       array( 'do_logging_encoding' ),
+       array( 'check_bin', 'logging',       'log_title',        'patch-logging-title.sql', ),
        array( 'add_field', 'archive',       'ar_rev_id',        'patch-archive-rev_id.sql' ),
        array( 'add_field', 'page',          'page_len',         'patch-page_len.sql' ),
        array( 'do_inverse_timestamp' ),
@@ -138,8 +137,11 @@ $wgMysqlUpdates = array(
        array( 'add_table', 'category',                          'patch-category.sql' ),
        array( 'do_category_population' ),
        array( 'add_field', 'archive',       'ar_parent_id',     'patch-ar_parent_id.sql'),
-       array( 'add_field', 'user_newtalk',  'user_timestamp',   'patch-user_timestamp.sql'),
+       array( 'add_field', 'user_newtalk',  'user_last_timestamp', 'patch-user_last_timestamp.sql'),
        array( 'do_populate_parent_id' ),
+       array( 'check_bin', 'protected_titles', 'pt_title',      'patch-pt_title-encoding.sql', ),
+       array( 'maybe_do_profiling_memory_update' ),
+       array( 'do_filearchive_indices_update' ),
 );
 
 
@@ -446,20 +448,20 @@ function do_user_update() {
  * 1.4 betas were missing the 'binary' marker from logging.log_title,
  * which causes a collation mismatch error on joins in MySQL 4.1.
  */
-function do_logging_encoding() {
+function check_bin( $table, $field, $patchFile ) {
        global $wgDatabase, $wgDBtype;
        if ($wgDBtype != 'mysql')
                return;
-       $logging = $wgDatabase->tableName( 'logging' );
-       $res = $wgDatabase->query( "SELECT log_title FROM $logging LIMIT 0" );
+       $tableName = $wgDatabase->tableName( $table );
+       $res = $wgDatabase->query( "SELECT $field FROM $tableName LIMIT 0" );
        $flags = explode( ' ', mysql_field_flags( $res->result, 0 ) );
        $wgDatabase->freeResult( $res );
 
        if( in_array( 'binary', $flags ) ) {
-               echo "Logging table has correct title encoding.\n";
+               echo "$table table has correct $field encoding.\n";
        } else {
-               echo "Fixing title encoding on logging table... ";
-               dbsource( archive( 'patch-logging-title.sql' ), $wgDatabase );
+               echo "Fixing $field encoding on $table table... ";
+               dbsource( archive( $patchFile ), $wgDatabase );
                echo "ok\n";
        }
 }
@@ -968,6 +970,7 @@ function do_backlinking_indices_update() {
                !index_has_field('imagelinks', 'il_to', 'il_from'))
        {       
                dbsource( archive( 'patch-backlinkindexes.sql' ) );
+               echo( "...backlinking indices updated\n" );
        }
 }
 
@@ -976,6 +979,31 @@ function do_categorylinks_indices_update() {
        if (!index_has_field('categorylinks', 'cl_sortkey', 'cl_from'))
        {       
                dbsource( archive( 'patch-categorylinksindex.sql' ) );
+               echo( "...categorylinks indices updated\n" );
+       }
+}
+
+function do_filearchive_indices_update() {
+       global $wgDatabase;
+       echo( "Checking filearchive indices...\n" );
+       $info = $wgDatabase->indexInfo( 'filearchive', 'fa_user_timestamp', __METHOD__ );
+       if ( !$info )
+       {       
+               dbsource( archive( 'patch-filearhive-user-index.sql' ) );
+               echo( "...filearchive indices updated\n" );
+       }
+}
+
+function maybe_do_profiling_memory_update() {
+       global $wgDatabase;
+       if ( !$wgDatabase->tableExists( 'profiling' ) ) {
+               // Simply ignore
+       } elseif ( $wgDatabase->fieldExists( 'profiling', 'pf_memory' ) ) {
+               echo "profiling table has pf_memory field.\n";
+       } else {
+               echo "Adding pf_memory field to table profiling...";
+               dbsource( archive( 'patch-profiling-memory.sql' ), $wgDatabase );
+               echo "ok\n";
        }
 }
 
@@ -1161,7 +1189,10 @@ function do_populate_parent_id() {
                echo "...rev_parent_id column already populated.\n";
                return;
        }
-       require_once( 'populateParentId.php' );
+       require_once( 'populateParentId.inc' );
+       
+       global $wgDatabase;
+       populate_rev_parent_id( $wgDatabase );
 }
 
 function
@@ -1397,6 +1428,7 @@ function do_postgres_updates() {
                array("oldimage",      "oi_minor_mime",        "TEXT NOT NULL DEFAULT 'unknown'"),
                array("oldimage",      "oi_sha1",              "TEXT NOT NULL DEFAULT ''"),
                array("page_restrictions", "pr_id",            "INTEGER NOT NULL UNIQUE DEFAULT nextval('pr_id_val')"),
+               array("profiling",     "pf_memory",            "NUMERIC(18,10) NOT NULL DEFAULT 0"),
                array("recentchanges", "rc_deleted",           "SMALLINT NOT NULL DEFAULT 0"),
                array("recentchanges", "rc_log_action",        "TEXT"),
         array("recentchanges", "rc_log_type",          "TEXT"),
@@ -1406,6 +1438,7 @@ function do_postgres_updates() {
                array("recentchanges", "rc_params",            "TEXT"),
                array("revision",      "rev_len",              "INTEGER"),
                array("revision",      "rev_deleted",          "SMALLINT NOT NULL DEFAULT 0"),
+               array("user_newtalk",  "user_last_timestamp",  "TIMESTAMPTZ"),
        );
 
 
@@ -1451,6 +1484,7 @@ function do_postgres_updates() {
                array("recentchanges","rc_new",          "smallint", "rc_new::smallint DEFAULT 0"),
                array("recentchanges","rc_type",         "smallint", "rc_type::smallint DEFAULT 0"),
                array("recentchanges","rc_patrolled",    "smallint", "rc_patrolled::smallint DEFAULT 0"),
+               array("revision",     "rev_deleted",     "smallint", "rev_deleted::smallint DEFAULT 0"),
                array("revision",     "rev_minor_edit",  "smallint", "rev_minor_edit::smallint DEFAULT 0"),
                array("templatelinks","tl_namespace",    "smallint", "tl_namespace::smallint"),
                array("user_newtalk", "user_ip",         "text",     "host(user_ip)"),