Hi,
The current plan for server side cursors is use them once the storage engine is switched to the MVStore. That way, the old data will be read, without having to copy data, and without having to prevent writes while reading. Unfortunately, it will take a while until the MVStore is integrated.
I believe for the moment, the best solution is to use some kind of paging yourself, just like you have described.
I know the temp file (or temp table) is very problematic. Just for completeness (I guess it doesn't apply in your case) in some cases a temporary file / table need to be created , for example if the data needs to be sorted or grouped.
> A lower-level API that I could read each b-tree independantly and hand-roll my own joins
Or you could directly use the MVStore... but I guess it is too much "work in progress" currently.
Regards,
Thomas