WordPress.org

Make WordPress Core

Ticket #17998: 17998.2.diff

File 17998.2.diff, 2.2 KB (added by nacin, 3 years ago)
  • wp-admin/includes/upgrade.php

     
    14591459        $cqueries = apply_filters( 'dbdelta_create_queries', $cqueries ); 
    14601460        $iqueries = apply_filters( 'dbdelta_insert_queries', $iqueries ); 
    14611461 
    1462         // Check to see which tables and fields exist 
    1463         if ($tables = $wpdb->get_col('SHOW TABLES;')) { 
    1464                 // For every table in the database 
    14651462                $global_tables = $wpdb->tables( 'global' ); 
    1466                 foreach ($tables as $table) { 
     1463                foreach ( $cqueries as $table => $qry ) { 
    14671464                        // Upgrade global tables only for the main site. Don't upgrade at all if DO_NOT_UPGRADE_GLOBAL_TABLES is defined. 
    14681465                        if ( in_array( $table, $global_tables ) && ( !is_main_site() || defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) ) 
    14691466                                continue; 
    14701467 
    1471                         // If a table query exists for the database table... 
    1472                         if ( array_key_exists(strtolower($table), $cqueries) ) { 
     1468                        // Fetch the table column structure from the database 
     1469                        $tablefields = $wpdb->get_results("DESCRIBE {$table};"); 
     1470 
     1471                        if ( ! $tablefields ) 
     1472                                continue; 
     1473 
    14731474                                // Clear the field and index arrays 
    14741475                                $cfields = $indices = array(); 
    14751476                                // Get all of the field names in the query from between the parens 
    1476                                 preg_match("|\((.*)\)|ms", $cqueries[strtolower($table)], $match2); 
     1477                                preg_match("|\((.*)\)|ms", $qry, $match2); 
    14771478                                $qryline = trim($match2[1]); 
    14781479 
    14791480                                // Separate field lines into an array 
     
    15081509                                        } 
    15091510                                } 
    15101511 
    1511                                 // Fetch the table column structure from the database 
    1512                                 $tablefields = $wpdb->get_results("DESCRIBE {$table};"); 
    1513  
    15141512                                // For every field in the table 
    15151513                                foreach ($tablefields as $tablefield) { 
    15161514                                        // If the table field exists in the field array... 
     
    16081606                                } 
    16091607 
    16101608                                // Remove the original table creation query from processing 
    1611                                 unset($cqueries[strtolower($table)]); 
    1612                                 unset($for_update[strtolower($table)]); 
    1613                         } else { 
    1614                                 // This table exists in the database, but not in the creation queries? 
    1615                         } 
     1609                                unset( $cqueries[ $table ], $for_update[ $table ] ); 
    16161610                } 
    1617         } 
    16181611 
    16191612        $allqueries = array_merge($cqueries, $iqueries); 
    16201613        if ($execute) {