On Sat, Mar 5, 2011 at 11:57 AM, Brad Phelan <[email protected]>wrote:
> Hi all,
>
> I am testing locally with MySQL and deploying to heroku ( postgress ) The
> following query seems to
> generate a PGError.
>
> SELECT COUNT(*) FROM "events" INNER JOIN "events" "events_2" WHERE
> ("events"."schedule_id" = 1 AND "events"."start_at" = "events_2"."start_at"
> AND "events_2"."schedule_id" IN (3))
>
>
Brad, I would recommend trying the following if you haven't already done so:
1) Writing the code without accessing the underlying ARel structure.
2) Running the raw query within a PG client.
I haven't played enough with ARel but I would suggest trying (1) and (2)
above. Futhermore, by doing (1), you can see what SQL is being generated by
using the
method to_sql and compare it against (2).
Good luck,
-Conrad
> It is generated via an AREL builder by calling
>
> coliding_events.count
>
> where coliding_events is defined as
>
> ----------------------
> app/models/schedule.rb
> ----------------------
> 43 def coliding_events
> 44 cs = []
> 45
> 46 # Id's of schedules with overlapping times of day
> 47 pcsids = possibly_coliding_schedules.map &:id
> 48
> 49 if pcsids.size == 0
> 50 return []
> 51 end
> 52
> 53 e0 = Event.arel_table
> 54 e1 = Event.arel_table.alias # because we do a self join
> 55
> 56 # compare self events
> 57 j0 = e0[:schedule_id].eq(id)
> 58
> 59 # and find events on the same dates
> 60 j1 = e0[:start_at].eq(e1[:start_at])
> 61
> 62 # whose times of day are overlapping
> 63 j2 = e1[:schedule_id].in(pcsids)
> 64
> 65
> 66 Event.joins(e1).where(
> 67 j0.and(j1).and(j2)
> 68 )
> 69
> 70 end
>
> The error I get from postgress is
>
> 2011-03-05T10:26:21-08:00 app[web.1]: ActionView::Template::Error (PGError:
> ERROR: syntax error at or near "WHERE"
> 2011-03-05T10:26:21-08:00 app[web.1]: LINE 1: ...(*) FROM "events" INNER
> JOIN "events" "events_2" WHERE ("ev...
>
> I don't really have any experience with postgress but the query looks
> sounds to me.
>
> Regards
>
> Brad Phelan
> --
> http://xtargets.com
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.