Confounding URL typists since 2007.

MetaWhere 0.5.2 – Debug your SQL

Posted by Ernie on July 9, 2010 at 11:09 pm

I just pushed version 0.5.2 of MetaWhere after some , adding the debug_sql method. What’s the difference between debug_sql and to_sql, you ask?

While the to_sql method is a handy way to show your query, but as I’ve written about before, it has its shortcomings. When your query is going to eager load some records and has conditions referencing the eager loaded tables, ActiveRecord changes its generated query, but to_sql is none the wiser. Enter debug_sql:

ruby-1.9.2-head > Article.includes(:comments).where(:comments => {:body => 'hey'}).to_sql
 => SELECT "articles".* FROM "articles" WHERE ("comments"."body" = 'hey')
# LIES!!!
ruby-1.9.2-head > Article.includes(:comments).where(:comments => {:body => 'hey'}).debug_sql
 => SELECT "articles"."id" AS t0_r0, "articles"."title" AS t0_r1,
           "articles"."body" AS t0_r2, "articles"."created_at" AS t0_r3,
           "articles"."updated_at" AS t0_r4, "articles"."lookup_id" AS t0_r5,
           "comments"."id" AS t1_r0, "comments"."article_id" AS t1_r1,
           "comments"."body" AS t1_r2, "comments"."created_at" AS t1_r3,
           "comments"."updated_at" AS t1_r4
    FROM   "articles" LEFT OUTER JOIN "comments"
           ON "comments"."article_id" = "articles"."id"
    WHERE  ("comments"."body" = 'hey')
# The (ugly) truth!

Filed under Blog
Tagged as , ,
You can leave a comment, or trackback from your own site.