Page MenuHomePhabricator

Upgrading from 1.35.8 to 1.39.2 using PostgreSQL fails, index "tl_namespace" does not exist
Closed, ResolvedPublicBUG REPORT

Description

Upgrading from 1.35.8 to 1.39.2 now fails with

Dropping column 'page.page_restrictions'
Running migrateLinksTable.php on templatelinks...
Populating the tl_target_id column
Completed normalization of templatelinks, 0 rows updated.
done.
Changing 'templatelinks.tl_target_id' to not allow NULLs
Table templatelinks contains tl_title field. Dropping...Wikimedia\Rdbms\DBQueryError from line 1618 of /data/mediawiki/software/mediawiki-1.39.2/includes/libs/rdbms/database/Database.php: Error 42704: ERROR:  index "tl_namespace" does not exist

Function: Wikimedia\Rdbms\Database::sourceFile( /data/mediawiki/software/mediawiki-1.39.2/maintenance/postgres/archives/patch-templatelinks-drop-tl_title.sql )
Query: DROP  INDEX tl_namespace

Event Timeline

The root caused explained in T330439:

1.35 had no tl_namespace index: https://github.com/wikimedia/mediawiki/blob/REL1_35/maintenance/postgres/tables.sql#L301
1.36 added it: https://github.com/wikimedia/mediawiki/blob/REL1_36/maintenance/postgres/tables-generated.sql#L193
1.39 dropped it again, but fails due to the index not being present yet: https://github.com/wikimedia/mediawiki/blob/REL1_39/maintenance/postgres/archives/patch-templatelinks-drop-tl_title.sql
As LTS -> LTS DB upgrades should generally be supported, this should probably be corrected.

Change 892561 had a related patch set uploaded (by Ladsgroup; author: Amir Sarabadani):

[mediawiki/core@master] postgres: Make the upgrade ignore dropping indexes that might not exist

https://gerrit.wikimedia.org/r/892561

@joernc_unibi This line is a bit concerning:

Completed normalization of templatelinks, 0 rows updated.

Is it an empty wiki or doesn't have any templates? or it was migrated before?

It is a pretty empty test wiki, I only edit the main page after an update. It might have been upgraded from 1.31. But even a lot of our production wikis don't use templates (i.e. the table "templatelinks" is empty).

Change 892421 had a related patch set uploaded (by Ladsgroup; author: Amir Sarabadani):

[mediawiki/core@REL1_39] postgres: Make the upgrade ignore dropping indexes that might not exist

https://gerrit.wikimedia.org/r/892421

Change 892421 merged by jenkins-bot:

[mediawiki/core@REL1_39] postgres: Make the upgrade ignore dropping indexes that might not exist

https://gerrit.wikimedia.org/r/892421

Change 892561 merged by jenkins-bot:

[mediawiki/core@master] postgres: Make the upgrade ignore dropping indexes that might not exist

https://gerrit.wikimedia.org/r/892561

hi, @joernc_unibi is it possible to try it with this patch and see if it fixes your upgrade issue?

With this patch, the update script succeeds, my test wiki is now at version 1.39.2. Thanks a lot!

Awesome. Closing it then.

Regarding "concerning lines": For reference, below is the complete update log. I guess the warning regarding logging_type_action is okay.

MediaWiki 1.39.2 Updater

