diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-10-15 13:17:30 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-10-15 13:17:30 +0200 |
commit | 043f4a1a1bb27baafa25c959e2284453ca32dc47 (patch) | |
tree | ebaefd68f235350b1a14690c6d89e726d4aca8da /odb/mssql/transaction-impl.cxx | |
parent | a049724c258a42af57d1ff572c3d15a3678e3875 (diff) |
Implement early connection release
Diffstat (limited to 'odb/mssql/transaction-impl.cxx')
-rw-r--r-- | odb/mssql/transaction-impl.cxx | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/odb/mssql/transaction-impl.cxx b/odb/mssql/transaction-impl.cxx index 15d210e..9dc9be8 100644 --- a/odb/mssql/transaction-impl.cxx +++ b/odb/mssql/transaction-impl.cxx @@ -56,6 +56,10 @@ namespace odb void transaction_impl:: commit () { + // Invalidate query results. + // + connection_->invalidate_results (); + { odb::tracer* t; if ((t = connection_->tracer ()) || (t = database_.tracer ())) @@ -68,15 +72,18 @@ namespace odb if (!SQL_SUCCEEDED (r)) translate_error (r, *connection_, true); - // We cannot release the connection early since we may still need - // to free (query) statements. + // Release the connection. // - //connection_.reset (); + connection_.reset (); } void transaction_impl:: rollback () { + // Invalidate query results. + // + connection_->invalidate_results (); + { odb::tracer* t; if ((t = connection_->tracer ()) || (t = database_.tracer ())) @@ -91,7 +98,7 @@ namespace odb // Release the connection. // - //connection_.reset (); + connection_.reset (); } } } |