[wp-trac] [WordPress Trac] #19525: Meta Query failing to build a proper SQL Query

WordPress Trac wp-trac at lists.automattic.com
Tue Dec 13 01:23:23 UTC 2011


#19525: Meta Query failing to build a proper SQL Query
--------------------------+-----------------------------
 Reporter:  peshkohacka   |      Owner:
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  Query         |    Version:  3.3
 Severity:  major         |   Keywords:
--------------------------+-----------------------------
 I was tryin' to get meta working and i was wondering why no results were
 returned until i found that the query is actually invalid:


 {{{
 object(WP_Query)#1337 (44) {
   ["query_vars"]=>
   array(58) {
     ["category_name"]=>
     string(3) "customcat"
     ["post_status"]=>
     string(7) "publish"
     ["meta_key"]=>
     string(13) "time"
     ["meta_value"]=>
     string(9) "135784684"
     ["meta_type"]=>
     string(7) "numeric"
     ["meta_compare"]=>
     string(11) "NOT BETWEEN"
     ["error"]=>
     string(0) ""
     ["m"]=>
     int(0)
     ["p"]=>
     int(0)
     ["post_parent"]=>
     string(0) ""
     ["subpost"]=>
     string(0) ""
     ["subpost_id"]=>
     string(0) ""
     ["attachment"]=>
     string(0) ""
     ["attachment_id"]=>
     int(0)
     ["name"]=>
     string(0) ""
     ["static"]=>
     string(0) ""
     ["pagename"]=>
     string(0) ""
     ["page_id"]=>
     int(0)
     ["second"]=>
     string(0) ""
     ["minute"]=>
     string(0) ""
     ["hour"]=>
     string(0) ""
     ["day"]=>
     int(0)
     ["monthnum"]=>
     int(0)
     ["year"]=>
     int(0)
     ["w"]=>
     int(0)
     ["tag"]=>
     string(0) ""
     ["cat"]=>
     string(1) "7"
     ["tag_id"]=>
     string(0) ""
     ["author_name"]=>
     string(0) ""
     ["feed"]=>
     string(0) ""
     ["tb"]=>
     string(0) ""
     ["paged"]=>
     int(0)
     ["comments_popup"]=>
     string(0) ""
     ["preview"]=>
     string(0) ""
     ["s"]=>
     string(0) ""
     ["sentence"]=>
     string(0) ""
     ["fields"]=>
     string(0) ""
     ["category__in"]=>
     array(0) {
     }
     ["category__not_in"]=>
     array(0) {
     }
     ["category__and"]=>
     array(0) {
     }
     ["post__in"]=>
     array(0) {
     }
     ["post__not_in"]=>
     array(0) {
     }
     ["tag__in"]=>
     array(0) {
     }
     ["tag__not_in"]=>
     array(0) {
     }
     ["tag__and"]=>
     array(0) {
     }
     ["tag_slug__in"]=>
     array(0) {
     }
     ["tag_slug__and"]=>
     array(0) {
     }
     ["ignore_sticky_posts"]=>
     bool(false)
     ["suppress_filters"]=>
     bool(false)
     ["cache_results"]=>
     bool(true)
     ["update_post_term_cache"]=>
     bool(true)
     ["update_post_meta_cache"]=>
     bool(true)
     ["post_type"]=>
     string(0) ""
     ["posts_per_page"]=>
     int(10)
     ["nopaging"]=>
     bool(false)
     ["comments_per_page"]=>
     string(2) "50"
     ["no_found_rows"]=>
     bool(false)
     ["order"]=>
     string(4) "DESC"
   }
   ["tax_query"]=>
   object(WP_Tax_Query)#1337 (2) {
     ["queries"]=>
     array(1) {
       [0]=>
       array(5) {
         ["taxonomy"]=>
         string(8) "category"
         ["terms"]=>
         array(1) {
           [0]=>
           string(3) "customcat"
         }
         ["include_children"]=>
         bool(true)
         ["field"]=>
         string(4) "slug"
         ["operator"]=>
         string(2) "IN"
       }
     }
     ["relation"]=>
     string(3) "AND"
   }
   ["meta_query"]=>
   object(WP_Meta_Query)#1337 (2) {
     ["queries"]=>
     array(1) {
       [0]=>
       array(4) {
         ["key"]=>
         string(13) "time"
         ["compare"]=>
         string(11) "NOT BETWEEN"
         ["type"]=>
         string(7) "numeric"
         ["value"]=>
         string(9) "135784684"
       }
     }
     ["relation"]=>
     string(3) "AND"
   }
   ["post_count"]=>
   int(0)
   ["current_post"]=>
   int(-1)
   ["in_the_loop"]=>
   bool(false)
   ["comment_count"]=>
   int(0)
   ["current_comment"]=>
   int(-1)
   ["found_posts"]=>
   string(1) "1"
   ["max_num_pages"]=>
   float(1)
   ["max_num_comment_pages"]=>
   int(0)
   ["is_single"]=>
   bool(false)
   ["is_preview"]=>
   bool(false)
   ["is_page"]=>
   bool(false)
   ["is_archive"]=>
   bool(true)
   ["is_date"]=>
   bool(false)
   ["is_year"]=>
   bool(false)
   ["is_month"]=>
   bool(false)
   ["is_day"]=>
   bool(false)
   ["is_time"]=>
   bool(false)
   ["is_author"]=>
   bool(false)
   ["is_category"]=>
   bool(true)
   ["is_tag"]=>
   bool(false)
   ["is_tax"]=>
   bool(false)
   ["is_search"]=>
   bool(false)
   ["is_feed"]=>
   bool(false)
   ["is_comment_feed"]=>
   bool(false)
   ["is_trackback"]=>
   bool(false)
   ["is_home"]=>
   bool(false)
   ["is_404"]=>
   bool(false)
   ["is_comments_popup"]=>
   bool(false)
   ["is_paged"]=>
   bool(false)
   ["is_admin"]=>
   bool(false)
   ["is_attachment"]=>
   bool(false)
   ["is_singular"]=>
   bool(false)
   ["is_robots"]=>
   bool(false)
   ["is_posts_page"]=>
   bool(false)
   ["is_post_type_archive"]=>
   bool(false)
   ["query_vars_hash"]=>
   string(32) "5481e968160b92320b359a1818596c83"
   ["query_vars_changed"]=>
   bool(false)
   ["thumbnails_cached"]=>
   bool(false)
   ["query"]=>
   array(6) {
     ["category_name"]=>
     string(3) "customcat"
     ["post_status"]=>
     string(7) "publish"
     ["meta_key"]=>
     string(13) "time"
     ["meta_value"]=>
     string(9) "135784684"
     ["meta_type"]=>
     string(7) "numeric"
     ["meta_compare"]=>
     string(11) "NOT BETWEEN"
   }
   ["request"]=>
   string(469) " SELECT SQL_CALC_FOUND_ROWS  * FROM posts  INNER JOIN
 term_relationships ON (ID = term_relationships.object_id) INNER JOIN
 postmeta ON (ID = postmeta.post_id) WHERE 1=1  AND (
 term_relationships.term_taxonomy_id IN (1) ) AND post_type = 'post' AND
 (post_status = 'publish') AND ( (postmeta.meta_key = 'time' AND  ) GROUP
 BY ID ORDER BY post_date DESC LIMIT 0, 10"
   ["posts"]=>
   array(0) {
   }
 }
 }}}


 As you can see the meta query only inputs the meta_key and not the meta
 value/compare operator and as such the query ends up invalid.

 If it matters (all the vars are above, but still) this is how the query is
 getting called:


 {{{
 $args = array(
         'category_name' => 'customcat',
         'post_status' => 'publish',
         'meta_key' => 'time',
         'meta_value' => '135784684',
         'meta_type' => 'numeric',
         'meta_compare' => 'NOT BETWEEN'
     );
 $posts = new WP_Query($args);
 }}}

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/19525>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list