First of all, excellent post.
I just have one question.
You said that data is being sent to client as is being needed. Before we fetch next batch of data to the client, execution of query is suspended. If we do range scan then metadata about last returned row will be stored somewhere.
What happens if in the meantime there is a page split and last returned row is on the new page?
Is this possible? Does this operator (clustered index scan for example) holds latch on page?
This would be extremely inefficient, so there have to be some other way to update the last position.
My question is - what metadata is stored and how does Sql Server keep it in sync?