Replace information_schema queries in wc-update-functions.php with create table searches
Partially fixes #37276
This commit is contained in:
parent
14675be4f0
commit
bd0da16eab
|
@ -1843,18 +1843,14 @@ function wc_update_340_db_version() {
|
|||
function wc_update_343_cleanup_foreign_keys() {
|
||||
global $wpdb;
|
||||
|
||||
$results = $wpdb->get_results(
|
||||
"SELECT CONSTRAINT_NAME
|
||||
FROM information_schema.TABLE_CONSTRAINTS
|
||||
WHERE CONSTRAINT_SCHEMA = '{$wpdb->dbname}'
|
||||
AND CONSTRAINT_NAME LIKE '%wc_download_log_ib%'
|
||||
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
|
||||
AND TABLE_NAME = '{$wpdb->prefix}wc_download_log'"
|
||||
);
|
||||
$create_table_sql = $wpdb->get_var( "SHOW CREATE TABLE {$wpdb->prefix}wc_download_log", 1 );
|
||||
|
||||
if ( $results ) {
|
||||
foreach ( $results as $fk ) {
|
||||
$wpdb->query( "ALTER TABLE {$wpdb->prefix}wc_download_log DROP FOREIGN KEY {$fk->CONSTRAINT_NAME}" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
|
||||
if ( ! empty( $create_table_sql ) ) {
|
||||
// Extract and remove the foreign key constraints matching %wc_download_log_ib%
|
||||
if ( preg_match_all( '/CONSTRAINT `([^`]*wc_download_log_ib[^`]*)` FOREIGN KEY/', $create_table_sql, $matches ) && ! empty( $matches[1] ) ) {
|
||||
foreach ( $matches[1] as $foreign_key_name ) {
|
||||
$wpdb->query( "ALTER TABLE {$wpdb->prefix}wc_download_log DROP FOREIGN KEY `{$foreign_key_name}`" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1912,18 +1908,13 @@ function wc_update_350_db_version() {
|
|||
*/
|
||||
function wc_update_352_drop_download_log_fk() {
|
||||
global $wpdb;
|
||||
$results = $wpdb->get_results(
|
||||
"SELECT CONSTRAINT_NAME
|
||||
FROM information_schema.TABLE_CONSTRAINTS
|
||||
WHERE CONSTRAINT_SCHEMA = '{$wpdb->dbname}'
|
||||
AND CONSTRAINT_NAME = 'fk_wc_download_log_permission_id'
|
||||
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
|
||||
AND TABLE_NAME = '{$wpdb->prefix}wc_download_log'"
|
||||
);
|
||||
|
||||
// We only need to drop the old key as WC_Install::create_tables() takes care of creating the new FK.
|
||||
if ( $results ) {
|
||||
$wpdb->query( "ALTER TABLE {$wpdb->prefix}wc_download_log DROP FOREIGN KEY fk_wc_download_log_permission_id" ); // phpcs:ignore WordPress.WP.PreparedSQL.NotPrepared
|
||||
$create_table_sql = $wpdb->get_var( "SHOW CREATE TABLE {$wpdb->prefix}wc_download_log", 1 );
|
||||
|
||||
if ( ! empty( $create_table_sql ) ) {
|
||||
if ( strpos( $create_table_sql, 'CONSTRAINT `fk_wc_download_log_permission_id` FOREIGN KEY' ) !== false ) {
|
||||
$wpdb->query( "ALTER TABLE {$wpdb->prefix}wc_download_log DROP FOREIGN KEY fk_wc_download_log_permission_id" ); // phpcs:ignore WordPress.WP.PreparedSQL.NotPrepared
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2451,17 +2442,14 @@ function wc_update_670_purge_comments_count_cache() {
|
|||
function wc_update_700_remove_download_log_fk() {
|
||||
global $wpdb;
|
||||
|
||||
$results = $wpdb->get_results(
|
||||
"SELECT CONSTRAINT_NAME
|
||||
FROM information_schema.TABLE_CONSTRAINTS
|
||||
WHERE CONSTRAINT_SCHEMA = '{$wpdb->dbname}'
|
||||
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
|
||||
AND TABLE_NAME = '{$wpdb->prefix}wc_download_log'"
|
||||
);
|
||||
$create_table_sql = $wpdb->get_var( "SHOW CREATE TABLE {$wpdb->prefix}wc_download_log", 1 );
|
||||
|
||||
if ( $results ) {
|
||||
foreach ( $results as $fk ) {
|
||||
$wpdb->query( "ALTER TABLE {$wpdb->prefix}wc_download_log DROP FOREIGN KEY {$fk->CONSTRAINT_NAME}" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
|
||||
if ( ! empty( $create_table_sql ) ) {
|
||||
// Extract the foreign key constraints
|
||||
if ( preg_match_all( '/CONSTRAINT `([^`]*)` FOREIGN KEY/', $create_table_sql, $matches ) && ! empty( $matches[1] ) ) {
|
||||
foreach ( $matches[1] as $foreign_key_name ) {
|
||||
$wpdb->query( "ALTER TABLE {$wpdb->prefix}wc_download_log DROP FOREIGN KEY `{$foreign_key_name}`" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue