MarkAHershberger has submitted this change and it was merged.
Change subject: Disable $wgContentHandlerUseDB during upgrade where fields
don't exist.
......................................................................
Disable $wgContentHandlerUseDB during upgrade where fields don't exist.
They can cause problems if, for example, the installation has hooks
for UserSaveSettings or UserSaveOptions that try to update a user page.
Change-Id: I31078678e8939c897b1357bcb77eb2d26f806f29
Bug: 47271
---
M includes/installer/DatabaseUpdater.php
M includes/installer/MysqlUpdater.php
M includes/installer/OracleUpdater.php
M includes/installer/SqliteUpdater.php
4 files changed, 54 insertions(+), 13 deletions(-)
Approvals:
MarkAHershberger: Looks good to me, approved
jenkins-bot: Verified
diff --git a/includes/installer/DatabaseUpdater.php
b/includes/installer/DatabaseUpdater.php
index 267b6c5..e56c7a9 100644
--- a/includes/installer/DatabaseUpdater.php
+++ b/includes/installer/DatabaseUpdater.php
@@ -89,6 +89,11 @@
protected $skipSchema = false;
/**
+ * Hold the value of $wgContentHandlerUseDB during the upgrade.
+ */
+ protected $holdContentHandlerUseDB = true;
+
+ /**
* Constructor
*
* @param $db DatabaseBase object to perform updates on
@@ -1033,4 +1038,30 @@
$cl->execute();
$this->output( "done.\n" );
}
+
+ /**
+ * Turns off content handler fields during parts of the upgrade
+ * where they aren't available.
+ */
+ protected function disableContentHandlerUseDB() {
+ global $wgContentHandlerUseDB;
+
+ if( $wgContentHandlerUseDB ) {
+ $this->output( "Turning off Content Handler DB fields
for this part of upgrade.\n" );
+ $this->holdContentHandlerUseDB = $wgContentHandlerUseDB;
+ $wgContentHandlerUseDB = false;
+ }
+ }
+
+ /**
+ * Turns content handler fields back on.
+ */
+ protected function enableContentHandlerUseDB() {
+ global $wgContentHandlerUseDB;
+
+ if( $this->holdContentHandlerUseDB ) {
+ $this->output( "Content Handler DB fields should be
usable now.\n" );
+ $wgContentHandlerUseDB = $this->holdContentHandlerUseDB;
+ }
+ }
}
diff --git a/includes/installer/MysqlUpdater.php
b/includes/installer/MysqlUpdater.php
index 0594073..fb675d7 100644
--- a/includes/installer/MysqlUpdater.php
+++ b/includes/installer/MysqlUpdater.php
@@ -31,9 +31,11 @@
protected function getCoreUpdateList() {
return array(
+ array( 'disableContentHandlerUseDB' ),
+
// 1.2
- array( 'addField', 'ipblocks', 'ipb_id',
'patch-ipblocks.sql' ),
- array( 'addField', 'ipblocks', 'ipb_expiry',
'patch-ipb_expiry.sql' ),
+ array( 'addField', 'ipblocks', 'ipb_id',
'patch-ipblocks.sql' ),
+ array( 'addField', 'ipblocks', 'ipb_expiry',
'patch-ipb_expiry.sql' ),
array( 'doInterwikiUpdate' ),
array( 'doIndexUpdate' ),
array( 'addTable', 'hitcounter', 'patch-hitcounter.sql'
),
@@ -215,12 +217,13 @@
// 1.21
array( 'addField', 'revision', 'rev_content_format',
'patch-revision-rev_content_format.sql' ),
array( 'addField', 'revision', 'rev_content_model',
'patch-revision-rev_content_model.sql' ),
- array( 'addField', 'archive', 'ar_content_format',
'patch-archive-ar_content_format.sql' ),
- array( 'addField', 'archive', 'ar_content_model',
'patch-archive-ar_content_model.sql' ),
- array( 'addField', 'page', 'page_content_model',
'patch-page-page_content_model.sql' ),
- array( 'dropField', 'site_stats', 'ss_admins',
'patch-drop-ss_admins.sql' ),
- array( 'dropField', 'recentchanges',
'rc_moved_to_title', 'patch-rc_moved.sql' ),
- array( 'addTable', 'sites', 'patch-sites.sql' ),
+ array( 'addField', 'archive',
'ar_content_format', 'patch-archive-ar_content_format.sql' ),
+ array( 'addField', 'archive',
'ar_content_model', 'patch-archive-ar_content_model.sql' ),
+ array( 'addField', 'page',
'page_content_model', 'patch-page-page_content_model.sql' ),
+ array( 'enableContentHandlerUseDB' ),
+ array( 'dropField', 'site_stats', 'ss_admins',
'patch-drop-ss_admins.sql' ),
+ array( 'dropField', 'recentchanges',
'rc_moved_to_title', 'patch-rc_moved.sql' ),
+ array( 'addTable', 'sites',
'patch-sites.sql' ),
array( 'addField', 'filearchive', 'fa_sha1',
'patch-fa_sha1.sql' ),
array( 'addField', 'job', 'job_token',
'patch-job_token.sql' ),
array( 'addField', 'job', 'job_attempts',
'patch-job_attempts.sql' ),
diff --git a/includes/installer/OracleUpdater.php
b/includes/installer/OracleUpdater.php
index ec91e57..7b6f49c 100644
--- a/includes/installer/OracleUpdater.php
+++ b/includes/installer/OracleUpdater.php
@@ -38,6 +38,8 @@
protected function getCoreUpdateList() {
return array(
+ array( 'disableContentHandlerUseDB' ),
+
// 1.17
array( 'doNamespaceDefaults' ),
array( 'doFKRenameDeferr' ),
@@ -79,6 +81,7 @@
array( 'addField', 'archive', 'ar_id',
'patch-archive-ar_id.sql' ),
array( 'addField', 'externallinks', 'el_id',
'patch-externallinks-el_id.sql' ),
array( 'addField', 'page', 'page_content_model',
'patch-page-page_content_model.sql' ),
+ array( 'enableContentHandlerUseDB' ),
array( 'dropField', 'site_stats', 'ss_admins',
'patch-ss_admins.sql' ),
array( 'dropField', 'recentchanges',
'rc_moved_to_title', 'patch-rc_moved.sql' ),
array( 'addTable', 'sites', 'patch-sites.sql' ),
diff --git a/includes/installer/SqliteUpdater.php
b/includes/installer/SqliteUpdater.php
index 020993a..6fa22bc 100644
--- a/includes/installer/SqliteUpdater.php
+++ b/includes/installer/SqliteUpdater.php
@@ -31,8 +31,10 @@
protected function getCoreUpdateList() {
return array(
+ array( 'disableContentHandlerUseDB' ),
+
// 1.14
- array( 'addField', 'site_stats', 'ss_active_users',
'patch-ss_active_users.sql' ),
+ array( 'addField', 'site_stats', 'ss_active_users',
'patch-ss_active_users.sql' ),
array( 'doActiveUsersInit' ),
array( 'addField', 'ipblocks', 'ipb_allow_usertalk',
'patch-ipb_allow_usertalk.sql' ),
array( 'sqliteInitialIndexes' ),
@@ -94,10 +96,12 @@
// 1.21
array( 'addField', 'revision', 'rev_content_format',
'patch-revision-rev_content_format.sql' ),
array( 'addField', 'revision', 'rev_content_model',
'patch-revision-rev_content_model.sql' ),
- array( 'addField', 'archive', 'ar_content_format',
'patch-archive-ar_content_format.sql' ),
- array( 'addField', 'archive', 'ar_content_model',
'patch-archive-ar_content_model.sql' ),
- array( 'addField', 'page', 'page_content_model',
'patch-page-page_content_model.sql' ),
- array( 'dropField', 'site_stats', 'ss_admins',
'patch-drop-ss_admins.sql' ),
+ array( 'addField', 'archive', 'ar_content_format',
'patch-archive-ar_content_format.sql' ),
+ array( 'addField', 'archive', 'ar_content_model',
'patch-archive-ar_content_model.sql' ),
+ array( 'addField', 'page', 'page_content_model',
'patch-page-page_content_model.sql' ),
+ array( 'enableContentHandlerUseDB' ),
+
+ array( 'dropField', 'site_stats', 'ss_admins',
'patch-drop-ss_admins.sql' ),
array( 'dropField', 'recentchanges',
'rc_moved_to_title', 'patch-rc_moved.sql' ),
array( 'addTable', 'sites', 'patch-sites.sql' ),
array( 'addField', 'filearchive', 'fa_sha1',
'patch-fa_sha1.sql' ),
--
To view, visit https://gerrit.wikimedia.org/r/59369
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I31078678e8939c897b1357bcb77eb2d26f806f29
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: MarkAHershberger <[email protected]>
Gerrit-Reviewer: IAlex <[email protected]>
Gerrit-Reviewer: MarkAHershberger <[email protected]>
Gerrit-Reviewer: Mglaser <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits