mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-11-23 15:36:58 +00:00
schema: Run cleanup updates for echo_push_subscription separately
The addition of the foreign key echo_push_subscription_ibfk_2 in4abfbd3
did not affected already existing installs, because the updater part was missing. The addition of a foreign key also creates an index under mysql, which is also not part of older installs and needs to be created. Also the new field eps_topic fromc188dac
is missing and now added. The new index echo_push_subscription_token from3513c64
is added. The drop patch setd35c502
assumes that the foreign key exists, now every step of the update is running separately to avoid one failing update to skip the remaing update steps. This avoid issues on wikis installed before REL1_35 and updated with the patches from REL1_36 Bug: T322143 Change-Id: I0759b82ad91849880c784e412e04dd53f26df6a2
This commit is contained in:
parent
78439bab3c
commit
fcc46964c1
|
@ -261,7 +261,8 @@ class Hooks implements
|
|||
return;
|
||||
}
|
||||
|
||||
$dbType = $updater->getDB()->getType();
|
||||
$db = $updater->getDB();
|
||||
$dbType = $db->getType();
|
||||
|
||||
$dir = dirname( __DIR__ ) . '/sql';
|
||||
|
||||
|
@ -293,7 +294,48 @@ class Hooks implements
|
|||
$updater->addExtensionTable( 'echo_push_topic', "$dir/echo_push_topic.sql" );
|
||||
|
||||
// 1.39
|
||||
if ( $dbType === 'mysql' || $dbType === 'sqlite' ) {
|
||||
if ( $dbType === 'mysql' && $db->tableExists( 'echo_push_subscription', __METHOD__ ) ) {
|
||||
// Splitted into single steps to support updates from some releases as well - T322143
|
||||
$updater->renameExtensionIndex(
|
||||
'echo_push_subscription',
|
||||
'echo_push_subscription_user_id',
|
||||
'eps_user',
|
||||
"$dir/$dbType/patch-echo_push_subscription-rename-index-eps_user.sql",
|
||||
false
|
||||
);
|
||||
$updater->dropExtensionIndex(
|
||||
'echo_push_subscription',
|
||||
'echo_push_subscription_token',
|
||||
"$dir/$dbType/patch-echo_push_subscription-drop-index-eps_token.sql"
|
||||
);
|
||||
$updater->addExtensionIndex(
|
||||
'echo_push_subscription',
|
||||
'eps_token',
|
||||
"$dir/$dbType/patch-echo_push_subscription-create-index-eps_token.sql"
|
||||
);
|
||||
$updater->addExtensionField(
|
||||
'echo_push_subscription',
|
||||
'eps_topic',
|
||||
"$dir/$dbType/patch-echo_push_subscription-add-column-eps_topic.sql"
|
||||
);
|
||||
|
||||
$res = $db->query( 'SHOW CREATE TABLE ' . $db->tableName( 'echo_push_subscription' ), __METHOD__ );
|
||||
$row = $res ? $res->fetchRow() : false;
|
||||
$statement = $row ? $row[1] : '';
|
||||
if ( str_contains( $statement, $db->addIdentifierQuotes( 'echo_push_subscription_ibfk_1' ) ) ) {
|
||||
$updater->modifyExtensionTable(
|
||||
'echo_push_subscription',
|
||||
"$dir/$dbType/patch-echo_push_subscription-drop-foreign-keys_1.sql"
|
||||
);
|
||||
}
|
||||
if ( str_contains( $statement, $db->addIdentifierQuotes( 'echo_push_subscription_ibfk_2' ) ) ) {
|
||||
$updater->modifyExtensionTable(
|
||||
'echo_push_subscription',
|
||||
"$dir/$dbType/patch-echo_push_subscription-drop-foreign-keys_2.sql"
|
||||
);
|
||||
}
|
||||
}
|
||||
if ( $dbType === 'sqlite' ) {
|
||||
$updater->addExtensionIndex( 'echo_push_subscription', 'eps_user',
|
||||
"$dir/$dbType/patch-cleanup-push_subscription-foreign-keys-indexes.sql" );
|
||||
}
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
-- Drop foreign keys from echo_push_subscription - T306473
|
||||
ALTER TABLE /*_*/echo_push_subscription DROP FOREIGN KEY /*_*/echo_push_subscription_ibfk_1;
|
||||
ALTER TABLE /*_*/echo_push_subscription DROP FOREIGN KEY /*_*/echo_push_subscription_ibfk_2;
|
||||
|
||||
-- Rename index to match table prefix
|
||||
DROP INDEX /*i*/echo_push_subscription_user_id ON /*_*/echo_push_subscription;
|
||||
CREATE INDEX /*i*/eps_user ON /*_*/echo_push_subscription (eps_user);
|
||||
|
||||
DROP INDEX /*i*/echo_push_subscription_token ON /*_*/echo_push_subscription;
|
||||
CREATE INDEX /*i*/eps_token ON /*_*/echo_push_subscription (eps_token(10));
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE echo_push_subscription
|
||||
ADD COLUMN eps_topic TINYINT UNSIGNED;
|
||||
CREATE INDEX /*i*/eps_topic ON /*_*/echo_push_subscription (eps_topic);
|
|
@ -0,0 +1,2 @@
|
|||
-- Rename index to match table prefix - T306473
|
||||
CREATE INDEX /*i*/eps_token ON /*_*/echo_push_subscription (eps_token(10));
|
|
@ -0,0 +1,2 @@
|
|||
-- Drop foreign keys from echo_push_subscription - T306473
|
||||
ALTER TABLE /*_*/echo_push_subscription DROP FOREIGN KEY /*_*/echo_push_subscription_ibfk_1;
|
|
@ -0,0 +1,2 @@
|
|||
-- Drop foreign keys from echo_push_subscription - T306473 / T322143
|
||||
ALTER TABLE /*_*/echo_push_subscription DROP FOREIGN KEY /*_*/echo_push_subscription_ibfk_2;
|
|
@ -0,0 +1,2 @@
|
|||
-- Rename index to match table prefix - T306473
|
||||
DROP INDEX /*i*/echo_push_subscription_token ON /*_*/echo_push_subscription;
|
|
@ -0,0 +1,3 @@
|
|||
-- Rename index to match table prefix - T306473
|
||||
DROP INDEX /*i*/echo_push_subscription_user_id ON /*_*/echo_push_subscription;
|
||||
CREATE INDEX /*i*/eps_user ON /*_*/echo_push_subscription (eps_user);
|
Loading…
Reference in a new issue