diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-04-26 11:29:05 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-04-26 11:29:05 +0200 |
commit | 80c78e7c4457ef6757edd881e8dc4f259a49a838 (patch) | |
tree | 41a8f548fd92dae6cbc65b61ba9ea19105948b7d | |
parent | 40267e1f40de8ea216688886ab1df1c7ec50e2b2 (diff) |
Make session optional
-rw-r--r-- | odb/pgsql/polymorphic-object-result.txx | 1 | ||||
-rw-r--r-- | odb/pgsql/simple-object-statements.hxx | 1 | ||||
-rw-r--r-- | odb/pgsql/simple-object-statements.txx | 16 |
3 files changed, 8 insertions, 10 deletions
diff --git a/odb/pgsql/polymorphic-object-result.txx b/odb/pgsql/polymorphic-object-result.txx index 14104d0..9d50427 100644 --- a/odb/pgsql/polymorphic-object-result.txx +++ b/odb/pgsql/polymorphic-object-result.txx @@ -5,7 +5,6 @@ #include <cassert> #include <odb/callback.hxx> -#include <odb/cache-traits.hxx> #include <odb/exceptions.hxx> // object_not_persistent #include <odb/pgsql/polymorphic-object-statements.hxx> diff --git a/odb/pgsql/simple-object-statements.hxx b/odb/pgsql/simple-object-statements.hxx index 37bd16c..e6de345 100644 --- a/odb/pgsql/simple-object-statements.hxx +++ b/odb/pgsql/simple-object-statements.hxx @@ -13,7 +13,6 @@ #include <odb/forward.hxx> #include <odb/traits.hxx> -#include <odb/cache-traits.hxx> #include <odb/details/shared-ptr.hxx> diff --git a/odb/pgsql/simple-object-statements.txx b/odb/pgsql/simple-object-statements.txx index 8e391d7..1fcd104 100644 --- a/odb/pgsql/simple-object-statements.txx +++ b/odb/pgsql/simple-object-statements.txx @@ -4,7 +4,6 @@ #include <cstring> // std::memset -#include <odb/session.hxx> #include <odb/callback.hxx> #include <odb/exceptions.hxx> @@ -154,15 +153,16 @@ namespace odb void object_statements<T>:: clear_delayed_ () { - // Remove the objects from the session cache. + // Remove the objects from the session cache. This is not the most + // efficient way to do this (cache_traits::erase() will check for + // a session on every iteration), but the delay vector won't be + // empty only if something goes wrong (i.e., we are throwing an + // exception). // - if (session::has_current ()) + for (typename delayed_loads::iterator i (delayed_.begin ()), + e (delayed_.end ()); i != e; ++i) { - for (typename delayed_loads::iterator i (delayed_.begin ()), - e (delayed_.end ()); i != e; ++i) - { - pointer_cache_traits::erase (i->pos); - } + pointer_cache_traits::erase (i->pos); } delayed_.clear (); |