Subject Re: Data paging question
Author pablosanchezuy
Jason, thanks for the input. It´s clear that records are sent over
the wire as the client (gds32.dll) requests it.
I thought you could specify the gds32.dll to request "n" records at
a time. It just "fills" its buffers.
Any ideas how big it that buffer and if there is any parameter to
control it?
Pablo Sánchez

> Just to clarify,
> You open a query and request the first record:
> 1) The server works out whether it needs to go and get all of the records=

> now and store the results on the server or whether it can get them as
> required.
> 2) The server _FILLS_ a buffer to be sent over the wire to the client. I=

> think this is 4 packets (TCP/IP), but don't quote me on that unless it is=

> correct.
> 3) These are sent to the client.
> 4) The gds32.dll (FB's DLL you need to access FB) stores these packets in=

> memory and makes the data available to the client.
> 5) Your client SW says fetch each time it wants a new record.
> 6) When gds32.dll notices that it's buffer is half depleted it makes anot=
> request to the server to top up its buffer.
> This mechanism has the advantages of nagle (aggregation of rows meaning l=
> packets over the wire) and also the "look ahead" buffer means that if you=

> are reading hte rows sequencially and slowly, you don't have to wait for
> requests as there is always a half full (minimum) buffer.
> BTW The BDE doesn't always fetch all rows, it does when you go into edit
> mode, but if you were just browsing then not alway.
> Just re-read, not the answer required for the original question, but
> hopefully helpful to someone :-)
> JAC.