Re: FreeTDS and buffering on client side
LacaK <[email protected]> Thu, 26 Oct 2017 08:14:20 +0200
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <[email protected]> |
Thank you very much Frediano, now , when I increase number of rows in table I can reproduce network failure. But behavior is other than I have expected. I was expecting, that dbnextrow() will return FAIL, but it seems, that call to dbnextrow() never returns ... it freezes somewhere in dblib.dll (I can not debug more because I use dblib.dll from Pascal program) Is it expected behavior? L. > 2017-10-25 11:38 GMT+01:00 LacaK <[email protected]>: >> Hi *, >> >> I would like to ask how FreeTDS performs buffering on client side. >> I use dblib as my client library (I do not set there DBBUFFER using >> "dbsetopt") >> >> I am trying simulate network failure in such way: >> 1. connect to MS SQL Server using dbopen() >> 2. I send SQL select using dbcmd(), dbsqlexec() >> 3. then I call dbresults() >> 4. here I pause program and unplug network cable to simulate network error >> 5. next I process rows in loop calling dbnextrow() >> >> Strange thing is that I can perform step 5 also when network cable is >> unpluged. So I have suspection, that all rows from select are already >> somewhere on client side. Probably handled already by underlaying libtds ? >> >> What is going to happen? Why I can still read rows when there is already >> broken network connection ? >> Thanks >> >> -Laco. >> > There are a lot of caching in between. > The server execute the query and starts sending back results. > Probably the results you are expecting are already sent by the server > when you disconnect the cable and are in the tcp socket buffer ready > to be parsed from your program. Try to return 1000000 rows and at > some point the program will fail (unless connection is really fast and > network buffer is big enough!). > > Frediano > _______________________________________________ > FreeTDS mailing list > [email protected] > https://lists.ibiblio.org/mailman/listinfo/freetds >