Make WordPress Core


Ignore:
Timestamp:
04/21/2015 05:10:11 AM (11 years ago)
Author:
pento
Message:

WPDB: When deciding if a query needs extra sanity checking based on collation, we can quickly return if it's a query that will never return user data.

Fixes #32029.

File:
1 edited

Legend:

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

    r32162 r32232  
    24002400                }
    24012401
     2402                // We don't need to check the collation for queries that don't read data.
     2403                $query = ltrim( $query, "\r\n\t (" );
     2404                if ( preg_match( '/^(?:SHOW|DESCRIBE|DESC|EXPLAIN)\s/i', $query ) ) {
     2405                        return true;
     2406                }
     2407
    24022408                $table = $this->get_table_from_query( $query );
    24032409                if ( ! $table ) {
     
    24062412
    24072413                $this->checking_collation = true;
    2408                 $this->get_table_charset( $table );
     2414                $collation = $this->get_table_charset( $table );
    24092415                $this->checking_collation = false;
     2416
     2417                // Tables with no collation, or latin1 only, don't need extra checking.
     2418                if ( false === $collation || 'latin1' === $collation ) {
     2419                        return true;
     2420                }
    24102421
    24112422                $table = strtolower( $table );
     
    24142425                }
    24152426
     2427                // If any of the columns don't have one of these collations, it needs more sanity checking.
    24162428                foreach( $this->col_meta[ $table ] as $col ) {
    24172429                        if ( empty( $col->Collation ) ) {
Note: See TracChangeset for help on using the changeset viewer.