[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.

Michael.



More information about the fpc-pascal mailing list