WPDB: Make sure we don't run sanity checks on DB dropins.

Previously, we'd run the sanity checks if `is_mysql` was not set to `false`. This caused problems for DB drop-ins that didn't define `is_mysql` at all. Instead, we can just check if `is_mysql` is `empty()`.

Also fix some unit tests that accidently ran correctly because of the strict `false ===` comparison.

Fixes #33501.



git-svn-id: https://develop.svn.wordpress.org/trunk@34655 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Gary Pendergast 2015-09-28 01:16:29 +00:00
parent 416dc6642a
commit 2b78c9579a
3 changed files with 29 additions and 2 deletions

View File

@ -2414,7 +2414,7 @@ class wpdb {
}
// Skip this entirely if this isn't a MySQL database.
if ( false === $this->is_mysql ) {
if ( empty( $this->is_mysql ) ) {
return false;
}
@ -2463,7 +2463,7 @@ class wpdb {
$columnkey = strtolower( $column );
// Skip this entirely if this isn't a MySQL database.
if ( false === $this->is_mysql ) {
if ( empty( $this->is_mysql ) ) {
return false;
}

View File

@ -380,6 +380,7 @@ class wpdb_exposed_methods_for_testing extends wpdb {
global $wpdb;
$this->dbh = $wpdb->dbh;
$this->use_mysqli = $wpdb->use_mysqli;
$this->is_mysql = $wpdb->is_mysql;
$this->ready = true;
$this->field_types = $wpdb->field_types;
$this->charset = $wpdb->charset;

View File

@ -637,6 +637,32 @@ class Tests_DB_Charset extends WP_UnitTestCase {
self::$_wpdb->is_mysql = true;
}
/**
* @dataProvider data_test_get_column_charset
* @ticket 33501
*/
function test_get_column_charset_is_mysql_undefined( $drop, $create, $table, $columns ) {
self::$_wpdb->query( $drop );
if ( ! self::$_wpdb->has_cap( 'utf8mb4' ) && preg_match( '/utf8mb[34]/i', $create ) ) {
$this->markTestSkipped( "This version of MySQL doesn't support utf8mb4." );
return;
}
unset( self::$_wpdb->is_mysql );
self::$_wpdb->query( $create );
$columns = array_keys( $columns );
foreach ( $columns as $column => $charset ) {
$this->assertEquals( false, self::$_wpdb->get_col_charset( $table, $column ) );
}
self::$_wpdb->query( $drop );
self::$_wpdb->is_mysql = true;
}
/**
* @ticket 21212
*/