I’ve been looking at topic_users a bit lately.
I was confused as to why there would be these two fields
last_read_post_number integer null
highest_seen_post_number integer null
I mean, if I read it, I saw it, no?
Then I found this in app/models/topic_user.rb
# In case anyone seens "highest_seen_post_number" and gets confused, like I do.
# highest_seen_post_number represents the highest_post_number of the topic when
# the user visited it. It may be out of alignment with last_read, meaning
# ... user visited the topic but did not read the posts
In other words, if a topic has 100 posts, but I only read the first 50, the two will not be the same.
I just ran
SELECT *
FROM topic_users
WHERE last_read_post_number IS NULL
OR highest_seen_post_number IS NULL
In all results both read and seen were NULL
and I noticed in all results total_msecs_viewed was zero.
In some, it was not the topic id that was used, but the post id
My guess, without having looked more closely into the code yet, is that there is a “divide by 0” error happening somewhere.
