upgrade_230

The timeline below displays how wordpress function upgrade_230 has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.4

/**
 * Execute changes made in WordPress 2.3.
 *
 * @ignore
 * @since 2.3.0
 *
 * @global int  $wp_current_db_version The old (current) database version.
 * @global wpdb $wpdb                  WordPress database abstraction object.
 */
function upgrade_230()
{
    global $wp_current_db_version, $wpdb;
    if ($wp_current_db_version < 5200) {
        populate_roles_230();
    }
    // Convert categories to terms.
    $tt_ids = array();
    $have_tags = false;
    $categories = $wpdb->get_results("SELECT * FROM {$wpdb->categories} ORDER BY cat_ID");
    foreach ($categories as $category) {
        $term_id = (int) $category->cat_ID;
        $name = $category->cat_name;
        $description = $category->category_description;
        $slug = $category->category_nicename;
        $parent = $category->category_parent;
        $term_group = 0;
        // Associate terms with the same slug in a term group and make slugs unique.
        $exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug));
        if ($exists) {
            $term_group = $exists[0]->term_group;
            $id = $exists[0]->term_id;
            $num = 2;
            do {
                $alt_slug = $slug . "-{$num}";
                ++$num;
                $slug_check = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE slug = %s", $alt_slug));
            } while ($slug_check);
            $slug = $alt_slug;
            if (empty($term_group)) {
                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM {$wpdb->terms} GROUP BY term_group") + 1;
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->terms} SET term_group = %d WHERE term_id = %d", $term_group, $id));
            }
        }
        $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES\n\t\t(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group));
        $count = 0;
        if (!empty($category->category_count)) {
            $count = (int) $category->category_count;
            $taxonomy = 'category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->link_count)) {
            $count = (int) $category->link_count;
            $taxonomy = 'link_category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->tag_count)) {
            $have_tags = true;
            $count = (int) $category->tag_count;
            $taxonomy = 'post_tag';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (empty($count)) {
            $count = 0;
            $taxonomy = 'category';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
    }
    $select = 'post_id, category_id';
    if ($have_tags) {
        $select .= ', rel_type';
    }
    $posts = $wpdb->get_results("SELECT {$select} FROM {$wpdb->post2cat} GROUP BY post_id, category_id");
    foreach ($posts as $post) {
        $post_id = (int) $post->post_id;
        $term_id = (int) $post->category_id;
        $taxonomy = 'category';
        if (!empty($post->rel_type) && 'tag' === $post->rel_type) {
            $taxonomy = 'tag';
        }
        $tt_id = $tt_ids[$term_id][$taxonomy];
        if (empty($tt_id)) {
            continue;
        }
        $wpdb->insert($wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id));
    }
    // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
    if ($wp_current_db_version < 3570) {
        /*
         * Create link_category terms for link categories. Create a map of link
         * category IDs to link_category terms.
         */
        $link_cat_id_map = array();
        $default_link_cat = 0;
        $tt_ids = array();
        $link_cats = $wpdb->get_results('SELECT cat_id, cat_name FROM ' . $wpdb->prefix . 'linkcategories');
        foreach ($link_cats as $category) {
            $cat_id = (int) $category->cat_id;
            $term_id = 0;
            $name = wp_slash($category->cat_name);
            $slug = sanitize_title($name);
            $term_group = 0;
            // Associate terms with the same slug in a term group and make slugs unique.
            $exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug));
            if ($exists) {
                $term_group = $exists[0]->term_group;
                $term_id = $exists[0]->term_id;
            }
            if (empty($term_id)) {
                $wpdb->insert($wpdb->terms, compact('name', 'slug', 'term_group'));
                $term_id = (int) $wpdb->insert_id;
            }
            $link_cat_id_map[$cat_id] = $term_id;
            $default_link_cat = $term_id;
            $wpdb->insert($wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0));
            $tt_ids[$term_id] = (int) $wpdb->insert_id;
        }
        // Associate links to categories.
        $links = $wpdb->get_results("SELECT link_id, link_category FROM {$wpdb->links}");
        if (!empty($links)) {
            foreach ($links as $link) {
                if (0 == $link->link_category) {
                    continue;
                }
                if (!isset($link_cat_id_map[$link->link_category])) {
                    continue;
                }
                $term_id = $link_cat_id_map[$link->link_category];
                $tt_id = $tt_ids[$term_id];
                if (empty($tt_id)) {
                    continue;
                }
                $wpdb->insert($wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id));
            }
        }
        // Set default to the last category we grabbed during the upgrade loop.
        update_option('default_link_category', $default_link_cat);
    } else {
        $links = $wpdb->get_results("SELECT link_id, category_id FROM {$wpdb->link2cat} GROUP BY link_id, category_id");
        foreach ($links as $link) {
            $link_id = (int) $link->link_id;
            $term_id = (int) $link->category_id;
            $taxonomy = 'link_category';
            $tt_id = $tt_ids[$term_id][$taxonomy];
            if (empty($tt_id)) {
                continue;
            }
            $wpdb->insert($wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id));
        }
    }
    if ($wp_current_db_version < 4772) {
        // Obsolete linkcategories table.
        $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
    }
    // Recalculate all counts.
    $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}");
    foreach ((array) $terms as $term) {
        if ('post_tag' === $term->taxonomy || 'category' === $term->taxonomy) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships}, {$wpdb->posts} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id));
        } else {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d", $term->term_taxonomy_id));
        }
        $wpdb->update($wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id));
    }
}

WordPress Version: 5.5

/**
 * Execute changes made in WordPress 2.3.
 *
 * @ignore
 * @since 2.3.0
 *
 * @global int  $wp_current_db_version The old (current) database version.
 * @global wpdb $wpdb                  WordPress database abstraction object.
 */
