I did find one thing I hadn't caught before. I had another parameter
that was being added for:
search[:system_id.in] = []
It wasn't supposed to be an empty array, but as a part of the update,
I had to migrate some data in another table and it wasn't
repopulated. From the looks of it, doing a .in operator with an empty
array seems to cause some issues.
Ken
On Aug 28, 10:02 pm, "Ken Robertson" <[EMAIL PROTECTED]> wrote:
> Just recently upgraded from 0.9.4 to the current from github on some of my
> projects and running into an issue with one query that has me completely
> perplexed. Basically, it looks like the where clause is mapping values to
> their intended field incorrectly.
> Code:
>
> search = {}
> search[:region_id] = @region_id
> search[:bid] = false
> search[:reported_at.gte] = @days.days.ago.to_date
> search[:reported_at.lt] = Date.today
> search[:order] = [:reported_at]
>
> states = OrderHistory.all(search)
>
> DataMapper generated query:
>
> SELECT `id`, `order_id`, `region_id`, `system_id`, `item_id`, `price`,
> `volume`, `bid`, `reported_at` FROM `order_histories` WHERE 0=1 AND `bid` =
> () AND `reported_at` < FALSE AND `reported_at` >= '2008-08-28' AND
> `region_id` = '2008-08-21' ORDER BY `reported_at`
>
> Should actually be:
>
> SELECT `id`, `order_id`, `region_id`, `system_id`, `item_id`, `price`,
> `volume`, `bid`, `reported_at` FROM `order_histories` WHERE `bid` = FALSE
> AND `reported_at` < '2008-08-28' AND `reported_at` >= '2008-08-21' AND
> `region_id` = 10000002 ORDER BY `reported_at`
>
> Things that are incorrect:
>
> - where did the 0=1 come from? Since this will always be false, no
> records will ever be returned
> - 'bid' should have been FALSE, not ( )... this actually causes a syntax
> error with the query (how I found the issue)
> - reported_at.lt got what bid should have
> - reported_at.gte got what reported_at.lt should have had
> - region_id got what reported_at.gte should have had
>
> Code worked fine on 0.9.4, but broken with the recent upgrade.
>
> One other odd thing... if I reload the page enough times, it seems to change
> which fields the values are matching to, and eventually gets them right, but
> then the 0=1 makes it so it returns no records.
>
> Thanks,
> Ken
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"DataMapper" 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/datamapper?hl=en
-~----------~----~----~----~------~----~------~--~---