Hi
I'm getting an unexpected result when using #last with #limit in queries.
The code setup is same from the sequel vs AR benchmark in my earlier post (
code <https://github.com/hmistry/ar_sql/blob/master/sq/bench.rb>).
See code below:
(byebug) Post.where(topic: topic).order(:updated_at).select_map(:id)
[72, 61, 69, 13, 86, 35, 85, 7, 17, 29, 78, 12, 97, 68, 99, 52, 48, 56, 55,
26, 51, 89, 6, 33, 70, 16, 20, 9, 47, 38, 88, 63, 46, 65, 67, 5, 60, 44, 18,
94, 74, 21, 100, 57, 83, 10, 96, 40, 64, 14, 23, 59, 73, 66, 34, 2, 84, 3,
11, 25, 80, 28, 98, 32, 1, 53, 90, 45, 19, 37, 75, 93, 27, 42, 76, 87, 36,
30, 43, 62, 4, 95, 82, 15, 31, 41, 91, 49, 79, 50, 58, 71, 39, 8, 24, 22, 81
, 92, 77, 54]
(byebug) Post.where(topic:
topic).order(:updated_at).offset(9).limit(1).select_map(:id)
[29]
(byebug) Post.where(topic: topic).order(:updated_at).offset(9).limit(1).
select(:id).first
#<Post @values={:id=>29}>
# => I expect 29
(byebug) Post.where(topic: topic).order(:updated_at).offset(9).limit(1).
select(:id).last
#<Post @values={:id=>58}>
# => I expect 29
(byebug) Post.where(topic:
topic).order(:updated_at).limit(10).select_map(:id)
[72, 61, 69, 13, 86, 35, 85, 7, 17, 29]
(byebug) Post.where(topic: topic).order(:updated_at).limit(10).select(:id).
first
#<Post @values={:id=>72}>
# => I expect 72
(byebug) Post.where(topic: topic).order(:updated_at).limit(10).select(:id).
last
#<Post @values={:id=>54}>
# => I expect 29
Is this correct? If so, then how is #last determining it's value?
Thanks,
Hiren.
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.