function upgrade_230()
{
    global $wp_current_db_version, $wpdb;
    if ($wp_current_db_version < 5200) {
        populate_roles_230();
    }
    // Convert categories to terms.
    $tt_ids = array();
    $have_tags = false;
    $categories = $wpdb->get_results("SELECT * FROM {$wpdb->categories} ORDER BY cat_ID");
    foreach ($categories as $category) {
        $term_id = (int) $category->cat_ID;
        $name = $category->cat_name;
        $description = $category->category_description;
        $slug = $category->category_nicename;
        $parent = $category->category_parent;
        $term_group = 0;
        // Associate terms with the same slug in a term group and make slugs unique.
        $exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug));
        if ($exists) {
            $term_group = $exists[0]->term_group;
            $id = $exists[0]->term_id;
            $num = 2;
            do {
                $alt_slug = $slug . "-{$num}";
                $num++;
                $slug_check = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE slug = %s", $alt_slug));
            } while ($slug_check);
            $slug = $alt_slug;
            if (empty($term_group)) {
                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM {$wpdb->terms} GROUP BY term_group") + 1;
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->terms} SET term_group = %d WHERE term_id = %d", $term_group, $id));
            }
        }
        $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES\n\t\t(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group));
        $count = 0;
        if (!empty($category->category_count)) {
            $count = (int) $category->category_count;
            $taxonomy = 'category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->link_count)) {
            $count = (int) $category->link_count;
            $taxonomy = 'link_category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->tag_count)) {
            $have_tags = true;
            $count = (int) $category->tag_count;
            $taxonomy = 'post_tag';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (empty($count)) {
            $count = 0;
            $taxonomy = 'category';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
    }
    $select = 'post_id, category_id';
    if ($have_tags) {
        $select .= ', rel_type';
    }
    $posts = $wpdb->get_results("SELECT {$select} FROM {$wpdb->post2cat} GROUP BY post_id, category_id");
    foreach ($posts as $post) {
        $post_id = (int) $post->post_id;
        $term_id = (int) $post->category_id;
        $taxonomy = 'category';
        if (!empty($post->rel_type) && 'tag' === $post->rel_type) {
            $taxonomy = 'tag';
        }
        $tt_id = $tt_ids[$term_id][$taxonomy];
        if (empty($tt_id)) {
            continue;
        }
        $wpdb->insert($wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id));
    }
    // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
    if ($wp_current_db_version < 3570) {
        /*
         * Create link_category terms for link categories. Create a map of link
         * category IDs to link_category terms.
         */
        $link_cat_id_map = array();
        $default_link_cat = 0;
        $tt_ids = array();
        $link_cats = $wpdb->get_results('SELECT cat_id, cat_name FROM ' . $wpdb->prefix . 'linkcategories');
        foreach ($link_cats as $category) {
            $cat_id = (int) $category->cat_id;
            $term_id = 0;
            $name = wp_slash($category->cat_name);
            $slug = sanitize_title($name);
            $term_group = 0;
            // Associate terms with the same slug in a term group and make slugs unique.
            $exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug));
            if ($exists) {
                $term_group = $exists[0]->term_group;
                $term_id = $exists[0]->term_id;
            }
            if (empty($term_id)) {
                $wpdb->insert($wpdb->terms, compact('name', 'slug', 'term_group'));
                $term_id = (int) $wpdb->insert_id;
            }
            $link_cat_id_map[$cat_id] = $term_id;
            $default_link_cat = $term_id;
            $wpdb->insert($wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0));
            $tt_ids[$term_id] = (int) $wpdb->insert_id;
        }
        // Associate links to categories.
        $links = $wpdb->get_results("SELECT link_id, link_category FROM {$wpdb->links}");
        if (!empty($links)) {
            foreach ($links as $link) {
                if (0 == $link->link_category) {
                    continue;
                }
                if (!isset($link_cat_id_map[$link->link_category])) {
                    continue;
                }
                $term_id = $link_cat_id_map[$link->link_category];
                $tt_id = $tt_ids[$term_id];
                if (empty($tt_id)) {
                    continue;
                }
                $wpdb->insert($wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id));
            }
        }
        // Set default to the last category we grabbed during the upgrade loop.
        update_option('default_link_category', $default_link_cat);
    } else {
        $links = $wpdb->get_results("SELECT link_id, category_id FROM {$wpdb->link2cat} GROUP BY link_id, category_id");
        foreach ($links as $link) {
            $link_id = (int) $link->link_id;
            $term_id = (int) $link->category_id;
            $taxonomy = 'link_category';
            $tt_id = $tt_ids[$term_id][$taxonomy];
            if (empty($tt_id)) {
                continue;
            }
            $wpdb->insert($wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id));
        }
    }
    if ($wp_current_db_version < 4772) {
        // Obsolete linkcategories table.
        $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
    }
    // Recalculate all counts.
    $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}");
    foreach ((array) $terms as $term) {
        if ('post_tag' === $term->taxonomy || 'category' === $term->taxonomy) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships}, {$wpdb->posts} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id));
        } else {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d", $term->term_taxonomy_id));
        }
        $wpdb->update($wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id));
    }
}

WordPress Version: 5.4

/**
 * Execute changes made in WordPress 2.3.
 *
 * @ignore
 * @since 2.3.0
 *
 * @global int  $wp_current_db_version The old (current) database version.
 * @global wpdb $wpdb                  WordPress database abstraction object.
 */
