diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-03-07 10:21:07 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-03-07 10:21:07 +0200 |
commit | c1b8b6f16e4881e57aa0da67e6f09ad71ee6099d (patch) | |
tree | da1f5c81451d5a75f5ed12ae6752eb3feac969f7 /odb/mssql/object-statements.txx | |
parent | 2534b3aa626d6a426559c556b20faf7b69b47717 (diff) |
Use RAII to free select statement results
Diffstat (limited to 'odb/mssql/object-statements.txx')
-rw-r--r-- | odb/mssql/object-statements.txx | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/odb/mssql/object-statements.txx b/odb/mssql/object-statements.txx index c8753d2..01249d9 100644 --- a/odb/mssql/object-statements.txx +++ b/odb/mssql/object-statements.txx @@ -87,6 +87,10 @@ namespace odb if (!object_traits::find_ (*this, l.id)) throw object_not_persistent (); + // Our find_() version delays result freeing. + // + auto_result ar (*find_); + object_traits::callback (db, *l.obj, callback_event::pre_load); // Our calls to init/load below can result in additional delayed @@ -95,7 +99,7 @@ namespace odb // object_traits::init (*l.obj, image (), &db); find_->stream_result (); - find_->free_result (); // Our find_() version delays result freeing. + ar.free (); object_traits::load_ (*this, *l.obj); // Load containers, etc. if (!delayed_.empty ()) |