Re: Attempt to initiate a new Adaptive Server operation with results pending
Frediano Ziglio <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <CAHt6W4fUWrk4Eer=-Yj+Gj5yGW3V9dY+6xn=O0QHZzdgRMRWrg@mail.gmail.com> |
2015-02-10 7:43 GMT+00:00 LacaK <[email protected]>: > >>>> Hi, >>>> I have program which uses FreeTDS db-lib.dll >>>> Now I have changed TDS version from 7.1 to 7.3 and I start receiving >>>> "Attempt to initiate a new Adaptive Server operation with results >>>> pending" >>>> in some places. >>>> >>>> For example, when I send this two commands: >>>> "IF @@TRANCOUNT>0 ROLLBACK" >>>> followed by: >>>> "BEGIN TRANSACTION" >>>> >>>> I get above mentioned error. >>>> >>>> I attach portion of logs for 7.1 and 7.3 version. >>>> >>>> As you can see in both cases is returned : more_results = 1 after "IF >>>> @@TRANCOUNT>0 ROLLBACK" >>>> (I do not understand why?) >>>> >>>> But in case 7.3 is error raised afterward (in 7.1 no error) Is it >>>> expected ? >>>> Can you give me some explanation what is going on ? >>>> >>>> Thanks >>>> -Laco. >>>> P.S. I resend this email to maillist, because first does not arrive >>>> there >>>> after 3 days >>>> >>> This patch fix the problem. Wrote a small test to reproduce. Testing >>> right now. > > > Hi Frediano, > I can confirm, that your patch fixed the problem. > Thank you very much. > > Only thing, that I do not fully understand is, why in same situation (with > same TDS = 7.3): > "IF @@TRANCOUNT>0 ROLLBACK" followed by "BEGIN TRANSACTION" does NOT work, > but > "ROLLBACK" followed by "BEGIN TRANSACTION" does work ? > > I attach logs from both situations. > > Thanks > Bye > -Laco. > Hi, is it still failing? I wrote this change (you should already have a snapshot now) https://gitorious.org/freetds/freetds/commit/03600a47d3975f8cb43d9bc395ec7b9d39a1ec72. It contains a test. Basically the reply from server is in one case DONE, ENV_CHANGE, DONE while in the other is ENV_CHANGE, DONE. Could be that FreeTDS expect upper library to handle one DONE as a results. Frediano