function upgrade_230()
{
    global $wp_current_db_version, $wpdb;
    if ($wp_current_db_version < 5200) {
        populate_roles_230();
    }
    // Convert categories to terms.
    $tt_ids = array();
    $have_tags = false;
    $categories = $wpdb->get_results("SELECT * FROM {$wpdb->categories} ORDER BY cat_ID");
    foreach ($categories as $category) {
        $term_id = (int) $category->cat_ID;
        $name = $category->cat_name;
        $description = $category->category_description;
        $slug = $category->category_nicename;
        $parent = $category->category_parent;
        $term_group = 0;
        // Associate terms with the same slug in a term group and make slugs unique.
        $exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug));
        if ($exists) {
            $term_group = $exists[0]->term_group;
            $id = $exists[0]->term_id;
            $num = 2;
            do {
                $alt_slug = $slug . "-{$num}";
                $num++;
                $slug_check = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE slug = %s", $alt_slug));
            } while ($slug_check);
            $slug = $alt_slug;
            if (empty($term_group)) {
                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM {$wpdb->terms} GROUP BY term_group") + 1;
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->terms} SET term_group = %d WHERE term_id = %d", $term_group, $id));
            }
        }
        $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES\n\t\t(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group));
        $count = 0;
        if (!empty($category->category_count)) {
            $count = (int) $category->category_count;
            $taxonomy = 'category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->link_count)) {
            $count = (int) $category->link_count;
            $taxonomy = 'link_category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->tag_count)) {
            $have_tags = true;
            $count = (int) $category->tag_count;
            $taxonomy = 'post_tag';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (empty($count)) {
            $count = 0;
            $taxonomy = 'category';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
    }
    $select = 'post_id, category_id';
    if ($have_tags) {
        $select .= ', rel_type';
    }
    $posts = $wpdb->get_results("SELECT {$select} FROM {$wpdb->post2cat} GROUP BY post_id, category_id");
    foreach ($posts as $post) {
        $post_id = (int) $post->post_id;
        $term_id = (int) $post->category_id;
        $taxonomy = 'category';
        if (!empty($post->rel_type) && 'tag' == $post->rel_type) {
            $taxonomy = 'tag';
        }
        $tt_id = $tt_ids[$term_id][$taxonomy];
        if (empty($tt_id)) {
            continue;
        }
        $wpdb->insert($wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id));
    }
    // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
    if ($wp_current_db_version < 3570) {
        /*
         * Create link_category terms for link categories. Create a map of link
         * category IDs to link_category terms.
         */
        $link_cat_id_map = array();
        $default_link_cat = 0;
        $tt_ids = array();
        $link_cats = $wpdb->get_results('SELECT cat_id, cat_name FROM ' . $wpdb->prefix . 'linkcategories');
        foreach ($link_cats as $category) {
            $cat_id = (int) $category->cat_id;
            $term_id = 0;
            $name = wp_slash($category->cat_name);
            $slug = sanitize_title($name);
            $term_group = 0;
            // Associate terms with the same slug in a term group and make slugs unique.
            $exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug));
            if ($exists) {
                $term_group = $exists[0]->term_group;
                $term_id = $exists[0]->term_id;
            }
            if (empty($term_id)) {
                $wpdb->insert($wpdb->terms, compact('name', 'slug', 'term_group'));
                $term_id = (int) $wpdb->insert_id;
            }
            $link_cat_id_map[$cat_id] = $term_id;
            $default_link_cat = $term_id;
            $wpdb->insert($wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0));
            $tt_ids[$term_id] = (int) $wpdb->insert_id;
        }
        // Associate links to categories.
        $links = $wpdb->get_results("SELECT link_id, link_category FROM {$wpdb->links}");
        if (!empty($links)) {
            foreach ($links as $link) {
                if (0 == $link->link_category) {
                    continue;
                }
                if (!isset($link_cat_id_map[$link->link_category])) {
                    continue;
                }
                $term_id = $link_cat_id_map[$link->link_category];
                $tt_id = $tt_ids[$term_id];
                if (empty($tt_id)) {
                    continue;
                }
                $wpdb->insert($wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id));
            }
        }
        // Set default to the last category we grabbed during the upgrade loop.
        update_option('default_link_category', $default_link_cat);
    } else {
        $links = $wpdb->get_results("SELECT link_id, category_id FROM {$wpdb->link2cat} GROUP BY link_id, category_id");
        foreach ($links as $link) {
            $link_id = (int) $link->link_id;
            $term_id = (int) $link->category_id;
            $taxonomy = 'link_category';
            $tt_id = $tt_ids[$term_id][$taxonomy];
            if (empty($tt_id)) {
                continue;
            }
            $wpdb->insert($wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id));
        }
    }
    if ($wp_current_db_version < 4772) {
        // Obsolete linkcategories table.
        $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
    }
    // Recalculate all counts.
    $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}");
    foreach ((array) $terms as $term) {
        if ('post_tag' == $term->taxonomy || 'category' == $term->taxonomy) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships}, {$wpdb->posts} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id));
        } else {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d", $term->term_taxonomy_id));
        }
        $wpdb->update($wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id));
    }
}

WordPress Version: 5.3

/**
 * Execute changes made in WordPress 2.3.
 *
 * @ignore
 * @since 2.3.0
 *
 * @global int  $wp_current_db_version The old (current) database version.
 * @global wpdb $wpdb                  WordPress database abstraction object.
 */
function upgrade_230()
{
    global $wp_current_db_version, $wpdb;
    if ($wp_current_db_version < 5200) {
        populate_roles_230();
    }
    // Convert categories to terms.
    $tt_ids = array();
    $have_tags = false;
    $categories = $wpdb->get_results("SELECT * FROM {$wpdb->categories} ORDER BY cat_ID");
    foreach ($categories as $category) {
        $term_id = (int) $category->cat_ID;
        $name = $category->cat_name;
        $description = $category->category_description;
        $slug = $category->category_nicename;
        $parent = $category->category_parent;
        $term_group = 0;
        // Associate terms with the same slug in a term group and make slugs unique.
        $exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug));
        if ($exists) {
            $term_group = $exists[0]->term_group;
            $id = $exists[0]->term_id;
            $num = 2;
            do {
                $alt_slug = $slug . "-{$num}";
                $num++;
                $slug_check = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE slug = %s", $alt_slug));
            } while ($slug_check);
            $slug = $alt_slug;
            if (empty($term_group)) {
                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM {$wpdb->terms} GROUP BY term_group") + 1;
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->terms} SET term_group = %d WHERE term_id = %d", $term_group, $id));
            }
        }
        $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES\n\t\t(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group));
        $count = 0;
        if (!empty($category->category_count)) {
            $count = (int) $category->category_count;
            $taxonomy = 'category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->link_count)) {
            $count = (int) $category->link_count;
            $taxonomy = 'link_category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->tag_count)) {
            $have_tags = true;
            $count = (int) $category->tag_count;
            $taxonomy = 'post_tag';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (empty($count)) {
            $count = 0;
            $taxonomy = 'category';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
    }
    $select = 'post_id, category_id';
    if ($have_tags) {
        $select .= ', rel_type';
    }
    $posts = $wpdb->get_results("SELECT {$select} FROM {$wpdb->post2cat} GROUP BY post_id, category_id");
    foreach ($posts as $post) {
        $post_id = (int) $post->post_id;
        $term_id = (int) $post->category_id;
        $taxonomy = 'category';
        if (!empty($post->rel_type) && 'tag' == $post->rel_type) {
            $taxonomy = 'tag';
        }
        $tt_id = $tt_ids[$term_id][$taxonomy];
        if (empty($tt_id)) {
            continue;
        }
        $wpdb->insert($wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id));
    }
    // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
    if ($wp_current_db_version < 3570) {
        /*
         * Create link_category terms for link categories. Create a map of link
         * cat IDs to link_category terms.
         */
        $link_cat_id_map = array();
        $default_link_cat = 0;
        $tt_ids = array();
        $link_cats = $wpdb->get_results('SELECT cat_id, cat_name FROM ' . $wpdb->prefix . 'linkcategories');
        foreach ($link_cats as $category) {
            $cat_id = (int) $category->cat_id;
            $term_id = 0;
            $name = wp_slash($category->cat_name);
            $slug = sanitize_title($name);
            $term_group = 0;
            // Associate terms with the same slug in a term group and make slugs unique.
            $exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug));
            if ($exists) {
                $term_group = $exists[0]->term_group;
                $term_id = $exists[0]->term_id;
            }
            if (empty($term_id)) {
                $wpdb->insert($wpdb->terms, compact('name', 'slug', 'term_group'));
                $term_id = (int) $wpdb->insert_id;
            }
            $link_cat_id_map[$cat_id] = $term_id;
            $default_link_cat = $term_id;
            $wpdb->insert($wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0));
            $tt_ids[$term_id] = (int) $wpdb->insert_id;
        }
        // Associate links to cats.
        $links = $wpdb->get_results("SELECT link_id, link_category FROM {$wpdb->links}");
        if (!empty($links)) {
            foreach ($links as $link) {
                if (0 == $link->link_category) {
                    continue;
                }
                if (!isset($link_cat_id_map[$link->link_category])) {
                    continue;
                }
                $term_id = $link_cat_id_map[$link->link_category];
                $tt_id = $tt_ids[$term_id];
                if (empty($tt_id)) {
                    continue;
                }
                $wpdb->insert($wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id));
            }
        }
        // Set default to the last category we grabbed during the upgrade loop.
        update_option('default_link_category', $default_link_cat);
    } else {
        $links = $wpdb->get_results("SELECT link_id, category_id FROM {$wpdb->link2cat} GROUP BY link_id, category_id");
        foreach ($links as $link) {
            $link_id = (int) $link->link_id;
            $term_id = (int) $link->category_id;
            $taxonomy = 'link_category';
            $tt_id = $tt_ids[$term_id][$taxonomy];
            if (empty($tt_id)) {
                continue;
            }
            $wpdb->insert($wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id));
        }
    }
    if ($wp_current_db_version < 4772) {
        // Obsolete linkcategories table
        $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
    }
    // Recalculate all counts
    $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}");
    foreach ((array) $terms as $term) {
        if ('post_tag' == $term->taxonomy || 'category' == $term->taxonomy) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships}, {$wpdb->posts} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id));
        } else {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d", $term->term_taxonomy_id));
        }
        $wpdb->update($wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id));
    }
}

