WordPress Version: 5.4
/**
* Runs before the schema is upgraded.
*
* @since 2.9.0
*
* @global int $wp_current_db_version The old (current) database version.
* @global wpdb $wpdb WordPress database abstraction object.
*/
function pre_schema_upgrade()
{
global $wp_current_db_version, $wpdb;
// Upgrade versions prior to 2.9.
if ($wp_current_db_version < 11557) {
// Delete duplicate options. Keep the option with the highest option_id.
$wpdb->query("DELETE o1 FROM {$wpdb->options} AS o1 JOIN {$wpdb->options} AS o2 USING (`option_name`) WHERE o2.option_id > o1.option_id");
// Drop the old primary key and add the new.
$wpdb->query("ALTER TABLE {$wpdb->options} DROP PRIMARY KEY, ADD PRIMARY KEY(option_id)");
// Drop the old option_name index. dbDelta() doesn't do the drop.
$wpdb->query("ALTER TABLE {$wpdb->options} DROP INDEX option_name");
}
// Multisite schema upgrades.
if ($wp_current_db_version < 25448 && is_multisite() && wp_should_upgrade_global_tables()) {
// Upgrade versions prior to 3.7.
if ($wp_current_db_version < 25179) {
// New primary key for signups.
$wpdb->query("ALTER TABLE {$wpdb->signups} ADD signup_id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST");
$wpdb->query("ALTER TABLE {$wpdb->signups} DROP INDEX domain");
}
if ($wp_current_db_version < 25448) {
// Convert archived from enum to tinyint.
$wpdb->query("ALTER TABLE {$wpdb->blogs} CHANGE COLUMN archived archived varchar(1) NOT NULL default '0'");
$wpdb->query("ALTER TABLE {$wpdb->blogs} CHANGE COLUMN archived archived tinyint(2) NOT NULL default 0");
}
}
// Upgrade versions prior to 4.2.
if ($wp_current_db_version < 31351) {
if (!is_multisite() && wp_should_upgrade_global_tables()) {
$wpdb->query("ALTER TABLE {$wpdb->usermeta} DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))");
}
$wpdb->query("ALTER TABLE {$wpdb->terms} DROP INDEX slug, ADD INDEX slug(slug(191))");
$wpdb->query("ALTER TABLE {$wpdb->terms} DROP INDEX name, ADD INDEX name(name(191))");
$wpdb->query("ALTER TABLE {$wpdb->commentmeta} DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))");
$wpdb->query("ALTER TABLE {$wpdb->postmeta} DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))");
$wpdb->query("ALTER TABLE {$wpdb->posts} DROP INDEX post_name, ADD INDEX post_name(post_name(191))");
}
// Upgrade versions prior to 4.4.
if ($wp_current_db_version < 34978) {
// If compatible termmeta table is found, use it, but enforce a proper index and update collation.
if ($wpdb->get_var("SHOW TABLES LIKE '{$wpdb->termmeta}'") && $wpdb->get_results("SHOW INDEX FROM {$wpdb->termmeta} WHERE Column_name = 'meta_key'")) {
$wpdb->query("ALTER TABLE {$wpdb->termmeta} DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))");
maybe_convert_table_to_utf8mb4($wpdb->termmeta);
}
}
}