Make WordPress Core

Changeset 60497

Timestamp:
07/22/2025 05:46:31 PM (3 months ago)
Author:
johnjamesjacoby
Message:

Multisite: Enforce consistent types on ID columns in multisite database tables, to better allow for foreign keys to more reliably be defined between them.

This change adjusts the install & upgrade routines so all of ID-based database columns in the multisite database tables are unsigned, bringing them up-to-speed with ID-based columns in single-site tables.

Additionally, the $wp_db_version number is bumped, and the pre_schema_upgrade() upgrade function is modified to accommodate & use that new version.

Follow-up to [10852].

Props spacedmonkey, johnjamesjacoby.

Fixes #40418.

Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/schema.php

    r60421 r60497  
    246246    // Multisite global tables.
    247247    $ms_global_tables = "CREATE TABLE $wpdb->blogs (
    248     blog_id bigint(20) NOT NULL auto_increment,
    249     site_id bigint(20) NOT NULL default '0',
     248    blog_id bigint(20) unsigned NOT NULL auto_increment,
     249    site_id bigint(20) unsigned NOT NULL default '0',
    250250    domain varchar(200) NOT NULL default '',
    251251    path varchar(100) NOT NULL default '',
     
    264264CREATE TABLE $wpdb->blogmeta (
    265265    meta_id bigint(20) unsigned NOT NULL auto_increment,
    266     blog_id bigint(20) NOT NULL default '0',
     266    blog_id bigint(20) unsigned NOT NULL default '0',
    267267    meta_key varchar(255) default NULL,
    268268    meta_value longtext,
     
    272272) $charset_collate;
    273273CREATE TABLE $wpdb->registration_log (
    274     ID bigint(20) NOT NULL auto_increment,
     274    ID bigint(20) unsigned NOT NULL auto_increment,
    275275    email varchar(255) NOT NULL default '',
    276276    IP varchar(30) NOT NULL default '',
    277     blog_id bigint(20) NOT NULL default '0',
     277    blog_id bigint(20) unsigned NOT NULL default '0',
    278278    date_registered datetime NOT NULL default '0000-00-00 00:00:00',
    279279    PRIMARY KEY  (ID),
     
    281281) $charset_collate;
    282282CREATE TABLE $wpdb->site (
    283     id bigint(20) NOT NULL auto_increment,
     283    id bigint(20) unsigned NOT NULL auto_increment,
    284284    domain varchar(200) NOT NULL default '',
    285285    path varchar(100) NOT NULL default '',
     
    288288) $charset_collate;
    289289CREATE TABLE $wpdb->sitemeta (
    290     meta_id bigint(20) NOT NULL auto_increment,
    291     site_id bigint(20) NOT NULL default '0',
     290    meta_id bigint(20) unsigned NOT NULL auto_increment,
     291    site_id bigint(20) unsigned NOT NULL default '0',
    292292    meta_key varchar(255) default NULL,
    293293    meta_value longtext,
     
    297297) $charset_collate;
    298298CREATE TABLE $wpdb->signups (
    299     signup_id bigint(20) NOT NULL auto_increment,
     299    signup_id bigint(20) unsigned NOT NULL auto_increment,
    300300    domain varchar(200) NOT NULL default '',
    301301    path varchar(100) NOT NULL default '',
  • trunk/src/wp-admin/includes/upgrade.php

    r60421 r60497  
    37123712
    37133713    // Multisite schema upgrades.
    3714     if ( $wp_current_db_version < 25448 && is_multisite() && wp_should_upgrade_global_tables() ) {
     3714    if ( $wp_current_db_version < 60497 && is_multisite() && wp_should_upgrade_global_tables() ) {
    37153715
    37163716        // Upgrade versions prior to 3.7.
     
    37253725            $wpdb->query( "ALTER TABLE $wpdb->blogs CHANGE COLUMN archived archived varchar(1) NOT NULL default '0'" );
    37263726            $wpdb->query( "ALTER TABLE $wpdb->blogs CHANGE COLUMN archived archived tinyint(2) NOT NULL default 0" );
     3727        }
     3728
     3729        // Upgrade versions prior to 6.9
     3730        if ( $wp_current_db_version < 60497 ) {
     3731            // Convert ID columns from signed to unsigned
     3732            $wpdb->query( "ALTER TABLE $wpdb->blogs MODIFY blog_id bigint(20) unsigned NOT NULL auto_increment" );
     3733            $wpdb->query( "ALTER TABLE $wpdb->blogs MODIFY site_id bigint(20) unsigned NOT NULL default 0" );
     3734            $wpdb->query( "ALTER TABLE $wpdb->blogmeta MODIFY blog_id bigint(20) unsigned NOT NULL default 0" );
     3735            $wpdb->query( "ALTER TABLE $wpdb->registration_log MODIFY ID bigint(20) unsigned NOT NULL auto_increment" );
     3736            $wpdb->query( "ALTER TABLE $wpdb->registration_log MODIFY blog_id bigint(20) unsigned NOT NULL default 0" );
     3737            $wpdb->query( "ALTER TABLE $wpdb->site MODIFY id bigint(20) unsigned NOT NULL auto_increment" );
     3738            $wpdb->query( "ALTER TABLE $wpdb->sitemeta MODIFY meta_id bigint(20) unsigned NOT NULL auto_increment" );
     3739            $wpdb->query( "ALTER TABLE $wpdb->sitemeta MODIFY site_id bigint(20) unsigned NOT NULL default 0" );
     3740            $wpdb->query( "ALTER TABLE $wpdb->signups MODIFY signup_id bigint(20) unsigned NOT NULL auto_increment" );
    37273741        }
    37283742    }
  • trunk/src/wp-includes/version.php

    r60422 r60497  
    2424 * @global int $wp_db_version
    2525 */
    26 $wp_db_version = 60421;
     26$wp_db_version = 60497;
    2727
    2828/**
Note: See TracChangeset for help on using the changeset viewer.