Skip to Content.
Sympa Menu

freetds - Re: [freetds] Transaction weirdness

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: John Anderson <ardour AT semiosix.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Transaction weirdness
  • Date: Fri, 10 Oct 2003 10:32:24 -0000

On Fri, 2003-10-10 at 05:37, James K. Lowden wrote:
> On 09 Oct 2003, John Anderson <ardour AT semiosix.com> wrote:
> > So my code processes the data (1 row) that it needs, and then tries to
> > execute the commit. Since the other (useless) resultset is still
> > pending, the commit attempt fails.
> >
> > Seems to me that from an application point of view it would make sense
> > for a commit attempt to automatically cancel any pending result sets?
>
> Philosophically, regardless of what documentation says? You could take
> that point of view, or you could say that an out-of-place commit indicates
> a logic flaw in the application, because results have to be fetched or
> explicitly cancelled.

Not wanting to be argumentative about this - you guys know a lot more
about it than I do - looking at

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odch14pr_8.asp

I find

Committing or rolling back a transaction has the following effect on
cursors and access plans:

* All cursors are closed, and access plans for prepared statements
on that connection are deleted.
* All cursors are closed, and access plans for prepared statements
on that connection remain intact.
* All cursors remain open, and access plans for prepared
statements on that connection remain intact.

Which to me implies that there's no need to explicitly close a cursor
before committing or rolling back a transaction, because the call to
SqlEndTran will do it for me - if that's the option the driver
implements. And the driver will also give me back the relevant value
from SqlGetInfo with SQL_CURSOR_COMMIT_BEHAVIOR.

bye
John






Archive powered by MHonArc 2.6.24.

Top of Page