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 | c3a2b62f33e1f3fe19700257efdba7123b272cc4 (patch) | |
tree | 281f2275a2a7202c24bf114532adcd5752eaf19d /odb/mysql/simple-object-result.txx | |
parent | 9126281b53722115b2e8624632f2dd616f0c26a0 (diff) |
Implement early connection release
Diffstat (limited to 'odb/mysql/simple-object-result.txx')
-rw-r--r-- | odb/mysql/simple-object-result.txx | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/odb/mysql/simple-object-result.txx b/odb/mysql/simple-object-result.txx index e341b16..fa554dc 100644 --- a/odb/mysql/simple-object-result.txx +++ b/odb/mysql/simple-object-result.txx @@ -22,11 +22,24 @@ namespace odb } template <typename T> + void object_result_impl<T>:: + invalidate () + { + if (!this->end_) + { + statement_->free_result (); + this->end_ = true; + } + + statement_.reset (); + } + + template <typename T> object_result_impl<T>:: object_result_impl (const query_base&, details::shared_ptr<select_statement> statement, statements_type& statements) - : base_type (statements.connection ().database ()), + : base_type (statements.connection ()), statement_ (statement), statements_ (statements), count_ (0) @@ -52,11 +65,10 @@ namespace odb assert (!statements_.locked ()); typename statements_type::auto_lock l (statements_); - odb::database& db (this->database ()); - object_traits::callback (db, obj, callback_event::pre_load); + object_traits::callback (this->db_, obj, callback_event::pre_load); typename object_traits::image_type& i (statements_.image ()); - object_traits::init (obj, i, &db); + object_traits::init (obj, i, &this->db_); // Initialize the id image and binding and load the rest of the object // (containers, etc). @@ -75,7 +87,7 @@ namespace odb object_traits::load_ (statements_, obj); statements_.load_delayed (); l.unlock (); - object_traits::callback (db, obj, callback_event::post_load); + object_traits::callback (this->db_, obj, callback_event::post_load); } template <typename T> |