Unfortunately, when I do that, it only cleans out a few hundred or thousand watched threads at a time. I guess there's a limit with the processing of "ticked boxes" in the POST or something. From testing I noticed I get the size of the list down by 0.2 MB every time I do that. So, I'll probably have to reload that page some 30 times or so
There are limitations you could be running into from PHP, I know there is a setting somewhere (Google told me max_input_vars
).
Default value appears to be 1,000 so
assuming the default is set on this forum, we can estimate you had over 30,000 topics??
Good news, everyone: I cleared my watchlist. Well, if PHP has such a limitation, I guess that was the reason
I didn't count how many times I reloaded, but I guess that, yes, something on the order of 30.000 topics could possibly have been on my list
Regarding the query, it was valid and obviously a little tongue-in-cheek but I am (was?) a little confused by what you were expecting this feature to do? Based on your query "select * from thread where board in watchlist", I first interpreted this as being run from a global perspective (assuming "threads" was a table of every thread on the forum) and returning all threads where that threads respective "board" is in your board watchlist... which is sort of what it does, it just limits it to new topics in those boards.
Well, I assume that somehow there's a table called "watched_threads" with records like "user, thread". This is where a "thread id" goes whenever I click "watch" on a thread.
I also assumed that whenever I watched a whole board, there'd be a table called "watched_boards" with records like "user, board", where only the "board id" goes.
Then, whenever I'd look at my watchlist, it would simply look for all new posts in "watched_threads" as well as any new posts in "watched_boards".
I just did not assume that, in fact, every single new thread in a watched board would be automatically inserted into my "watched_threads".
See the difference?
In one case, "watched_threads" would stay relatively small, in the other case, it'd quickly blow up over time.
Sure, with "my" method, the query behind "watchlist" would be slightly more complex.