WordPress Version: 5.1

/**
 * Execute changes made in WordPress 2.3.
 *
 * @ignore
 * @since 2.3.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 * @global int  $wp_current_db_version
 */
function upgrade_230()
{
    global $wp_current_db_version, $wpdb;
    if ($wp_current_db_version < 5200) {
        populate_roles_230();
    }
    // Convert categories to terms.
    $tt_ids = array();
    $have_tags = false;
    $categories = $wpdb->get_results("SELECT * FROM {$wpdb->categories} ORDER BY cat_ID");
    foreach ($categories as $category) {
        $term_id = (int) $category->cat_ID;
        $name = $category->cat_name;
        $description = $category->category_description;
        $slug = $category->category_nicename;
        $parent = $category->category_parent;
        $term_group = 0;
        // Associate terms with the same slug in a term group and make slugs unique.
        if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
            $term_group = $exists[0]->term_group;
            $id = $exists[0]->term_id;
            $num = 2;
            do {
                $alt_slug = $slug . "-{$num}";
                $num++;
                $slug_check = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE slug = %s", $alt_slug));
            } while ($slug_check);
            $slug = $alt_slug;
            if (empty($term_group)) {
                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM {$wpdb->terms} GROUP BY term_group") + 1;
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->terms} SET term_group = %d WHERE term_id = %d", $term_group, $id));
            }
        }
        $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES\n\t\t(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group));
        $count = 0;
        if (!empty($category->category_count)) {
            $count = (int) $category->category_count;
            $taxonomy = 'category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->link_count)) {
            $count = (int) $category->link_count;
            $taxonomy = 'link_category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->tag_count)) {
            $have_tags = true;
            $count = (int) $category->tag_count;
            $taxonomy = 'post_tag';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (empty($count)) {
            $count = 0;
            $taxonomy = 'category';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
    }
    $select = 'post_id, category_id';
    if ($have_tags) {
        $select .= ', rel_type';
    }
    $posts = $wpdb->get_results("SELECT {$select} FROM {$wpdb->post2cat} GROUP BY post_id, category_id");
    foreach ($posts as $post) {
        $post_id = (int) $post->post_id;
        $term_id = (int) $post->category_id;
        $taxonomy = 'category';
        if (!empty($post->rel_type) && 'tag' == $post->rel_type) {
            $taxonomy = 'tag';
        }
        $tt_id = $tt_ids[$term_id][$taxonomy];
        if (empty($tt_id)) {
            continue;
        }
        $wpdb->insert($wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id));
    }
    // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
    if ($wp_current_db_version < 3570) {
        /*
         * Create link_category terms for link categories. Create a map of link
         * cat IDs to link_category terms.
         */
        $link_cat_id_map = array();
        $default_link_cat = 0;
        $tt_ids = array();
        $link_cats = $wpdb->get_results('SELECT cat_id, cat_name FROM ' . $wpdb->prefix . 'linkcategories');
        foreach ($link_cats as $category) {
            $cat_id = (int) $category->cat_id;
            $term_id = 0;
            $name = wp_slash($category->cat_name);
            $slug = sanitize_title($name);
            $term_group = 0;
            // Associate terms with the same slug in a term group and make slugs unique.
            if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
                $term_group = $exists[0]->term_group;
                $term_id = $exists[0]->term_id;
            }
            if (empty($term_id)) {
                $wpdb->insert($wpdb->terms, compact('name', 'slug', 'term_group'));
                $term_id = (int) $wpdb->insert_id;
            }
            $link_cat_id_map[$cat_id] = $term_id;
            $default_link_cat = $term_id;
            $wpdb->insert($wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0));
            $tt_ids[$term_id] = (int) $wpdb->insert_id;
        }
        // Associate links to cats.
        $links = $wpdb->get_results("SELECT link_id, link_category FROM {$wpdb->links}");
        if (!empty($links)) {
            foreach ($links as $link) {
                if (0 == $link->link_category) {
                    continue;
                }
                if (!isset($link_cat_id_map[$link->link_category])) {
                    continue;
                }
                $term_id = $link_cat_id_map[$link->link_category];
                $tt_id = $tt_ids[$term_id];
                if (empty($tt_id)) {
                    continue;
                }
                $wpdb->insert($wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id));
            }
        }
        // Set default to the last category we grabbed during the upgrade loop.
        update_option('default_link_category', $default_link_cat);
    } else {
        $links = $wpdb->get_results("SELECT link_id, category_id FROM {$wpdb->link2cat} GROUP BY link_id, category_id");
        foreach ($links as $link) {
            $link_id = (int) $link->link_id;
            $term_id = (int) $link->category_id;
            $taxonomy = 'link_category';
            $tt_id = $tt_ids[$term_id][$taxonomy];
            if (empty($tt_id)) {
                continue;
            }
            $wpdb->insert($wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id));
        }
    }
    if ($wp_current_db_version < 4772) {
        // Obsolete linkcategories table
        $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
    }
    // Recalculate all counts
    $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}");
    foreach ((array) $terms as $term) {
        if ('post_tag' == $term->taxonomy || 'category' == $term->taxonomy) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships}, {$wpdb->posts} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id));
        } else {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d", $term->term_taxonomy_id));
        }
        $wpdb->update($wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id));
    }
}

