Add a new column user_agent_type to statistics tables
[MAILPOET-3736]
This commit is contained in:
@@ -68,6 +68,7 @@ class Migrator {
|
|||||||
}
|
}
|
||||||
$this->updateNullInUnsubscribeStats();
|
$this->updateNullInUnsubscribeStats();
|
||||||
$this->fixScheduledTasksSubscribersTimestampColumns();
|
$this->fixScheduledTasksSubscribersTimestampColumns();
|
||||||
|
$this->removeDeprecatedStatisticsIndexes();
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -427,11 +428,12 @@ class Migrator {
|
|||||||
'queue_id int(11) unsigned NOT NULL,',
|
'queue_id int(11) unsigned NOT NULL,',
|
||||||
'link_id int(11) unsigned NOT NULL,',
|
'link_id int(11) unsigned NOT NULL,',
|
||||||
'user_agent_id int(11) unsigned NULL,',
|
'user_agent_id int(11) unsigned NULL,',
|
||||||
|
'user_agent_type varchar(50) NULL,',
|
||||||
'count int(11) unsigned NOT NULL,',
|
'count int(11) unsigned NOT NULL,',
|
||||||
'created_at timestamp NULL,', // must be NULL, see comment at the top
|
'created_at timestamp NULL,', // must be NULL, see comment at the top
|
||||||
'updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
|
'updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
|
||||||
'PRIMARY KEY (id),',
|
'PRIMARY KEY (id),',
|
||||||
'KEY newsletter_id_subscriber_id (newsletter_id, subscriber_id),',
|
'KEY newsletter_id_subscriber_id_user_agent_type (newsletter_id, subscriber_id, user_agent_type),',
|
||||||
'KEY queue_id (queue_id),',
|
'KEY queue_id (queue_id),',
|
||||||
'KEY subscriber_id (subscriber_id)',
|
'KEY subscriber_id (subscriber_id)',
|
||||||
];
|
];
|
||||||
@@ -445,9 +447,10 @@ class Migrator {
|
|||||||
'subscriber_id int(11) unsigned NOT NULL,',
|
'subscriber_id int(11) unsigned NOT NULL,',
|
||||||
'queue_id int(11) unsigned NOT NULL,',
|
'queue_id int(11) unsigned NOT NULL,',
|
||||||
'user_agent_id int(11) unsigned NULL,',
|
'user_agent_id int(11) unsigned NULL,',
|
||||||
|
'user_agent_type varchar(50) NULL,',
|
||||||
'created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,',
|
'created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,',
|
||||||
'PRIMARY KEY (id),',
|
'PRIMARY KEY (id),',
|
||||||
'KEY newsletter_id_subscriber_id (newsletter_id, subscriber_id),',
|
'KEY newsletter_id_subscriber_id_user_agent_type (newsletter_id, subscriber_id, user_agent_type),',
|
||||||
'KEY queue_id (queue_id),',
|
'KEY queue_id (queue_id),',
|
||||||
'KEY subscriber_id (subscriber_id),',
|
'KEY subscriber_id (subscriber_id),',
|
||||||
'KEY created_at (created_at),',
|
'KEY created_at (created_at),',
|
||||||
@@ -645,4 +648,36 @@ class Migrator {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function removeDeprecatedStatisticsIndexes(): bool {
|
||||||
|
global $wpdb;
|
||||||
|
// skip the migration if the DB version is higher than 3.67.1 or is not set (a new install)
|
||||||
|
if (version_compare($this->settings->get('db_version', '3.67.1'), '3.67.1', '>')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$dbName = Env::$dbName;
|
||||||
|
$statisticsTables = [
|
||||||
|
"{$this->prefix}statistics_clicks",
|
||||||
|
"{$this->prefix}statistics_opens",
|
||||||
|
];
|
||||||
|
foreach ($statisticsTables as $statisticsTable) {
|
||||||
|
$oldStatisticsIndexExists = $wpdb->get_results("
|
||||||
|
SELECT DISTINCT INDEX_NAME
|
||||||
|
FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
|
WHERE TABLE_SCHEMA = '{$dbName}'
|
||||||
|
AND TABLE_NAME = '$statisticsTable'
|
||||||
|
AND INDEX_NAME='newsletter_id_subscriber_id'
|
||||||
|
");
|
||||||
|
if (!empty($oldStatisticsIndexExists)) {
|
||||||
|
$dropIndexQuery = "
|
||||||
|
ALTER TABLE `{$statisticsTable}`
|
||||||
|
DROP INDEX `newsletter_id_subscriber_id`
|
||||||
|
";
|
||||||
|
$wpdb->query($dropIndexQuery);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user