Ticket #2604: remove_distinct_groupby.diff
File remove_distinct_groupby.diff, 3.1 KB (added by , 18 years ago) |
---|
-
wp-includes/query.php
505 505 $result = ''; 506 506 $where = ''; 507 507 $limits = ''; 508 $distinct = '';509 508 $join = ''; 510 509 511 510 if ( !isset($q['post_type']) ) … … 822 821 $q['orderby'] = 'post_date '.$q['order']; 823 822 } 824 823 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 they828 //can edit the post, we let them through829 //if ($pagenow != 'post.php' && $pagenow != 'edit.php' && !($this->is_single && $user_ID)) {830 // $where .= " AND post_date_gmt <= '$now'";831 // $distinct = 'DISTINCT';832 //}833 834 824 if ( $this->is_attachment ) { 835 825 $where .= ' AND (post_type = "attachment")'; 836 826 } elseif ($this->is_page) { … … 842 832 843 833 if ( is_admin() ) 844 834 $where .= " OR post_status = 'future' OR post_status = 'draft'"; 845 else846 $distinct = 'DISTINCT';847 835 848 836 if ( is_user_logged_in() ) 849 837 $where .= " OR post_author = $user_ID AND post_status = 'private'))"; … … 884 872 // Apply post-paging filters on where and join. Only plugins that 885 873 // manipulate paging queries should use these hooks. 886 874 $where = apply_filters('posts_where_paged', $where); 887 $groupby = " $wpdb->posts.ID ";875 $groupby = ''; 888 876 $groupby = apply_filters('posts_groupby', $groupby); 877 if ( ! empty($groupby) ) 878 $groupby = 'GROUP BY ' . $groupby; 889 879 $join = apply_filters('posts_join_paged', $join); 890 880 $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"; 892 882 $this->request = apply_filters('posts_request', $request); 893 883 894 884 $this->posts = $wpdb->get_results($this->request); -
wp-includes/template-functions-links.php
470 470 if (isset($max_num_pages)) return $max_num_pages; 471 471 472 472 if ( 'posts' == get_query_var('what_to_show') ) { 473 preg_match('#FROM\s(.*)\s GROUPBY#siU', $wp_query->request, $matches);473 preg_match('#FROM\s(.*)\sORDER BY#siU', $wp_query->request, $matches); 474 474 $fromwhere = $matches[1]; 475 475 $numposts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $fromwhere"); 476 476 return ceil($numposts / get_option('posts_per_page')); 477 477 } else { 478 478 $posts = $wp_query->posts; 479 preg_match('#WHERE\s(.*)\s GROUPBY#siU', $wp_query->request, $matches);479 preg_match('#WHERE\s(.*)\sORDER BY#siU', $wp_query->request, $matches); 480 480 $where = preg_replace('/( AND )?post_date >= (\'|\")(.*?)(\'|\")( AND post_date <= (\'\")(.*?)(\'\"))?/siU', '', $matches[1]); 481 481 $num_days = $wpdb->query("SELECT DISTINCT post_date FROM $wpdb->posts WHERE $where GROUP BY year(post_date), month(post_date), dayofmonth(post_date)"); 482 482 return ceil($num_days / get_option('posts_per_page'));