WordPress Version: 4.5

/**
 * Execute changes made in WordPress 2.3.
 *
 * @ignore
 * @since 2.3.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 * @global int  $wp_current_db_version
 */
function upgrade_230()
{
    global $wp_current_db_version, $wpdb;
    if ($wp_current_db_version < 5200) {
        populate_roles_230();
    }
    // Convert categories to terms.
    $tt_ids = array();
    $have_tags = false;
    $categories = $wpdb->get_results("SELECT * FROM {$wpdb->categories} ORDER BY cat_ID");
    foreach ($categories as $category) {
        $term_id = (int) $category->cat_ID;
        $name = $category->cat_name;
        $description = $category->category_description;
        $slug = $category->category_nicename;
        $parent = $category->category_parent;
        $term_group = 0;
        // Associate terms with the same slug in a term group and make slugs unique.
        if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
            $term_group = $exists[0]->term_group;
            $id = $exists[0]->term_id;
            $num = 2;
            do {
                $alt_slug = $slug . "-{$num}";
                $num++;
                $slug_check = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE slug = %s", $alt_slug));
            } while ($slug_check);
            $slug = $alt_slug;
            if (empty($term_group)) {
                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM {$wpdb->terms} GROUP BY term_group") + 1;
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->terms} SET term_group = %d WHERE term_id = %d", $term_group, $id));
            }
        }
        $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES\n\t\t(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group));
        $count = 0;
        if (!empty($category->category_count)) {
            $count = (int) $category->category_count;
            $taxonomy = 'category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->link_count)) {
            $count = (int) $category->link_count;
            $taxonomy = 'link_category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->tag_count)) {
            $have_tags = true;
            $count = (int) $category->tag_count;
            $taxonomy = 'post_tag';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (empty($count)) {
            $count = 0;
            $taxonomy = 'category';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
    }
    $select = 'post_id, category_id';
    if ($have_tags) {
        $select .= ', rel_type';
    }
    $posts = $wpdb->get_results("SELECT {$select} FROM {$wpdb->post2cat} GROUP BY post_id, category_id");
    foreach ($posts as $post) {
        $post_id = (int) $post->post_id;
        $term_id = (int) $post->category_id;
        $taxonomy = 'category';
        if (!empty($post->rel_type) && 'tag' == $post->rel_type) {
            $taxonomy = 'tag';
        }
        $tt_id = $tt_ids[$term_id][$taxonomy];
        if (empty($tt_id)) {
            continue;
        }
        $wpdb->insert($wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id));
    }
    // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
    if ($wp_current_db_version < 3570) {
        /*
         * Create link_category terms for link categories. Create a map of link
         * cat IDs to link_category terms.
         */
        $link_cat_id_map = array();
        $default_link_cat = 0;
        $tt_ids = array();
        $link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM " . $wpdb->prefix . 'linkcategories');
        foreach ($link_cats as $category) {
            $cat_id = (int) $category->cat_id;
            $term_id = 0;
            $name = wp_slash($category->cat_name);
            $slug = sanitize_title($name);
            $term_group = 0;
            // Associate terms with the same slug in a term group and make slugs unique.
            if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
                $term_group = $exists[0]->term_group;
                $term_id = $exists[0]->term_id;
            }
            if (empty($term_id)) {
                $wpdb->insert($wpdb->terms, compact('name', 'slug', 'term_group'));
                $term_id = (int) $wpdb->insert_id;
            }
            $link_cat_id_map[$cat_id] = $term_id;
            $default_link_cat = $term_id;
            $wpdb->insert($wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0));
            $tt_ids[$term_id] = (int) $wpdb->insert_id;
        }
        // Associate links to cats.
        $links = $wpdb->get_results("SELECT link_id, link_category FROM {$wpdb->links}");
        if (!empty($links)) {
            foreach ($links as $link) {
                if (0 == $link->link_category) {
                    continue;
                }
                if (!isset($link_cat_id_map[$link->link_category])) {
                    continue;
                }
                $term_id = $link_cat_id_map[$link->link_category];
                $tt_id = $tt_ids[$term_id];
                if (empty($tt_id)) {
                    continue;
                }
                $wpdb->insert($wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id));
            }
        }
        // Set default to the last category we grabbed during the upgrade loop.
        update_option('default_link_category', $default_link_cat);
    } else {
        $links = $wpdb->get_results("SELECT link_id, category_id FROM {$wpdb->link2cat} GROUP BY link_id, category_id");
        foreach ($links as $link) {
            $link_id = (int) $link->link_id;
            $term_id = (int) $link->category_id;
            $taxonomy = 'link_category';
            $tt_id = $tt_ids[$term_id][$taxonomy];
            if (empty($tt_id)) {
                continue;
            }
            $wpdb->insert($wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id));
        }
    }
    if ($wp_current_db_version < 4772) {
        // Obsolete linkcategories table
        $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
    }
    // Recalculate all counts
    $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}");
    foreach ((array) $terms as $term) {
        if ('post_tag' == $term->taxonomy || 'category' == $term->taxonomy) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships}, {$wpdb->posts} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id));
        } else {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d", $term->term_taxonomy_id));
        }
        $wpdb->update($wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id));
    }
}

WordPress Version: 4.4

/**
 * Execute changes made in WordPress 2.3.
 *
 * @since 2.3.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 * @global int  $wp_current_db_version
 */
