[wp-trac] [WordPress Trac] #23369: WP_Comment_Query meta query 'count' conflicts with 'group by'
WordPress Trac
noreply at wordpress.org
Sat Feb 2 13:39:21 UTC 2013
#23369: WP_Comment_Query meta query 'count' conflicts with 'group by'
-----------------------------+--------------------------
Reporter: heshiming | Type: defect (bug)
Status: new | Priority: normal
Milestone: Awaiting Review | Component: Comments
Version: trunk | Severity: normal
Keywords: |
-----------------------------+--------------------------
This problem relates to {{{/wp-includes/comment.php}}}, both 3.5.1 and
trunk are affected. The following line number refers to the 3.5.1 version.
At line 195, definition of class {{{WP_Comment_Query}}} , a typical meta
query will generate such SQL:
{{{SELECT * FROM wp_comments INNER JOIN wp_commentmeta ON
(wp_comments.comment_ID = wp_commentmeta.comment_id) WHERE (
comment_approved = '0' OR comment_approved = '1' ) AND comment_post_ID =
22 AND ( (wp_commentmeta.meta_key = 'my_flag' AND
CAST(wp_commentmeta.meta_value AS CHAR) = 'my_value') ) GROUP BY
wp_comments.comment_ID ORDER BY comment_date_gmt DESC }}}
Note that at line 357, a meta query will always generate a {{{GROUP BY}}}
clause. This works for comment rows. Say that I've got 3 comments matching
this query, I'll see each of them in a row:
{{{
comment row 1, data
comment row 2, data
comment row 3, data
}}}
However, this query doesn't work well then {{{$count = true}}}. Note that
by specifying {{{$count = true}}}, the function only changes {{{'SELECT
*'}}} into {{{'SELECT COUNT(*)'}}}. For 3 comment result, I'm seeing
something like this:
{{{
1
1
1
}}}
And you can see, because there's a {{{'GROUP BY'}}} clause. And each
comment has a unique ID. The result is 3 'grouped row' of comments, and
each will always have count of 1.
Therefore, the result of {{{$wpdb->get_var()}}} will be either 1, or NULL
(when nothing is matched). I believe this behavior is not by intention.
To get count working, {{{'GROUP BY'}}} clause must be removed when $count
is true.
--
Ticket URL: <http://core.trac.wordpress.org/ticket/23369>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list