I'm not sure I understand - are you saying every time the user does a FETCH, we have to run the outer plan from scratch? I don't see why would that be necessary? And if it is, how come there's no noticeable performance difference?
Can you share a patch implementing the incremental approach, and a query demonstrating the issue?
I didn't implement it but its obvious that it doesn't work similarly with previous approach.
We need different implementation and my plan was to use tuplestore per call and clear
it after returning tuple but I see that the plan will not go far because mainly the last returned
slot is not the last slot we get from outerPlan execution