function upgrade_230()
{
    global $wp_current_db_version, $wpdb;
    if ($wp_current_db_version < 5200) {
        populate_roles_230();
    }
    // Convert categories to terms.
    $tt_ids = array();
    $have_tags = false;
    $categories = $wpdb->get_results("SELECT * FROM {$wpdb->categories} ORDER BY cat_ID");
    foreach ($categories as $category) {
        $term_id = (int) $category->cat_ID;
        $name = $category->cat_name;
        $description = $category->category_description;
        $slug = $category->category_nicename;
        $parent = $category->category_parent;
        $term_group = 0;
        // Associate terms with the same slug in a term group and make slugs unique.
        if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
            $term_group = $exists[0]->term_group;
            $id = $exists[0]->term_id;
            $num = 2;
            do {
                $alt_slug = $slug . "-{$num}";
                $num++;
                $slug_check = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE slug = %s", $alt_slug));
            } while ($slug_check);
            $slug = $alt_slug;
            if (empty($term_group)) {
                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM {$wpdb->terms} GROUP BY term_group") + 1;
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->terms} SET term_group = %d WHERE term_id = %d", $term_group, $id));
            }
        }
        $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES\n\t\t(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group));
        $count = 0;
        if (!empty($category->category_count)) {
            $count = (int) $category->category_count;
            $taxonomy = 'category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->link_count)) {
            $count = (int) $category->link_count;
            $taxonomy = 'link_category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->tag_count)) {
            $have_tags = true;
            $count = (int) $category->tag_count;
            $taxonomy = 'post_tag';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (empty($count)) {
            $count = 0;
            $taxonomy = 'category';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
    }
    $select = 'post_id, category_id';
    if ($have_tags) {
        $select .= ', rel_type';
    }
    $posts = $wpdb->get_results("SELECT {$select} FROM {$wpdb->post2cat} GROUP BY post_id, category_id");
    foreach ($posts as $post) {
        $post_id = (int) $post->post_id;
        $term_id = (int) $post->category_id;
        $taxonomy = 'category';
        if (!empty($post->rel_type) && 'tag' == $post->rel_type) {
            $taxonomy = 'tag';
        }
        $tt_id = $tt_ids[$term_id][$taxonomy];
        if (empty($tt_id)) {
            continue;
        }
        $wpdb->insert($wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id));
    }
    // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
    if ($wp_current_db_version < 3570) {
        /*
         * Create link_category terms for link categories. Create a map of link
         * cat IDs to link_category terms.
         */
        $link_cat_id_map = array();
        $default_link_cat = 0;
        $tt_ids = array();
        $link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM " . $wpdb->prefix . 'linkcategories');
        foreach ($link_cats as $category) {
            $cat_id = (int) $category->cat_id;
            $term_id = 0;
            $name = wp_slash($category->cat_name);
            $slug = sanitize_title($name);
            $term_group = 0;
            // Associate terms with the same slug in a term group and make slugs unique.
            if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
                $term_group = $exists[0]->term_group;
                $term_id = $exists[0]->term_id;
            }
            if (empty($term_id)) {
                $wpdb->insert($wpdb->terms, compact('name', 'slug', 'term_group'));
                $term_id = (int) $wpdb->insert_id;
            }
            $link_cat_id_map[$cat_id] = $term_id;
            $default_link_cat = $term_id;
            $wpdb->insert($wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0));
            $tt_ids[$term_id] = (int) $wpdb->insert_id;
        }
        // Associate links to cats.
        $links = $wpdb->get_results("SELECT link_id, link_category FROM {$wpdb->links}");
        if (!empty($links)) {
            foreach ($links as $link) {
                if (0 == $link->link_category) {
                    continue;
                }
                if (!isset($link_cat_id_map[$link->link_category])) {
                    continue;
                }
                $term_id = $link_cat_id_map[$link->link_category];
                $tt_id = $tt_ids[$term_id];
                if (empty($tt_id)) {
                    continue;
                }
                $wpdb->insert($wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id));
            }
        }
        // Set default to the last category we grabbed during the upgrade loop.
        update_option('default_link_category', $default_link_cat);
    } else {
        $links = $wpdb->get_results("SELECT link_id, category_id FROM {$wpdb->link2cat} GROUP BY link_id, category_id");
        foreach ($links as $link) {
            $link_id = (int) $link->link_id;
            $term_id = (int) $link->category_id;
            $taxonomy = 'link_category';
            $tt_id = $tt_ids[$term_id][$taxonomy];
            if (empty($tt_id)) {
                continue;
            }
            $wpdb->insert($wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id));
        }
    }
    if ($wp_current_db_version < 4772) {
        // Obsolete linkcategories table
        $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
    }
    // Recalculate all counts
    $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}");
    foreach ((array) $terms as $term) {
        if ('post_tag' == $term->taxonomy || 'category' == $term->taxonomy) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships}, {$wpdb->posts} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id));
        } else {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d", $term->term_taxonomy_id));
        }
        $wpdb->update($wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id));
    }
}

WordPress Version: 4.3

/**
 * Execute changes made in WordPress 2.3.
 *
 * @since 2.3.0
 *
 * @global wpdb $wpdb
 * @global int  $wp_current_db_version
 */