Your composer.lock file is up to date with current dependencies!
Going to run database updates for mwtshared01-public-
Depending on the size of your database this may take a while!
Abort with control-c in the next five seconds (skip this countdown with --quick) ...0
...collations up-to-date.
...column 'revision.rev_actor' already exists
...index 'rev_actor_timestamp' on table 'revision' already exists
...index 'rev_page_actor_timestamp' on table 'revision' already exists
Renaming table pagecontent to text
Renaming table mwuser to user
...column 'image.img_description_id' already exists
...slots table already exists.
...slots table does not contain slot_inherited field.
...column 'slots.slot_origin' already exists
...index 'slot_revision_origin_role' on table 'slots' already exists
...content table already exists.
...content_models table already exists.
...slot_roles table already exists.
...actor table already exists.
...column 'archive.ar_actor' already exists
...column 'ipblocks.ipb_by_actor' already exists
...column 'image.img_actor' already exists
...column 'oldimage.oi_actor' already exists
...column 'filearchive.fa_actor' already exists
...column 'recentchanges.rc_actor' already exists
...column 'logging.log_actor' already exists
...index 'logging_actor_time_backwards' on table 'logging' already exists
...index 'logging_actor_type_time' on table 'logging' already exists
...index 'logging_actor_time' on table 'logging' already exists
...table site_stats already modified by patch patch-site_stats-modify.sql.
...index 'rc_namespace_title_timestamp' on table 'recentchanges' already exists
Setting sequence user_user_id_seq owner to user.user_id
Setting sequence actor_actor_id_seq owner to actor.actor_id
Setting sequence page_page_id_seq owner to page.page_id
Setting sequence revision_rev_id_seq owner to revision.rev_id
Setting sequence ip_changes_ipc_rev_id_seq owner to ip_changes.ipc_rev_id
Setting sequence text_old_id_seq owner to text.old_id
Setting sequence comment_comment_id_seq owner to comment.comment_id
Setting sequence page_restrictions_pr_id_seq owner to page_restrictions.pr_id
Setting sequence archive_ar_id_seq owner to archive.ar_id
Setting sequence content_content_id_seq owner to content.content_id
Setting sequence slot_roles_role_id_seq owner to slot_roles.role_id
Setting sequence content_models_model_id_seq owner to content_models.model_id
Setting sequence externallinks_el_id_seq owner to externallinks.el_id
Setting sequence ipblocks_ipb_id_seq owner to ipblocks.ipb_id
Setting sequence filearchive_fa_id_seq owner to filearchive.fa_id
Setting sequence uploadstash_us_id_seq owner to uploadstash.us_id
Setting sequence recentchanges_rc_id_seq owner to recentchanges.rc_id
Setting sequence watchlist_wl_id_seq owner to watchlist.wl_id
Setting sequence logging_log_id_seq owner to logging.log_id
Setting sequence job_job_id_seq owner to job.job_id
Setting sequence category_cat_id_seq owner to category.cat_id
Setting sequence change_tag_ct_id_seq owner to change_tag.ct_id
Setting sequence sites_site_id_seq owner to sites.site_id
...change_tag_def table already exists.
Running maintenance/deduplicateArchiveRevId.php...
...Update 'DeduplicateArchiveRevId' already logged as completed. Use --force to run it again.
done.
...column 'change_tag.ct_tag_id' already exists
...index 'change_tag_tag_id_id' on table 'change_tag' already exists
...index 'ar_revid_uniq' on table 'archive' already exists
...index 'log_type_action' on table 'logging' already exists
...index interwiki_pkey already set on interwiki table.
...index protected_titles_pkey already set on protected_titles table.
...index site_identifiers_pkey already set on site_identifiers table.
...index 'rc_this_oldid' on table 'recentchanges' already exists
...transcache doesn't exist.
Running maintenance/populateChangeTagDef.php...
...Update 'PopulateChangeTagDef' already logged as completed. Use --force to run it again.
done.
...change_tag_rc_tag key doesn't exist.
...column 'ipblocks.ipb_sitewide' already exists
...ipblocks_restrictions table already exists.
...category table does not contain cat_hidden field.
...site_stats table does not contain ss_admins field.
...recentchanges table does not contain rc_cur_time field.
...change_tag table does not contain ct_tag field.
...valid_tag doesn't exist.
...tag_summary doesn't exist.
...archive table does not contain ar_comment field.
...ipblocks table does not contain ipb_reason field.
...image table does not contain img_description field.
...oldimage table does not contain oi_description field.
...filearchive table does not contain fa_deleted_reason field.
...filearchive table does not contain fa_description field.
...recentchanges table does not contain rc_comment field.
...logging table does not contain log_comment field.
...protected_titles table does not contain pt_reason field.
...archive table does not contain ar_user field.
...archive table does not contain ar_user_text field.
...ipblocks table does not contain ipb_by field.
...ipblocks table does not contain ipb_by_text field.
...image table does not contain img_user field.
...image table does not contain img_user_text field.
...oldimage table does not contain oi_user field.
...oldimage table does not contain oi_user_text field.
...filearchive table does not contain fa_user field.
...filearchive table does not contain fa_user_text field.
...recentchanges table does not contain rc_user field.
...recentchanges table does not contain rc_user_text field.
...logging table does not contain log_user field.
...logging table does not contain log_user_text field.
...index redirect_pkey already set on redirect table.
...watchlist_expiry table already exists.
Setting sequence watchlist_expiry_we_item_seq owner to watchlist_expiry.we_item
Changing 'user_newtalk.user_ip' default value
...column 'user_newtalk.user_ip' is already set as NOT NULL
Changing 'user_newtalk.user_id' default value
...revision table does not contain rev_user field.
...revision table does not contain rev_user_text field.
...revision table does not contain rev_comment field.
...revision table does not contain rev_text_id field.
...revision table does not contain rev_content_model field.
...revision table does not contain rev_content_format field.
...column 'revision.rev_comment_id' already exists
...archive table does not contain ar_text_id field.
...archive table does not contain ar_content_model field.
...archive table does not contain ar_content_format field.
Changing column type of 'updatelog.ul_key' from 'varchar' to 'varchar(255)'
...column 'updatelog.ul_value' is already of type 'TEXT'
...column 'site_identifiers.si_type' is already of type 'TEXT'
...column 'site_identifiers.si_key' is already of type 'TEXT'
...column 'actor.actor_id' is already of type 'BIGINT'
...column 'actor.actor_name' is already of type 'TEXT'
...column 'user_former_groups.ufg_group' is already of type 'TEXT'
...foreign key constraint on 'user_former_groups.ufg_user' already does not exist
...no need to drop index 'ipb_address_unique'
...index 'ipb_address_unique' exists
Changing 'bot_passwords.bp_token' default value
Changing column type of 'comment.comment_id' from 'integer' to 'BIGINT'
Changing column type of 'slots.slot_revision_id' from 'integer' to 'BIGINT'
Changing column type of 'slots.slot_content_id' from 'integer' to 'BIGINT'
Changing column type of 'slots.slot_origin' from 'integer' to 'BIGINT'
Changing column type of 'site_stats.ss_total_edits' from 'integer' to 'BIGINT'
Changing column type of 'site_stats.ss_good_articles' from 'integer' to 'BIGINT'
Changing column type of 'site_stats.ss_total_pages' from 'integer' to 'BIGINT'
Changing column type of 'site_stats.ss_users' from 'integer' to 'BIGINT'
Changing column type of 'site_stats.ss_active_users' from 'integer' to 'BIGINT'
Changing column type of 'site_stats.ss_images' from 'integer' to 'BIGINT'
Dropping foreign key constraint on 'user_properties.up_user'
Adding index user_properties_pkey to table user_properties...done.
Changing column type of 'log_search.ls_value' from 'text' to 'VARCHAR(255)'
Changing column type of 'content.content_id' from 'integer' to 'BIGINT'
Changing column type of 'l10n_cache.lc_value' from 'bytea' to 'TEXT'
Changing column type of 'l10n_cache.lc_key' from 'text' to 'VARCHAR(255)'
Adding index l10n_cache_pkey to table l10n_cache...done.
Adding index module_deps_pkey to table module_deps...done.
Changing column type of 'redirect.rd_namespace' from 'smallint' to 'INT'
Changing 'redirect.rd_title' default value
Changing 'redirect.rd_from' default value
Dropping foreign key constraint on 'redirect.rd_from'
Changing column type of 'redirect.rd_interwiki' from 'text' to 'VARCHAR(32)'
Dropping foreign key constraint on 'pagelinks.pl_from'
Changing column type of 'pagelinks.pl_namespace' from 'smallint' to 'INT'
Changing 'pagelinks.pl_title' default value
Creating index 'pl_namespace' on table 'pagelinks' (pl_namespace,pl_title,pl_from)
Creating index 'pl_backlinks_namespace' on table 'pagelinks' (pl_from_namespace,pl_namespace,pl_title,pl_from)
Dropping obsolete index 'pagelink_unique'
Dropping obsolete index 'pagelinks_title'
Dropping foreign key constraint on 'templatelinks.tl_from'
Dropping obsolete index 'templatelinks_unique'
Dropping obsolete index 'templatelinks_from'
Dropping foreign key constraint on 'imagelinks.il_from'
Changing 'imagelinks.il_to' default value
Creating index 'il_to' on table 'imagelinks' (il_to, il_from)
Creating index 'il_backlinks_namespace' on table 'imagelinks' (il_from_namespace, il_to, il_from)
Dropping obsolete index 'il_from'
Dropping foreign key constraint on 'langlinks.ll_from'
Adding index langlinks_pkey to table langlinks...done.
Changing 'langlinks.ll_lang' default value
Changing 'langlinks.ll_from' default value
Changing 'langlinks.ll_title' default value
...column 'langlinks.ll_lang' is already set as NOT NULL
Changing 'langlinks.ll_title' to not allow NULLs
Adding index iwlinks_pkey to table iwlinks...done.
Dropping sequence watchlist_expiry_we_item_seq
Changing column type of 'change_tag_def.ctd_count' from 'integer' to 'BIGINT'
Removing 'change_tag_def.ctd_user_defined' default value
Dropping foreign key constraint on 'ipblocks_restrictions.ir_ipb_id'
Changing 'querycache.qc_value' default value
Changing column type of 'querycache.qc_namespace' from 'smallint' to 'INT'
Changing 'querycache.qc_title' default value
Dropping foreign key constraint on 'page_restrictions.pr_page'
Creating index 'pr_pagetype' on table 'page_restrictions' (pr_page, pr_type)
Creating index 'pr_typelevel' on table 'page_restrictions' (pr_type, pr_level)
Creating index 'pr_level' on table 'page_restrictions' (pr_level)
Creating index 'pr_cascade' on table 'page_restrictions' (pr_cascade)
...column 'page_restrictions.pr_page' is already set as NOT NULL
Dropping foreign key constraint on 'user_groups.ug_user'
Changing 'user_groups.ug_user' default value
Changing 'user_groups.ug_group' default value
Changing 'querycache_info.qci_type' default value
Changing 'querycache_info.qci_timestamp' default value
Changing 'querycache_info.qci_type' to not allow NULLs
Changing 'querycache_info.qci_timestamp' to not allow NULLs
Adding index querycache_info_pkey to table querycache_info...done.
Changing 'watchlist.wl_title' default value
Changing column type of 'watchlist.wl_namespace' from 'smallint' to 'INT'
Dropping foreign key constraint on 'watchlist.wl_user'
Dropping obsolete index 'wl_user_namespace_title'
Creating index 'namespace_title' on table 'watchlist' (wl_namespace, wl_title)
Dropping obsolete version of index 'wl_user'
Creating index 'wl_user'
Changing column type of 'sites.site_domain' from 'text' to 'VARCHAR(255)'
Dropping foreign key constraint on 'user_newtalk.user_id'
...skipping: index user_newtalk_id doesn't exist.
...skipping: index user_newtalk_ip doesn't exist.
Changing column type of 'interwiki.iw_prefix' from 'text' to 'VARCHAR(32)'
Changing column type of 'interwiki.iw_wikiid' from 'text' to 'VARCHAR(64)'
Dropping foreign key constraint on 'protected_titles.pt_user'
Changing 'protected_titles.pt_user' to not allow NULLs
Changing 'protected_titles.pt_expiry' to not allow NULLs
Changing column type of 'protected_titles.pt_reason_id' from 'integer' to 'BIGINT'
Removing 'protected_titles.pt_create_perm' default value
Dropping foreign key constraint on 'externallinks.el_from'
Changing 'externallinks.el_from' default value
Changing column type of 'externallinks.el_index_60' from 'bytea' to 'TEXT'
Creating index 'el_to' on table 'externallinks' (el_to, el_from)
Dropping sequence ip_changes_ipc_rev_id_seq
Changing column type of 'ip_changes.ipc_hex' from 'bytea' to 'TEXT'
Changing 'ip_changes.ipc_rev_id' default value
Changing column type of 'revision_comment_temp.revcomment_comment_id' from 'integer' to 'BIGINT'
Dropping foreign key constraint on 'page_props.pp_page'
...no need to change primary key of 'page_props'
Changing 'job.job_cmd' default value
Changing column type of 'job.job_namespace' from 'smallint' to 'INTEGER'
Dropping obsolete index 'job_cmd_namespace_title'
Creating index 'job_cmd' on table 'job' (job_cmd, job_namespace, job_title, job_params)
Changing column type of 'slot_roles.role_id' from 'smallint' to 'INTEGER'
Changing column type of 'content_models.model_id' from 'smallint' to 'INTEGER'
Creating index 'page_redirect_namespace_len' on table 'page' (page_is_redirect, page_namespace, page_len)
Dropping foreign key constraint on 'categorylinks.cl_from'
Changing 'categorylinks.cl_from' default value
Changing 'categorylinks.cl_to' default value
Changing 'categorylinks.cl_sortkey' default value
Changing 'categorylinks.cl_collation' default value
Changing 'categorylinks.cl_sortkey' to not allow NULLs
Adding index categorylinks_pkey to table categorylinks...done.
Creating index 'cl_timestamp' on table 'categorylinks' (cl_to, cl_timestamp)
Creating index 'cl_collation_ext' on table 'categorylinks' (cl_collation, cl_to, cl_type, cl_from)
Dropping obsolete version of index 'cl_sortkey'
Creating index 'cl_sortkey'
...index log_type_action already set on logging table.
...WARNING: logging_type_action still exists, despite it has been renamed into log_type_action (which also exists).
            logging_type_action should be manually removed if not needed anymore.
