Make WordPress Core


Ignore:
Timestamp:
07/14/2017 09:24:03 PM (9 years ago)
Author:
flixos90
Message:

Multisite: Improve caching in WP_Site_Query by ignoring the $fields argument.

Prior to this change there were two different cache keys used for the same query. That is because regardless of the $fields argument, the query response will be the same.

Props spacedmonkey.
Fixes #41197.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/multisite/siteQuery.php

    r40340 r41059  
    662662                $this->assertEqualSets( $expected, $found );
    663663        }
     664
     665        /**
     666         * @ticket 41197
     667         */
     668        public function test_wp_site_query_cache_with_different_fields_no_count() {
     669                global $wpdb;
     670                $q                 = new WP_Site_Query();
     671                $query_1           = $q->query( array(
     672                        'fields'     => 'all',
     673                        'network_id' => self::$network_ids['wordpress.org/'],
     674                        'number'     => 3,
     675                        'order'      => 'ASC',
     676                ) );
     677                $number_of_queries = $wpdb->num_queries;
     678
     679                $query_2 = $q->query( array(
     680                        'fields'     => 'ids',
     681                        'network_id' => self::$network_ids['wordpress.org/'],
     682                        'number'     => 3,
     683                        'order'      => 'ASC',
     684                ) );
     685
     686                $this->assertEquals( $number_of_queries, $wpdb->num_queries );
     687        }
     688
     689        /**
     690         * @ticket 41197
     691         */
     692        public function test_wp_site_query_cache_with_different_fields_active_count() {
     693                global $wpdb;
     694                $q                 = new WP_Site_Query();
     695
     696                $query_1 = $q->query( array(
     697                        'fields'     => 'all',
     698                        'network_id' => self::$network_ids['wordpress.org/'],
     699                        'number'     => 3,
     700                        'order'      => 'ASC',
     701                        'count'      => true,
     702                ) );
     703                $number_of_queries = $wpdb->num_queries;
     704
     705                $query_2 = $q->query( array(
     706                        'fields'     => 'ids',
     707                        'network_id' => self::$network_ids['wordpress.org/'],
     708                        'number'     => 3,
     709                        'order'      => 'ASC',
     710                        'count'      => true,
     711                ) );
     712                $this->assertEquals( $number_of_queries, $wpdb->num_queries );
     713        }
     714
     715        /**
     716         * @ticket 41197
     717         */
     718        public function test_wp_site_query_cache_with_same_fields_different_count() {
     719                global $wpdb;
     720                $q = new WP_Site_Query();
     721
     722                $query_1 = $q->query( array(
     723                        'fields'     => 'ids',
     724                        'network_id' => self::$network_ids['wordpress.org/'],
     725                        'number'     => 3,
     726                        'order'      => 'ASC',
     727                ) );
     728
     729                $number_of_queries = $wpdb->num_queries;
     730
     731                $query_2 = $q->query( array(
     732                        'fields'     => 'ids',
     733                        'network_id' => self::$network_ids['wordpress.org/'],
     734                        'number'     => 3,
     735                        'order'      => 'ASC',
     736                        'count'      => true,
     737                ) );
     738                $this->assertEquals( $number_of_queries + 1, $wpdb->num_queries );
     739        }
    664740}
    665741
Note: See TracChangeset for help on using the changeset viewer.