function upgrade_230()
{
    global $wp_current_db_version, $wpdb;
    if ($wp_current_db_version < 5200) {
        populate_roles_230();
    }
    // Convert categories to terms.
    $tt_ids = array();
    $have_tags = false;
    $categories = $wpdb->get_results("SELECT * FROM {$wpdb->categories} ORDER BY cat_ID");
    foreach ($categories as $category) {
        $term_id = (int) $category->cat_ID;
        $name = $category->cat_name;
        $description = $category->category_description;
        $slug = $category->category_nicename;
        $parent = $category->category_parent;
        $term_group = 0;
        // Associate terms with the same slug in a term group and make slugs unique.
        if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
            $term_group = $exists[0]->term_group;
            $id = $exists[0]->term_id;
            $num = 2;
            do {
                $alt_slug = $slug . "-{$num}";
                $num++;
                $slug_check = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE slug = %s", $alt_slug));
            } while ($slug_check);
            $slug = $alt_slug;
            if (empty($term_group)) {
                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM {$wpdb->terms} GROUP BY term_group") + 1;
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->terms} SET term_group = %d WHERE term_id = %d", $term_group, $id));
            }
        }
        $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES\n\t\t(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group));
        $count = 0;
        if (!empty($category->category_count)) {
            $count = (int) $category->category_count;
            $taxonomy = 'category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->link_count)) {
            $count = (int) $category->link_count;
            $taxonomy = 'link_category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->tag_count)) {
            $have_tags = true;
            $count = (int) $category->tag_count;
            $taxonomy = 'post_tag';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (empty($count)) {
            $count = 0;
            $taxonomy = 'category';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
    }
    $select = 'post_id, category_id';
    if ($have_tags) {
        $select .= ', rel_type';
    }
    $posts = $wpdb->get_results("SELECT {$select} FROM {$wpdb->post2cat} GROUP BY post_id, category_id");
    foreach ($posts as $post) {
        $post_id = (int) $post->post_id;
        $term_id = (int) $post->category_id;
        $taxonomy = 'category';
        if (!empty($post->rel_type) && 'tag' == $post->rel_type) {
            $taxonomy = 'tag';
        }
        $tt_id = $tt_ids[$term_id][$taxonomy];
        if (empty($tt_id)) {
            continue;
        }
        $wpdb->insert($wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id));
    }
    // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
    if ($wp_current_db_version < 3570) {
        /*
         * Create link_category terms for link categories. Create a map of link
         * cat IDs to link_category terms.
         */
        $link_cat_id_map = array();
        $default_link_cat = 0;
        $tt_ids = array();
        $link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM " . $wpdb->prefix . 'linkcategories');
        foreach ($link_cats as $category) {
            $cat_id = (int) $category->cat_id;
            $term_id = 0;
            $name = wp_slash($category->cat_name);
            $slug = sanitize_title($name);
            $term_group = 0;
            // Associate terms with the same slug in a term group and make slugs unique.
            if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
                $term_group = $exists[0]->term_group;
                $term_id = $exists[0]->term_id;
            }
            if (empty($term_id)) {
                $wpdb->insert($wpdb->terms, compact('name', 'slug', 'term_group'));
                $term_id = (int) $wpdb->insert_id;
            }
            $link_cat_id_map[$cat_id] = $term_id;
            $default_link_cat = $term_id;
            $wpdb->insert($wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0));
            $tt_ids[$term_id] = (int) $wpdb->insert_id;
        }
        // Associate links to cats.
        $links = $wpdb->get_results("SELECT link_id, link_category FROM {$wpdb->links}");
        if (!empty($links)) {
            foreach ($links as $link) {
                if (0 == $link->link_category) {
                    continue;
                }
                if (!isset($link_cat_id_map[$link->link_category])) {
                    continue;
                }
                $term_id = $link_cat_id_map[$link->link_category];
                $tt_id = $tt_ids[$term_id];
                if (empty($tt_id)) {
                    continue;
                }
                $wpdb->insert($wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id));
            }
        }
        // Set default to the last category we grabbed during the upgrade loop.
        update_option('default_link_category', $default_link_cat);
    } else {
        $links = $wpdb->get_results("SELECT link_id, category_id FROM {$wpdb->link2cat} GROUP BY link_id, category_id");
        foreach ($links as $link) {
            $link_id = (int) $link->link_id;
            $term_id = (int) $link->category_id;
            $taxonomy = 'link_category';
            $tt_id = $tt_ids[$term_id][$taxonomy];
            if (empty($tt_id)) {
                continue;
            }
            $wpdb->insert($wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id));
        }
    }
    if ($wp_current_db_version < 4772) {
        // Obsolete linkcategories table
        $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
    }
    // Recalculate all counts
    $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}");
    foreach ((array) $terms as $term) {
        if ('post_tag' == $term->taxonomy || 'category' == $term->taxonomy) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships}, {$wpdb->posts} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id));
        } else {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d", $term->term_taxonomy_id));
        }
        $wpdb->update($wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id));
    }
}

WordPress Version: 4.0

/**
 * Execute changes made in WordPress 2.3.
 *
 * @since 2.3.0
 */
function upgrade_230()
{
    global $wp_current_db_version, $wpdb;
    if ($wp_current_db_version < 5200) {
        populate_roles_230();
    }
    // Convert categories to terms.
    $tt_ids = array();
    $have_tags = false;
    $categories = $wpdb->get_results("SELECT * FROM {$wpdb->categories} ORDER BY cat_ID");
    foreach ($categories as $category) {
        $term_id = (int) $category->cat_ID;
        $name = $category->cat_name;
        $description = $category->category_description;
        $slug = $category->category_nicename;
        $parent = $category->category_parent;
        $term_group = 0;
        // Associate terms with the same slug in a term group and make slugs unique.
        if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
            $term_group = $exists[0]->term_group;
            $id = $exists[0]->term_id;
            $num = 2;
            do {
                $alt_slug = $slug . "-{$num}";
                $num++;
                $slug_check = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE slug = %s", $alt_slug));
            } while ($slug_check);
            $slug = $alt_slug;
            if (empty($term_group)) {
                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM {$wpdb->terms} GROUP BY term_group") + 1;
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->terms} SET term_group = %d WHERE term_id = %d", $term_group, $id));
            }
        }
        $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES\n\t\t(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group));
        $count = 0;
        if (!empty($category->category_count)) {
            $count = (int) $category->category_count;
            $taxonomy = 'category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->link_count)) {
            $count = (int) $category->link_count;
            $taxonomy = 'link_category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->tag_count)) {
            $have_tags = true;
            $count = (int) $category->tag_count;
            $taxonomy = 'post_tag';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (empty($count)) {
            $count = 0;
            $taxonomy = 'category';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
    }
    $select = 'post_id, category_id';
    if ($have_tags) {
        $select .= ', rel_type';
    }
    $posts = $wpdb->get_results("SELECT {$select} FROM {$wpdb->post2cat} GROUP BY post_id, category_id");
    foreach ($posts as $post) {
        $post_id = (int) $post->post_id;
        $term_id = (int) $post->category_id;
        $taxonomy = 'category';
        if (!empty($post->rel_type) && 'tag' == $post->rel_type) {
            $taxonomy = 'tag';
        }
        $tt_id = $tt_ids[$term_id][$taxonomy];
        if (empty($tt_id)) {
            continue;
        }
        $wpdb->insert($wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id));
    }
    // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
    if ($wp_current_db_version < 3570) {
        /*
         * Create link_category terms for link categories. Create a map of link
         * cat IDs to link_category terms.
         */
        $link_cat_id_map = array();
        $default_link_cat = 0;
        $tt_ids = array();
        $link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM " . $wpdb->prefix . 'linkcategories');
        foreach ($link_cats as $category) {
            $cat_id = (int) $category->cat_id;
            $term_id = 0;
            $name = wp_slash($category->cat_name);
            $slug = sanitize_title($name);
            $term_group = 0;
            // Associate terms with the same slug in a term group and make slugs unique.
            if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
                $term_group = $exists[0]->term_group;
                $term_id = $exists[0]->term_id;
            }
            if (empty($term_id)) {
                $wpdb->insert($wpdb->terms, compact('name', 'slug', 'term_group'));
                $term_id = (int) $wpdb->insert_id;
            }
            $link_cat_id_map[$cat_id] = $term_id;
            $default_link_cat = $term_id;
            $wpdb->insert($wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0));
            $tt_ids[$term_id] = (int) $wpdb->insert_id;
        }
        // Associate links to cats.
        $links = $wpdb->get_results("SELECT link_id, link_category FROM {$wpdb->links}");
        if (!empty($links)) {
            foreach ($links as $link) {
                if (0 == $link->link_category) {
                    continue;
                }
                if (!isset($link_cat_id_map[$link->link_category])) {
                    continue;
                }
                $term_id = $link_cat_id_map[$link->link_category];
                $tt_id = $tt_ids[$term_id];
                if (empty($tt_id)) {
                    continue;
                }
                $wpdb->insert($wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id));
            }
        }
        // Set default to the last category we grabbed during the upgrade loop.
        update_option('default_link_category', $default_link_cat);
    } else {
        $links = $wpdb->get_results("SELECT link_id, category_id FROM {$wpdb->link2cat} GROUP BY link_id, category_id");
        foreach ($links as $link) {
            $link_id = (int) $link->link_id;
            $term_id = (int) $link->category_id;
            $taxonomy = 'link_category';
            $tt_id = $tt_ids[$term_id][$taxonomy];
            if (empty($tt_id)) {
                continue;
            }
            $wpdb->insert($wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id));
        }
    }
    if ($wp_current_db_version < 4772) {
        // Obsolete linkcategories table
        $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
    }
    // Recalculate all counts
    $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}");
    foreach ((array) $terms as $term) {
        if ('post_tag' == $term->taxonomy || 'category' == $term->taxonomy) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships}, {$wpdb->posts} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id));
        } else {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d", $term->term_taxonomy_id));
        }
        $wpdb->update($wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id));
    }
}

