I’ve just “search all”-ed every mention of delete queries in relation to schedules.
As you probably know. there are 4 ways to get rid of a schedule:
1. Delete one or more schedules manually from the dashboard.
This can only delete the selected schedules at once, but only manually.
2. Have AdRotate delete it when the schedule expires (a per schedule setting).
This can only delete 1 schedule at a time, but only if that schedule has auto-delete enabled.
3. Delete expired schedules manually from Settings > Maintenance, cleanup database (including expired schedules).
This can delete a bunch of schedules but only if they’re expired.
4. Delete incomplete schedules manually from Settings > Maintenance, cleanup database (regular cleanup).
This can delete a bunch of schedules but only if they have no name.
There simply is no other way in the plugin to mass delete schedules without a user doing that.
As far as I can tell all conditions/queries/whatever are correct. If they weren’t, more people would report the issue.
Stats are not related to schedules, so whoever said that disabling stats fixes the issue, doesn’t have the same issue. And why could it be, if the schedule is missing, how can disabling stats fix that… Makes no sense. So that’s completely irrelevant for this topic.
So logically it’s not AdRotate deleting the schedules – Simply because the code to do so doesn’t exist in the plugin. And if AdRotate does delete them, it’s someone doing it via AdRotate 🙁
If you have other plugins doing stuff in or with AdRotate – Delete them. If your theme “integrates” with AdRotate, disable it. None of it is official or supported and probably the cause of it all. For the theme stuff you can use AdRotate’s Shortcodes and Widgets instead.