Kirill,
cursor does not provide a way to limit the fetch size based on the memory
consumption.
Imagine a table like (id int8, value jsonb).
If we use "fetch 1000", then it might require 1GiB on the client if every
row contains 1MiB json.
If the client plays defensively and goes for "fetch 10", it might take a
lot of time if jsons are small.
Neither cursor nor extended protocol solve the problem.
Vladimir