WordPress Version: 3.7

/**
 * Execute changes made in WordPress 2.3.
 *
 * @since 2.3.0
 */
function upgrade_230()
{
    global $wp_current_db_version, $wpdb;
    if ($wp_current_db_version < 5200) {
        populate_roles_230();
    }
    // Convert categories to terms.
    $tt_ids = array();
    $have_tags = false;
    $categories = $wpdb->get_results("SELECT * FROM {$wpdb->categories} ORDER BY cat_ID");
    foreach ($categories as $category) {
        $term_id = (int) $category->cat_ID;
        $name = $category->cat_name;
        $description = $category->category_description;
        $slug = $category->category_nicename;
        $parent = $category->category_parent;
        $term_group = 0;
        // Associate terms with the same slug in a term group and make slugs unique.
        if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
            $term_group = $exists[0]->term_group;
            $id = $exists[0]->term_id;
            $num = 2;
            do {
                $alt_slug = $slug . "-{$num}";
                $num++;
                $slug_check = $wpdb->get_var($wpdb->prepare("SELECT slug FROM {$wpdb->terms} WHERE slug = %s", $alt_slug));
            } while ($slug_check);
            $slug = $alt_slug;
            if (empty($term_group)) {
                $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM {$wpdb->terms} GROUP BY term_group") + 1;
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->terms} SET term_group = %d WHERE term_id = %d", $term_group, $id));
            }
        }
        $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->terms} (term_id, name, slug, term_group) VALUES\n\t\t(%d, %s, %s, %d)", $term_id, $name, $slug, $term_group));
        $count = 0;
        if (!empty($category->category_count)) {
            $count = (int) $category->category_count;
            $taxonomy = 'category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->link_count)) {
            $count = (int) $category->link_count;
            $taxonomy = 'link_category';
            $wpdb->query($wpdb->prepare("INSERT INTO {$wpdb->term_taxonomy} (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (!empty($category->tag_count)) {
            $have_tags = true;
            $count = (int) $category->tag_count;
            $taxonomy = 'post_tag';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
        if (empty($count)) {
            $count = 0;
            $taxonomy = 'category';
            $wpdb->insert($wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count'));
            $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id;
        }
    }
    $select = 'post_id, category_id';
    if ($have_tags) {
        $select .= ', rel_type';
    }
    $posts = $wpdb->get_results("SELECT {$select} FROM {$wpdb->post2cat} GROUP BY post_id, category_id");
    foreach ($posts as $post) {
        $post_id = (int) $post->post_id;
        $term_id = (int) $post->category_id;
        $taxonomy = 'category';
        if (!empty($post->rel_type) && 'tag' == $post->rel_type) {
            $taxonomy = 'tag';
        }
        $tt_id = $tt_ids[$term_id][$taxonomy];
        if (empty($tt_id)) {
            continue;
        }
        $wpdb->insert($wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id));
    }
    // < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
    if ($wp_current_db_version < 3570) {
        // Create link_category terms for link categories. Create a map of link cat IDs
        // to link_category terms.
        $link_cat_id_map = array();
        $default_link_cat = 0;
        $tt_ids = array();
        $link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM " . $wpdb->prefix . 'linkcategories');
        foreach ($link_cats as $category) {
            $cat_id = (int) $category->cat_id;
            $term_id = 0;
            $name = wp_slash($category->cat_name);
            $slug = sanitize_title($name);
            $term_group = 0;
            // Associate terms with the same slug in a term group and make slugs unique.
            if ($exists = $wpdb->get_results($wpdb->prepare("SELECT term_id, term_group FROM {$wpdb->terms} WHERE slug = %s", $slug))) {
                $term_group = $exists[0]->term_group;
                $term_id = $exists[0]->term_id;
            }
            if (empty($term_id)) {
                $wpdb->insert($wpdb->terms, compact('name', 'slug', 'term_group'));
                $term_id = (int) $wpdb->insert_id;
            }
            $link_cat_id_map[$cat_id] = $term_id;
            $default_link_cat = $term_id;
            $wpdb->insert($wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0));
            $tt_ids[$term_id] = (int) $wpdb->insert_id;
        }
        // Associate links to cats.
        $links = $wpdb->get_results("SELECT link_id, link_category FROM {$wpdb->links}");
        if (!empty($links)) {
            foreach ($links as $link) {
                if (0 == $link->link_category) {
                    continue;
                }
                if (!isset($link_cat_id_map[$link->link_category])) {
                    continue;
                }
                $term_id = $link_cat_id_map[$link->link_category];
                $tt_id = $tt_ids[$term_id];
                if (empty($tt_id)) {
                    continue;
                }
                $wpdb->insert($wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id));
            }
        }
        // Set default to the last category we grabbed during the upgrade loop.
        update_option('default_link_category', $default_link_cat);
    } else {
        $links = $wpdb->get_results("SELECT link_id, category_id FROM {$wpdb->link2cat} GROUP BY link_id, category_id");
        foreach ($links as $link) {
            $link_id = (int) $link->link_id;
            $term_id = (int) $link->category_id;
            $taxonomy = 'link_category';
            $tt_id = $tt_ids[$term_id][$taxonomy];
            if (empty($tt_id)) {
                continue;
            }
            $wpdb->insert($wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id));
        }
    }
    if ($wp_current_db_version < 4772) {
        // Obsolete linkcategories table
        $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories');
    }
    // Recalculate all counts
    $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}");
    foreach ((array) $terms as $term) {
        if ('post_tag' == $term->taxonomy || 'category' == $term->taxonomy) {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships}, {$wpdb->posts} WHERE {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id));
        } else {
            $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = %d", $term->term_taxonomy_id));
        }
        $wpdb->update($wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id));
    }
}