[fpc-pascal] TSQLQuery and buffering.
Michael Van Canneyt
michael at freepascal.org
Sat Mar 25 10:30:18 CET 2017
On Sat, 25 Mar 2017, Gary Doades wrote:
> On Fri, 24 Mar 2017, Gary Doades wrote:
>>> Really, the question is simple: Is there ANY way of TSQLQuery NOT
>>> reading the entire result set into memory?
>> Set Unidirectional to True, and it will keep only 1 row in memory.
>> When you are simply scanning through the result set, this is all you need.
> Hi Michael,
> Many thanks for your reply. I had read about UniDirectional and I have indeed tried this. It doesn't seem to make any significant difference. Looking through the source code for TBufDataset it looks like UniDirectional just turns off building various indexes/structures etc. and fetches the result set all in one go instead of 10 row chunks. It still buffers everything in memory.
In that case, it is a bug. The very purpose of UniDirectional is
exactly NOT to buffer anything, just to keep the current record in memory.
More information about the fpc-pascal