Changeset 3678

Show
Ignore:
Timestamp:
04/02/06 00:33:10 (3 years ago)
Author:
ryan
Message:

Some optimization of the post query. #2604

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/wp-admin/upgrade-functions.php

    r3670 r3678  
    167167        upgrade_160(); 
    168168 
    169     if ( $wp_current_db_version < 3582 ) 
     169    if ( $wp_current_db_version < 3672 ) 
    170170        upgrade_210(); 
    171171 
  • trunk/wp-admin/upgrade-schema.php

    r3598 r3678  
    114114  guid varchar(255) NOT NULL default '', 
    115115  menu_order int(11) NOT NULL default '0', 
    116   post_type varchar(100) NOT NULL default 'post', 
     116  post_type varchar(20) NOT NULL default 'post', 
    117117  post_mime_type varchar(100) NOT NULL default '', 
    118118  comment_count bigint(20) NOT NULL default '0', 
    119119  PRIMARY KEY  (ID), 
    120   KEY post_name (post_name) 
     120  KEY post_name (post_name), 
     121  KEY type_status_date (post_type, post_status, post_date) 
    121122); 
    122123CREATE TABLE $wpdb->users ( 
  • trunk/wp-includes/query.php

    r3649 r3678  
    506506        $where = ''; 
    507507        $limits = ''; 
    508         $distinct = ''; 
    509508        $join = ''; 
    510509 
     
    823822        } 
    824823 
    825         //$now = gmdate('Y-m-d H:i:59'); 
    826          
    827         //only select past-dated posts, except if a logged in user is viewing a single: then, if they 
    828         //can edit the post, we let them through 
    829         //if ($pagenow != 'post.php' && $pagenow != 'edit.php' && !($this->is_single && $user_ID)) { 
    830         //  $where .= " AND post_date_gmt <= '$now'"; 
    831         //  $distinct = 'DISTINCT'; 
    832         //} 
    833  
    834824        if ( $this->is_attachment ) { 
    835825            $where .= ' AND (post_type = "attachment")'; 
     
    843833            if ( is_admin() ) 
    844834                $where .= " OR post_status = 'future' OR post_status = 'draft'"; 
    845             else 
    846                 $distinct = 'DISTINCT'; 
    847835     
    848836            if ( is_user_logged_in() ) 
     
    885873        // manipulate paging queries should use these hooks. 
    886874        $where = apply_filters('posts_where_paged', $where); 
    887         $groupby = " $wpdb->posts.ID "
     875        $groupby = ''
    888876        $groupby = apply_filters('posts_groupby', $groupby); 
     877        if ( ! empty($groupby) ) 
     878            $groupby = 'GROUP BY ' . $groupby; 
    889879        $join = apply_filters('posts_join_paged', $join); 
    890880        $orderby = apply_filters('posts_orderby', $q['orderby']);  
    891         $request = " SELECT $distinct * FROM $wpdb->posts $join WHERE 1=1" . $where . " GROUP BY " . $groupby . " ORDER BY " . $orderby . " $limits"; 
     881        $request = " SELECT * FROM $wpdb->posts $join WHERE 1=1 $where $groupby ORDER BY $orderby $limits"; 
    892882        $this->request = apply_filters('posts_request', $request); 
    893883 
  • trunk/wp-includes/template-functions-links.php

    r3647 r3678  
    471471     
    472472    if ( 'posts' == get_query_var('what_to_show') ) { 
    473         preg_match('#FROM\s(.*)\sGROUP BY#siU', $wp_query->request, $matches); 
     473        preg_match('#FROM\s(.*)\sORDER BY#siU', $wp_query->request, $matches); 
    474474        $fromwhere = $matches[1]; 
    475475        $numposts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $fromwhere"); 
     
    477477    } else { 
    478478        $posts = $wp_query->posts; 
    479         preg_match('#WHERE\s(.*)\sGROUP BY#siU', $wp_query->request, $matches); 
     479        preg_match('#WHERE\s(.*)\sORDER BY#siU', $wp_query->request, $matches); 
    480480        $where = preg_replace('/( AND )?post_date >= (\'|\")(.*?)(\'|\")( AND post_date <= (\'\")(.*?)(\'\"))?/siU', '', $matches[1]); 
    481481        $num_days = $wpdb->query("SELECT DISTINCT post_date FROM $wpdb->posts WHERE $where GROUP BY year(post_date), month(post_date), dayofmonth(post_date)"); 
  • trunk/wp-includes/version.php

    r3581 r3678  
    44 
    55$wp_version = '2.1-alpha1'; 
    6 $wp_db_version = 3582; 
     6$wp_db_version = 3672; 
    77 
    88?>