fa95b65fad
`Database.MongoDB.Query.next` and `nextBatch` prefetch a promise of the next batch of documents from the server whenever the current batch has been exhausted. The following call to `next` or `nextBatch` fulfills that promise (thereby turning it into a concrete batch of documents) and then returns one or more documents in the batch. The old behavior was to raise an exception if an empty batch with a nonzero cursor ID was encountered. This is normal when using tailable cursors, so a change was required. Now, `Nothing` is returned with the still-live cursor ID, instead of raising the exception. Also, prefetched empty batches with nonzero cursor IDs are refetched once per call to avoid stale data. This new prefetching behavior does not affect the performance of `next`, except when calling it repeatedly on a tailable cursor with no new data. In those (generally avoidable) cases, each call to `next` results in two server calls instead of one. |
||
---|---|---|
.. | ||
MongoDB | ||
MongoDB.hs |