aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--odb/pgsql/polymorphic-object-result.txx1
-rw-r--r--odb/pgsql/simple-object-statements.hxx1
-rw-r--r--odb/pgsql/simple-object-statements.txx16
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 ();