if ( $wp_current_db_version < 29630 )
upgrade_400();
- if ( $wp_current_db_version < 31351 )
- upgrade_420();
+ if ( $wp_current_db_version < 31534 )
+ upgrade_422();
- if ( $wp_current_db_version < 31533 )
- upgrade_421();
+ if ( $wp_current_db_version < 31536 )
+ upgrade_423();
maybe_disable_link_manager();
* @since 4.2.0
*/
function upgrade_420() {
- global $wp_current_db_version, $wpdb;
-
- if ( $wp_current_db_version < 31351 && $wpdb->charset === 'utf8mb4' ) {
- if ( is_multisite() ) {
- $tables = $wpdb->tables( 'blog' );
- } else {
- $tables = $wpdb->tables( 'all' );
- }
-
- foreach ( $tables as $table ) {
- maybe_convert_table_to_utf8mb4( $table );
- }
- }
}
/**
* @since 4.2.1
*/
function upgrade_421() {
+}
+
+/**
+ * Execute changes made in WordPress 4.2.2.
+ *
+ * @since 4.2.2
+ */
+function upgrade_422() {
global $wp_current_db_version, $wpdb;
- if ( $wp_current_db_version < 31533 ) {
+ if ( $wp_current_db_version < 31534 ) {
$content_length = $wpdb->get_col_length( $wpdb->comments, 'comment_content' );
- if ( ! $content_length ) {
- $content_length = 65535;
+
+ if ( is_wp_error( $content_length ) ) {
+ return;
+ }
+
+ if ( false === $content_length ) {
+ $content_length = array(
+ 'type' => 'byte',
+ 'length' => 65535,
+ );
+ } elseif ( ! is_array( $content_length ) ) {
+ $length = (int) $content_length > 0 ? (int) $content_length : 65535;
+ $content_length = array(
+ 'type' => 'byte',
+ 'length' => $length
+ );
}
+ if ( 'byte' !== $content_length['type'] || 0 === $content_length['length'] ) {
+ // Sites with malformed DB schemas are on their own.
+ return;
+ }
+
+ $allowed_length = intval( $content_length['length'] ) - 10;
+
$comments = $wpdb->get_results(
- "SELECT comment_ID FROM $wpdb->comments
- WHERE comment_date_gmt > '2015-04-26'
- AND CHAR_LENGTH( comment_content ) >= $content_length
- AND ( comment_content LIKE '%<%' OR comment_content LIKE '%>%' )"
+ "SELECT `comment_ID` FROM `{$wpdb->comments}`
+ WHERE `comment_date_gmt` > '2015-04-26'
+ AND LENGTH( `comment_content` ) >= {$allowed_length}
+ AND ( `comment_content` LIKE '%<%' OR `comment_content` LIKE '%>%' )"
);
foreach ( $comments as $comment ) {
}
}
+/**
+ * Execute changes made in WordPress 4.2.0.
+ *
+ * @since 4.2.3
+ */
+function upgrade_423() {
+ global $wp_current_db_version, $wpdb;
+
+ if ( $wp_current_db_version < 31536 && $wpdb->charset === 'utf8mb4' ) {
+ if ( is_multisite() ) {
+ $tables = $wpdb->tables( 'blog' );
+ } else {
+ $tables = $wpdb->tables( 'all' );
+ if ( defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) {
+ $global_tables = $wpdb->tables( 'global' );
+ $tables = array_diff_assoc( $tables, $global_tables );
+ }
+ }
+
+ foreach ( $tables as $table ) {
+ maybe_convert_table_to_utf8mb4( $table );
+ }
+ }
+}
+
/**
* Executes network-level upgrade routines.
*
// 4.2
if ( $wp_current_db_version < 31351 && $wpdb->charset === 'utf8mb4' ) {
- if ( ! ( defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) && DO_NOT_UPGRADE_GLOBAL_TABLES ) ) {
+ if ( ! defined( 'DO_NOT_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->site DROP INDEX domain, ADD INDEX domain(domain(140),path(51))" );
$wpdb->query( "ALTER TABLE $wpdb->sitemeta DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))" );
- $wpdb->query( "ALTER TABLE $wpdb->signups DROP INDEX domain, ADD INDEX domain(domain(140),path(51))" );
+ $wpdb->query( "ALTER TABLE $wpdb->signups DROP INDEX domain_path, ADD INDEX domain_path(domain(140),path(51))" );
$tables = $wpdb->tables( 'global' );
}
}
}
+
+ // 4.2.2
+ if ( $wp_current_db_version < 31535 && 'utf8mb4' === $wpdb->charset ) {
+ if ( ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) {
+ $upgrade = false;
+ $indexes = $wpdb->get_results( "SHOW INDEXES FROM $wpdb->signups" );
+ foreach( $indexes as $index ) {
+ if ( 'domain_path' == $index->Key_name && 'domain' == $index->Column_name && 140 != $index->Sub_part ) {
+ $upgrade = true;
+ break;
+ }
+ }
+
+ if ( $upgrade ) {
+ $wpdb->query( "ALTER TABLE $wpdb->signups DROP INDEX domain_path, ADD INDEX domain_path(domain(140),path(51))" );
+ }
+ }
+ }
+
+ // 4.2.3
+ if ( $wp_current_db_version < 31536 && $wpdb->charset === 'utf8mb4' ) {
+ if ( ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) {
+ $tables = $wpdb->tables( 'global' );
+
+ foreach ( $tables as $table ) {
+ maybe_convert_table_to_utf8mb4( $table );
+ }
+ }
+ }
}
//
}
}
+ $table_details = $wpdb->get_row( "SHOW TABLE STATUS LIKE '$table'" );
+ if ( ! $table_details ) {
+ return false;
+ }
+
+ list( $table_charset ) = explode( '_', $table_details->Collation );
+ $table_charset = strtolower( $table_charset );
+ if ( 'utf8mb4' === $table_charset ) {
+ return true;
+ }
+
return $wpdb->query( "ALTER TABLE $table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" );
}
}
}
- if ( $wp_current_db_version < 30133 ) {
- // dbDelta() can recreate but can't drop the index.
- $wpdb->query( "ALTER TABLE $wpdb->terms DROP INDEX slug" );
- }
-
// Upgrade versions prior to 4.2.
if ( $wp_current_db_version < 31351 ) {
- if ( ! is_multisite() ) {
+ if ( ! is_multisite() && ! defined( 'DO_NOT_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))" );