Changing 'logging.log_params' to not allow NULLs
Changing 'logging.log_action' default value
Changing 'logging.log_type' default value
Changing 'logging.log_title' default value
Changing 'logging.log_timestamp' default value
Changing column type of 'logging.log_actor' from 'integer' to 'BIGINT'
Changing column type of 'logging.log_comment_id' from 'integer' to 'BIGINT'
Changing column type of 'logging.log_namespace' from 'smallint' to 'INT'
Dropping obsolete index 'logging_actor_time'
Changing column type of 'uploadstash.us_key' from 'text' to 'VARCHAR(255)'
Changing column type of 'uploadstash.us_orig_path' from 'text' to 'VARCHAR(255)'
Changing column type of 'uploadstash.us_path' from 'text' to 'VARCHAR(255)'
Changing column type of 'uploadstash.us_source_type' from 'text' to 'VARCHAR(50)'
Changing column type of 'uploadstash.us_props' from 'bytea' to 'TEXT'
Changing column type of 'uploadstash.us_status' from 'text' to 'VARCHAR(50)'
Changing column type of 'uploadstash.us_sha1' from 'text' to 'VARCHAR(31)'
Changing column type of 'uploadstash.us_mime' from 'text' to 'VARCHAR(255)'
Changing 'uploadstash.us_key' to not allow NULLs
Changing 'uploadstash.us_user' to not allow NULLs
Changing 'uploadstash.us_orig_path' to not allow NULLs
Changing 'uploadstash.us_path' to not allow NULLs
Changing 'uploadstash.us_timestamp' to not allow NULLs
Changing 'uploadstash.us_status' to not allow NULLs
Changing 'uploadstash.us_size' to not allow NULLs
Changing 'uploadstash.us_sha1' to not allow NULLs
...skipping: index sites_group,  doesn't exist.
...skipping: index type_name doesn't exist.
Changing 'filearchive.fa_name' default value
Changing 'filearchive.fa_archive_name' default value
Changing 'filearchive.fa_storage_key' default value
Dropping foreign key constraint on 'filearchive.fa_deleted_user'
Changing column type of 'filearchive.fa_deleted_reason_id' from 'integer' to 'BIGINT'
Changing column type of 'filearchive.fa_metadata' from 'bytea' to 'TEXT'
Changing column type of 'filearchive.fa_bits' from 'smallint' to 'INTEGER'
Changing column type of 'filearchive.fa_description_id' from 'integer' to 'BIGINT'
Changing column type of 'filearchive.fa_actor' from 'integer' to 'BIGINT'
Dropping obsolete index 'fa_nouser'
Creating index 'fa_actor_timestamp' on table 'filearchive' (fa_actor, fa_timestamp)
Creating index 'ipb_expiry' on table 'ipblocks' (ipb_expiry)
Creating index 'ipb_timestamp' on table 'ipblocks' (ipb_timestamp)
Changing 'text.old_text' to not allow NULLs
Changing 'text.old_flags' to not allow NULLs
Changing 'oldimage.oi_name' default value
Changing 'oldimage.oi_archive_name' default value
Changing 'oldimage.oi_size' default value
Changing 'oldimage.oi_width' default value
Changing 'oldimage.oi_height' default value
Changing 'oldimage.oi_bits' default value
Changing 'oldimage.oi_name' default value
Changing column type of 'oldimage.oi_bits' from 'smallint' to 'INTEGER'
Changing column type of 'oldimage.oi_description_id' from 'integer' to 'BIGINT'
Changing column type of 'oldimage.oi_actor' from 'integer' to 'BIGINT'
Changing column type of 'oldimage.oi_metadata' from 'bytea' to 'TEXT'
Removing 'oldimage.oi_metadata' default value
Changing 'oldimage.oi_minor_mime' to not allow NULLs
...column 'oldimage.oi_minor_mime' is already set as NOT NULL
Dropping foreign key constraint on 'oldimage.oi_name'
Creating index 'oi_actor_timestamp' on table 'oldimage' (oi_actor, oi_timestamp)
Dropping obsolete index 'rc_timestamp_bot'
Creating index 'rc_ns_actor' on table 'recentchanges' (rc_namespace, rc_actor)
Creating index 'rc_actor' on table 'recentchanges' (rc_actor, rc_timestamp)
...keyname key doesn't exist.
Changing column type of 'objectcache.value' from 'bytea' to 'TEXT'
Changing 'objectcache.value' to allow NULLs
Dropping foreign key constraint on 'ipblocks.ipb_user'
Dropping foreign key constraint on 'ipblocks.ipb_parent_block_id'
Changing 'ipblocks.ipb_user' default value
Changing 'ipblocks.ipb_user' to not allow NULLs
Changing 'ipblocks.ipb_range_start' to not allow NULLs
Changing 'ipblocks.ipb_range_end' to not allow NULLs
Changing column type of 'ipblocks.ipb_by_actor' from 'integer' to 'BIGINT'
Changing column type of 'ipblocks.ipb_reason_id' from 'integer' to 'BIGINT'
Dropping obsolete index 'archive_actor'
Creating index 'ar_actor_timestamp' on table 'archive' (ar_actor,ar_timestamp)
Changing 'image.img_name' default value
Changing 'image.img_size' default value
Changing 'image.img_width' default value
Changing 'image.img_height' default value
Changing 'image.img_bits' default value
Changing column type of 'image.img_bits' from 'smallint' to 'INTEGER'
Changing column type of 'image.img_description_id' from 'integer' to 'BIGINT'
Changing column type of 'image.img_actor' from 'integer' to 'BIGINT'
Changing column type of 'image.img_metadata' from 'bytea' to 'TEXT'
Removing 'image.img_metadata' default value
Changing 'image.img_major_mime' to not allow NULLs
Changing 'image.img_minor_mime' to not allow NULLs
Changing 'image.img_timestamp' to not allow NULLs
Creating index 'img_actor_timestamp' on table 'image' (img_actor, img_timestamp)
Creating index 'img_media_mime' on table 'image' (img_media_type, img_major_mime, img_minor_mime)
Changing column type of 'recentchanges.rc_actor' from 'integer' to 'BIGINT'
Changing column type of 'recentchanges.rc_comment_id' from 'integer' to 'BIGINT'
Changing column type of 'recentchanges.rc_ip' from 'cidr' to 'TEXT'
Changing column type of 'recentchanges.rc_namespace' from 'smallint' to 'INTEGER'
Changing 'recentchanges.rc_title' default value
Changing 'recentchanges.rc_source' default value
Changing 'recentchanges.rc_ip' default value
Changing 'recentchanges.rc_namespace' default value
Changing 'recentchanges.rc_cur_id' default value
Changing 'recentchanges.rc_this_oldid' default value
Changing 'recentchanges.rc_last_oldid' default value
Changing 'recentchanges.rc_cur_id' to not allow NULLs
Changing 'recentchanges.rc_ip' to not allow NULLs
Changing column type of 'archive.ar_namespace' from 'smallint' to 'INTEGER'
Changing 'archive.ar_namespace' default value
Changing 'archive.ar_title' default value
Changing column type of 'archive.ar_comment_id' from 'integer' to 'BIGINT'
Changing column type of 'archive.ar_actor' from 'integer' to 'BIGINT'
Creating index 'user_email' on table 'user' (user_email)
Creating index 'user_name' on table 'user' (user_name)
Changing column type of 'page.page_namespace' from 'smallint' to 'INTEGER'
Changing 'page.page_touched' to not allow NULLs
Changing column type of 'page.page_random' from 'numeric' to 'FLOAT'
Creating index 'rev_page_timestamp' on table 'revision' (rev_page,rev_timestamp)
Changing 'user.user_touched' to not allow NULLs
Changing 'user.user_name' default value
Changing 'user.user_token' default value
Changing 'user.user_real_name' default value
Changing 'user.user_email' default value
Changing 'user.user_newpassword' default value
Changing 'user.user_password' default value
Changing 'user.user_token' to not allow NULLs
Changing 'user.user_real_name' to not allow NULLs
Changing 'user.user_email' to not allow NULLs
Changing 'user.user_newpassword' to not allow NULLs
Changing 'user.user_password' to not allow NULLs
Removing 'user.user_email' default value
Removing 'user.user_newpassword' default value
Removing 'user.user_password' default value
Adding modtoken field to table objectcache...done.
Dropping foreign key constraint on 'revision.rev_page'
Changing 'revision.rev_page' to not allow NULLs
Changing column type of 'revision.rev_comment_id' from 'integer' to 'BIGINT'
Changing column type of 'revision.rev_actor' from 'integer' to 'BIGINT'
Dropping obsolete version of index 'rev_page_id'
Creating index 'rev_page_id'
Creating searchindex table...done.
Creating index 'oi_timestamp' on table 'oldimage' (oi_timestamp)
...index page_name_title already set on page table.
Converting djvu metadata...
Finished refreshing file metadata for 0 files. 0 needed to be refreshed, 0 did not need to be but were refreshed anyways, and 0 refreshes were suspicious.
...done.
Dropping column 'page_restrictions.pr_user'
Creating linktarget table...done.
Dropping rev_page_id index from table revision...done.
Adding tl_target_id field to table templatelinks...done.
Creating user_autocreate_serial table...done.
Running maintenance/migrateRevisionActorTemp.php...
Merging the revision_actor_temp table into the revision table...
Completed merge of revision_actor into the revision table, 5 rows updated.
done.
Dropping table revision_actor_temp ...done.
Running maintenance/updateRestrictions.php...
...processing page IDs from 0 to 1000.
...Done!
done.
Dropping column 'page.page_restrictions'
Running migrateLinksTable.php on templatelinks...
Populating the tl_target_id column
Completed normalization of templatelinks, 0 rows updated.
done.
Changing 'templatelinks.tl_target_id' to not allow NULLs
Table templatelinks contains tl_title field. Dropping...done.
...site_stats is populated...done.
...Update 'populate rev_len and ar_len' already logged as completed. Use --force to run it again.
...Update 'populate rev_sha1' already logged as completed. Use --force to run it again.
...img_sha1 column of image table already populated.
...protocol-relative URLs in externallinks table already fixed.
...fa_sha1 column of filearchive table already populated.
...*_from_namespace column of backlink tables already populated.
...Update 'FixDefaultJsonContentPages' already logged as completed. Use --force to run it again.
...Update 'cleanup empty categories' already logged as completed. Use --force to run it again.
...RFC and PMID already added to interwiki database table.
...Update 'populate pp_sortkey' already logged as completed. Use --force to run it again.
...Update 'populate ip_changes' already logged as completed. Use --force to run it again.
...externallinks table indexes up to date.
Purging caches...done.

Done in 4.4 s.